TTK
Loading...
Searching...
No Matches
ttkMergeTreePrincipalGeodesics.h
Go to the documentation of this file.
1
42
43#pragma once
44
45// VTK Module
46#include <ttkMergeTreePrincipalGeodesicsModule.h>
47
48// VTK Includes
49#include <ttkAlgorithm.h>
50#include <vtkMultiBlockDataSet.h>
51#include <vtkUnstructuredGrid.h>
52
53// TTK Base Includes
54#include <FTMTree.h>
57
58class TTKMERGETREEPRINCIPALGEODESICS_EXPORT ttkMergeTreePrincipalGeodesics
59 : public ttkAlgorithm // we inherit from the generic ttkAlgorithm class
60 ,
61 protected ttk::MergeTreePrincipalGeodesics // and we inherit from the base
62 // class
63{
64private:
69 // Input options
70 double oldEpsilonTree1;
71 // Output options
72
73 // ----------------------
74 // Data for visualization
75 // ----------------------
76 // Trees
77 std::vector<ttk::ftm::MergeTree<double>> intermediateDTrees;
78 std::vector<vtkUnstructuredGrid *> treesNodes, treesNodes2;
79 std::vector<vtkUnstructuredGrid *> treesArcs, treesArcs2;
80 std::vector<vtkDataSet *> treesSegmentation, treesSegmentation2;
81 // Output
82 // -> base class
83
84 void setDataVisualization(int ttkNotUsed(numInputs),
85 int ttkNotUsed(numInputs2)) {
86 }
87
88 void resetDataVisualization() {
89 setDataVisualization(0, 0);
90 if(not keepState_) {
91 barycenter_ = ttk::ftm::MergeTree<double>();
92 allTs_.clear();
93 }
94 }
95
96 bool isDataVisualizationFilled() {
97 return allTs_.size() != 0 and not keepState_;
98 }
99
100public:
105 // Input Options
107 normalizedWasserstein_ = nW;
108 Modified();
109 resetDataVisualization();
110 }
114
115 void SetNumberOfGeodesics(unsigned int numberOfGeodesics) {
116 numberOfGeodesics_ = numberOfGeodesics;
117 Modified();
118 resetDataVisualization();
119 }
120 unsigned int GetNumberOfGeodesics() {
121 return numberOfGeodesics_;
122 }
123
124 void SetNumberOfProjectionIntervals(unsigned int intervals) {
125 k_ = intervals;
126 Modified();
127 resetDataVisualization();
128 }
130 return k_;
131 }
132
133 void SetNumberOfProjectionSteps(unsigned int steps) {
134 noProjectionStep_ = steps;
135 Modified();
136 resetDataVisualization();
137 }
139 return noProjectionStep_;
140 }
141
142 void SetBarycenterSizeLimitPercent(double percent) {
143 barycenterSizeLimitPercent_ = percent;
144 Modified();
145 resetDataVisualization();
146 }
150
151 void SetDeterministic(bool deterministic) {
152 deterministic_ = deterministic;
153 Modified();
154 resetDataVisualization();
155 }
157 return deterministic_;
158 }
159
160 void SetJoinSplitMixtureCoefficient(double joinSplitMixtureCoefficient) {
161 mixtureCoefficient_ = joinSplitMixtureCoefficient;
162 Modified();
163 resetDataVisualization();
164 }
168
169 void SetKeepState(bool keepState) {
170 keepState_ = keepState;
171 Modified();
172 resetDataVisualization();
173 }
175 return keepState_;
176 }
177
178 void SetEpsilon1UseFarthestSaddle(bool epsilon1UseFarthestSaddle) {
179 epsilon1UseFarthestSaddle_ = epsilon1UseFarthestSaddle;
180 Modified();
181 resetDataVisualization();
182 }
186
187 void SetEpsilonTree1(double epsilonTree1) {
188 epsilonTree1_ = epsilonTree1;
189 oldEpsilonTree1 = epsilonTree1_;
190 Modified();
191 resetDataVisualization();
192 }
194 return epsilonTree1_;
195 }
196
197 void SetEpsilon2Tree1(double epsilon2Tree1) {
198 epsilon2Tree1_ = epsilon2Tree1;
199 Modified();
200 resetDataVisualization();
201 }
203 return epsilon2Tree1_;
204 }
205
206 void SetEpsilon3Tree1(double epsilon3Tree1) {
207 epsilon3Tree1_ = epsilon3Tree1;
208 Modified();
209 resetDataVisualization();
210 }
212 return epsilon3Tree1_;
213 }
214
215 void SetPersistenceThreshold(double persistenceThreshold) {
216 persistenceThreshold_ = persistenceThreshold;
217 Modified();
218 resetDataVisualization();
219 }
222 }
223
224 void SetDeleteMultiPersPairs(bool delMultiPersPairs) {
225 deleteMultiPersPairs_ = delMultiPersPairs;
226 Modified();
227 resetDataVisualization();
228 }
232
233 // Output options
235 doComputeReconstructionError_ = b;
236 Modified();
237 resetDataVisualization();
238 }
242
249
250protected:
256
261 int FillInputPortInformation(int port, vtkInformation *info) override;
262
267 int FillOutputPortInformation(int port, vtkInformation *info) override;
268
273 int RequestData(vtkInformation *request,
274 vtkInformationVector **inputVector,
275 vtkInformationVector *outputVector) override;
276
277 template <class dataType>
278 int run(vtkInformationVector *outputVector,
279 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
280 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
281
282 template <class dataType>
284 vtkInformationVector *outputVector,
285 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
286 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
287
288 template <class dataType>
289 int runOutput(
290 vtkInformationVector *outputVector,
291 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
292 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
293
294 template <class dataType>
295 void makeBarycenterOutput(ttk::ftm::MergeTree<dataType> &barycenter,
296 int blockId,
297 vtkMultiBlockDataSet *output_barycenter);
298};
#define ttkNotUsed(x)
Mark function/method parameters that are not used in the function body at all.
Definition BaseClass.h:47
Baseclass of all VTK filters that wrap ttk modules.
virtual int RequestData(vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
int FillInputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
int FillOutputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
TTK VTK-filter that wraps the ttk::MergeTreePrincipalGeodesics module.
int runCompute(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
void SetJoinSplitMixtureCoefficient(double joinSplitMixtureCoefficient)
void SetDeleteMultiPersPairs(bool delMultiPersPairs)
void SetNumberOfGeodesics(unsigned int numberOfGeodesics)
static ttkMergeTreePrincipalGeodesics * New()
void SetNumberOfProjectionIntervals(unsigned int intervals)
void SetEpsilon1UseFarthestSaddle(bool epsilon1UseFarthestSaddle)
void SetPersistenceThreshold(double persistenceThreshold)