 |
ImageD
v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
|
Go to the documentation of this file.
9 #ifndef D_BIO_NUCLEUSLIFE_H
10 #define D_BIO_NUCLEUSLIFE_H
20 #include <QFileDialog>
22 #include <QFileInfoList>
25 #include <QInputDialog>
35 #include <opencv2/core/core.hpp>
36 #include <opencv2/highgui/highgui.hpp>
37 #include <opencv2/imgproc/imgproc.hpp>
61 bool set_ScalePx2Um(
double scale);
83 bool has_ExactlyOneChild() {
return (has_Child1() && !has_Child2()) || (!has_Child1() && has_Child2());}
87 bool has_Sibbling() {
return has_Parent() ? pNucParent->matching_isMitosis() :
false;}
110 D_Bio_Focus* pFocus(
size_t i_nuc,
size_t ch_foc,
size_t i_foc);
113 bool set_excluded(
size_t t,
bool exclude);
116 double attrib_foc (
size_t i_attrib,
size_t ch_val,
size_t ch_foc,
size_t i_nuc,
size_t i_foc);
117 vector<double> attrib_foc (
size_t i_attrib,
size_t ch_val,
size_t ch_foc,
size_t i_nuc);
118 vector<vector<double>> attrib_foc (
size_t i_attrib,
size_t ch_val,
size_t ch_foc);
119 vector<vector<vector<double>>> attrib_foc (
size_t i_attrib,
size_t ch_val);
120 bool attrib_foc (vector<double>* pvAttribsToAppendTo,
size_t i_attrib,
size_t ch_val);
121 bool attrib_foc (vector<double>* pvAttribsToAppendTo,
size_t i_attrib,
size_t ch_val,
size_t ch_foc);
124 double attrib_nuc (
size_t i_attrib,
size_t ch_val,
size_t i_nuc);
125 double attrib_nuc_begin(
size_t i_attrib,
size_t ch_val) {
return attrib_nuc(i_attrib, ch_val, 0);}
126 double attrib_nuc_end (
size_t i_attrib,
size_t ch_val) {
return attrib_nuc(i_attrib, ch_val, members_count() - 1);}
127 vector<double> attrib_nuc (
size_t i_attrib,
size_t ch_val);
128 bool attrib_nuc (vector<double>* pvAttribsToAppendTo,
size_t i_attrib,
size_t ch_val);
131 double attrib_nuclife(
size_t i_attrib_nuclife);
132 double attrib_nuclife_growth(
size_t i_attrib_nuc,
size_t ch_val) {
double v0 = attrib_nuc_begin(i_attrib_nuc, ch_val);
double v1 = attrib_nuc_end(i_attrib_nuc, ch_val);
return v0 > 0 ? v1 / v0 : 0;}
133 double attrib_nuclife_growth_per_T(
size_t i_attrib_nuc,
size_t ch_val) {
double nt = members_count();
return nt > 0 ? attrib_nuclife_growth(i_attrib_nuc, ch_val) / nt : 0;}
134 static bool attribute_is_focus_channel_dependent(
size_t i_attrib);
135 static bool attribute_is_value_channel_dependent(
size_t i_attrib);
137 double closestDist2Border();
140 bool nearBorderAtLeastOnce();
152 vector<D_Bio_NucleusBlob> vNucMembers;
157 size_t time_index_earliest = 0;
158 size_t time_index_latest = 0;
161 double scale_px2um = 1.0;
162 double scale_um2px = 1.0;
165 Rect FrameBorderXY =
Rect(0, 0, INT_MAX/2, INT_MAX/2);
166 Rect FrameInMarginXY =
Rect(-INT_MAX/2, -INT_MAX/2, INT_MAX, INT_MAX);
167 size_t size_time = 0;
168 double time_irradiation = 0;
171 #endif // D_BIO_NUCLEUSLIFE_H
bool has_NoParent()
Definition: d_bio_nucleuslife.h:79
static bool attribute_is_focus_channel_dependent(size_t i_attrib)
Definition: d_bio_nucleuslife.cpp:386
D_Bio_NucleusBlob * pNuc_member_first()
Definition: d_bio_nucleuslife.h:103
bool is_excluded()
Definition: d_bio_nucleuslife.cpp:112
D_Bio_NucleusBlob * matching_excluded_pNucMarked()
Definition: d_bio_nucleusblob.cpp:1377
static double Distance(Point pt1, Point pt2)
Definition: d_math.cpp:1511
bool set_Parent(D_Bio_NucleusBlob *nuc_parent)
Definition: d_bio_nucleuslife.h:68
@ ATTRIB_NUCLIFE_FOCICOUNT_GROWTH_PER_T
Definition: d_bio_enum.h:304
D_Bio_NucleusBlob * pNuc_parent()
Definition: d_bio_nucleuslife.h:97
@ ATTRIB_NUCLIFE_MID
Definition: d_bio_enum.h:292
bool has_ExactlyOneChild()
Definition: d_bio_nucleuslife.h:83
size_t time_index()
Definition: d_bio_nucleusblob.h:126
vector< D_Bio_NucleusBlob > Nuc_members()
Definition: d_bio_nucleuslife.h:100
@ ATTRIB_NUCLIFE_MITOSIS_STARTS_ENDS_WITH
Definition: d_bio_enum.h:312
bool has_MitosisEnd()
Definition: d_bio_nucleuslife.h:92
size_t get_FociChannels()
Definition: d_bio_nucleusblob.h:67
bool add_Member(D_Bio_NucleusBlob nuc)
Definition: d_bio_nucleuslife.cpp:27
@ ATTRIB_NUCLIFE_END
Definition: d_bio_enum.h:291
cv::Rect Rect
Definition: d_opencv_typedefs.h:65
bool has_NoChild()
Definition: d_bio_nucleuslife.h:80
@ ATTRIB_NUCLIFE_START
Definition: d_bio_enum.h:290
D_Bio_NucleusLife()
Definition: d_bio_nucleuslife.cpp:11
bool set_Child2(D_Bio_NucleusBlob *nuc_child2)
Definition: d_bio_nucleuslife.h:70
bool has_NoMitosisEnd()
Definition: d_bio_nucleuslife.h:93
bool set_excluded(size_t t, bool exclude)
Definition: d_bio_nucleuslife.cpp:137
bool has_AtLeastOneChild()
Definition: d_bio_nucleuslife.h:84
D_Bio_NucleusBlob * pNuc_member(size_t i)
Definition: d_bio_nucleuslife.h:102
bool starts_at(size_t t)
Definition: d_bio_nucleuslife.h:143
double attrib_nuc(size_t i_attrib, size_t ch_val, size_t i_nuc)
Definition: d_bio_nucleuslife.cpp:283
D_Bio_Focus * get_pFocus(size_t channel, size_t index)
Definition: d_bio_nucleusblob.h:72
Definition: d_bio_focus.h:48
bool starts_after(size_t t)
Definition: d_bio_nucleuslife.h:144
bool has_Child1()
Definition: d_bio_nucleuslife.h:77
void set_FrameInMargin_XY(Rect FrameOk)
Definition: d_bio_nucleuslife.h:63
double attrib_foc(size_t i_attrib, size_t ch_val, size_t ch_foc, size_t i_nuc, size_t i_foc)
Definition: d_bio_nucleuslife.cpp:148
@ ATTRIB_NUCLIFE_PATHLENGTH_UM
Definition: d_bio_enum.h:296
void set_FrameBorder_XY(Rect FrameBorder)
Definition: d_bio_nucleuslife.h:64
void matching_set_excluded(bool exclude)
Definition: d_bio_nucleusblob.h:158
@ ATTRIB_NUC_NUMBER_OF
Definition: d_bio_enum.h:244
@ ATTRIB_NUCLIFE_EXCLUDED
Definition: d_bio_enum.h:313
size_t get_FociCount(size_t channel)
Definition: d_bio_nucleusblob.h:69
double attrib_nuc_end(size_t i_attrib, size_t ch_val)
Definition: d_bio_nucleuslife.h:126
@ ATTRIB_NUCLIFE_FOCICOUNT_PER_AREA_GROWTH
Definition: d_bio_enum.h:305
@ ATTRIB_NUC_SHIFT_PX
Definition: d_bio_enum.h:218
double attrib_nuclife_growth(size_t i_attrib_nuc, size_t ch_val)
Definition: d_bio_nucleuslife.h:132
double attrib_nuclife(size_t i_attrib_nuclife)
Definition: d_bio_nucleuslife.cpp:332
@ ATTRIB_NUCLIFE_IN_RANGE_PERMANENT
Definition: d_bio_enum.h:309
@ ATTRIB_NUCLIFE_SHIFT_UM
Definition: d_bio_enum.h:294
@ ATTRIB_NUCLIFE_AGE
Definition: d_bio_enum.h:289
@ ATTRIB_NUC_AREA_PX
Definition: d_bio_enum.h:214
@ ATTRIB_NUCLIFE_PATHLENGTH_PX
Definition: d_bio_enum.h:295
@ ATTRIB_NUCLIFE_NUMBER_OF
Definition: d_bio_enum.h:314
@ ATTRIB_NUCLIFE_CLOSTEST_DIST_TO_BORDER_UM
Definition: d_bio_enum.h:308
bool has_MitosisStart()
Definition: d_bio_nucleuslife.h:90
@ ATTRIB_NUC_FOCI_COUNT_ALL
Definition: d_bio_enum.h:230
bool has_Sibbling()
Definition: d_bio_nucleuslife.h:87
bool set_Child(D_Bio_NucleusBlob *nuc_child)
Definition: d_bio_nucleuslife.h:71
bool set_ScalePx2Um(double scale)
Definition: d_bio_nucleuslife.cpp:16
@ ATTRIB_NUC_FOCI_COUNT_ALL_PER_AREA_PX
Definition: d_bio_enum.h:231
D_Bio_NucleusBlob * pNuc_member_byTime(size_t t)
Definition: d_bio_nucleuslife.cpp:82
Definition: d_bio_nucleusblob.h:46
@ ATTRIB_NUCLIFE_PATHLENGTH_PX_PER_T
Definition: d_bio_enum.h:299
@ ATTRIB_NUCLIFE_SHIFT_PX
Definition: d_bio_enum.h:293
D_Bio_NucleusBlob * pNuc_child1()
Definition: d_bio_nucleuslife.h:98
bool has_ExactlyTwoChilds()
Definition: d_bio_nucleuslife.h:85
bool ends_before(size_t t)
Definition: d_bio_nucleuslife.h:145
bool has_NoMitosisStart()
Definition: d_bio_nucleuslife.h:91
bool set_Child1(D_Bio_NucleusBlob *nuc_child1)
Definition: d_bio_nucleuslife.h:69
bool starts_before(size_t t)
Definition: d_bio_nucleuslife.h:142
@ ATTRIB_NUCLIFE_MITOSIS_ENDS_WITH
Definition: d_bio_enum.h:311
@ ATTRIB_NUCLIFE_FOCICOUNT_GROWTH
Definition: d_bio_enum.h:303
D_Bio_NucleusBlob * pNuc_member_last()
Definition: d_bio_nucleuslife.h:104
double attribute(size_t i_attrib, size_t ch_val, double scale_px2um)
Definition: d_bio_focus.cpp:72
double closestDist2Border()
Definition: d_bio_nucleuslife.cpp:414
Rect frameBorder()
Definition: d_bio_nucleuslife.h:74
size_t members_count()
Definition: d_bio_nucleuslife.h:108
bool inRangeAtAllTimes()
Definition: d_bio_nucleuslife.h:141
Point2f centroid()
Definition: d_bio_nucleusblob.h:120
bool has_MitosisStartAndEnd()
Definition: d_bio_nucleuslife.h:94
bool ends_at(size_t t)
Definition: d_bio_nucleuslife.h:146
@ ATTRIB_NUCLIFE_CLOSTEST_DIST_TO_BORDER_PX
Definition: d_bio_enum.h:307
void set_FrameInMargin_XY(int x_min, int x_max, int y_min, int y_max)
Definition: d_bio_nucleuslife.h:62
@ ATTRIB_NUCLIFE_FOCICOUNT_PER_AREA_GROWTH_PER_T
Definition: d_bio_enum.h:306
bool has_LessThenTwoChilds()
Definition: d_bio_nucleuslife.h:86
bool has_Child2()
Definition: d_bio_nucleuslife.h:78
cv::Point2d Point2d
Definition: d_opencv_typedefs.h:38
@ ATTRIB_FOC_NUMBER_OF
Definition: d_bio_enum.h:177
@ ATTRIB_NUC_CENTER_X_PX
Definition: d_bio_enum.h:210
@ ATTRIB_NUCLIFE_MITOSIS_STARTS_WITH
Definition: d_bio_enum.h:310
static bool attribute_is_value_channel_dependent(size_t i_attrib)
Definition: d_bio_nucleuslife.cpp:400
@ ATTRIB_NUCLIFE_PATHLENGTH_UM_PER_T
Definition: d_bio_enum.h:300
double attrib_nuclife_growth_per_T(size_t i_attrib_nuc, size_t ch_val)
Definition: d_bio_nucleuslife.h:133
D_Bio_Focus * pFocus(size_t i_nuc, size_t ch_foc, size_t i_foc)
Definition: d_bio_nucleuslife.cpp:91
void set_time_irradiation(double t_irr)
Definition: d_bio_nucleuslife.h:66
bool has_NoSibbling()
Definition: d_bio_nucleuslife.h:88
bool nearBorderAtLeastOnce()
Definition: d_bio_nucleuslife.cpp:428
double attrib_nuc_begin(size_t i_attrib, size_t ch_val)
Definition: d_bio_nucleuslife.h:125
@ ATTRIB_NUCLIFE_AREA_GROWTH
Definition: d_bio_enum.h:301
@ ATTRIB_NUCLIFE_SHIFT_PX_PER_T
Definition: d_bio_enum.h:297
void set_sizeTime(size_t t_size)
Definition: d_bio_nucleuslife.h:65
bool has_NoChild1()
Definition: d_bio_nucleuslife.h:81
D_Bio_NucleusBlob * pNuc_child2()
Definition: d_bio_nucleuslife.h:99
bool has_NeitherMitosisStartNorEnd()
Definition: d_bio_nucleuslife.h:95
D_Bio_NucleusBlob Nuc_member(size_t i)
Definition: d_bio_nucleuslife.h:101
@ ATTRIB_NUCLIFE_SHIFT_UM_PER_T
Definition: d_bio_enum.h:298
@ ATTRIB_NUC_CENTER_Y_PX
Definition: d_bio_enum.h:212
bool ends_after(size_t t)
Definition: d_bio_nucleuslife.h:147
D_Bio_NucleusBlob * pNuc_excluded()
Definition: d_bio_nucleuslife.h:106
Definition: d_bio_nucleuslife.h:45
bool has_Parent()
Definition: d_bio_nucleuslife.h:76
double attribute(size_t i_attrib, size_t ch_val, double scale_px2um)
Definition: d_bio_nucleusblob.cpp:116
bool has_NoChild2()
Definition: d_bio_nucleuslife.h:82
@ ATTRIB_NUCLIFE_AREA_GROWTH_PER_T
Definition: d_bio_enum.h:302
size_t channels()
Definition: d_bio_nucleusblob.h:131