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.
d_bio_nucleusblob.h
Go to the documentation of this file.
1 /************************************
2  * added: 04.01.2021 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_BIO_NUCLEUSBLOB_H
10 #define D_BIO_NUCLEUSBLOB_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_stat.h>
15 #include <d_math.h>
16 #include <d_bio_focus.h>
17 #include <d_bio_enum.h>
18 #include <d_contour.h>
19 
20 //Qt
21 #include <QFileDialog>
22 #include <QFileInfo>
23 #include <QFileInfoList>
24 #include <QDir>
25 #include <QDateTime>
26 #include <QInputDialog>
27 
28 //general
29 #include <iostream>
30 #include <sstream>
31 #include <fstream>
32 #include <vector>
33 #include <algorithm>
34 
35 //openCV
36 #include <opencv2/core/core.hpp>
37 #include <opencv2/highgui/highgui.hpp>
38 #include <opencv2/imgproc/imgproc.hpp>
39 
40 //namespaces
41 using namespace std;
42 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
43 #include <d_opencv_typedefs.h>
44 
46 {
47 public:
49  D_Bio_NucleusBlob(QString QS_PathLoad);
50  D_Bio_NucleusBlob(vector<Point> contour_points, Point Offset = Point(0, 0));
51  D_Bio_NucleusBlob(vector<Point> contour_points, size_t time, Point Offset = Point(0, 0));
52  D_Bio_NucleusBlob(vector<Point> contour_points, vector<vector<double>> SignalStats_StatChannel, Point Offset = Point(0, 0));
53  D_Bio_NucleusBlob(vector<Point> contour_points, vector<vector<double>> SignalStats_StatChannel, size_t time, Point Offset = Point(0, 0));
54 
55  //set/add foic
56  void set_FociChannels(size_t channels) {vvFoci.resize(channels);}
57  void set_Foci(size_t channel, vector<D_Bio_Focus> v_foci);
58  void set_Foci(vector<vector<D_Bio_Focus>> vv_foci);
59  void add_Focus(size_t channel, D_Bio_Focus focus);
60  void clear_Foci() {vvFoci.clear();}
61 
62  double attribute(size_t i_attrib, size_t ch_val, double scale_px2um);
63  static bool attribute_is_value_channel_dependent(size_t i_attrib);
64  static bool attribute_is_focus_channel_dependent(size_t i_attrib);
65 
66  //get foci or describing info
67  size_t get_FociChannels() {return vvFoci.size();}
68  vector<vector<D_Bio_Focus>> get_Foci() {return vvFoci;}
69  size_t get_FociCount(size_t channel) {return channel < vvFoci.size() ? vvFoci[channel].size() : 0;}
70  vector<D_Bio_Focus> get_Foci(size_t channel) {return channel < vvFoci.size() ? vvFoci[channel] : vector<D_Bio_Focus>{};}
71  D_Bio_Focus get_Focus(size_t channel, size_t index) {return channel < vvFoci.size() ? (index < vvFoci[channel].size() ? vvFoci[channel][index] : D_Bio_Focus()) : D_Bio_Focus();}
72  D_Bio_Focus* get_pFocus(size_t channel, size_t index) {return channel < vvFoci.size() ? (index < vvFoci[channel].size() ? &(vvFoci[channel][index]) : nullptr) : nullptr;}
73  int get_Contours_append(vector<vector<Point>> *pvScaledContours, double scale);
74  int get_Contours_append(vector<D_Contour> *pvContours);
75  int get_FociCount_append(QStringList *pQSL_FociCounts);
76  int get_ShapeInfo_append(QStringList *pQSL_ShapeInfo);
77  int get_ChannelStat_append(QStringList *pQSL_Stat, size_t stat_index_bio_enum);
78 
79  //block save
80  void block_save_StitchingBorder_BottomRight(size_t x, size_t y) {block_stitching_border = true; block_stitching_border_x = x; block_stitching_border_y = y;}
81 
82  //save
83  //int save(QString path, bool simple);
84  //int save_detailed(QString path);
85  int save_simple(QString path_of_dir_to_save_in, bool save_foci);
86  bool load_simple(QString nucleus_file, bool load_foci_from_file);
87 private:
88  bool load_foci(QTextStream *pTS_NucTxtContent);
89  bool load_focus(QTextStream *pTS_NucTxtContent, D_Bio_Focus* pFoc, size_t ch);
90 
91 public:
92  bool set_path_relative(QString path_rel);
93  bool set_path_absolute(QString path_abs, QDir master_dir);
94  bool has_path_relative() {return !QS_path_relative.isEmpty();}
95  QString get_path_relative() {return QS_path_relative;}
96  QString get_path_absolute(QDir master_dir) {return master_dir.path() + QS_path_relative;}
97  QString get_path_absolute_loaded_from() {return QS_path_abs_loaded_from;}
98  bool is_path_relative(QString path_rel) {return QS_path_relative == path_rel;}
99 
100  Rect bounding_box();
101 
102  //vector<vector<Point>> merge_contours_with_other_nucleus(D_Bio_NucleusBlob nuc_merge, int merging_distance);
103 
104  //copied from D_BioFocus because inhering causes problems...
105 
106  void set_value_channels(size_t channels) {vvSignalStats_StatChannel.resize(VAL_STAT_NUMBER_OF, vector<double>(channels, 0));}
107  //void set_values_medians(vector<double> vMedian) {vSignalMedians = vMedian;}
108  //void set_values_devs2med(vector<double> vMedDev) {vSignalMedDevs = vMedDev;}
109  //void set_value_median(size_t channel, double Median) {if(channel < vSignalMedians.size()) vSignalMedians[channel] = Median;}
110  //void set_value_dev2med(size_t channel, double MedDev) {if(channel < vSignalMedDevs.size()) vSignalMedDevs[channel] = MedDev;}
111 
112  vector<Point> contour() {return m_contour;}
113  vector<Point2f> contour_f(double scale, Point P_offset_scaled);
114  vector<Point> contour(double scale, Point P_offset_scaled);
115  void forget_contour_and_calc_feats() {if(!state_feats_calced) CalcFeats(); m_contour.clear();}
116  double dist2contour(Point2f point) { return m_contour.empty() ? INFINITY : - pointPolygonTest(m_contour, point, true);}
117  double dist2centroid(Point2f point) {if(!state_feats_calced) CalcFeats(); return m_contour.empty() ? INFINITY : norm(point - m_centroid);}
118  bool contains_point(Point P, double margin = 0) {return dist2contour(P) <= margin;}
119 
120  Point2f centroid() {if(!state_feats_calced) CalcFeats(); return m_centroid;}
121  Point2f centroid(double scale, Point P_offset_scaled);
122  double area() {if(!state_feats_calced) CalcFeats(); return m_area;}
123  double compactness() {if(!state_feats_calced) CalcFeats(); return m_compactness;}
124  double convexity() {if(!state_feats_calced) CalcFeats(); return m_convexity;}
125 
126  size_t time_index() {return m_time;}
127  size_t time_irradiation() {return m_time_irradiation;}
128  void set_time_index(size_t t) {m_time = t;}
129  void set_time_irradiation(double t) {m_time_irradiation = t;}
130 
131  size_t channels() {return vvSignalStats_StatChannel.empty() ? 0 : vvSignalStats_StatChannel[0].size();}
132  double signal_stat(size_t channel, size_t stat_local_id) {return stat_local_id < vvSignalStats_StatChannel.size() ? (channel < vvSignalStats_StatChannel[stat_local_id].size() ? vvSignalStats_StatChannel[stat_local_id][channel] : 0) : 0;}
133  double signal_median(size_t channel) {return signal_stat(channel, VAL_STAT_MEDIAN);}
134  double signal_dev2med(size_t channel) {return signal_stat(channel, VAL_STAT_MEDIAN_DEVIATION);}
135 
136  bool is_duplicate(vector<D_Bio_NucleusBlob> v_other_nucs, double rel_overlap_for_duplicate = 0.5);
137 
138  QString info();
139 
140 
141 
142 
143  //matching with other nucleus
144  void matching_InitMatching();
145 
146  double matching_Score(D_Bio_NucleusBlob *nuc_calc_score, vector<size_t> *pvScoreRelevantCriteria, vector<double> *pvScoreWeights, vector<double> *pvScoreMax, double max_area_increase_to_rel, double max_area_decrease_to_rel, double max_shift);
147 
148  double matching_Score_Parent() {return Score_Parent;}
149  double matching_Score_Child1() {return Score_Child1;}
150  double matching_Score_Child2() {return Score_Child2;}
151 
152  void matching_SetAsChild(D_Bio_NucleusBlob *nuc_set_child, double score);
153  void matching_SetAsParent(D_Bio_NucleusBlob *nuc_set_parent, double score);
154 
155  bool matching_RemoveChild(D_Bio_NucleusBlob *nuc_remove_child);
156  bool matching_RemoveParent(D_Bio_NucleusBlob *nuc_remove_parent);
157 
158  void matching_set_excluded(bool exclude) {nuc_exclude = exclude;}
159  bool matching_excluded_this() {return nuc_exclude;}
160  bool matching_excluded_life();
161  int matching_excluded_life_time();
162  D_Bio_NucleusBlob* matching_excluded_pNucMarked();
163 private:
164  bool matching_excluded_check_forward();
165  bool matching_excluded_check_backward();
166  D_Bio_NucleusBlob* matching_excluded_seek_pNucMarked_forward();
167  D_Bio_NucleusBlob* matching_excluded_seek_pNucMarked_backward();
168 public:
169 
170  /*
171  bool matching_TestAsChild_Candidate(D_Bio_NucleusBlob *nuc_test_child, double score_thresh);
172  bool matching_TestAsParent_Candidate(D_Bio_NucleusBlob *nuc_test_parent, double score_thresh);
173  bool matching_AcceptAndTellParent();
174  bool matching_AcceptAndTellChilds();
175  */
176 
177  //matching
178  D_Bio_NucleusBlob* matching_Child1() {return state_FoundChild1 ? Nuc_Child1 : nullptr;}
179  D_Bio_NucleusBlob* matching_Child2() {return state_FoundChild2 ? Nuc_Child2 : nullptr;}
180  D_Bio_NucleusBlob* matching_ChildFavorite() {return (state_FoundChild1 || state_FoundChild2) ? (Score_Child2 > Score_Child1 ? Nuc_Child2 : Nuc_Child1) : nullptr;}
181  D_Bio_NucleusBlob* matching_Parent() {return state_FoundParent ? Nuc_Parent : nullptr;}
182  D_Bio_NucleusBlob* matching_Source() {return (matching_foundParent() && !matching_parent_isMitosis()) ? Nuc_Parent->matching_Source() : this;}
183  D_Bio_NucleusBlob* matching_Destinantion() {return (matching_foundExactlyOneChild()) ? matching_ChildFavorite()->matching_Destinantion() : this;}
184  bool matching_foundChild1() {return state_FoundChild1;}
185  bool matching_foundChild2() {return state_FoundChild2;}
186  bool matching_foundParent() {return state_FoundParent;}
187  bool matching_foundNoParent() {return !state_FoundParent;}
188  bool matching_foundNoChild() {return (!state_FoundChild1) && (!state_FoundChild2);}
189  bool matching_foundAtMostOneChild() {return !(state_FoundChild1 && state_FoundChild2);}
190  bool matching_isNoMitosis() {return !(state_FoundChild1 && state_FoundChild2);}
191  bool matching_foundAtLeastOneChild() {return state_FoundChild1 || state_FoundChild2;}
192  bool matching_foundExactlyOneChild() {return (state_FoundChild1 && !state_FoundChild2) || (!state_FoundChild1 && state_FoundChild2);}
193  bool matching_isMitosis() {return state_FoundChild1 && state_FoundChild2;}
194  bool matching_isLinear() {return state_FoundParent && ((state_FoundChild1 && !state_FoundChild2) || (!state_FoundChild1 && state_FoundChild2));}
195  bool matching_parent_isMitosis() {if(!state_FoundParent) return false; return Nuc_Parent->matching_isMitosis();}
196  bool matching_isConnectedTo(D_Bio_NucleusBlob* nuc) {return nuc == nullptr ? false : nuc == Nuc_Parent || nuc == Nuc_Child1 || nuc == Nuc_Child2;}
197 
198  size_t matching_Age() {return time_index() - matching_Source()->time_index();}
199  size_t matching_AgeToGo() {return matching_Destinantion()->time_index() - time_index();}
200  size_t matching_AgeFull() {return matching_Destinantion()->time_index() - matching_Source()->time_index();}
201 
202  int matching_Type(Rect FrameNotNearBorder, double t_begin, double t_end);
203  QColor matching_TypeColor(Rect FrameNotNearBorder, double t_begin, double t_end);
204  size_t matching_TimeIndexOfOldestAncestor();
205  bool matching_HasAncestorInRange(size_t t_oldest, double y_min_px, double y_max_px, double x_min_px, double x_max_px);
206 
207  void matching_setTriedToMatchAtLeastOnce(bool tried) {state_triedAtLeastOnceToMatch = tried;}
208 
209 
210 private:
211 
212  QString QS_path_relative;
213  QString QS_path_abs_loaded_from;
214 
215  size_t m_time = 0;
216  double m_time_irradiation = 0;
217  vector<vector<D_Bio_Focus>> vvFoci;
218 
219  size_t leftmost();
220  size_t topmost();
221  bool block_stitching_border = false;
222  size_t block_stitching_border_x = size_t(INFINITY);
223  size_t block_stitching_border_y = size_t(INFINITY);
224 
225  //copied from D_BioFocus because inhering causes problems...
226 
227  bool state_feats_calced = false;
228  void CalcFeats();
229 
230  vector<Point> m_contour;
231  vector<Point> m_convex_hull;
232 
233  Point2f m_centroid = Point2f(0, 0);
234  double m_area = 0;
235  double m_compactness = 0;
236  double m_convexity = 0;
237 
238  vector<vector<double>> vvSignalStats_StatChannel = vector<vector<double>>(VAL_STAT_NUMBER_OF, vector<double>(1, 0));
239 
240  //matching with other nucleus
241  D_Bio_NucleusBlob *Nuc_Parent = nullptr;
242  D_Bio_NucleusBlob *Nuc_Child1 = nullptr;
243  D_Bio_NucleusBlob *Nuc_Child2 = nullptr;
244  double Score_Parent = -INFINITY;
245  double Score_Child1 = -INFINITY;
246  double Score_Child2 = -INFINITY;
247  bool state_FoundParent = false;
248  bool state_FoundChild1 = false;
249  bool state_FoundChild2 = false;
250  bool state_triedAtLeastOnceToMatch = false;
251  bool nuc_exclude = false;
252 };
253 
254 #endif // D_BIO_NUCLEUSBLOB_H
FILE_SECTION_CONTOUR_PIXELS
@ FILE_SECTION_CONTOUR_PIXELS
Definition: d_bio_enum.h:27
D_Bio_NucleusBlob::matching_excluded_life
bool matching_excluded_life()
Definition: d_bio_nucleusblob.cpp:1367
ER_okay
@ ER_okay
Definition: d_enum.h:133
QSL_FileSubsections
const QStringList QSL_FileSubsections
Definition: d_bio_enum.h:34
ATTRIB_NUC_COUNT_CHX
@ ATTRIB_NUC_COUNT_CHX
Definition: d_bio_enum.h:220
D_Bio_Focus::signal_stat
double signal_stat(size_t channel, size_t stat_local_id)
Definition: d_bio_focus.cpp:219
FILE_SUBSECTION_MEAN
@ FILE_SUBSECTION_MEAN
Definition: d_bio_enum.h:55
VAL_STAT_STD
@ VAL_STAT_STD
Definition: d_bio_enum.h:79
D_Bio_NucleusBlob::get_Foci
vector< vector< D_Bio_Focus > > get_Foci()
Definition: d_bio_nucleusblob.h:68
D_Bio_NucleusBlob::matching_excluded_pNucMarked
D_Bio_NucleusBlob * matching_excluded_pNucMarked()
Definition: d_bio_nucleusblob.cpp:1377
D_Bio_NucleusBlob::clear_Foci
void clear_Foci()
Definition: d_bio_nucleusblob.h:60
D_Math::Distance
static double Distance(Point pt1, Point pt2)
Definition: d_math.cpp:1511
D_Bio_NucleusBlob::get_Foci
vector< D_Bio_Focus > get_Foci(size_t channel)
Definition: d_bio_nucleusblob.h:70
NUC_TYPE_ISOLATED_END
@ NUC_TYPE_ISOLATED_END
Definition: d_bio_enum.h:123
FILE_SECTION_END
@ FILE_SECTION_END
Definition: d_bio_enum.h:29
D_Bio_NucleusBlob::add_Focus
void add_Focus(size_t channel, D_Bio_Focus focus)
Definition: d_bio_nucleusblob.cpp:108
NUC_TYPE_DISAPPEAR_BORDER
@ NUC_TYPE_DISAPPEAR_BORDER
Definition: d_bio_enum.h:135
d_math.h
SCORE_MEAN_CH2
@ SCORE_MEAN_CH2
Definition: d_bio_enum.h:113
Point2f
cv::Point2f Point2f
Definition: d_opencv_typedefs.h:37
SCORE_MEAN_CH0
@ SCORE_MEAN_CH0
Definition: d_bio_enum.h:111
d_bio_enum.h
D_Bio_NucleusBlob::area
double area()
Definition: d_bio_nucleusblob.h:122
D_Bio_NucleusBlob::set_Foci
void set_Foci(size_t channel, vector< D_Bio_Focus > v_foci)
Definition: d_bio_nucleusblob.cpp:90
NUC_TYPE_MITOSIS_REGULAR
@ NUC_TYPE_MITOSIS_REGULAR
Definition: d_bio_enum.h:127
SCORE_STD_CH0
@ SCORE_STD_CH0
Definition: d_bio_enum.h:114
ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_UM
@ ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_UM
Definition: d_bio_enum.h:237
FILE_SUBSECTION_POSITION
@ FILE_SUBSECTION_POSITION
Definition: d_bio_enum.h:61
D_Bio_NucleusBlob::time_index
size_t time_index()
Definition: d_bio_nucleusblob.h:126
D_Bio_NucleusBlob::compactness
double compactness()
Definition: d_bio_nucleusblob.h:123
SCORE_MEAN_CH1
@ SCORE_MEAN_CH1
Definition: d_bio_enum.h:112
NUC_TYPE_MITOSIS_APPEARED_BEGIN
@ NUC_TYPE_MITOSIS_APPEARED_BEGIN
Definition: d_bio_enum.h:129
ATTRIB_NUC_FOCI_AREA_SUM_CHX_UM
@ ATTRIB_NUC_FOCI_AREA_SUM_CHX_UM
Definition: d_bio_enum.h:234
D_Bio_NucleusBlob::matching_Child2
D_Bio_NucleusBlob * matching_Child2()
Definition: d_bio_nucleusblob.h:179
D_Bio_Focus::area
double area()
Definition: d_bio_focus.h:72
D_Bio_NucleusBlob::signal_median
double signal_median(size_t channel)
Definition: d_bio_nucleusblob.h:133
D_Bio_NucleusBlob::get_FociChannels
size_t get_FociChannels()
Definition: d_bio_nucleusblob.h:67
ATTRIB_NUC_FOCI_COUNT_CHX_PER_AREA_PX
@ ATTRIB_NUC_FOCI_COUNT_CHX_PER_AREA_PX
Definition: d_bio_enum.h:228
ATTRIB_NUC_KURTOSIS_CHX
@ ATTRIB_NUC_KURTOSIS_CHX
Definition: d_bio_enum.h:224
Rect
cv::Rect Rect
Definition: d_opencv_typedefs.h:65
SCORE_STD_CH1
@ SCORE_STD_CH1
Definition: d_bio_enum.h:115
D_Bio_NucleusBlob::matching_foundNoChild
bool matching_foundNoChild()
Definition: d_bio_nucleusblob.h:188
ATTRIB_NUC_AREA_UM
@ ATTRIB_NUC_AREA_UM
Definition: d_bio_enum.h:215
D_Bio_NucleusBlob::matching_Score_Child2
double matching_Score_Child2()
Definition: d_bio_nucleusblob.h:150
D_Contour::intersection_area_relative
double intersection_area_relative(D_Contour C2)
Definition: d_contour.cpp:299
D_Bio_NucleusBlob::bounding_box
Rect bounding_box()
Definition: d_bio_nucleusblob.cpp:969
NUC_TYPE_UNDEFINED
@ NUC_TYPE_UNDEFINED
Definition: d_bio_enum.h:137
NUC_TYPE_MITOSIS_APPEARED_MYSTERY
@ NUC_TYPE_MITOSIS_APPEARED_MYSTERY
Definition: d_bio_enum.h:128
D_Bio_NucleusBlob::matching_AgeToGo
size_t matching_AgeToGo()
Definition: d_bio_nucleusblob.h:199
ER_file_not_exist
@ ER_file_not_exist
Definition: d_enum.h:161
D_Bio_NucleusBlob::set_time_index
void set_time_index(size_t t)
Definition: d_bio_nucleusblob.h:128
D_Bio_NucleusBlob::set_FociChannels
void set_FociChannels(size_t channels)
Definition: d_bio_nucleusblob.h:56
D_Bio_NucleusBlob::get_pFocus
D_Bio_Focus * get_pFocus(size_t channel, size_t index)
Definition: d_bio_nucleusblob.h:72
D_Bio_NucleusBlob::contour
vector< Point > contour()
Definition: d_bio_nucleusblob.h:112
D_Bio_NucleusBlob::contour_f
vector< Point2f > contour_f(double scale, Point P_offset_scaled)
Definition: d_bio_nucleusblob.cpp:974
D_Bio_Focus
Definition: d_bio_focus.h:48
NUC_TYPE_MITOSIS_APPEARED_BORDER
@ NUC_TYPE_MITOSIS_APPEARED_BORDER
Definition: d_bio_enum.h:130
ATTRIB_NUC_EXCLUDED_THIS
@ ATTRIB_NUC_EXCLUDED_THIS
Definition: d_bio_enum.h:242
D_Bio_NucleusBlob::get_ShapeInfo_append
int get_ShapeInfo_append(QStringList *pQSL_ShapeInfo)
Definition: d_bio_nucleusblob.cpp:293
ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_PX
@ ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_PX
Definition: d_bio_enum.h:236
D_Bio_NucleusBlob::matching_foundChild2
bool matching_foundChild2()
Definition: d_bio_nucleusblob.h:185
FILE_SUBSECTION_MEDIAN_DEVIATION
@ FILE_SUBSECTION_MEDIAN_DEVIATION
Definition: d_bio_enum.h:60
D_Bio_NucleusBlob::convexity
double convexity()
Definition: d_bio_nucleusblob.h:124
D_Bio_NucleusBlob::matching_Child1
D_Bio_NucleusBlob * matching_Child1()
Definition: d_bio_nucleusblob.h:178
D_Bio_NucleusBlob::matching_set_excluded
void matching_set_excluded(bool exclude)
Definition: d_bio_nucleusblob.h:158
FILE_SUBSECTION_FOCUS_END
@ FILE_SUBSECTION_FOCUS_END
Definition: d_bio_enum.h:53
FILE_SECTION_NUMBER_OF
@ FILE_SECTION_NUMBER_OF
Definition: d_bio_enum.h:30
D_Bio_NucleusBlob::matching_foundExactlyOneChild
bool matching_foundExactlyOneChild()
Definition: d_bio_nucleusblob.h:192
ATTRIB_NUC_NUMBER_OF
@ ATTRIB_NUC_NUMBER_OF
Definition: d_bio_enum.h:244
D_Bio_NucleusBlob::matching_Score_Parent
double matching_Score_Parent()
Definition: d_bio_nucleusblob.h:148
ATTRIB_NUC_FOCI_COUNT_CHX
@ ATTRIB_NUC_FOCI_COUNT_CHX
Definition: d_bio_enum.h:227
ATTRIB_NUC_COMPACTNESS
@ ATTRIB_NUC_COMPACTNESS
Definition: d_bio_enum.h:217
FILE_SUBSECTION_SKEW
@ FILE_SUBSECTION_SKEW
Definition: d_bio_enum.h:57
FILE_SUBSECTION_KURTOSIS
@ FILE_SUBSECTION_KURTOSIS
Definition: d_bio_enum.h:58
VAL_STAT_NUMBER_OF
@ VAL_STAT_NUMBER_OF
Definition: d_bio_enum.h:84
D_Bio_NucleusBlob::get_FociCount
size_t get_FociCount(size_t channel)
Definition: d_bio_nucleusblob.h:69
ATTRIB_NUC_STD_CHX
@ ATTRIB_NUC_STD_CHX
Definition: d_bio_enum.h:222
D_Bio_Focus::overlap_area_any_focus
double overlap_area_any_focus(size_t ch_foc)
Definition: d_bio_focus.cpp:160
D_Bio_NucleusBlob::attribute_is_focus_channel_dependent
static bool attribute_is_focus_channel_dependent(size_t i_attrib)
Definition: d_bio_nucleusblob.cpp:244
FILE_SUBSECTION_SHAPE
@ FILE_SUBSECTION_SHAPE
Definition: d_bio_enum.h:62
SCORE_COMPACTNESS
@ SCORE_COMPACTNESS
Definition: d_bio_enum.h:110
D_Bio_NucleusBlob::get_FociCount_append
int get_FociCount_append(QStringList *pQSL_FociCounts)
Definition: d_bio_nucleusblob.cpp:278
ATTRIB_NUC_SHIFT_PX
@ ATTRIB_NUC_SHIFT_PX
Definition: d_bio_enum.h:218
D_Bio_NucleusBlob::matching_isLinear
bool matching_isLinear()
Definition: d_bio_nucleusblob.h:194
D_Bio_NucleusBlob::signal_dev2med
double signal_dev2med(size_t channel)
Definition: d_bio_nucleusblob.h:134
VAL_STAT_SKEW
@ VAL_STAT_SKEW
Definition: d_bio_enum.h:80
D_Bio_NucleusBlob::set_Foci
void set_Foci(vector< vector< D_Bio_Focus >> vv_foci)
ATTRIB_NUC_FOCI_COUNT_CHX_PER_AREA_UM
@ ATTRIB_NUC_FOCI_COUNT_CHX_PER_AREA_UM
Definition: d_bio_enum.h:229
ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_REL_TO_NUC
@ ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_REL_TO_NUC
Definition: d_bio_enum.h:238
ATTRIB_NUC_EXCLUDED_LIFE
@ ATTRIB_NUC_EXCLUDED_LIFE
Definition: d_bio_enum.h:243
Point
cv::Point Point
Definition: d_opencv_typedefs.h:35
SCORE_STD_CH2
@ SCORE_STD_CH2
Definition: d_bio_enum.h:116
ATTRIB_NUC_MEDIAN_CHX
@ ATTRIB_NUC_MEDIAN_CHX
Definition: d_bio_enum.h:225
D_Bio_NucleusBlob::matching_ChildFavorite
D_Bio_NucleusBlob * matching_ChildFavorite()
Definition: d_bio_nucleusblob.h:180
VAL_STAT_COUNT
@ VAL_STAT_COUNT
Definition: d_bio_enum.h:77
ATTRIB_NUC_AREA_PX
@ ATTRIB_NUC_AREA_PX
Definition: d_bio_enum.h:214
D_Bio_NucleusBlob::get_path_absolute_loaded_from
QString get_path_absolute_loaded_from()
Definition: d_bio_nucleusblob.h:97
Moments
cv::Moments Moments
Definition: d_opencv_typedefs.h:72
ATTRIB_NUC_ABSDEVMED_CHX
@ ATTRIB_NUC_ABSDEVMED_CHX
Definition: d_bio_enum.h:226
D_Bio_NucleusBlob::matching_isConnectedTo
bool matching_isConnectedTo(D_Bio_NucleusBlob *nuc)
Definition: d_bio_nucleusblob.h:196
D_Bio_NucleusBlob::matching_parent_isMitosis
bool matching_parent_isMitosis()
Definition: d_bio_nucleusblob.h:195
D_Contour
The D_Contour class represents a contour of a 2D object and offers several methods for gaining inform...
Definition: d_contour.h:39
FILE_SUBSECTION_VAL_COUNT
@ FILE_SUBSECTION_VAL_COUNT
Definition: d_bio_enum.h:54
D_Bio_NucleusBlob::save_simple
int save_simple(QString path_of_dir_to_save_in, bool save_foci)
Definition: d_bio_nucleusblob.cpp:440
D_Bio_NucleusBlob::matching_excluded_life_time
int matching_excluded_life_time()
Definition: d_bio_nucleusblob.cpp:1372
D_Bio_NucleusBlob::time_irradiation
size_t time_irradiation()
Definition: d_bio_nucleusblob.h:127
D_Bio_Focus::convexity
double convexity()
Definition: d_bio_focus.h:74
ATTRIB_NUC_FOCI_COUNT_ALL
@ ATTRIB_NUC_FOCI_COUNT_ALL
Definition: d_bio_enum.h:230
FILE_SUBSECTION_NEW_FOCI_CHANNEL
@ FILE_SUBSECTION_NEW_FOCI_CHANNEL
Definition: d_bio_enum.h:51
D_Bio_NucleusBlob::dist2centroid
double dist2centroid(Point2f point)
Definition: d_bio_nucleusblob.h:117
ATTRIB_NUC_FOCI_COUNT_ALL_PER_AREA_PX
@ ATTRIB_NUC_FOCI_COUNT_ALL_PER_AREA_PX
Definition: d_bio_enum.h:231
D_Bio_Focus::centroid
Point2f centroid()
Definition: d_bio_focus.h:71
ATTRIB_NUC_TIME_AGE_TOGO
@ ATTRIB_NUC_TIME_AGE_TOGO
Definition: d_bio_enum.h:208
FILE_SUBSECTION_MEDIAN
@ FILE_SUBSECTION_MEDIAN
Definition: d_bio_enum.h:59
D_Bio_NucleusBlob::matching_AgeFull
size_t matching_AgeFull()
Definition: d_bio_nucleusblob.h:200
D_Bio_NucleusBlob
Definition: d_bio_nucleusblob.h:46
D_Bio_NucleusBlob::set_time_irradiation
void set_time_irradiation(double t)
Definition: d_bio_nucleusblob.h:129
D_Bio_NucleusBlob::matching_Parent
D_Bio_NucleusBlob * matching_Parent()
Definition: d_bio_nucleusblob.h:181
ATTRIB_NUC_SHIFT_UM
@ ATTRIB_NUC_SHIFT_UM
Definition: d_bio_enum.h:219
FILE_SECTION_BEGIN
@ FILE_SECTION_BEGIN
Definition: d_bio_enum.h:24
D_Bio_Focus::set_pNucOwner
void set_pNucOwner(D_Bio_NucleusBlob *owner)
Definition: d_bio_focus.h:64
D_Bio_NucleusBlob::matching_isNoMitosis
bool matching_isNoMitosis()
Definition: d_bio_nucleusblob.h:190
VAL_STAT_MEAN
@ VAL_STAT_MEAN
Definition: d_bio_enum.h:78
D_Bio_NucleusBlob::forget_contour_and_calc_feats
void forget_contour_and_calc_feats()
Definition: d_bio_nucleusblob.h:115
D_Bio_NucleusBlob::is_duplicate
bool is_duplicate(vector< D_Bio_NucleusBlob > v_other_nucs, double rel_overlap_for_duplicate=0.5)
Definition: d_bio_nucleusblob.cpp:1063
D_Bio_NucleusBlob::info
QString info()
Definition: d_bio_nucleusblob.cpp:1076
NUC_TYPE_DISAPPEAR_DYING
@ NUC_TYPE_DISAPPEAR_DYING
Definition: d_bio_enum.h:136
D_Bio_NucleusBlob::block_save_StitchingBorder_BottomRight
void block_save_StitchingBorder_BottomRight(size_t x, size_t y)
Definition: d_bio_nucleusblob.h:80
FILE_SECTION_FOCI
@ FILE_SECTION_FOCI
Definition: d_bio_enum.h:28
FILE_SUBSECTION_DEFAULT
@ FILE_SUBSECTION_DEFAULT
Definition: d_bio_enum.h:50
FILE_SUBSECTION_FOCUS_BEGIN
@ FILE_SUBSECTION_FOCUS_BEGIN
Definition: d_bio_enum.h:52
NUC_TYPE_LINEAR
@ NUC_TYPE_LINEAR
Definition: d_bio_enum.h:126
D_Bio_NucleusBlob::get_path_absolute
QString get_path_absolute(QDir master_dir)
Definition: d_bio_nucleusblob.h:96
NUC_TYPE_APPEAR_BEGIN
@ NUC_TYPE_APPEAR_BEGIN
Definition: d_bio_enum.h:131
FILE_SUBSECTION_STD
@ FILE_SUBSECTION_STD
Definition: d_bio_enum.h:56
ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_REL_TO_RAND
@ ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_REL_TO_RAND
Definition: d_bio_enum.h:240
D_Bio_NucleusBlob::matching_excluded_this
bool matching_excluded_this()
Definition: d_bio_nucleusblob.h:159
D_Bio_NucleusBlob::matching_InitMatching
void matching_InitMatching()
Definition: d_bio_nucleusblob.cpp:1141
D_Bio_NucleusBlob::D_Bio_NucleusBlob
D_Bio_NucleusBlob(vector< Point > contour_points, vector< vector< double >> SignalStats_StatChannel, Point Offset=Point(0, 0))
ATTRIB_NUC_FOCI_AREA_SUM_CHX_REL_TO_NUC
@ ATTRIB_NUC_FOCI_AREA_SUM_CHX_REL_TO_NUC
Definition: d_bio_enum.h:235
NUC_TYPE_ISOLATED_BORDER
@ NUC_TYPE_ISOLATED_BORDER
Definition: d_bio_enum.h:124
D_Bio_NucleusBlob::centroid
Point2f centroid()
Definition: d_bio_nucleusblob.h:120
ER_StreamNotOpen
@ ER_StreamNotOpen
Definition: d_enum.h:174
D_Bio_NucleusBlob::matching_RemoveChild
bool matching_RemoveChild(D_Bio_NucleusBlob *nuc_remove_child)
Definition: d_bio_nucleusblob.cpp:1333
D_Bio_NucleusBlob::matching_Source
D_Bio_NucleusBlob * matching_Source()
Definition: d_bio_nucleusblob.h:182
D_Bio_NucleusBlob::D_Bio_NucleusBlob
D_Bio_NucleusBlob(vector< Point > contour_points, vector< vector< double >> SignalStats_StatChannel, size_t time, Point Offset=Point(0, 0))
ATTRIB_NUC_FOCI_COUNT_ALL_PER_AREA_UM
@ ATTRIB_NUC_FOCI_COUNT_ALL_PER_AREA_UM
Definition: d_bio_enum.h:232
ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_REL_TO_RAND_INV
@ ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_REL_TO_RAND_INV
Definition: d_bio_enum.h:241
ATTRIB_NUC_TIME_INDEX
@ ATTRIB_NUC_TIME_INDEX
Definition: d_bio_enum.h:205
VAL_STAT_KURTOSIS
@ VAL_STAT_KURTOSIS
Definition: d_bio_enum.h:81
D_Bio_NucleusBlob::matching_SetAsParent
void matching_SetAsParent(D_Bio_NucleusBlob *nuc_set_parent, double score)
Definition: d_bio_nucleusblob.cpp:1316
D_Bio_NucleusBlob::has_path_relative
bool has_path_relative()
Definition: d_bio_nucleusblob.h:94
d_contour.h
SCORE_SHIFT
@ SCORE_SHIFT
Definition: d_bio_enum.h:107
NUC_TYPE_UNKNOWN
@ NUC_TYPE_UNKNOWN
Definition: d_bio_enum.h:121
d_bio_focus.h
SCORE_CONVEXITY
@ SCORE_CONVEXITY
Definition: d_bio_enum.h:109
D_Bio_NucleusBlob::signal_stat
double signal_stat(size_t channel, size_t stat_local_id)
Definition: d_bio_nucleusblob.h:132
NUC_TYPE_ISOLATED_BEGIN
@ NUC_TYPE_ISOLATED_BEGIN
Definition: d_bio_enum.h:122
PI_4_0
const double PI_4_0
Definition: d_enum.h:2536
D_Bio_NucleusBlob::load_simple
bool load_simple(QString nucleus_file, bool load_foci_from_file)
Definition: d_bio_nucleusblob.cpp:536
D_Bio_NucleusBlob::matching_foundChild1
bool matching_foundChild1()
Definition: d_bio_nucleusblob.h:184
D_Bio_Focus::channels
size_t channels()
Definition: d_bio_focus.cpp:211
NUC_TYPE_ISOLATED_MYSTERY
@ NUC_TYPE_ISOLATED_MYSTERY
Definition: d_bio_enum.h:125
FILE_SECTION_META_INFO
@ FILE_SECTION_META_INFO
Definition: d_bio_enum.h:25
D_Bio_NucleusBlob::matching_TimeIndexOfOldestAncestor
size_t matching_TimeIndexOfOldestAncestor()
Definition: d_bio_nucleusblob.cpp:1520
NUC_TYPE_APPEAR_MYSTERY
@ NUC_TYPE_APPEAR_MYSTERY
Definition: d_bio_enum.h:133
ATTRIB_NUC_TIME_AGE_FULL
@ ATTRIB_NUC_TIME_AGE_FULL
Definition: d_bio_enum.h:209
D_Bio_NucleusBlob::get_path_relative
QString get_path_relative()
Definition: d_bio_nucleusblob.h:95
VAL_STAT_MEDIAN_DEVIATION
@ VAL_STAT_MEDIAN_DEVIATION
Definition: d_bio_enum.h:83
D_Bio_NucleusBlob::matching_TypeColor
QColor matching_TypeColor(Rect FrameNotNearBorder, double t_begin, double t_end)
Definition: d_bio_nucleusblob.cpp:1492
D_Bio_NucleusBlob::get_Focus
D_Bio_Focus get_Focus(size_t channel, size_t index)
Definition: d_bio_nucleusblob.h:71
D_Bio_NucleusBlob::get_ChannelStat_append
int get_ChannelStat_append(QStringList *pQSL_Stat, size_t stat_index_bio_enum)
Definition: d_bio_nucleusblob.cpp:305
ATTRIB_NUC_CENTER_X_PX
@ ATTRIB_NUC_CENTER_X_PX
Definition: d_bio_enum.h:210
ATTRIB_NUC_CENTER_Y_UM
@ ATTRIB_NUC_CENTER_Y_UM
Definition: d_bio_enum.h:213
NUC_TYPE_APPEAR_BORDER
@ NUC_TYPE_APPEAR_BORDER
Definition: d_bio_enum.h:132
d_opencv_typedefs.h
D_Bio_NucleusBlob::matching_foundParent
bool matching_foundParent()
Definition: d_bio_nucleusblob.h:186
D_Bio_NucleusBlob::matching_Age
size_t matching_Age()
Definition: d_bio_nucleusblob.h:198
FILE_SUBSECTION_NUMBER_OF
@ FILE_SUBSECTION_NUMBER_OF
Definition: d_bio_enum.h:63
D_Bio_NucleusBlob::is_path_relative
bool is_path_relative(QString path_rel)
Definition: d_bio_nucleusblob.h:98
D_Bio_NucleusBlob::matching_SetAsChild
void matching_SetAsChild(D_Bio_NucleusBlob *nuc_set_child, double score)
Definition: d_bio_nucleusblob.cpp:1293
ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_PROB
@ ATTRIB_NUC_FOCI_OVERLAP_CH0_CH1_PROB
Definition: d_bio_enum.h:239
ATTRIB_NUC_CONVEXITY
@ ATTRIB_NUC_CONVEXITY
Definition: d_bio_enum.h:216
NUC_TYPE_DISAPPEAR_END
@ NUC_TYPE_DISAPPEAR_END
Definition: d_bio_enum.h:134
ATTRIB_NUC_TIME_AGE_PAST
@ ATTRIB_NUC_TIME_AGE_PAST
Definition: d_bio_enum.h:207
D_Bio_NucleusBlob::matching_Destinantion
D_Bio_NucleusBlob * matching_Destinantion()
Definition: d_bio_nucleusblob.h:183
D_Bio_NucleusBlob::matching_foundAtMostOneChild
bool matching_foundAtMostOneChild()
Definition: d_bio_nucleusblob.h:189
d_enum.h
D_Bio_NucleusBlob::dist2contour
double dist2contour(Point2f point)
Definition: d_bio_nucleusblob.h:116
ATTRIB_NUC_TIME_DIFF_TO_IRRADIATION
@ ATTRIB_NUC_TIME_DIFF_TO_IRRADIATION
Definition: d_bio_enum.h:206
FILE_SECTION_VALUES
@ FILE_SECTION_VALUES
Definition: d_bio_enum.h:26
D_Bio_NucleusBlob::matching_setTriedToMatchAtLeastOnce
void matching_setTriedToMatchAtLeastOnce(bool tried)
Definition: d_bio_nucleusblob.h:207
QSL_FileSections
const QStringList QSL_FileSections
Definition: d_bio_enum.h:15
D_Bio_NucleusBlob::D_Bio_NucleusBlob
D_Bio_NucleusBlob()
Definition: d_bio_nucleusblob.cpp:11
D_Bio_NucleusBlob::get_Contours_append
int get_Contours_append(vector< vector< Point >> *pvScaledContours, double scale)
d_bio_nucleusblob.h
ATTRIB_NUC_SKEWNESS_CHX
@ ATTRIB_NUC_SKEWNESS_CHX
Definition: d_bio_enum.h:223
VAL_STAT_MEDIAN
@ VAL_STAT_MEDIAN
Definition: d_bio_enum.h:82
D_Bio_NucleusBlob::matching_RemoveParent
bool matching_RemoveParent(D_Bio_NucleusBlob *nuc_remove_parent)
Definition: d_bio_nucleusblob.cpp:1354
D_Bio_NucleusBlob::matching_isMitosis
bool matching_isMitosis()
Definition: d_bio_nucleusblob.h:193
ATTRIB_NUC_FOCI_AREA_SUM_CHX_PX
@ ATTRIB_NUC_FOCI_AREA_SUM_CHX_PX
Definition: d_bio_enum.h:233
D_Bio_NucleusBlob::matching_Score
double matching_Score(D_Bio_NucleusBlob *nuc_calc_score, vector< size_t > *pvScoreRelevantCriteria, vector< double > *pvScoreWeights, vector< double > *pvScoreMax, double max_area_increase_to_rel, double max_area_decrease_to_rel, double max_shift)
Definition: d_bio_nucleusblob.cpp:1156
D_Bio_NucleusBlob::set_path_absolute
bool set_path_absolute(QString path_abs, QDir master_dir)
Definition: d_bio_nucleusblob.cpp:960
ATTRIB_NUC_MEAN_CHX
@ ATTRIB_NUC_MEAN_CHX
Definition: d_bio_enum.h:221
SCORE_NUMBER_OF
@ SCORE_NUMBER_OF
Definition: d_bio_enum.h:117
QSL_ValueStat_Subsection
const QStringList QSL_ValueStat_Subsection
Definition: d_bio_enum.h:67
D_Bio_NucleusBlob::attribute_is_value_channel_dependent
static bool attribute_is_value_channel_dependent(size_t i_attrib)
Definition: d_bio_nucleusblob.cpp:226
D_Bio_NucleusBlob::set_path_relative
bool set_path_relative(QString path_rel)
Definition: d_bio_nucleusblob.cpp:948
D_Bio_NucleusBlob::contains_point
bool contains_point(Point P, double margin=0)
Definition: d_bio_nucleusblob.h:118
D_Bio_NucleusBlob::matching_Score_Child1
double matching_Score_Child1()
Definition: d_bio_nucleusblob.h:149
ATTRIB_NUC_CENTER_X_UM
@ ATTRIB_NUC_CENTER_X_UM
Definition: d_bio_enum.h:211
ATTRIB_NUC_CENTER_Y_PX
@ ATTRIB_NUC_CENTER_Y_PX
Definition: d_bio_enum.h:212
D_Bio_NucleusBlob::matching_foundAtLeastOneChild
bool matching_foundAtLeastOneChild()
Definition: d_bio_nucleusblob.h:191
D_Bio_NucleusBlob::matching_foundNoParent
bool matching_foundNoParent()
Definition: d_bio_nucleusblob.h:187
D_Bio_NucleusBlob::matching_Type
int matching_Type(Rect FrameNotNearBorder, double t_begin, double t_end)
Definition: d_bio_nucleusblob.cpp:1450
SCORE_AREA
@ SCORE_AREA
Definition: d_bio_enum.h:108
D_Bio_NucleusBlob::attribute
double attribute(size_t i_attrib, size_t ch_val, double scale_px2um)
Definition: d_bio_nucleusblob.cpp:116
ER_index_out_of_range
@ ER_index_out_of_range
Definition: d_enum.h:146
D_Bio_NucleusBlob::matching_HasAncestorInRange
bool matching_HasAncestorInRange(size_t t_oldest, double y_min_px, double y_max_px, double x_min_px, double x_max_px)
Definition: d_bio_nucleusblob.cpp:1531
D_Bio_NucleusBlob::set_value_channels
void set_value_channels(size_t channels)
Definition: d_bio_nucleusblob.h:106
d_stat.h
D_Bio_Focus::compactness
double compactness()
Definition: d_bio_focus.h:73
D_Bio_NucleusBlob::channels
size_t channels()
Definition: d_bio_nucleusblob.h:131
D_Bio_Focus::set_detected_in_channel
void set_detected_in_channel(size_t ch_detected)
Definition: d_bio_focus.h:56