9 #ifndef D_MAKRO_MEGAFOCI_H
10 #define D_MAKRO_MEGAFOCI_H
30 #include <QMainWindow>
31 #include <QFileDialog>
33 #include <QFileInfoList>
37 #include <QStackedWidget>
38 #include <QCloseEvent>
39 #include <QResizeEvent>
40 #include <QInputDialog>
41 #include <qplaintextedit.h>
42 #include <QColorDialog>
45 #include <QPushButton>
62 #include <opencv2/core/core.hpp>
63 #include <opencv2/highgui/highgui.hpp>
64 #include <opencv2/imgproc/imgproc.hpp>
84 void closeEvent(QCloseEvent *event);
85 void resizeEvent(QResizeEvent *event);
94 void Update_Images_Proc();
95 void Update_Images_OverviewSmall();
96 void Update_Images_OverviewBig();
99 void Update_ImageProcessing_CurrentImage();
100 void Update_ImageProcessing_StepFrom(
size_t step_start);
101 void Update_ImageProcessing_StepFrom_MS1(
size_t step_start);
102 void Update_ImageProcessing_StepSingle(
size_t step);
103 void Update_ImageProcessing_StepSingle_MS1(
size_t step);
106 void ImageDecomp_Init();
107 void Update_ImageDecomposition();
110 void Stack_Process_All();
111 void Stack_Porcess_Single_XYT_Viewport();
114 void Populate_CB_AtStart();
115 void Populate_CB_Single(QComboBox *CB, QStringList QSL,
int init_index = 0);
118 void ConnectViewersVisTrafo(
D_Viewer* view);
121 bool Params_Load_CurrentDir();
123 bool Params_Load(QString QS_FileName);
125 void Overview_Init();
126 void Overview_Update();
129 void set_dataset_dim_x(
int x);
130 void set_dataset_dim_y(
int y);
131 void set_dataset_dim_t(
int t);
132 void set_dataset_dim_z(
int z);
133 void set_LoadButton_FilelistSize();
136 bool Update_PagesConfig(
bool give_2nd_try =
true);
139 void StatusSet(QString NewStatus);
142 void on_comboBox_VisTrafo_CropMode_currentIndexChanged(
int index);
143 void on_comboBox_VisTrafo_TransformationMode_currentIndexChanged(
int index);
144 void on_comboBox_VisTrafo_AnchorMode_currentIndexChanged(
int index);
145 void on_comboBox_VisTrafo_RangeMode_currentIndexChanged(
int index);
147 void on_comboBox_ImgProc_StepShow_currentIndexChanged(
int index);
149 void on_spinBox_Viewport_P_valueChanged(
int arg1);
151 void on_tabWidget_Control_currentChanged(
int index);
154 void on_doubleSpinBox_ImgProc_Stitch_Border_valueChanged(
double arg1);
155 void on_spinBox_ImgProc_Pre_Blur_Size_valueChanged(
int arg1);
156 void on_doubleSpinBox_ImgProc_Pre_Blur_Sigma_valueChanged(
double arg1);
157 void on_comboBox_ImgProc_ProjectZ_Stat_currentIndexChanged(
int index);
160 void on_spinBox_ImgProc_Vis_Other_Min_valueChanged(
int arg1);
161 void on_spinBox_ImgProc_Vis_Other_Max_valueChanged(
int arg1);
162 void on_doubleSpinBox_ImgProc_Vis_Other_Gamma_valueChanged(
double arg1);
163 void on_spinBox_ImgProc_Vis_GFP_Min_valueChanged(
int arg1);
164 void on_spinBox_ImgProc_Vis_GFP_Max_valueChanged(
int arg1);
165 void on_doubleSpinBox_ImgProc_Vis_GFP_Gamma_valueChanged(
double arg1);
166 void on_spinBox_ImgProc_Vis_RFP_Min_valueChanged(
int arg1);
167 void on_spinBox_ImgProc_Vis_RFP_Max_valueChanged(
int arg1);
168 void on_doubleSpinBox_ImgProc_Vis_RFP_Gamma_valueChanged(
double arg1);
172 void on_doubleSpinBox_ImgProc_Seg0A_BaseBin_FilterRadius_valueChanged(
double arg1);
173 void on_doubleSpinBox_ImgProc_Seg0A_BaseBin_Quantil_valueChanged(
double arg1);
174 void on_doubleSpinBox_ImgProc_Seg0A_BaseBin_ThresHysteresis_valueChanged(
double arg1);
175 void on_doubleSpinBox_ImgProc_Seg0A_BaseBin_ThresIndicator_valueChanged(
double arg1);
176 void on_doubleSpinBox_ImgProc_Seg0A_Blur_GaussSigma_valueChanged(
double arg1);
177 void on_doubleSpinBox_ImgProc_Seg0A_Blur_GaussSize_valueChanged(
double arg1);
178 void on_spinBox_ImgProc_Seg0A_ClosingSize_valueChanged(
int arg1);
179 void on_comboBox_ImgProc_Seg0A_IgnoreDirt_Stat_currentIndexChanged(
int index);
180 void on_doubleSpinBox_ImgProc_Seg0A_IgnoreDirt_Thres_valueChanged(
double arg1);
182 void on_doubleSpinBox_ImgProc_Seg0B_BaseBin_FilterRadius_valueChanged(
double arg1);
183 void on_doubleSpinBox_ImgProc_Seg0B_BaseBin_Quantil_valueChanged(
double arg1);
184 void on_doubleSpinBox_ImgProc_Seg0B_BaseBin_ThresHysteresis_valueChanged(
double arg1);
185 void on_doubleSpinBox_ImgProc_Seg0B_BaseBin_ThresIndicator_valueChanged(
double arg1);
186 void on_doubleSpinBox_ImgProc_Seg0B_Blur_GaussSigma_valueChanged(
double arg1);
187 void on_doubleSpinBox_ImgProc_Seg0B_Blur_GaussSize_valueChanged(
double arg1);
188 void on_spinBox_ImgProc_Seg0B_ClosingSize_valueChanged(
int arg1);
189 void on_comboBox_ImgProc_Seg0B_IgnoreDirt_Stat_activated(
int index);
190 void on_doubleSpinBox_ImgProc_Seg0B_IgnoreDirt_Thres_valueChanged(
double arg1);
192 void on_spinBox_ImgProc_Seg0_CloseGaps_Size_valueChanged(
int arg1);
193 void on_doubleSpinBox_ImgProc_Seg0_GetSmall_Area_Min_valueChanged(
double arg1);
194 void on_doubleSpinBox_ImgProc_Seg0_GetSmall_Area_Max_valueChanged(
double arg1);
195 void on_doubleSpinBox_ImgProc_ConnectSmall_CloseSize_valueChanged(
double arg1);
196 void on_doubleSpinBox_ImgProc_Seg0_Area_Min_valueChanged(
double arg1);
197 void on_doubleSpinBox_ImgProc_Seg0_Area_Max_valueChanged(
double arg1);
199 void on_doubleSpinBox_ImgProc_Seg1_DistThresh_valueChanged(
double arg1);
200 void on_spinBox_ImgProc_Seg1_OpenSeeds_valueChanged(
int arg1);
202 void on_doubleSpinBox_ImgProc_Seg2_DistThresh_valueChanged(
double arg1);
203 void on_spinBox_ImgProc_Seg2_OpenSeeds_valueChanged(
int arg1);
204 void on_doubleSpinBox_ImgProc_Seg2_Area_Min_valueChanged(
double arg1);
205 void on_doubleSpinBox_ImgProc_Seg2_Area_Max_valueChanged(
double arg1);
207 void on_spinBox_ImgProc_Seg3_Open_valueChanged(
int arg1);
210 void on_spinBox_ImgProc_Foc_GFP_BlurMedianSize_valueChanged(
int arg1);
211 void on_spinBox_ImgProc_Foc_GFP_BinarySize_valueChanged(
int arg1);
212 void on_doubleSpinBox_ImgProc_Foc_GFP_BinaryOffset_valueChanged(
double arg1);
213 void on_doubleSpinBox_ImgProc_Foc_GFP_AreaMin_valueChanged(
double arg1);
214 void on_doubleSpinBox_ImgProc_Foc_GFP_AreaMax_valueChanged(
double arg1);
215 void on_doubleSpinBox_ImgProc_Foc_GFP_BinarySigma_valueChanged(
double arg1);
218 void on_spinBox_ImgProc_Foc_RFP_BlurMedianSize_valueChanged(
int arg1);
219 void on_spinBox_ImgProc_Foc_RFP_BinarySize_valueChanged(
int arg1);
220 void on_doubleSpinBox_ImgProc_Foc_RFP_BinaryOffset_valueChanged(
double arg1);
221 void on_doubleSpinBox_ImgProc_Foc_RFP_AreaMin_valueChanged(
double arg1);
222 void on_doubleSpinBox_ImgProc_Foc_RFP_AreaMax_valueChanged(
double arg1);
223 void on_doubleSpinBox_ImgProc_Foc_RFP_BinarySigma_valueChanged(
double arg1);
225 void on_spinBox_DataDim_P_exist_valueChanged(
int arg1);
227 void on_doubleSpinBox_ImgProc_Foc_Both_AreaMin_valueChanged(
double arg1);
228 void on_doubleSpinBox_ImgProc_Foc_Both_AreaMax_valueChanged(
double arg1);
230 void on_spinBox_ImgProc_Stitch_Overlap_x_valueChanged(
int arg1);
231 void on_spinBox_ImgProc_Stitch_Overlap_y_valueChanged(
int arg1);
233 void on_doubleSpinBox_ImgProc_Vis_Intensity_Background_valueChanged(
double arg1);
234 void on_doubleSpinBox_ImgProc_Vis_Intensity_Overlay_valueChanged(
double arg1);
236 void on_groupBox_Seg0A_OTHER_clicked();
237 void on_groupBox_Seg0B_GFP_clicked();
239 void on_horizontalSlider_OverviewBig_T_valueChanged(
int value);
241 void on_pushButton_ParamLoad_clicked();
242 void on_pushButton_ParamSave_clicked();
245 Ui::D_MAKRO_MegaFoci *ui;
246 bool ClosingPossible =
false;
250 void ERR(
int err, QString func =
"not specified", QString detail =
"not specified");
259 bool state_dataset_dim_set =
false;
260 bool state_dataset_img_list_loaded =
false;
261 bool state_overview_init =
false;
262 bool state_stack_processing =
false;
263 bool state_image_decomposed =
false;
264 bool state_image_decomposition_init =
false;
265 bool state_first_proc_on_start =
true;
266 bool state_page_indices_consistent =
true;
267 bool state_block_img_proc_update =
false;
270 QFileInfoList FIL_ImagesYXT;
271 QStringList QSL_ImagesYXT_Paths;
272 QStringList QSL_ImagesYXT_Names;
273 QStringList QSL_ImagesYXT_Suffix;
277 QDir DIR_SaveMosaik_All;
278 QDir DIR_SaveMosaik_Color;
279 QDir DIR_SaveMosaik_GFP;
280 QDir DIR_SaveMosaik_RFP;
281 QDir DIR_SaveMosaik_DIC;
282 QDir DIR_SaveMosaik_Info_Foci;
283 QDir DIR_SaveMosaik_Info_Shape;
284 QDir DIR_SaveMosaik_Info_Value_Mean;
285 QDir DIR_SaveMosaik_Info_Value_STD;
286 QDir DIR_SaveMosaik_Info_Value_Skewness;
287 QDir DIR_SaveMosaik_Info_Value_Kurtosis;
288 QDir DIR_SaveMosaik_Info_Value_Median;
289 QDir DIR_SaveMosaik_Info_Value_MedianDeviation;
290 QDir DIR_SaveDetections;
293 size_t dataset_dim_mosaic_x = 15;
294 size_t dataset_dim_mosaic_y = 15;
295 size_t dataset_dim_mosaic_xy = 15 * 15;
296 size_t dataset_dim_z = 8;
297 size_t dataset_dim_t = 52;
298 size_t dataset_dim_xyt = 15 * 15 * 52;
299 size_t dataset_dim_p_used = 2;
300 size_t dataset_dim_p_exist = 3;
301 size_t dataset_dim_tzp_used = 52 * 8 * 2;
302 size_t dataset_dim_tzp_exist = 52 * 8 * 3;
303 size_t dataset_dim_img_x = 1004;
304 size_t dataset_dim_img_y = 1002;
305 int dataset_type_mat = CV_16UC1;
306 int dataset_depth_mat = CV_16U;
307 size_t get_index_of_image(
size_t x,
size_t y,
size_t t);
308 size_t get_index_of_page(
size_t z,
size_t p);
311 double dataset_step_x = 1;
312 double dataset_step_y = 1;
313 double dataset_step_t = 1;
322 vector<D_VisDat_Obj> vVD_ImgProcSteps;
325 vector<vector<vector<D_Bio_NucleusImage>>> vvvImageDecomp_TYX;
326 vector<vector<vector<int>>> vvvImageDecompCalced_TYX;
330 vector<D_VisDat_Obj> vVD_ImgLoadBuffer;
331 vector<vector<int>> vv_ImgLoadBuffer_XYT_Index;
332 size_t ImgLoadBuffer_BufferSize = dataset_dim_mosaic_x + 1;
333 void ImgBuffer_Init();
334 void ImgBuffer_Write(
D_VisDat_Obj *img,
int x_img,
int y_img,
int t_img);
335 int ImgBuffer_Find(
int x,
int y,
int t);
337 int Load_Image(
D_VisDat_Obj *img,
size_t x,
size_t y,
size_t t);
341 double overview_scale = 0.30;
343 Mat MA_OverviewSmall_Show;
344 Mat MA_OverviewBig_Show;
349 const int status_EntryNumber = 250;
350 QStringList QSL_Status;
353 QLabel *L_SB_ValueAtCursor;
357 qint64 time_LastSingleImgProc = 0;
360 size_t index_page_other = 0;
361 size_t index_GFP = 1;
362 size_t index_RFP = 2;
363 QStringList QSL_Pages = {
376 const QStringList QSL_FociTypes = {
387 STEP_PRE_LOAD_BOTTOM,
388 STEP_PRE_LOAD_BOTTOM_RIGHT,
402 STEP_VIS_PAGES_AS_COLOR_GFP_RFP,
403 STEP_VIS_PAGES_AS_COLOR_ALL,
407 STEP_NUC_OTHER_SEG0A_BLUR_GAUSS,
408 STEP_NUC_OTHER_SEG0A_BASEBIN_BG_REFERENCE,
409 STEP_NUC_OTHER_SEG0A_BASEBIN_REF_CORRECTED,
410 STEP_NUC_OTHER_SEG0A_BASEBIN_THRESH_INDICATOR,
411 STEP_NUC_OTHER_SEG0A_BASEBIN_THRESH_HYSTERESIS,
412 STEP_NUC_OTHER_SEG0A_BASEBIN_HYSTERESIS,
413 STEP_NUC_OTHER_SEG0A_MORPH_CLOSEING,
414 STEP_NUC_OTHER_SEG0A_FILL_HOLES,
415 STEP_NUC_OTHER_SEG0A_EXCLUDE_DIRT_BY_STAT,
419 STEP_NUC_GFP_SEG0B_BLUR_GAUSS,
420 STEP_NUC_GFP_SEG0B_BASEBIN_BG_REFERENCE,
421 STEP_NUC_GFP_SEG0B_BASEBIN_REF_CORRECTED,
422 STEP_NUC_GFP_SEG0B_BASEBIN_THRESH_INDICATOR,
423 STEP_NUC_GFP_SEG0B_BASEBIN_THRESH_HYSTERESIS,
424 STEP_NUC_GFP_SEG0B_BASEBIN_HYSTERESIS,
425 STEP_NUC_GFP_SEG0B_MORPH_CLOSEING,
426 STEP_NUC_GFP_SEG0B_FILL_HOLES,
427 STEP_NUC_GFP_SEG0B_EXCLUDE_DIRT_BY_STAT,
430 STEP_NUC_BOTH_SEG0_ADD_GFP_OTHER,
431 STEP_NUC_BOTH_SEG0_CLOSE_GAPS,
432 STEP_NUC_BOTH_SEG0_SELECT_AREA_SMALL,
433 STEP_NUC_BOTH_SEG0_MORPH_CLOSE_SMALL,
434 STEP_NUC_BOTH_SEG0_ADD_CLOSED_SMALL,
435 STEP_NUC_BOTH_SEG0_SELECT_AREA_BIG,
438 STEP_NUC_BOTH_SEG1_DISTANCE,
439 STEP_NUC_BOTH_SEG1_SEEDS,
440 STEP_NUC_BOTH_SEG1_SEEDS_CLEAR,
441 STEP_NUC_BOTH_SEG1_WATERSHED,
442 STEP_NUC_BOTH_SEG1_BINARY_SEGMENTS,
444 STEP_NUC_BOTH_SEG2_DISTANCE,
445 STEP_NUC_BOTH_SEG2_SEEDS,
446 STEP_NUC_BOTH_SEG2_SEEDS_CLEAR,
447 STEP_NUC_BOTH_SEG2_WATERSHED,
448 STEP_NUC_BOTH_SEG2_SELECT_AREA,
450 STEP_NUC_BOTH_SEG3_BORDERS_ORIGINAL,
451 STEP_NUC_BOTH_SEG3A_CONVEX_HULL,
452 STEP_NUC_BOTH_SEG3A_CONVEX_HULL_WATERSHED_SEGMENTS,
453 STEP_NUC_BOTH_SEG3A_CONVEX_HULL_BINARY_SEGMENTS,
454 STEP_NUC_BOTH_SEG3A_BORDERS_CONVEX_HULL,
455 STEP_NUC_BOTH_SEG3B_ELLIPSE,
456 STEP_NUC_BOTH_SEG3B_ELLIPSE_WATERSHED_SEGMENTS,
457 STEP_NUC_BOTH_SEG3B_ELLIPSE_BINARY_SEGMENTS,
458 STEP_NUC_BOTH_SEG3B_BORDERS_ELLIPSE,
459 STEP_NUC_BOTH_SEG3C_OPEND,
460 STEP_NUC_BOTH_SEG3C_OPEND_WATERSHED_SEGMENTS,
461 STEP_NUC_BOTH_SEG3C_OPEND_BINARY_SEGMENTS,
462 STEP_NUC_BOTH_SEG3C_BORDERS_OPENED,
463 STEP_NUC_BOTH_SEG3D_OPEND_ELLIPSE,
464 STEP_NUC_BOTH_SEG3D_OPEND_ELLIPSE_WATERSHED_SEGMENTS,
465 STEP_NUC_BOTH_SEG3D_OPEND_ELLIPSE_BINARY_SEGMENTS,
466 STEP_NUC_BOTH_SEG3D_BORDERS_OPENED_ELLIPSE,
467 STEP_NUC_BOTH_SEG3_BINARY_SEGMENTS_USED,
468 STEP_NUC_BOTH_SEG3_BORDERS_USED,
473 STEP_FOC_GFP_BLUR_MEDIAN,
474 STEP_FOC_GFP_BINARY_THRES,
475 STEP_FOC_GFP_SELECT_AREA,
478 STEP_FOC_RFP_BLUR_MEDIAN,
479 STEP_FOC_RFP_BINARY_THRES,
480 STEP_FOC_RFP_SELECT_AREA,
483 STEP_FOC_BOTH_INTERSECT,
484 STEP_FOC_BOTH_SELECT_AREA,
488 STEP_CLA_FOC_IN_ONE_ONLY,
489 STEP_CLA_FOC_IN_GFP_ONLY,
490 STEP_CLA_FOC_IN_RFP_ONLY,
493 STEP_VIS_REGIONS_NUCLEI,
494 STEP_VIS_REGIONS_FOCI,
495 STEP_VIS_REGIONS_BACKGROUND_NUCLEI_ALL,
496 STEP_VIS_REGIONS_BACKGROUND_NUCLEI_USED,
501 const QStringList QSL_Steps = {
502 "pre-0 Load main image",
503 "pre-1 Load border image R",
504 "pre-2 Load border image B",
505 "pre-3 Load border image BR",
506 "pre-4 Stitch borders to main image",
507 "pre-5 blur input images in XY",
508 "pre-6 Z-Projection",
510 "pck-0 OTHER pick signal",
511 "pck-1 GFP pick signal",
512 "pck-2 RFP pick Signal",
514 "vis-0 Visualize OTHER",
515 "vis-1 Visualize GFP",
516 "vis-2 Visualize RFP",
517 "vis-3 Color GFP green RFP blue",
518 "vis-4 Color all channels",
521 "nuc-0 OTHER seg0a gaussain blur",
522 "nuc-1 OTHER seg0a rank order filter for backgound ref",
523 "nuc-2 OTHER seg0a difference to background",
524 "nuc-3 OTHER seg0a threshhold object indicator",
525 "nuc-4 OTHER seg0a threshold possible objects",
526 "nuc-5 OTHER seg0a hysteresis of two thresholds",
527 "nuc-6 OTHER seg0a connect foreground objects",
528 "nuc-7 OTHER seg0a fill holes",
529 "nuc-8 OTHER seg0a exclude dirt",
532 "nuc-9 GFP seg0b gaussain blur",
533 "nuc-10 GFP seg0b rank order filter for backgound ref",
534 "nuc-11 GFP seg0b difference to background",
535 "nuc-12 GFP seg0b threshhold object indicator",
536 "nuc-13 GFP seg0b threshold possible objects",
537 "nuc-14 GFP seg0b hysteresis of two thresholds",
538 "nuc-15 GFP seg0b connect foreground objects",
539 "nuc-16 GFP seg0b fill holes",
540 "nuc-17 OTHER seg0b exclude dirt",
543 "nuc-18 BOTH seg0 add GFP and OTHER binary",
544 "nuc-19 BOTH seg0 close gaps",
545 "nuc-20 BOTH seg0 select small",
546 "nuc-21 BOTH seg0 connect small",
547 "nuc-22 BOTH seg0 add connected small",
548 "nuc-23 BOTH seg0 select by area",
551 "nuc-24 BOTH seg1 distance transformation",
552 "nuc-25 BOTH seg1 get seeds",
553 "nuc-26 BOTH seg1 clear seeds",
554 "nuc-27 BOTH seg1 watershed segmentation",
555 "nuc-28 BOTH seg1 binary segments",
558 "nuc-29 BOTH seg2 distance transformation",
559 "nuc-30 BOTH seg2 get seeds",
560 "nuc-31 BOTH seg2 clear seeds",
561 "nuc-32 BOTH seg2 watershed segmentation",
562 "nuc-33 BOTH seg2 select by area",
565 "vis-5 Nuclei segemntation borders (original)",
566 "nuc-34 BOTH seg3a convex hull",
567 "nuc-35 BOTH seg3a convex hull watershed",
568 "nuc-36 BOTH seg3a convex hull binary segments",
569 "vis-6 Nuclei segemntation borders (convex hull)",
570 "nuc-37 BOTH seg3b ellipse",
571 "nuc-38 BOTH seg3b ellipse watershed",
572 "nuc-39 BOTH seg3b ellipse binary segments",
573 "vis-7 Nuclei segemntation borders (ellipse)",
574 "nuc-40 BOTH seg3c opened",
575 "nuc-41 BOTH seg3c opened watershed",
576 "nuc-42 BOTH seg3c opened binary segments",
577 "vis-8 Nuclei segemntation borders (opened)",
578 "nuc-43 BOTH seg3d opened ellipse",
579 "nuc-44 BOTH seg3d opened ellipse watershed",
580 "nuc-45 BOTH seg3d opened ellipse binary segments",
581 "vis-9 Nuclei segemntation borders (opened ellipse)",
582 "nuc-46 BOTH seg3 binary segments used",
583 "vis-10 Nuclei segemntation borders (used)",
585 "foc-gfp-0 circular median blur",
586 "foc-gfp-1 binarize by threshold",
587 "foc-gfp-2 Select by Area",
589 "foc-rfp-0 circular median blur",
590 "foc-rfp-1 binarize by threshold",
591 "foc-rfp-2 Select by Area",
593 "foc-both-0 foci detected in GFP and RFP",
594 "foc-both-0 Select by Area",
596 "cla-0 Foci in at least one channel",
597 "cla-1 Foci in one channel only",
598 "cla-2 Foci in GFP only",
599 "cla-3 Foci in RFP only",
601 "vis-11 Regions Nuclei",
602 "vis-11 Regions Foci",
603 "vis-12 Regions nuclei with background (used)",
604 "vis-13 Regions nuclei with background (all)",
609 MS1_PARAM_PRE5_BLUR_SIZE,
610 MS1_PARAM_PRE5_BLUR_SIGMA,
612 MS1_PARAM_VIS0_NUC_MIN,
613 MS1_PARAM_VIS0_NUC_MAX,
614 MS1_PARAM_VIS0_NUC_GAMMA,
615 MS1_PARAM_VIS1_GFP_MIN,
616 MS1_PARAM_VIS1_GFP_MAX,
617 MS1_PARAM_VIS1_GFP_GAMMA,
618 MS1_PARAM_VIS2_RFP_MIN,
619 MS1_PARAM_VIS2_RFP_MAX,
620 MS1_PARAM_VIS2_RFP_GAMMA,
621 MS1_PARAM_NUC0_IN_USE,
622 MS1_PARAM_NUC0_BLUR_SIZE,
623 MS1_PARAM_NUC0_BLUR_SIGMA,
624 MS1_PARAM_NUC1_QUANTIL,
625 MS1_PARAM_NUC1_RADIUS,
626 MS1_PARAM_NUC3_THRES_INDICATOR,
627 MS1_PARAM_NUC4_THRES_HYSTERESIS,
628 MS1_PARAM_NUC6_CLOSE_SIZE,
630 MS1_PARAM_NUC8_THRESH_DIRT,
631 MS1_PARAM_NUC9_IN_USE,
632 MS1_PARAM_NUC9_BLUR_SIZE,
633 MS1_PARAM_NUC9_BLUR_SIGMA,
634 MS1_PARAM_NUC10_QUANTIL,
635 MS1_PARAM_NUC10_RADIUS,
636 MS1_PARAM_NUC12_THRES_INDICATOR,
637 MS1_PARAM_NUC13_THRES_HYSTERESIS,
638 MS1_PARAM_NUC15_CLOSE_SIZE,
639 MS1_PARAM_NUC17_STAT,
640 MS1_PARAM_NUC17_THRESH_DIRT,
641 MS1_PARAM_NUC19_CLOSE_SIZE,
642 MS1_PARAM_NUC21_AREA_MIN,
643 MS1_PARAM_NUC21_AREA_MAX,
644 MS1_PARAM_NUC22_CLOSE_SIZE,
645 MS1_PARAM_NUC23_AREA_MIN,
646 MS1_PARAM_NUC23_AREA_MAX,
647 MS1_PARAM_NUC25_DISTANCE,
648 MS1_PARAM_NUC26_OPEN_SIZE,
649 MS1_PARAM_NUC30_DISTANCE,
650 MS1_PARAM_NUC31_OPEN_SIZE,
651 MS1_PARAM_NUC33_AREA_MIN,
652 MS1_PARAM_NUC33_AREA_MAX,
653 MS1_PARAM_NUC40_OPEN_SIZE,
654 MS1_PARAM_FOCGFP0_RADIUS,
655 MS1_PARAM_FOCGFP1_SIZE,
656 MS1_PARAM_FOCGFP1_SIGMA,
657 MS1_PARAM_FOCGFP1_SCALE,
658 MS1_PARAM_FOCGFP1_OFFSET,
659 MS1_PARAM_FOCGFP3_AREA_MIN,
660 MS1_PARAM_FOCGFP3_AREA_MAX,
661 MS1_PARAM_FOCRFP0_RADIUS,
662 MS1_PARAM_FOCRFP1_SIZE,
663 MS1_PARAM_FOCRFP1_SIGMA,
664 MS1_PARAM_FOCRFP1_SCALE,
665 MS1_PARAM_FOCRFP1_OFFSET,
666 MS1_PARAM_FOCRFP3_AREA_MIN,
667 MS1_PARAM_FOCRFP3_AREA_MAX,
668 MS1_PARAM_FOCBOTH1_AREA_MIN,
669 MS1_PARAM_FOCBOTH1_AREA_MAX,
670 MS1_PARAM_VIS8_INTENSITY_OVERLAY,
671 MS1_PARAM_VIS8_INTENSITY_BACKGROUND,
672 MS1_PARAM_OTHER_DUPLICATE_OVERLAP,
676 const QStringList QSL_MS1_Params = {
677 "MS1_PARAM_PRE5_BLUR_SIZE",
678 "MS1_PARAM_PRE5_BLUR_SIGMA",
679 "MS1_PARAM_PRE6_STAT",
680 "MS1_PARAM_VIS0_NUC_MIN",
681 "MS1_PARAM_VIS0_NUC_MAX",
682 "MS1_PARAM_VIS0_NUC_GAMMA",
683 "MS1_PARAM_VIS1_GFP_MIN",
684 "MS1_PARAM_VIS1_GFP_MAX",
685 "MS1_PARAM_VIS1_GFP_GAMMA",
686 "MS1_PARAM_VIS2_RFP_MIN",
687 "MS1_PARAM_VIS2_RFP_MAX",
688 "MS1_PARAM_VIS2_RFP_GAMMA",
689 "MS1_PARAM_NUC0_IN_USE",
690 "MS1_PARAM_NUC0_BLUR_SIZE",
691 "MS1_PARAM_NUC0_BLUR_SIGMA",
692 "MS1_PARAM_NUC1_QUANTIL",
693 "MS1_PARAM_NUC1_RADIUS",
694 "MS1_PARAM_NUC3_THRES_INDICATOR",
695 "MS1_PARAM_NUC4_THRES_HYSTERESIS",
696 "MS1_PARAM_NUC6_CLOSE_SIZE",
697 "MS1_PARAM_NUC8_STAT",
698 "MS1_PARAM_NUC8_THRESH_DIRT",
699 "MS1_PARAM_NUC9_IN_USE",
700 "MS1_PARAM_NUC9_BLUR_SIZE",
701 "MS1_PARAM_NUC9_BLUR_SIGMA",
702 "MS1_PARAM_NUC10_QUANTIL",
703 "MS1_PARAM_NUC10_RADIUS",
704 "MS1_PARAM_NUC12_THRES_INDICATOR",
705 "MS1_PARAM_NUC13_THRES_HYSTERESIS",
706 "MS1_PARAM_NUC15_CLOSE_SIZE",
707 "MS1_PARAM_NUC17_STAT",
708 "MS1_PARAM_NUC17_THRESH_DIRT",
709 "MS1_PARAM_NUC19_CLOSE_SIZE",
710 "MS1_PARAM_NUC21_AREA_MIN",
711 "MS1_PARAM_NUC21_AREA_MAX",
712 "MS1_PARAM_NUC22_CLOSE_SIZE",
713 "MS1_PARAM_NUC23_AREA_MIN",
714 "MS1_PARAM_NUC23_AREA_MAX",
715 "MS1_PARAM_NUC25_DISTANCE",
716 "MS1_PARAM_NUC26_OPEN_SIZE",
717 "MS1_PARAM_NUC30_DISTANCE",
718 "MS1_PARAM_NUC31_OPEN_SIZE",
719 "MS1_PARAM_NUC33_AREA_MIN",
720 "MS1_PARAM_NUC33_AREA_MAX",
721 "MS1_PARAM_NUC40_OPEN_SIZE",
722 "MS1_PARAM_FOCGFP0_RADIUS",
723 "MS1_PARAM_FOCGFP1_SIZE",
724 "MS1_PARAM_FOCGFP1_SIGMA",
725 "MS1_PARAM_FOCGFP1_SCALE",
726 "MS1_PARAM_FOCGFP1_OFFSET",
727 "MS1_PARAM_FOCGFP3_AREA_MIN",
728 "MS1_PARAM_FOCGFP3_AREA_MAX",
729 "MS1_PARAM_FOCRFP0_RADIUS",
730 "MS1_PARAM_FOCRFP1_SIZE",
731 "MS1_PARAM_FOCRFP1_SIGMA",
732 "MS1_PARAM_FOCRFP1_SCALE",
733 "MS1_PARAM_FOCRFP1_OFFSET",
734 "MS1_PARAM_FOCRFP3_AREA_MIN",
735 "MS1_PARAM_FOCRFP3_AREA_MAX",
736 "MS1_PARAM_FOCBOTH1_AREA_MIN",
737 "MS1_PARAM_FOCBOTH1_AREA_MAX",
738 "MS1_PARAM_VIS8_INTENSITY_OVERLAY",
739 "MS1_PARAM_VIS8_INTENSITY_BACKGROUND",
740 "MS1_PARAM_OTHER_DUPLICATE_OVERLAP"
745 TAB_CONTROL_VIEWPORT,
746 TAB_CONTROL_IMG_PROC_MS1,
747 TAB_CONTROL_IMG_PROC_MS3,
748 TAB_CONTROL_OVERVIEW_BIG,
749 TAB_CONTROL_NUMBER_OF
755 VIEW_PAGE_OVERVIEW_BIG,
766 OVERVIEW_TYPE_INFO_FOCI,
767 OVERVIEW_TYPE_INFO_SHAPE,
768 OVERVIEW_TYPE_INFO_VALUE_MEAN,
769 OVERVIEW_TYPE_INFO_VALUE_STD,
770 OVERVIEW_TYPE_INFO_VALUE_SKEWNESS,
771 OVERVIEW_TYPE_INFO_VALUE_KURTOSIS,
772 OVERVIEW_TYPE_INFO_VALUE_MEDIAN,
773 OVERVIEW_TYPE_INFO_VALUE_MED_DEV,
774 OVERVIEW_TYPE_NUMBER_OF
776 const QStringList QSL_OverviewTypes = {
784 "Values: Deviation from median",
786 "Values: Standard deviation",
795 MODE_MAJOR_0_DATASET_DIM,
796 MODE_MAJOR_1_AUTO_DETECTION,
797 MODE_MAJOR_2_MANU_CORRECT_DETECTION,
798 MODE_MAJOR_3_AUTO_MATCHING_FOCI_NUCLEI,
799 MODE_MAJOR_4_AUTO_RECONSTRUCT_PEDIGREE,
800 MODE_MAJOR_5_MANU_CORRECT_PEDIGREE,
801 MODE_MAJOR_6_EPIC_ANALYSIS,
804 const QStringList QSL_ModeMajor = {
805 "S0 Dataset definition",
806 "S1 Automatic detection",
807 "S2 Manuel correction of detetctions",
808 "S3 Automatic matching foci to nuclei",
809 "S4 Automatic pedigree reconstruction",
810 "S5 Manual pedigree correction",
814 size_t mode_major_current = MODE_MAJOR_0_DATASET_DIM;
815 void set_ModeMajor_Current(
size_t mode);
819 void on_stackedWidget_StepMajor_currentChanged(
int arg1);
821 void on_pushButton_StepMajor_1_clicked();
822 void on_pushButton_StepMajor_2_clicked();
823 void on_pushButton_StepMajor_3_clicked();
824 void on_pushButton_StepMajor_4_clicked();
825 void on_pushButton_StepMajor_5_clicked();
826 void on_pushButton_StepMajor_6_clicked();
832 void MS2_SetComboboxColor(QComboBox *CB_R, QComboBox *CB_G, QComboBox *CB_B,
bool color_background_not_text);
833 void MS2_SetComboboxColor_Image(
size_t viewer_id);
834 void MS2_SetComboboxColor_Overlay(
size_t viewer_id);
835 void MS2_SetComboboxColor_ImageAll();
836 void MS2_SetComboboxColor_OverlayAll();
837 void MS2_SetComboboxColor_All();
839 void on_checkBox_MS2_ViewerShowSettings_clicked(
bool checked);
840 void on_pushButton_MS2_FileDialog_clicked();
842 void on_pushButton_MS2_ViewerMaximize_1_clicked();
843 void on_pushButton_MS2_ViewerMaximize_2_clicked();
844 void on_pushButton_MS2_ViewerMaximize_3_clicked();
845 void on_pushButton_MS2_ViewerMaximize_4_clicked();
847 void on_pushButton_MS2_ViewerSettings_PointColor_1_clicked();
848 void on_pushButton_MS2_ViewerSettings_PointColor_2_clicked();
849 void on_pushButton_MS2_ViewerSettings_PointColor_3_clicked();
850 void on_pushButton_MS2_ViewerSettings_PointColor_4_clicked();
852 void on_checkBox_MS2_ViewerSettings_ConnectZoom_1_clicked(
bool checked);
853 void on_checkBox_MS2_ViewerSettings_ConnectZoom_2_clicked(
bool checked);
854 void on_checkBox_MS2_ViewerSettings_ConnectZoom_3_clicked(
bool checked);
855 void on_checkBox_MS2_ViewerSettings_ConnectZoom_4_clicked(
bool checked);
857 void on_checkBox_MS2_ViewerSettings_ViewTransform_1_clicked(
bool checked);
858 void on_checkBox_MS2_ViewerSettings_ViewTransform_2_clicked(
bool checked);
859 void on_checkBox_MS2_ViewerSettings_ViewTransform_3_clicked(
bool checked);
860 void on_checkBox_MS2_ViewerSettings_ViewTransform_4_clicked(
bool checked);
862 void on_pushButton_MS2_Tools_Channel_Nuclei_clicked();
863 void on_pushButton_MS2_Tools_Channel_GFPonly_clicked();
864 void on_pushButton_MS2_Tools_Channel_RFPonly_clicked();
865 void on_pushButton_MS2_Tools_Channel_GFPandRFP_clicked();
867 void on_comboBox_MS2_ViewportBackground_currentIndexChanged(
int index);
869 void on_pushButton_MS2_EventList_Load_clicked();
870 void on_pushButton_MS2_EventList_Close_clicked();
871 void on_pushButton_MS2_EventList_Move_clicked();
872 void on_checkBox_MS2_EventList_Event_Solved_stateChanged(
int arg1);
873 void on_pushButton_MS2_EventList_ToBegin_clicked();
874 void on_pushButton_MS2_EventList_ToEnd_clicked();
876 void MS2_ViewerMaximize(
int v2max);
877 void MS2_ViewerPointColor(
size_t v2col);
878 void MS2_ViewerPointDiameter(
size_t v,
double d);
879 void MS2_ViewerConnectZooms(
size_t v2con,
bool con);
880 void MS2_ViewerSetVisTrafoActive(
size_t v2tra);
881 void MS2_ViewerSetVisTrafoActive_All();
882 void MS2_ViewersPopulateCBs();
883 void MS2_ViewersSelectDefaultCBs();
885 void MS2_UpdateViews();
886 void MS2_UpdateImages();
887 void MS2_UpdateImage1();
888 void MS2_UpdateImage2();
889 void MS2_UpdateImage3();
890 void MS2_UpdateImage4();
891 void MS2_UpdateImage(
size_t img2update);
892 void MS2_UpdateImages_Editing();
894 void MS2_UpdateImage_ToDo_Static();
895 void MS2_UpdateImage_ToDo_Highlight(
int x,
int y);
896 void MS2_UpdateImage_ToDo_Highlight();
898 void MS2_UpdateImage_Viewport();
899 void MS2_MoveToNextViewportToProcess();
900 void MS2_MoveToNextViewport();
902 void MS2_UpdateViewportPos();
903 void MS2_InitOverlays();
904 void MS2_UpdateOverlays();
905 void MS2_UpdateOverlay(
size_t overlay_index);
907 void MS2_DrawMode_Set(
size_t mode);
908 void MS2_Draw_RecordedClicks_UpdateAvailiableDrawModi();
909 void MS2_Draw_RecordedClicksChanged(
size_t point_count);
911 bool MS2_CalcMosaik_Size();
914 bool MS2_LoadData_DirsIn();
915 bool MS2_LoadData_DirsOut();
917 bool MS2_LoadData_TimeSelected();
918 bool MS2_LoadData_Time(
size_t t);
919 bool MS2_LoadData_Mosaiks_In(
size_t t);
920 bool MS2_LoadData_Detections_In(
size_t t,
bool error_when_no_dir);
921 bool MS2_LoadData_Detections_Out(
size_t t);
922 bool MS2_LoadData_Detections(
size_t t,
bool error_when_no_dir, vector<vector<D_Bio_NucleusImage> > *vvNucleiTarget, QDir DIR_Source, vector<vector<size_t> > *vvState,
size_t state_found,
size_t state_not_found);
924 void MS2_ChangeMode(
int mode);
926 void MS2_EventList_Load();
927 void MS2_EventList_Close();
928 bool MS2_EventList_Sort();
929 void MS2_EventList_SaveList();
930 void MS2_EventList_SaveCurrent();
931 bool MS2_EventList_ReadAtCursor();
932 bool MS2_EventList_MoveToEvent();
933 void MS2_EventList_Move();
934 void MS2_EventList_Move_ToBegin();
935 void MS2_EventList_Move_ToEnd();
936 int MS2_EventList_Decode_Number_Current(
char number_name,
bool *ok);
937 int MS2_EventList_Decode_Number(
int line,
char number_name,
bool *ok);
938 int MS2_EventList_Decode_Number(QStringList QSL_List,
int line,
char number_name,
bool *ok);
939 QString MS2_EventList_Decode_Comment_Current(
bool *ok);
940 QString MS2_EventList_Decode_Comment(
int line,
bool *ok);
941 bool MS2_EventList_Decode_Status_Current(
bool *ok);
942 bool MS2_EventList_Decode_Status(
int line,
bool *ok);
944 void on_groupBox_VisTrafo_clicked();
946 void on_doubleSpinBox_MS2_Params_NucleusBorderThickness_valueChanged(
double arg1);
947 void on_doubleSpinBox_MS2_Params_FociMinRadius_valueChanged(
double arg1);
949 void on_pushButton_MS2_Viewport_Left_clicked();
950 void on_pushButton_MS2_Viewport_Right_clicked();
951 void on_pushButton_MS2_Viewport_Up_clicked();
952 void on_pushButton_MS2_Viewport_Down_clicked();
953 void on_pushButton_MS2_Viewport_Next_clicked();
954 void on_pushButton_MS2_Viewport_Previous_clicked();
956 void on_checkBox_MS2_ViewportOverlay_clicked();
958 void on_pushButton_MS2_Tools_Progress_Corrected_clicked();
959 void on_pushButton_MS2_Tools_Progress_Clear_clicked();
960 void on_pushButton_MS2_Tools_Progress_Reset_clicked();
961 void on_pushButton_MS2_Tools_Progress_ToCorrect_clicked();
963 void on_pushButton_MS2_Tools_History_Undo_clicked();
964 void on_pushButton_MS2_Tools_History_Redo_clicked();
966 void on_pushButton_MS2_Tools_RecordPoints_Start_clicked();
967 void on_pushButton_MS2_Tools_RecordPoints_Cancel_clicked();
968 void on_pushButton_MS2_Tools_ApplyPoints_Polygon_clicked();
969 void on_pushButton_MS2_Tools_ApplyPoints_Ellipse_clicked();
970 void on_pushButton_MS2_Tools_ApplyPoints_Remove_clicked();
972 void on_spinBox_MS2_ViewerSettings_PointDiameter_1_valueChanged(
int arg1);
973 void on_spinBox_MS2_ViewerSettings_PointDiameter_2_valueChanged(
int arg1);
974 void on_spinBox_MS2_ViewerSettings_PointDiameter_3_valueChanged(
int arg1);
975 void on_spinBox_MS2_ViewerSettings_PointDiameter_4_valueChanged(
int arg1);
977 void on_pushButton_MS2_Viewport_NextToCorrect_clicked();
978 void on_pushButton_MS2_Viewport_NextSegment_clicked();
980 void on_spinBox_MS2_Viewport_X_valueChanged(
int arg1);
981 void on_spinBox_MS2_Viewport_Y_valueChanged(
int arg1);
982 void on_spinBox_MS2_Viewport_T_valueChanged(
int arg1);
984 void on_progressBar_MS2_CorrectionProgress_valueChanged(
int value);
986 void on_pushButton_MS2_Tools_ApplyPoints_ConvexHull_clicked();
987 void on_pushButton_MS2_Tools_ApplyPoints_Points_clicked();
988 void on_pushButton_MS2_Tools_ApplyPoints_Merge_clicked();
989 void on_pushButton_MS2_Tools_ApplyPoints_Separate_clicked();
990 void on_pushButton_MS2_Tools_ApplyPointsParam_PointsBigger_clicked();
991 void on_pushButton_MS2_Tools_ApplyPointsParam_PointsSmaller_clicked();
993 void on_radioButton_MS2_Mode_ToDo_clicked(
bool checked);
994 void on_radioButton_MS2_Mode_Detailed_clicked(
bool checked);
995 void on_checkBox_MS2_ToDo_StateBorders_clicked();
996 void on_checkBox_MS2_ToDo_StateMarkers_clicked();
997 void on_checkBox_MS2_ToDo_SegmentBorders_clicked();
998 void on_checkBox_MS2_ToDo_DetectionsOverlay_clicked();
999 void on_pushButton_MS2_ToDo_HoveredToOk_clicked();
1000 void on_pushButton_MS2_ToDo_HoveredToUnknown_clicked();
1004 const static size_t MS2_ViewersCount = 4;
1005 const static size_t MS2_ViewersChannels = 3;
1006 int MS2_ViewerMaximized = -1;
1015 vector<D_Viewer*> v_MS2_Viewer;
1016 vector<QPushButton*> v_MS2_PUB_Viewer_Maximize;
1017 vector<QPushButton*> v_MS2_PUB_Viewer_PointColor;
1018 vector<vector<QComboBox*>> vv_MS2_COB_ViewerChannel_Image_viewer_bgr;
1019 vector<vector<QComboBox*>> vv_MS2_COB_ViewerChannel_Overlay_viewer_bgr;
1020 vector<QCheckBox*> v_MS2_CHB_Viewer_Transform;
1021 vector<QCheckBox*> v_MS2_CHB_Viewer_SegmentBox;
1022 vector<QCheckBox*> v_MS2_CHB_Viewer_ConnectZoom;
1023 vector<QGroupBox*> v_MS2_GRB_Viewer_GroupAll;
1024 vector<QGroupBox*> v_MS2_GRB_Viewer_GroupSettings;
1026 vector<QPushButton*> v_MS2_PUB_DrawModi;
1029 vector<QColor> v_MS2_COL_Viewer_PointColor;
1032 vector<Mat> v_MS2_MA_Images2Show;
1033 Mat MA_MS2_ViewportShow;
1034 Mat MA_MS2_ToDo_Static;
1035 Mat MA_MS2_ToDo_Highlight;
1038 vector<Mat> v_MS2_MA_ChannelsImage_Full;
1039 vector<Mat> v_MS2_MA_ChannelsImage_Croped;
1040 vector<Mat> v_MS2_MA_ChannelsOverlay_Croped;
1043 QDir DIR_MS2_In_Master;
1044 QDir DIR_MS2_In_Detections;
1045 QDir DIR_MS2_In_Mosaik;
1046 vector<QDir> vDIR_MS2_In_MosaikChannels;
1047 vector<vector<QDir>> vvDIR_MS2_In_Detections_TimesNuclei;
1050 QDir DIR_MS2_Out_Master;
1051 QDir DIR_MS2_Out_DetectionsCorrected;
1054 double MS2_MosaikImageScale;
1055 double MS2_MosaikBorderPrz;
1056 int MS2_MosaikImageWidth;
1057 int MS2_MosaikImageHeight;
1058 vector<vector<D_Bio_NucleusImage>> vv_MS2_NucImg_In_mosaikXY;
1059 vector<vector<D_Bio_NucleusImage>> vv_MS2_NucImg_Out_mosaikXY;
1060 vector<vector<size_t>> vv_MS2_NucImg_State_In_mosaikXY;
1061 vector<vector<size_t>> vv_MS2_NucImg_State_Out_mosaikXY;
1064 Point MS2_ViewportOffset_NotScaled =
Point(0,0);
1065 Point MS2_ViewportOffset_Scaled =
Point(0,0);
1068 size_t MS2_draw_mode = MS2_DRAW_MODE_NUCLEI;
1069 void MS2_Draw_Save();
1070 void MS2_Draw_Clear();
1071 void MS2_Draw_Reset();
1072 void MS2_Draw_SetProcessed();
1073 void MS2_Draw_SetToProcess();
1074 void MS2_Draw_UpdateUi();
1075 void MS2_Draw_RecordingStart();
1076 void MS2_Draw_RecordingEnd();
1077 void MS2_Draw_Ellipse();
1078 void MS2_Draw_Polygon();
1079 void MS2_Draw_ConvexHull();
1080 void MS2_Draw_Points();
1081 void MS2_Draw_SeparateObject();
1082 void MS2_Draw_MergeObjects();
1083 void MS2_Draw_Contour(vector<Point> contour);
1084 void MS2_Draw_Remove();
1087 const size_t MS2_DetOutBackup_Count = 20;
1088 bool MS2_DetOutBackup_Init();
1089 void MS2_DetOutBackup_Save();
1090 bool MS2_DetOutBackup_Undo();
1091 bool MS2_DetOutBackup_Redo();
1092 void MS2_DetOutBackup_UpdateUi();
1093 vector<vector<vector<D_Bio_NucleusImage>>> vvv_MS2_DetectionsOutBackups_XYI;
1094 vector<vector<size_t>> vvv_MS2_DetectionsOut_BackupCursor;
1095 vector<vector<size_t>> vvv_MS2_DetectionsOut_BackupValidMax;
1098 void MS2_ToDo_SetFinished();
1099 void MS2_ToDo_SetFinished(
int x,
int y);
1100 void MS2_ToDo_SetToBeEdited();
1101 void MS2_ToDo_SetToBeEdited(
int x,
int y);
1104 bool MS2_EventList_FileSet =
false;
1105 QFileInfo MS2_EventList_File;
1106 QStringList MS2_EventList_Events;
1107 const int MS2_EventList_CursorOffset = 6;
1108 bool MS2_EventList_ReadEventValid =
false;
1112 bool state_MS2_data_loaded =
false;
1113 bool state_MS2_detections_loaded =
false;
1114 bool state_MS2_backups_init =
false;
1115 bool state_MS2_todo_static_img_created =
false;
1117 enum MS2_EDITING_MODE {
1123 enum MS2_CHANNELS_MOSAIK {
1127 MS2_CH_MOSAIK_NUMBER_OF
1129 const QStringList QSL_MS2_ChannelsMosaik = {
1135 enum MS2_CHANNELS_IMAGE {
1141 MS2_CH_IMG_NUMBER_OF
1143 const QStringList QSL_MS2_ChannelsImage = {
1151 enum MS2_CHANNELS_OVERLAY {
1154 MS2_CH_OVR_FOCI_GFP,
1155 MS2_CH_OVR_FOCI_RFP,
1156 MS2_CH_OVR_FOCI_BOTH,
1157 MS2_CH_OVR_NUMBER_OF
1159 const QStringList QSL_MS2_ChannelsOverlay = {
1167 enum MS2_IMAGE_STATE {
1168 MS2_IMG_STATE_NOT_FOUND,
1169 MS2_IMG_STATE_LOADED,
1170 MS2_IMG_STATE_TO_PROCESS,
1171 MS2_IMG_STATE_PROCESSED,
1172 MS2_IMG_STATE_NUMBER_OF
1175 enum MS2_DRAW_MODE {
1176 MS2_DRAW_MODE_NUCLEI,
1177 MS2_DRAW_MODE_FOCI_GFP,
1178 MS2_DRAW_MODE_FOCI_RFP,
1179 MS2_DRAW_MODE_FOCI_BOTH,
1180 MS2_DRAW_MODE_NUMBER_OF
1182 const QStringList QSL_MS2_DrawMode = {
1193 void on_comboBox_MS3_ImgProc_ProjectZ_Stat_currentIndexChanged(
int index);
1194 void on_doubleSpinBox_MS3_ImgProc_Vis_Intensity_Overlay_valueChanged(
double arg1);
1195 void on_doubleSpinBox_MS3_ImgProc_Vis_Intensity_Background_valueChanged(
double arg1);
1196 void on_doubleSpinBox_MS3_ImgProc_DuplicateRelThres_valueChanged(
double arg1);
1197 void on_spinBox_MS3_ImgProc_Vis_Other_Min_valueChanged(
int arg1);
1198 void on_spinBox_MS3_ImgProc_Vis_Other_Max_valueChanged(
int arg1);
1199 void on_doubleSpinBox_MS3_ImgProc_Vis_Other_Gamma_valueChanged(
double arg1);
1200 void on_spinBox_MS3_ImgProc_Vis_GFP_Min_valueChanged(
int arg1);
1201 void on_spinBox_MS3_ImgProc_Vis_GFP_Max_valueChanged(
int arg1);
1202 void on_doubleSpinBox_MS3_ImgProc_Vis_GFP_Gamma_valueChanged(
double arg1);
1203 void on_spinBox_MS3_ImgProc_Vis_RFP_Min_valueChanged(
int arg1);
1204 void on_spinBox_MS3_ImgProc_Vis_RFP_Max_valueChanged(
int arg1);
1205 void on_doubleSpinBox_MS3_ImgProc_Vis_RFP_Gamma_valueChanged(
double arg1);
1207 void on_comboBox_MS3_ImgProc_StepShow_currentIndexChanged(
int index);
1209 void on_spinBox_DataDim_X_valueChanged(
int arg1);
1210 void on_spinBox_DataDim_Y_valueChanged(
int arg1);
1211 void on_spinBox_DataDim_T_valueChanged(
int arg1);
1217 bool MS3_LoadDirs();
1218 bool MS3_LoadDetections(
size_t t);
1221 void Update_ImageProcessing_StepFrom_MS3(
size_t step_start);
1222 void Update_ImageProcessing_StepSingle_MS3(
size_t step);
1223 void Update_ImageProcessing_StepSingle_MS3_ReuseProcChainMS1(
size_t step);
1224 void Update_ImageProcessing_StepSingle_MS3_DrawDetections(
size_t step);
1225 void Update_ImageProcessing_StepSingle_MS3_VisualizeResults(
size_t step);
1228 QDir DIR_MS3_In_Master;
1229 QDir DIR_MS3_In_DetectionsCorrected;
1230 vector<vector<D_Bio_NucleusImage>> vv_MS3_NucImg_InCorrected_mosaikXY;
1231 vector<vector<size_t>> vv_MS3_NucImg_InCorrected_States_mosaikXY;
1234 bool state_MS3_data_loaded =
false;
1235 bool state_MS3_stack_processing =
false;
1236 bool state_MS3_detections_loaded =
false;
1238 int MS3_current_loaded_detections_T = -1;
1243 STEP_MS3_PRE_LOAD_MAIN,
1244 STEP_MS3_PRE_LOAD_RIGHT,
1245 STEP_MS3_PRE_LOAD_BOTTOM,
1246 STEP_MS3_PRE_LOAD_BOTTOM_RIGHT,
1247 STEP_MS3_PRE_STITCH,
1248 STEP_MS3_PRE_BLUR_GAUSS,
1249 STEP_MS3_PRE_PROJECT_Z,
1260 STEP_MS3_VIS_PAGES_AS_COLOR_GFP_RFP,
1261 STEP_MS3_VIS_PAGES_AS_COLOR_ALL,
1264 STEP_MS3_VIS_NUCLEI_BORDERS_NO_REMOVE,
1265 STEP_MS3_VIS_NUCLEI_BORDERS,
1266 STEP_MS3_VIS_NUCLEI_FILLED_STACK,
1267 STEP_MS3_VIS_NUCLEI_FILLED_PICKED,
1268 STEP_MS3_VIS_NUCLEI_FILLED_ALL,
1269 STEP_MS3_VIS_FOCI_GFP,
1270 STEP_MS3_VIS_FOCI_RFP,
1271 STEP_MS3_VIS_FOCI_BOTH,
1274 STEP_MS3_VIS_REGIONS,
1275 STEP_MS3_VIS_REGIONS_BACKGROUND,
1280 const QStringList QSL_Steps_MS3 = {
1281 "pre-0 Load main image",
1282 "pre-1 Load border image R",
1283 "pre-2 Load border image B",
1284 "pre-3 Load border image BR",
1285 "pre-4 Stitch borders to main image",
1286 "pre-5 Blur gaussian",
1287 "pre-6 Z-Projection",
1289 "pck-0 OTHER pick signal",
1290 "pck-1 GFP pick signal",
1291 "pck-2 RFP pick Signal",
1293 "vis-0 visualize OTHER",
1294 "vis-1 visualize GFP",
1295 "vis-2 visualize RFP",
1296 "vis-3 Color GFP and RFP",
1297 "vis-4 Color all channels",
1299 "draw-0 Nuclei Borders (without remove duplicates)",
1300 "draw-1 Nuclei Borders",
1301 "draw-2 Nuclei Filled (stacked)",
1302 "draw-2 Nuclei Filled (picked)",
1303 "draw-2 Nuclei Filled (projected all)",
1309 "vis-6 Regions with background"
1314 MS3_PARAM_PRE5_BLUR_SIZE,
1315 MS3_PARAM_PRE5_BLUR_SIGMA,
1316 MS3_PARAM_PRE6_STAT,
1317 MS3_PARAM_VIS0_NUC_MIN,
1318 MS3_PARAM_VIS0_NUC_MAX,
1319 MS3_PARAM_VIS0_NUC_GAMMA,
1320 MS3_PARAM_VIS1_GFP_MIN,
1321 MS3_PARAM_VIS1_GFP_MAX,
1322 MS3_PARAM_VIS1_GFP_GAMMA,
1323 MS3_PARAM_VIS2_RFP_MIN,
1324 MS3_PARAM_VIS2_RFP_MAX,
1325 MS3_PARAM_VIS2_RFP_GAMMA,
1326 MS3_PARAM_VIS6_INTENSITY_OVERLAY,
1327 MS3_PARAM_VIS6_INTENSITY_BACKGROUND,
1328 MS3_PARAM_OTHER_DUPLICATE_OVERLAP,
1332 const QStringList QSL_MS3_Params = {
1333 "MS3_PARAM_PRE5_BLUR_SIZE",
1334 "MS3_PARAM_PRE5_BLUR_SIGMA",
1335 "MS3_PARAM_PRE6_STAT",
1336 "MS3_PARAM_VIS0_NUC_MIN",
1337 "MS3_PARAM_VIS0_NUC_MAX",
1338 "MS3_PARAM_VIS0_NUC_GAMMA",
1339 "MS3_PARAM_VIS1_GFP_MIN",
1340 "MS3_PARAM_VIS1_GFP_MAX",
1341 "MS3_PARAM_VIS1_GFP_GAMMA",
1342 "MS3_PARAM_VIS2_RFP_MIN",
1343 "MS3_PARAM_VIS2_RFP_MAX",
1344 "MS3_PARAM_VIS2_RFP_GAMMA",
1345 "MS3_PARAM_VIS6_INTENSITY_OVERLAY",
1346 "MS3_PARAM_VIS6_INTENSITY_BACKGROUND",
1347 "MS3_PARAM_OTHER_DUPLICATE_OVERLAP"
1356 QDir DIR_MS4_In_Master;
1357 QDir DIR_MS4_In_DetectionsAssigned;
1358 QDir DIR_MS4_Out_NucleiLifes;
1368 bool state_MS4_dirs_loaded =
false;
1369 bool state_MS4_detections_loaded_to_pedigree =
false;
1371 bool state_MS4_pedigree_init =
false;
1372 bool state_MS4_pedigree_init_1st_time =
false;
1373 bool state_MS4_pedigree_reconstructed =
false;
1378 bool MS4_LoadData();
1379 bool MS4_LoadDirs();
1380 bool MS4_LoadDetectionsToPedigree();
1385 bool MS4_SaveData();
1387 void MS4_DisplayRelativeScoreWeights();
1388 bool MS4_InitPedigree();
1389 bool MS4_ReconstructPedigree();
1390 bool MS4_UpdatePedigreePlot();
1392 void MS4_CalcVolumetricView_Memory();
1393 void MS4_CalcOriginalMosaicSize();
1395 void on_pushButton_MS4_LoadData_clicked();
1396 void on_pushButton_MS4_SaveData_clicked();
1397 void on_pushButton_MS4_StartPedigreeReconstruction_clicked();
1398 void on_pushButton_MS4_UpdatePedigreeView_clicked();
1399 void on_spinBox_MS4_PedigreeView_Param_Volumetric_SubVolumeSize_X_valueChanged(
int arg1);
1400 void on_spinBox_MS4_PedigreeView_Param_Volumetric_SubVolumeSize_Y_valueChanged(
int arg1);
1401 void on_spinBox_MS4_PedigreeView_Param_Volumetric_SubVolumeSize_T_valueChanged(
int arg1);
1402 void on_spinBox_MS4_PedigreeProp_OriginalImgSize_Single_X_valueChanged(
int arg1);
1403 void on_spinBox_MS4_PedigreeProp_OriginalImgSize_Single_Y_valueChanged(
int arg1);
1405 void on_checkBox_MS4_Score_AdvancedSettings_clicked(
bool checked);
1413 bool MS5_LoadDirs();
1414 bool MS5_LoadMosaics();
1415 bool MS5_LoadNucleiData();
1416 bool MS5_LoadNucleiLifes();
1418 bool MS5_SaveData();
1419 bool MS5_SaveImgStack();
1421 void MS5_UpdateImages_Basic();
1422 void MS5_UpdateImages_Highlight();
1423 void MS5_FindConnectedNucsToDraw(vector<D_Bio_NucleusBlob*>* pvpNucs, vector<size_t> *pvKinshipDegrees,
D_Bio_NucleusBlob* pNucCheck,
size_t t_min,
size_t t_max,
size_t kinship_degree = 0);
1425 bool MS5_CoordTransform_MosaicPx_2_OriginalPx(
int* x,
int* y);
1426 void MS5_NucleiHighlight_Select_Viewer0(
int x,
int y);
1427 void MS5_NucleiHighlight_Select_Viewer1(
int x,
int y);
1428 void MS5_NucleiHighlight_Select_Viewer2(
int x,
int y);
1429 void MS5_NucleiHighlight_Select_Viewer3(
int x,
int y);
1430 void MS5_NucleiHighlight_Select_Viewer4(
int x,
int y);
1431 void MS5_NucleiHighlight_Hover_Viewer0(
int x,
int y);
1432 void MS5_NucleiHighlight_Hover_Viewer1(
int x,
int y);
1433 void MS5_NucleiHighlight_Hover_Viewer2(
int x,
int y);
1434 void MS5_NucleiHighlight_Hover_Viewer3(
int x,
int y);
1435 void MS5_NucleiHighlight_Hover_Viewer4(
int x,
int y);
1436 void MS5_NucleiHighlight_Select(
int x,
int y,
size_t t);
1437 void MS5_NucleiHighlight_Hover(
int x,
int y,
size_t t);
1439 bool MS5_Editing_SelectionCheck();
1440 void MS5_Editing_SelectionForget();
1441 void MS5_Editing_ConnectionCheck();
1442 bool MS5_Editing_ConnectionCreate();
1443 bool MS5_Editing_ConnectionDelete();
1444 bool MS5_Editing_Include();
1445 bool MS5_Editing_Exclude();
1447 void MS5_EventToS2_SetList();
1448 void MS5_EventToS2_Start();
1449 void MS5_EventToS2_Stop();
1450 void MS5_EventToS2_GetClick_v0(
int x,
int y);
1451 void MS5_EventToS2_GetClick_v1(
int x,
int y);
1452 void MS5_EventToS2_GetClick_v2(
int x,
int y);
1453 void MS5_EventToS2_GetClick_v3(
int x,
int y);
1454 void MS5_EventToS2_GetClick_v4(
int x,
int y);
1455 void MS5_EventToS2_GetClick(
int x,
int y,
size_t t);
1456 void MS5_EventToS2_AddEvent();
1457 void MS5_EventToS2_SaveEventList();
1459 void MS5_EventS5intern_JumpToNext();
1460 void MS5_EventS5intern_MoveToVP();
1461 void MS5_EventS5intern_CountEvents();
1463 void on_pushButton_MS5_DataLoad_clicked();
1464 void on_spinBox_MS5_Y_size_valueChanged(
int arg1);
1465 void on_spinBox_MS5_X_size_valueChanged(
int arg1);
1466 void on_pushButton_MS5_DataSave_clicked();
1467 void on_pushButton_MS5_Editing_ConnectionCreate_clicked();
1468 void on_pushButton_MS5_Editing_ConnectionDelete_clicked();
1469 void on_pushButton_MS5_Editing_Exclude_clicked();
1470 void on_pushButton_MS5_Editing_Include_clicked();
1471 void on_pushButton_MS5_Editing_ForgetSelection_clicked();
1473 void on_pushButton_MS5_SaveViewportImageStack_clicked();
1475 void on_pushButton_MS5_EventS2_RecordStart_clicked();
1476 void on_pushButton_MS5_EventS2_RecordStop_clicked();
1478 void on_spinBox_MS5_Events_S5intern_Pos_T_valueChanged(
int arg1);
1479 void on_spinBox_MS5_Events_S5intern_Pos_Y_valueChanged(
int arg1);
1480 void on_spinBox_MS5_Events_S5intern_Pos_X_valueChanged(
int arg1);
1481 void on_pushButton_MS5_Events_S5intern_JumpToNextEvent_clicked();
1482 void on_spinBox_MS5_Events_S5intern_Draw_Radius_valueChanged(
int arg1);
1483 void on_spinBox_MS5_Events_S5intern_Draw_Thickness_valueChanged(
int arg1);
1484 void on_spinBox_MS5_Events_S5intern_Draw_Red_valueChanged(
int arg1);
1485 void on_spinBox_MS5_Events_S5intern_Draw_Green_valueChanged(
int arg1);
1486 void on_spinBox_MS5_Events_S5intern_Draw_Blue_valueChanged(
int arg1);
1487 void on_pushButton_MS5_Events_S5intern_Draw_SelectColor_clicked();
1488 void on_pushButton_MS5_Events_S5intern_BackToZero_clicked();
1489 void on_pushButton_MS5_Events_S5intern_CountEvents_clicked();
1490 void on_checkBox_MS5_Events_S5intern_AutoUpdateCount_stateChanged(
int arg1);
1491 void on_spinBox_MS5_Events_S5intern_LargeDist_Dist_valueChanged(
int arg1);
1492 void on_spinBox_MS5_Events_S5intern_ShortTracking_Isolated_Duration_valueChanged(
int arg1);
1493 void on_spinBox_MS5_Events_S5intern_ShortTracking_LooseStart_Duration_valueChanged(
int arg1);
1494 void on_spinBox_MS5_Events_S5intern_ShortTracking_LooseEnd_Duration_valueChanged(
int arg1);
1495 void on_spinBox_MS5_Events_S5intern_ShortTracking_BetweenMitoses_Duration_valueChanged(
int arg1);
1496 void on_checkBox_MS5_Events_S5intern_Excluded_stateChanged(
int arg1);
1497 void on_checkBox_Events_S5intern_EventConstraints_AfterT_clicked();
1498 void on_spinBox_Events_S5intern_EventConstraints_AfterT_Time_valueChanged(
int arg1);
1499 void on_checkBox_Events_S5intern_EventConstraints_BeforeT_clicked();
1500 void on_spinBox_Events_S5intern_EventConstraints_BeforeT_Time_valueChanged(
int arg1);
1501 void on_checkBox_Events_S5intern_EventConstraints_NotBorder_stateChanged(
int arg1);
1502 void on_spinBox_Events_S5intern_EventConstraints_NotBorder_Size_valueChanged(
int arg1);
1503 void on_checkBox_Events_S5intern_EventConstraints_Mosaik_stateChanged(
int arg1);
1504 void on_spinBox_Events_S5intern_EventConstraints_Mosaik_MaxX_valueChanged(
int arg1);
1505 void on_spinBox_Events_S5intern_EventConstraints_Mosaik_MaxY_valueChanged(
int arg1);
1506 void on_checkBox_Events_S5intern_EventConstraints_NoExcluded_stateChanged(
int arg1);
1507 void on_checkBox_MS5_Events_S5intern_LargeDist_stateChanged(
int arg1);
1508 void on_checkBox_MS5_Events_S5intern_Mitosis_stateChanged(
int arg1);
1509 void on_checkBox_MS5_Events_S5intern_ShortTracking_Isolated_stateChanged(
int arg1);
1510 void on_checkBox_MS5_Events_S5intern_ShortTracking_LooseStart_stateChanged(
int arg1);
1511 void on_checkBox_MS5_Events_S5intern_ShortTracking_LooseEnd_stateChanged(
int arg1);
1512 void on_checkBox_MS5_Events_S5intern_ShortTracking_BetweenMitoses_stateChanged(
int arg1);
1515 static void MS5_CalcImage_Thread(
Mat *pMA_out, vector<vector<Mat> > *pvv_imgs_ct,
D_Bio_NucleusPedigree *pPedigree,
size_t t,
size_t y_min_mosaic,
size_t y_size_mosaic,
size_t x_min_mosaic,
size_t x_size_mosaic,
bool use_DIC,
bool use_GFP,
bool use_RFP,
bool draw_contour_parent,
bool draw_contour_current,
bool draw_contour_childs,
bool draw_shift_parent,
bool draw_shift_childs,
bool age_text,
bool color_info,
size_t ny_mosaic,
size_t nx_mosaic,
int thickness,
double scale);
1519 QDir DIR_MS5_Load_Mosaics;
1520 QDir DIR_MS5_Load_NucleiData;
1521 QDir DIR_MS5_Load_NucleiLifes;
1522 QDir DIR_MS5_Out_NucleiLifes;
1525 enum MS5_MOSAIC_CHANNELS {
1529 MS5_MOSAIC_CH_NUMBER_OF
1531 const QStringList QSL_MS5_MosaicChannels = {
1536 vector<vector<Mat>> vv_MS5_Mosaics_CT;
1542 const size_t MS5_ViewersCount = 5;
1548 vector<D_Viewer*> v_MS5_Viewers_T;
1549 vector<QLabel*> v_MS5_ViewerLabels_T;
1550 vector<Mat> v_MS5_MAs_ShowBasic;
1551 vector<Mat> v_MS5_MAs_ShowHighlight;
1554 vector<D_Bio_NucleusBlob*> v_MS5_pNuc_Highlighted;
1555 enum MS5_NUC_HIGHLIGHT {
1556 MS5_NUC_HIGHLIGHT_SELECT1,
1557 MS5_NUC_HIGHLIGHT_SELECT2,
1558 MS5_NUC_HIGHLIGHT_HOVERED,
1559 MS5_NUC_HIGHLIGHT_NUMBER_OF
1563 bool MS5_EventToS2_FileSet =
false;
1564 bool MS5_EventToS2_Recording =
false;
1565 int MS5_EventToS2_ClicksRecorded = 0;
1566 double MS5_EventToS2_Click_Time = 0;
1567 Point MS5_EventToS2_Click_Point =
Point(0,0);
1568 double MS5_EventToS2_Click_Radius = 0;
1569 QFileInfo MS5_EventToS2_File;
1570 QStringList MS5_EventToS2_Events;
1573 bool MS5_EventS5intern_EventActive =
false;
1576 bool MS5_state_loaded_all =
false;
1577 bool MS5_state_loaded_dirs =
false;
1578 bool MS5_state_loaded_mosaics =
false;
1579 bool MS5_state_loaded_nuc_data =
false;
1580 bool MS5_state_loaded_nuc_lifes =
false;
1581 bool MS5_state_imgs_shown_at_lesast_once =
false;
1589 void MS6_UpdateViews();
1592 bool MS6_LoadDirs();
1593 bool MS6_LoadMosaics();
1594 bool MS6_LoadNucleiData();
1595 bool MS6_LoadNucleiLifes();
1597 bool MS6_GetChannelsFromUi();
1598 bool MS6_GetIrradiationTimeFromUi();
1599 bool MS6_GetRangeXYFromUi();
1601 void MS6_ResAxis_UpdateModi();
1602 void MS6_ResAxis_SetMode(
size_t i_axis, QString axis_description,
size_t i_mode);
1603 vector<double> MS6_DataForAxis(
size_t i_axis);
1604 size_t MS6_Data_ChannelIndex(
size_t i_axis);
1605 QString MS6_Data_ChannelSuffix(
size_t i_axis);
1606 QString MS6_DefaultTitle_Result();
1607 QString MS6_DefaultTitle_Series();
1608 QString MS6_DefaultTitle_Axis_NoChanelSuffix(
size_t i_axis);
1609 QString MS6_DefaultTitle_Axis(
size_t i_axis);
1611 void MS6_Update_Results();
1612 void MS6_Update_Result_HistSimple();
1613 void MS6_Update_Result_PoolStatLine_Single();
1614 void MS6_Update_Result_PoolStatLine_DualWithError();
1615 void MS6_Update_Result_Scatter_2D();
1616 void MS6_Update_Result_Heatmap_2D();
1617 void MS6_Update_Result_Heatmap_3D();
1618 void MS6_Update_Result_DataTable_3Axis();
1619 void MS6_Update_Result_MosaicData();
1620 void MS6_Update_Result_NucLifeImg();
1622 bool MS6_Save_Result_Current();
1623 bool MS6_Save_NucLifes();
1624 bool MS6_Save_StatisticAnalysis();
1626 void on_pushButton_MS6_LoadData_clicked();
1628 void on_checkBox_MS6_ResType_Param_PoolStatLine_AutoRange_clicked(
bool checked);
1629 void on_checkBox_MS6_ResType_Params_ScatterHeatmap_ManuelRange_x_clicked(
bool checked);
1630 void on_checkBox_MS6_ResType_Params_ScatterHeatmap_ManuelRange_y_clicked(
bool checked);
1632 void on_spinBox_MS6_MarginToBorder_valueChanged(
int arg1);
1633 void on_doubleSpinBox_MS6_Scale_px2um_valueChanged(
double arg1);
1634 void on_comboBox_MS6_ResultTypes_currentIndexChanged(
int index);
1636 void on_spinBox_MS6_ResType_Params_MosaicData_T_valueChanged(
int arg1);
1638 void on_spinBox_MS6_ResType_Params_NucLifeImg_NucLife_valueChanged(
int arg1);
1640 void on_pushButton_MS6_SaveResult_clicked();
1641 void on_pushButton_MS6_SaveAnalysis_clicked();
1642 void on_pushButton_MS6_SaveNucLifes_clicked();
1648 void on_checkBox_S6_StyleAxis_CustomRange_X_clicked(
bool checked);
1650 void on_checkBox_S6_StyleAxis_CustomRange_Y_clicked(
bool checked);
1652 void on_checkBox_S6_StyleAxis_CustomRange_Z_clicked(
bool checked);
1654 void on_checkBox_S6_StyleAxis_CustomTitle_X_clicked(
bool checked);
1656 void on_checkBox_S6_StyleAxis_CustomTitle_Y_clicked(
bool checked);
1658 void on_checkBox_S6_StyleAxis_CustomTitle_Z_clicked(
bool checked);
1660 void on_checkBox_S6_SytleGeneral_CustomTitle_clicked(
bool checked);
1662 void on_checkBox_S6_SytleGeneral_CustomSeries_clicked(
bool checked);
1670 QStringList MS6_QSL_Channels_Values;
1671 QStringList MS6_QSL_Channels_Foci;
1674 QDir DIR_MS6_Load_Mosaics;
1675 QDir DIR_MS6_Load_NucleiData;
1676 QDir DIR_MS6_Load_NucleiLifes;
1677 QDir DIR_MS6_Out_SaveAnalysisMaster;
1680 enum MS6_MOSAIC_CHANNELS {
1684 MS6_MOSAIC_CH_NUMBER_OF
1686 const QStringList QSL_MS6_MosaicChannels = {
1691 vector<vector<Mat>> vv_MS6_Mosaics_CT;
1694 const size_t MS6_ResAxis_Count = 3;
1695 vector<QLabel*> MS6_vL_ResAxis_Description;
1696 vector<QComboBox*> MS6_vCB_ResAxis_Level_Foc;
1697 vector<QComboBox*> MS6_vCB_ResAxis_Level_NucBlob;
1698 vector<QComboBox*> MS6_vCB_ResAxis_Level_NucLife;
1699 vector<QComboBox*> MS6_vCB_ResAxis_Attrib_Foc;
1700 vector<QComboBox*> MS6_vCB_ResAxis_Attrib_NucBlob;
1701 vector<QComboBox*> MS6_vCB_ResAxis_Attrib_NucLife;
1702 vector<QComboBox*> MS6_vCB_ResAxis_Stat_low;
1703 vector<QComboBox*> MS6_vCB_ResAxis_Stat_high;
1704 vector<QComboBox*> MS6_vCB_ResAxis_FocChannel;
1705 vector<QComboBox*> MS6_vCB_ResAxis_AttribChannel_Val;
1706 vector<QComboBox*> MS6_vCB_ResAxis_AttribChannel_Foc;
1707 vector<QStackedWidget*> MS6_cSW_ResAxis_Level;
1708 vector<QStackedWidget*> MS6_cSW_ResAxis_Attrib;
1709 vector<QStackedWidget*> MS6_cSW_ResAxis_Stat_low;
1710 vector<QStackedWidget*> MS6_cSW_ResAxis_Stat_high;
1711 vector<QStackedWidget*> MS6_cSW_ResAxis_FocChannel;
1712 vector<QStackedWidget*> MS6_cSW_ResAxis_AttribChannel;
1715 QChartView* MS6_pChartView_Plot_2D;
1720 Mat MS6_ResultImgShow;
1723 bool MS6_state_ui_init =
false;
1724 bool MS6_state_loaded_all =
false;
1725 bool MS6_state_loaded_dirs =
false;
1726 bool MS6_state_loaded_mosaics =
false;
1727 bool MS6_state_loaded_nuc_data =
false;
1728 bool MS6_state_loaded_nuc_lifes =
false;
1731 enum MS6_RES_VIEW_TYPE {
1732 MS6_RES_VIEW_TYPE_PLOT_2D,
1733 MS6_RES_VIEW_TYPE_PLOT_3D,
1734 MS6_RES_VIEW_TYPE_IMAGE_2D,
1735 MS6_RES_VIEW_TYPE_IMAGE_3D,
1736 MS6_RES_VIEW_TYPE_TABLE,
1737 MS6_RES_VIEW_TYPE_ERROR,
1738 MS6_RES_VIEW_TYPE_NUMBER_OF
1742 enum MS6_RESULT_TYPES {
1743 MS6_RES_TYP_HIST_SIMPLE,
1744 MS6_RES_TYP_POOL_STAT_LINE_SINGLE,
1745 MS6_RES_TYP_POOL_STAT_LINE_DUAL_WITH_ERROR,
1746 MS6_RES_TYP_SCATTER_2D_SIMPLE,
1747 MS6_RES_TYP_SCATTER_HEATMAP_2D,
1748 MS6_RES_TYP_SCATTER_HEATMAP_3D,
1749 MS6_RES_TYP_DATA_TABLE_3D,
1750 MS6_RES_TYP_MOSAIC_DATA,
1751 MS6_RES_TYP_NUC_LIFE_IMG,
1752 MS6_RES_TYP_NUMBER_OF
1754 const QStringList QSL_MS6_ResultTypes = {
1756 "Pooled statistic line single",
1757 "Pooled statistic line dual with error",
1758 "Scatter 2D simple",
1759 "Scatter 2D heatmap",
1760 "Scatter 3D heatmap",
1761 "Data table 3 attributes",
1762 "Mosaic with foci counts",
1763 "Nucleus life image"
1767 enum MS6_RES_AXIS_MODE {
1768 MS6_RES_AXIS_MODE_NONE,
1769 MS6_RES_AXIS_MODE_NUCLIFE,
1770 MS6_RES_AXIS_MODE_NUCBLOB,
1771 MS6_RES_AXIS_MODE_FOC,
1772 MS6_RES_AXIS_MODE_NUMBER_OF
1774 const QStringList QSL_MS6_ResAxisMode {
1782 enum MS6_RES_AXIS_STAT {
1783 MS6_RES_AXIS_STAT_OFF,
1784 MS6_RES_AXIS_STAT_ON,
1785 MS6_RES_AXIS_STAT_NUMBER_OF
1787 const QStringList QSL_MS6_ResAxisStat = {
1793 enum MS6_RES_AXIS_CHANNEL_FOC {
1794 MS6_RES_AXIS_CHANNEL_FOC_OFF,
1795 MS6_RES_AXIS_CHANNEL_FOC_ON,
1796 MS6_RES_AXIS_CHANNEL_FOC_NUMBER_OF
1798 const QStringList QSL_MS6_ResAxisChannel_Foc = {
1803 enum MS6_RES_AXIS_CHANNEL_ATTRIB {
1804 MS6_RES_AXIS_CHANNEL_ATTRIB_OFF,
1805 MS6_RES_AXIS_CHANNEL_ATTRIB_ON_VAL,
1806 MS6_RES_AXIS_CHANNEL_ATTRIB_ON_FOC,
1807 MS6_RES_AXIS_CHANNEL_ATTRIB_NUMBER_OF
1809 const QStringList QSL_MS6_ResAxisChannel_Attrib = {
1817 enum MS6_RES_AXIS_ATTRIB {
1818 MS6_RES_AXIS_ATTRIB_EMPTY,
1819 MS6_RES_AXIS_ATTRIB_NUCLIFE,
1820 MS6_RES_AXIS_ATTRIB_NUCBLOB,
1821 MS6_RES_AXIS_ATTRIB_FOC,
1822 MS6_RES_AXIS_ATTRIB_NUMBER_OF
1824 const QStringList QSL_MS6_ResAttribLevel = {
1833 #endif // D_MAKRO_MEGAFOCI_H