@@ -33,6 +33,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
3333 connect (ui_->use_normals , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
3434 connect (ui_->procrustes , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
3535 connect (ui_->multiscale , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
36+ connect (ui_->use_linear_regression , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
3637 connect (ui_->use_geodesics_from_landmarks , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
3738 connect (ui_->use_geodesic_distance , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
3839
@@ -65,7 +66,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
6566 ui_->shared_boundary_weight ->setToolTip (" Weight of shared boundary optimization" );
6667 ui_->use_disentangled_ssm ->setToolTip (" Use the disentangled optimization technique to build spatiotemporal SSM." );
6768 ui_->use_linear_regression ->setToolTip (" Use the linear regression optimization technique, where correspondence particle optimization is performed by regressing shape against an explanatory variable. Ensure that the explanatory variable is specified in the data tab of the project file." );
68-
69+ ui_-> time_points_per_subject -> setToolTip ( " Number of timepoints/explanatory variables defined for each subject in the data tab. Note: More than 1 timepoint uses a mixed effects model; 1 timepoint uses linear regression. " );
6970
7071
7172 // hidden for 6.5 release
@@ -74,6 +75,8 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
7475
7576 QIntValidator* above_zero = new QIntValidator (1 , std::numeric_limits<int >::max (), this );
7677 QIntValidator* zero_and_up = new QIntValidator (0 , std::numeric_limits<int >::max (), this );
78+ QIntValidator* one_and_up = new QIntValidator (1 , std::numeric_limits<int >::max (), this );
79+
7780
7881 QDoubleValidator* double_validator = new QDoubleValidator (0 , std::numeric_limits<double >::max (), 1000 , this );
7982
@@ -89,6 +92,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
8992 ui_->multiscale_particles ->setValidator (above_zero);
9093 ui_->narrow_band ->setValidator (double_validator);
9194 ui_->geodesics_to_landmarks_weight ->setValidator (double_validator);
95+ ui_->time_points_per_subject ->setValidator (one_and_up);
9296 ui_->shared_boundary_weight ->setValidator (double_validator);
9397
9498 line_edits_.push_back (ui_->number_of_particles );
@@ -103,7 +107,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
103107 line_edits_.push_back (ui_->multiscale_particles );
104108 line_edits_.push_back (ui_->geodesics_to_landmarks_weight );
105109 line_edits_.push_back (ui_->narrow_band );
106- line_edits_. push_back (ui_-> shared_boundary_weight );
110+
107111
108112 for (QLineEdit* line_edit : line_edits_) {
109113 connect (line_edit, &QLineEdit::textChanged, this , &OptimizeTool::update_run_button);
@@ -289,8 +293,9 @@ void OptimizeTool::load_params() {
289293 ui_->use_geodesics_from_landmarks ->setChecked (params.get_use_geodesics_to_landmarks ());
290294 ui_->geodesics_to_landmarks_weight ->setText (QString::number (params.get_geodesic_to_landmarks_weight ()));
291295 ui_->use_disentangled_ssm ->setChecked (params.get_use_disentangled_ssm ());
292- ui_->use_linear_regression ->setChecked (params.get_use_linear_regression ());
293296
297+ ui_->use_linear_regression ->setChecked (params.get_use_linear_regression ());
298+ ui_->time_points_per_subject ->setText (QString::number (params.get_time_points_per_subject ()));
294299
295300 ui_->procrustes ->setChecked (params.get_use_procrustes ());
296301 ui_->procrustes_scaling ->setChecked (params.get_use_procrustes_scaling ());
@@ -340,6 +345,7 @@ void OptimizeTool::store_params() {
340345 params.set_geodesic_to_landmarks_weight (ui_->geodesics_to_landmarks_weight ->text ().toDouble ());
341346 params.set_use_disentangled_ssm (ui_->use_disentangled_ssm ->isChecked ());
342347 params.set_use_linear_regression (ui_->use_linear_regression ->isChecked ());
348+ params.set_time_points_per_subject (ui_->time_points_per_subject ->text ().toDouble ());
343349
344350 params.set_use_procrustes (ui_->procrustes ->isChecked ());
345351 params.set_use_procrustes_scaling (ui_->procrustes_scaling ->isChecked ());
@@ -388,6 +394,7 @@ void OptimizeTool::update_ui_elements() {
388394 ui_->procrustes_rotation_translation ->setEnabled (ui_->procrustes ->isChecked ());
389395 ui_->procrustes_interval ->setEnabled (ui_->procrustes ->isChecked ());
390396 ui_->multiscale_particles ->setEnabled (ui_->multiscale ->isChecked ());
397+ ui_->time_points_per_subject ->setEnabled (ui_->use_linear_regression ->isChecked ());
391398 ui_->geodesics_to_landmarks_weight ->setEnabled (ui_->use_geodesics_from_landmarks ->isChecked ());
392399 ui_->geodesic_remesh_percent ->setEnabled (ui_->use_geodesic_distance ->isChecked ());
393400
0 commit comments