MorphoGraphX  2.0-1-227
CellAtlasMeristem.hpp
Go to the documentation of this file.
1 #ifndef CELL_ATLAS_MERISTEM_HPP
2 #define CELL_ATLAS_MERISTEM_HPP
3 
4 #include <CellAtlasConfig.hpp>
5 
6 #include <Process.hpp>
7 #include <RootCellAnalyzing.hpp>
8 #include <CellAtlas.hpp>
9 
10 using namespace std;
11 
12 namespace mgx
13 {
14 
16  {
17  public:
18  AnalyzeMeristem(const Process& process) : Process(process)
19  {
20  setName("Mesh/Cell Atlas 3D/Meristem/Advanced/Analyze Meristem");
21  setDesc("Analyzes the meristem and calculates the cell centroids, volumes and radial distances to the surface mesh. \n"
22  "Requires the meristem mesh in mesh 1 and a surface mesh in mesh 2. \n"
23  "Use Tools/Heatmaps or Create Point Cloud to visualize the data.");
24  setIcon(QIcon(":/images/CellAtlas.png"));
25 
26  addParm("Min Volume","Minimum cell volume (cells with smaller volume will be ignored)","0"); // 0
27  }
28 
29  bool run()
30  {
31  Mesh *m1 = mesh(0);
32  Mesh *m2 = mesh(1);
33  return run(m1, m2, parm("Min Volume").toDouble());
34  }
35 
36  bool run(Mesh *m1, Mesh *m2, double volThreshold);
37 
38 
39  };
40 
42  {
43  public:
44  DetectLayers(const Process& process) : Process(process)
45  {
46  setName("Mesh/Cell Atlas 3D/Meristem/Advanced/Detect Cell Layers L1 to L3");
47  setDesc("Sets the Parents of the first three cell layers to 1, 2 and 3. \n"
48  "Requires the process Analyze Meristem.");
49  setIcon(QIcon(":/images/CellAtlas.png"));
50 
51  addParm("Cone Angle","Cone Angle (in Rad)","0.9");
52  addParm("Detect L2/3 by neighborhood","If No use cones for all 3 layers, if Yes use cone only for L1 and detect L2/3 by neighborhood","No",booleanChoice());
53  }
54 
55  bool run(){
56  Mesh *m1 = mesh(0);
57  return run(m1, parm("Cone Angle").toDouble(), stringToBool(parm("Detect L2/3 by neighborhood")));
58  }
59 
60  bool run(Mesh *m1, double coneAngle, bool detectByNeighborhood);
61 
62  };
63 
65  {
66  public:
67  DetectCellLayers(const Process& process) : Process(process)
68  {
69  setName("Mesh/Cell Atlas 3D/General Analysis/Detect Cell Layers");
70  setDesc("Detect cell layers and label them accordingly");
71  setIcon(QIcon(":/images/CellAtlas.png"));
72 
73  addParm("Use Surface","Use Surface","Yes",booleanChoice());
74  addParm("Cone Angle","Cone Angle (in Rad)","0.9");
75  addParm("Number of Layers","Number of Layers","3");
76  addParm("Min Shared Cell Wall","Min Shared Cell Wall","0.0");
77  addParm("Min Cell Volume","Min Cell Volume","0");
78  }
79 
80  bool run() {
81  Mesh *m1 = mesh(0);
82  return run(m1, stringToBool(parm("Use Surface")), parm("Cone Angle").toDouble(), parm("Number of Layers").toInt(), parm("Min Shared Cell Wall").toDouble(), parm("Min Cell Volume").toDouble());
83  }
84 
85  bool run(Mesh *m1, bool useSurface, double coneAngle, int layers, double minWall, double minVolume);
86 
87  };
88 
90  {
91  public:
92  DetectCellLayers2(const Process& process) : Process(process)
93  {
94  setName("Mesh/Cell Atlas 3D/Ovule/Detect Cell Layers");
95  setDesc("Detect cell layers and label them accordingly");
96  setIcon(QIcon(":/images/CellAtlas.png"));
97 
98  addParm("Use Surface","Use Surface","Yes",booleanChoice());
99  addParm("Cone Angle","Cone Angle (in Rad)","0.9");
100  addParm("Number of Layers","Number of Layers","3");
101  addParm("Min Shared Cell Wall","Min Shared Cell Wall","0.0");
102  addParm("Min Cell Volume","Min Cell Volume","0");
103  }
104 
105  bool run() {
106  Mesh *m1 = mesh(0);
107  return run(m1, stringToBool(parm("Use Surface")), parm("Cone Angle").toDouble(), parm("Number of Layers").toInt(), parm("Min Shared Cell Wall").toDouble(), parm("Min Cell Volume").toDouble());
108  }
109 
110  bool run(Mesh *m1, bool useSurface, double coneAngle, int layers, double minWall, double minVolume);
111 
112  };
113 
114 
115 
117  {
118  public:
119  MarkMeristem(const Process& process) : Process(process)
120  {
121  setName("Mesh/Cell Atlas 3D/Meristem/Advanced/Mark Meristem");
122  setDesc("Sets the Parents of the first 2 cell layers, the stem cells and the organizing center. \n"
123 
124  "Requires a selected center cell and the process Analyze Meristem.");
125  setIcon(QIcon(":/images/CellAtlas.png"));
126 
127 
128  addParm("Depth Org Center","Specifying the depth of the organizing center under the selected center of the meristem","1.25");
129  addParm("Radius","Radius of stem cell region and organizing center","1.0");
130  }
131 
132  bool run() {
133  Mesh *m1 = mesh(0);
134  return run(m1, parm("Depth Org Center").toDouble(), parm("Radius").toDouble());
135  }
136 
137  bool run(Mesh *m1, double disDown, double radius);
138 
139 
140  };
141 
143  {
144  public:
145  LabelMeristem(const Process& process) : Process(process)
146  {
147  setName("Mesh/Cell Atlas 3D/Meristem/Label Meristem");
148  setDesc("Analyzes the cells of the meristem, sets the Parents of the first 2 cell layers, \n"
149  "the stem cells and the organizing center. \n"
150  "This process calls the following processes (in this order): Analyze Meristem, Detect Layers and Mark Meristem.");
151  setIcon(QIcon(":/images/CellAtlas.png"));
152 
153  addParm("Min Volume","Min Volume","0");
154  addParm("Depth Org Center","Specifying the depth of the organizing center under the selected center of the meristem","1.25");
155  addParm("Radius","Radius of stem cell region and organizing center","1.0");
156  addParm("Cone Angle","Cone Angle (in Rad)","0.9");
157 
158 
159  }
160 
161  bool run() {
162  Mesh *m1 = mesh(0);
163  Mesh *m2 = mesh(1);
164  return run(m1, m2, parm("Min Volume").toDouble(), parm("Depth Org Center").toDouble(), parm("Radius").toDouble(), parm("Cone Angle").toDouble());
165  }
166 
167  bool run(Mesh *m1, Mesh *m2, double minVolume, double disDown, double radius, double coneAngle);
168 
169  };
170 
172  {
173  public:
174  MarkPrim(const Process& process) : Process(process)
175  {
176  setName("Mesh/Cell Atlas 3D/Meristem/Mark Primordium");
177  setDesc("Distinguishes a primordium from the meristem by changing the color of the parents. \n"
178 
179  "Select the primordium center cell and the saddle cell between primordium center and meristem center. \n"
180  "Requires the process Label Meristem (or Mark Meristem) to know which cell is the meristem center.");
181  setIcon(QIcon(":/images/CellAtlas.png"));
182 
183  addParm("Ratio Parameter","Parameter specifying the width of the boundary region between meristem and primordium","0.8");
184  addParm("Abs Dis Parameter","Parameter specifying the depth of the boundary region between meristem and primordium","1.3");
185  addParm("Primordia Label Same","Primordia specific label prefix, if set to No all primordia will have the same labels","No",booleanChoice());
186  addParm("Label Saddle Cell","Label of the saddle cell between meristem and primodrium center","0");
187  addParm("Label Prim Center","Label of the primordium center cell","0");
188 
189  }
190 
191  bool run(){
192  Mesh *m1 = mesh(0);
193  return run(m1, parm("Ratio Parameter").toDouble(), parm("Abs Dis Parameter").toDouble(), stringToBool(parm("Primordia Label Same")), parm("Label Saddle Cell").toInt(), parm("Label Prim Center").toInt());
194  }
195 
196  bool run(Mesh *m1, double ratioParm, double absDisParm, bool primLabelSame, int labelSaddle, int labelPrim);
197 
198  };
199 
200 
201 
202 }
203 
204 #endif
mgx::LabelMeristem::LabelMeristem
LabelMeristem(const Process &process)
Definition: CellAtlasMeristem.hpp:145
mgx::DetectCellLayers2
Definition: CellAtlasMeristem.hpp:89
Process.hpp
mgx::DetectCellLayers2::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:105
mgx::MarkPrim
Definition: CellAtlasMeristem.hpp:171
mgx::DetectCellLayers
Definition: CellAtlasMeristem.hpp:64
mgx::AnalyzeMeristem::AnalyzeMeristem
AnalyzeMeristem(const Process &process)
Definition: CellAtlasMeristem.hpp:18
mgx::MarkMeristem::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:132
mgx::DetectLayers
Definition: CellAtlasMeristem.hpp:41
CellAtlas.hpp
mgx::MarkMeristem::MarkMeristem
MarkMeristem(const Process &process)
Definition: CellAtlasMeristem.hpp:119
mgx::AnalyzeMeristem::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:29
mgx
Distributed matrix library.
Definition: Assert.hpp:26
mgx::LabelMeristem::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:161
RootCellAnalyzing.hpp
CellAtlas_EXPORT
#define CellAtlas_EXPORT
Definition: CellAtlasConfig.hpp:26
mgx::AnalyzeMeristem
Definition: CellAtlasMeristem.hpp:15
mgx::Process
Definition: Process.hpp:219
mgx::stringToBool
mgx_EXPORT bool stringToBool(const QString &string)
Helper function converting a string into a boolean.
mgx::MarkMeristem
Definition: CellAtlasMeristem.hpp:116
mgx::DetectCellLayers::DetectCellLayers
DetectCellLayers(const Process &process)
Definition: CellAtlasMeristem.hpp:67
mgx::DetectCellLayers::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:80
mgx::DetectCellLayers2::DetectCellLayers2
DetectCellLayers2(const Process &process)
Definition: CellAtlasMeristem.hpp:92
mgx::DetectLayers::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:55
mgx::Mesh
Definition: Mesh.hpp:54
mgx::MarkPrim::run
bool run()
Runs the process.
Definition: CellAtlasMeristem.hpp:191
CellAtlasConfig.hpp
mgx::LabelMeristem
Definition: CellAtlasMeristem.hpp:142
mgx::DetectLayers::DetectLayers
DetectLayers(const Process &process)
Definition: CellAtlasMeristem.hpp:44
mgx::MarkPrim::MarkPrim
MarkPrim(const Process &process)
Definition: CellAtlasMeristem.hpp:174