@@ -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
@@ -63,7 +64,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
6364 " It has no effect on the optimization" );
6465 ui_->use_disentangled_ssm ->setToolTip (" Use the disentangled optimization technique to build spatiotemporal SSM." );
6566 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." );
66-
67+ 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. " );
6768
6869
6970 // hidden for 6.5 release
@@ -72,6 +73,8 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
7273
7374 QIntValidator* above_zero = new QIntValidator (1 , std::numeric_limits<int >::max (), this );
7475 QIntValidator* zero_and_up = new QIntValidator (0 , std::numeric_limits<int >::max (), this );
76+ QIntValidator* one_and_up = new QIntValidator (1 , std::numeric_limits<int >::max (), this );
77+
7578
7679 QDoubleValidator* double_validator = new QDoubleValidator (0 , std::numeric_limits<double >::max (), 1000 , this );
7780
@@ -87,6 +90,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
8790 ui_->multiscale_particles ->setValidator (above_zero);
8891 ui_->narrow_band ->setValidator (double_validator);
8992 ui_->geodesics_to_landmarks_weight ->setValidator (double_validator);
93+ ui_->time_points_per_subject ->setValidator (one_and_up);
9094
9195 line_edits_.push_back (ui_->number_of_particles );
9296 line_edits_.push_back (ui_->initial_relative_weighting );
@@ -100,6 +104,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
100104 line_edits_.push_back (ui_->multiscale_particles );
101105 line_edits_.push_back (ui_->geodesics_to_landmarks_weight );
102106 line_edits_.push_back (ui_->narrow_band );
107+ line_edits_.push_back (ui_->time_points_per_subject );
103108
104109 for (QLineEdit* line_edit : line_edits_) {
105110 connect (line_edit, &QLineEdit::textChanged, this , &OptimizeTool::update_run_button);
@@ -273,8 +278,9 @@ void OptimizeTool::load_params() {
273278 ui_->use_geodesics_from_landmarks ->setChecked (params.get_use_geodesics_to_landmarks ());
274279 ui_->geodesics_to_landmarks_weight ->setText (QString::number (params.get_geodesic_to_landmarks_weight ()));
275280 ui_->use_disentangled_ssm ->setChecked (params.get_use_disentangled_ssm ());
276- ui_->use_linear_regression ->setChecked (params.get_use_linear_regression ());
277281
282+ ui_->use_linear_regression ->setChecked (params.get_use_linear_regression ());
283+ ui_->time_points_per_subject ->setText (QString::number (params.get_time_points_per_subject ()));
278284
279285 ui_->procrustes ->setChecked (params.get_use_procrustes ());
280286 ui_->procrustes_scaling ->setChecked (params.get_use_procrustes_scaling ());
@@ -322,6 +328,7 @@ void OptimizeTool::store_params() {
322328 params.set_geodesic_to_landmarks_weight (ui_->geodesics_to_landmarks_weight ->text ().toDouble ());
323329 params.set_use_disentangled_ssm (ui_->use_disentangled_ssm ->isChecked ());
324330 params.set_use_linear_regression (ui_->use_linear_regression ->isChecked ());
331+ params.set_time_points_per_subject (ui_->time_points_per_subject ->text ().toDouble ());
325332
326333 params.set_use_procrustes (ui_->procrustes ->isChecked ());
327334 params.set_use_procrustes_scaling (ui_->procrustes_scaling ->isChecked ());
@@ -368,6 +375,7 @@ void OptimizeTool::update_ui_elements() {
368375 ui_->procrustes_rotation_translation ->setEnabled (ui_->procrustes ->isChecked ());
369376 ui_->procrustes_interval ->setEnabled (ui_->procrustes ->isChecked ());
370377 ui_->multiscale_particles ->setEnabled (ui_->multiscale ->isChecked ());
378+ ui_->time_points_per_subject ->setEnabled (ui_->use_linear_regression ->isChecked ());
371379 ui_->geodesics_to_landmarks_weight ->setEnabled (ui_->use_geodesics_from_landmarks ->isChecked ());
372380 ui_->geodesic_remesh_percent ->setEnabled (ui_->use_geodesic_distance ->isChecked ());
373381}
0 commit comments