@@ -33,6 +33,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
33
33
connect (ui_->use_normals , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
34
34
connect (ui_->procrustes , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
35
35
connect (ui_->multiscale , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
36
+ connect (ui_->use_linear_regression , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
36
37
connect (ui_->use_geodesics_from_landmarks , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
37
38
connect (ui_->use_geodesic_distance , &QCheckBox::toggled, this , &OptimizeTool::update_ui_elements);
38
39
@@ -63,7 +64,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
63
64
" It has no effect on the optimization" );
64
65
ui_->use_disentangled_ssm ->setToolTip (" Use the disentangled optimization technique to build spatiotemporal SSM." );
65
66
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. " );
67
68
68
69
69
70
// hidden for 6.5 release
@@ -72,6 +73,8 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
72
73
73
74
QIntValidator* above_zero = new QIntValidator (1 , std::numeric_limits<int >::max (), this );
74
75
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
+
75
78
76
79
QDoubleValidator* double_validator = new QDoubleValidator (0 , std::numeric_limits<double >::max (), 1000 , this );
77
80
@@ -87,6 +90,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
87
90
ui_->multiscale_particles ->setValidator (above_zero);
88
91
ui_->narrow_band ->setValidator (double_validator);
89
92
ui_->geodesics_to_landmarks_weight ->setValidator (double_validator);
93
+ ui_->time_points_per_subject ->setValidator (one_and_up);
90
94
91
95
line_edits_.push_back (ui_->number_of_particles );
92
96
line_edits_.push_back (ui_->initial_relative_weighting );
@@ -100,6 +104,7 @@ OptimizeTool::OptimizeTool(Preferences& prefs, Telemetry& telemetry) : preferenc
100
104
line_edits_.push_back (ui_->multiscale_particles );
101
105
line_edits_.push_back (ui_->geodesics_to_landmarks_weight );
102
106
line_edits_.push_back (ui_->narrow_band );
107
+ line_edits_.push_back (ui_->time_points_per_subject );
103
108
104
109
for (QLineEdit* line_edit : line_edits_) {
105
110
connect (line_edit, &QLineEdit::textChanged, this , &OptimizeTool::update_run_button);
@@ -273,8 +278,9 @@ void OptimizeTool::load_params() {
273
278
ui_->use_geodesics_from_landmarks ->setChecked (params.get_use_geodesics_to_landmarks ());
274
279
ui_->geodesics_to_landmarks_weight ->setText (QString::number (params.get_geodesic_to_landmarks_weight ()));
275
280
ui_->use_disentangled_ssm ->setChecked (params.get_use_disentangled_ssm ());
276
- ui_->use_linear_regression ->setChecked (params.get_use_linear_regression ());
277
281
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 ()));
278
284
279
285
ui_->procrustes ->setChecked (params.get_use_procrustes ());
280
286
ui_->procrustes_scaling ->setChecked (params.get_use_procrustes_scaling ());
@@ -322,6 +328,7 @@ void OptimizeTool::store_params() {
322
328
params.set_geodesic_to_landmarks_weight (ui_->geodesics_to_landmarks_weight ->text ().toDouble ());
323
329
params.set_use_disentangled_ssm (ui_->use_disentangled_ssm ->isChecked ());
324
330
params.set_use_linear_regression (ui_->use_linear_regression ->isChecked ());
331
+ params.set_time_points_per_subject (ui_->time_points_per_subject ->text ().toDouble ());
325
332
326
333
params.set_use_procrustes (ui_->procrustes ->isChecked ());
327
334
params.set_use_procrustes_scaling (ui_->procrustes_scaling ->isChecked ());
@@ -368,6 +375,7 @@ void OptimizeTool::update_ui_elements() {
368
375
ui_->procrustes_rotation_translation ->setEnabled (ui_->procrustes ->isChecked ());
369
376
ui_->procrustes_interval ->setEnabled (ui_->procrustes ->isChecked ());
370
377
ui_->multiscale_particles ->setEnabled (ui_->multiscale ->isChecked ());
378
+ ui_->time_points_per_subject ->setEnabled (ui_->use_linear_regression ->isChecked ());
371
379
ui_->geodesics_to_landmarks_weight ->setEnabled (ui_->use_geodesics_from_landmarks ->isChecked ());
372
380
ui_->geodesic_remesh_percent ->setEnabled (ui_->use_geodesic_distance ->isChecked ());
373
381
}
0 commit comments