TTK
Loading...
Searching...
No Matches
ttkMergeTreeAutoencoder.h
Go to the documentation of this file.
1
44
45#pragma once
46
47// VTK Module
48#include <ttkMergeTreeAutoencoderModule.h>
49
50// VTK Includes
51#include <ttkAlgorithm.h>
52#include <vtkMultiBlockDataSet.h>
53#include <vtkUnstructuredGrid.h>
54
55// TTK Base Includes
56#include <FTMTree.h>
58
59class TTKMERGETREEAUTOENCODER_EXPORT ttkMergeTreeAutoencoder
60 : public ttkAlgorithm // we inherit from the generic ttkAlgorithm class
61 ,
62 protected ttk::MergeTreeAutoencoder // and we inherit from the base class
63{
64private:
69 // Input options
70 double oldEpsilonTree1;
71 int DiagramPairTypes = 0;
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
82 void setDataVisualization(int ttkNotUsed(numInputs),
83 int ttkNotUsed(numInputs2)) {
84 }
85
86 void resetDataVisualization() {
87 setDataVisualization(0, 0);
88 treesSegmentation.clear();
89 treesSegmentation2.clear();
90 }
91
92public:
97 // Input Options
98 using vtkAlgorithm::SetInputArrayToProcess;
99 void SetInputArrayToProcess(const char *name) {
100 vtkAlgorithm::SetInputArrayToProcess(0, 2, 0, 6, name);
101 }
102
105 Modified();
106 resetDataVisualization();
107 }
111
112 void SetNumberOfEncoderLayers(unsigned int numberOfEncoderLayers) {
113 encoderNoLayers_ = numberOfEncoderLayers;
114 Modified();
115 resetDataVisualization();
116 }
118 return encoderNoLayers_;
119 }
120
121 void SetScaleLayerAfterLatent(unsigned int scaleLayerAfterLatent) {
122 scaleLayerAfterLatent_ = scaleLayerAfterLatent;
123 Modified();
124 resetDataVisualization();
125 }
128 }
129
130 void SetInputNumberOfAxes(unsigned int numberOfAxes) {
131 inputNumberOfAxes_ = numberOfAxes;
132 Modified();
133 resetDataVisualization();
134 }
135 unsigned int GetInputNumberOfAxes() {
136 return inputNumberOfAxes_;
137 }
138
139 void SetInputOriginPrimeSizePercent(double originSize) {
140 inputOriginPrimeSizePercent_ = originSize;
141 Modified();
142 resetDataVisualization();
143 }
147
148 // Latent space number of axes
149 void SetNumberOfAxes(unsigned int numberOfAxes) {
150 numberOfAxes_ = numberOfAxes;
151 Modified();
152 resetDataVisualization();
153 }
154 unsigned int GetNumberOfAxes() {
155 return numberOfAxes_;
156 }
157
158 void SetLatentSpaceOriginPrimeSizePercent(double originSize) {
160 Modified();
161 resetDataVisualization();
162 }
166
167 void SetNumberOfProjectionSteps(unsigned int noSteps) {
168 k_ = noSteps;
169 Modified();
170 resetDataVisualization();
171 }
173 return k_;
174 }
175
176 void SetBarycenterSizeLimitPercent(double percent) {
178 Modified();
179 resetDataVisualization();
180 }
184
185 void SetMinIteration(unsigned int minIteration) {
186 minIteration_ = minIteration;
187 Modified();
188 resetDataVisualization();
189 }
190 unsigned int GetMinIteration() {
191 return minIteration_;
192 }
193
194 void SetMaxIteration(unsigned int maxIteration) {
195 maxIteration_ = maxIteration;
196 Modified();
197 resetDataVisualization();
198 }
199 unsigned int GetMaxIteration() {
200 return maxIteration_;
201 }
202
203 void SetIterationGap(unsigned int iterationGap) {
204 iterationGap_ = iterationGap;
205 Modified();
206 resetDataVisualization();
207 }
209 return iterationGap_;
210 }
211
212 void SetBatchSize(double bs) {
213 batchSize_ = bs;
214 Modified();
215 resetDataVisualization();
216 }
217 double GetBatchSize() {
218 return batchSize_;
219 }
220
221 void SetOptimizer(int optimizer) {
222 optimizer_ = optimizer;
223 Modified();
224 resetDataVisualization();
225 }
227 return optimizer_;
228 }
229
230 void SetGradientStepSize(double lr) {
232 Modified();
233 resetDataVisualization();
234 }
236 return gradientStepSize_;
237 }
238
239 void SetBeta1(double beta) {
240 beta1_ = beta;
241 Modified();
242 resetDataVisualization();
243 }
244 double GetBeta1() {
245 return beta1_;
246 }
247
248 void SetBeta2(double beta) {
249 beta2_ = beta;
250 Modified();
251 resetDataVisualization();
252 }
253 double GetBeta2() {
254 return beta2_;
255 }
256
257 void SetReconstructionLossWeight(double reconstructionLossWeight) {
258 reconstructionLossWeight_ = reconstructionLossWeight;
259 Modified();
260 resetDataVisualization();
261 }
265
266 void SetTrackingLossWeight(double trackingLossWeight) {
267 trackingLossWeight_ = trackingLossWeight;
268 Modified();
269 resetDataVisualization();
270 }
272 return trackingLossWeight_;
273 }
274
275 void SetMetricLossWeight(double metricLossWeight) {
276 metricLossWeight_ = metricLossWeight;
277 Modified();
278 resetDataVisualization();
279 }
281 return metricLossWeight_;
282 }
283
284 void SetClusteringLossWeight(double clusteringLossWeight) {
285 clusteringLossWeight_ = clusteringLossWeight;
286 Modified();
287 resetDataVisualization();
288 }
291 }
292
293 void SetCustomLossSpace(bool customLossSpace) {
294 customLossSpace_ = customLossSpace;
295 Modified();
296 resetDataVisualization();
297 }
299 return customLossSpace_;
300 }
301
302 void SetCustomLossActivate(bool customLossActivate) {
303 customLossActivate_ = customLossActivate;
304 Modified();
305 resetDataVisualization();
306 }
308 return customLossActivate_;
309 }
310
311 void SetNormalizeMetricLoss(bool normalizeMetricLoss) {
312 normalizeMetricLoss_ = normalizeMetricLoss;
313 Modified();
314 resetDataVisualization();
315 }
319
320 void SetClusteringLossTemperature(double clusteringLossTemperature) {
321 clusteringLossTemp_ = clusteringLossTemperature;
322 Modified();
323 resetDataVisualization();
324 }
328
329 void SetCustomLossDynamicWeight(bool customLossDynamicWeight) {
330 customLossDynamicWeight_ = customLossDynamicWeight;
331 Modified();
332 resetDataVisualization();
333 }
337
338 void SetNumberOfInit(unsigned int noInit) {
339 noInit_ = noInit;
340 Modified();
341 resetDataVisualization();
342 }
343 unsigned int GetNumberOfInit() {
344 return noInit_;
345 }
346
347 void SetEuclideanVectorsInit(bool euclideanVectorsInit) {
348 euclideanVectorsInit_ = euclideanVectorsInit;
349 Modified();
350 resetDataVisualization();
351 }
355
356 void SetInitOriginPrimeStructByCopy(bool initOriginPrimeStructByCopy) {
357 initOriginPrimeStructByCopy_ = initOriginPrimeStructByCopy;
358 Modified();
359 resetDataVisualization();
360 }
364
365 void SetTrackingLossDecoding(double trackingLossDecoding) {
366 trackingLossDecoding_ = trackingLossDecoding;
367 Modified();
368 resetDataVisualization();
369 }
372 }
373
374 void SetTrackingLossInitRandomness(double trackingLossInitRandomness) {
375 trackingLossInitRandomness_ = trackingLossInitRandomness;
376 Modified();
377 resetDataVisualization();
378 }
382
383 void SetDeterministic(bool deterministic) {
384 deterministic_ = deterministic;
385 Modified();
386 resetDataVisualization();
387 }
389 return deterministic_;
390 }
391
392 void SetActivate(bool activate) {
393 activate_ = activate;
394 Modified();
395 resetDataVisualization();
396 }
397 bool GetActivate() {
398 return activate_;
399 }
400
401 void SetActivationFunction(unsigned int activationFunction) {
402 activationFunction_ = activationFunction;
403 Modified();
404 resetDataVisualization();
405 }
406 unsigned int GetActivationFunction() {
407 return activationFunction_;
408 }
409
410 void SetFullSymmetricAE(bool fullSymmetricAE) {
411 fullSymmetricAE_ = fullSymmetricAE;
412 Modified();
413 resetDataVisualization();
414 }
416 return fullSymmetricAE_;
417 }
418
419 void SetActivateOutputInit(bool activateOutputInit) {
420 activateOutputInit_ = activateOutputInit;
421 Modified();
422 resetDataVisualization();
423 }
425 return activateOutputInit_;
426 }
427
428 void SetJoinSplitMixtureCoefficient(double joinSplitMixtureCoefficient) {
429 mixtureCoefficient_ = joinSplitMixtureCoefficient;
430 Modified();
431 resetDataVisualization();
432 }
436
437 void SetDiagramPairTypes(int diagramPairTypes) {
438 DiagramPairTypes = diagramPairTypes;
439 Modified();
440 resetDataVisualization();
441 }
442 vtkGetMacro(DiagramPairTypes, int);
443
444 void SetEpsilon1UseFarthestSaddle(bool epsilon1UseFarthestSaddle) {
445 epsilon1UseFarthestSaddle_ = epsilon1UseFarthestSaddle;
446 Modified();
447 resetDataVisualization();
448 }
452
453 void SetEpsilonTree1(double epsilonTree1) {
454 epsilonTree1_ = epsilonTree1;
455 oldEpsilonTree1 = epsilonTree1_;
456 Modified();
457 resetDataVisualization();
458 }
460 return epsilonTree1_;
461 }
462
463 void SetEpsilon2Tree1(double epsilon2Tree1) {
464 epsilon2Tree1_ = epsilon2Tree1;
465 Modified();
466 resetDataVisualization();
467 }
469 return epsilon2Tree1_;
470 }
471
472 void SetEpsilon3Tree1(double epsilon3Tree1) {
473 epsilon3Tree1_ = epsilon3Tree1;
474 Modified();
475 resetDataVisualization();
476 }
478 return epsilon3Tree1_;
479 }
480
481 void SetPersistenceThreshold(double persistenceThreshold) {
482 persistenceThreshold_ = persistenceThreshold;
483 Modified();
484 resetDataVisualization();
485 }
488 }
489
490 void SetDeleteMultiPersPairs(bool delMultiPersPairs) {
491 deleteMultiPersPairs_ = delMultiPersPairs;
492 Modified();
493 resetDataVisualization();
494 }
498
499 // Testing options
500 void SetNodePerTask(int nodePerTask) {
501 nodePerTask_ = nodePerTask;
502 Modified();
503 resetDataVisualization();
504 }
506 return nodePerTask_;
507 }
508
509 // Output options
510 void SetCreateOutput(bool createOutput) {
511 createOutput_ = createOutput;
512 Modified();
513 resetDataVisualization();
514 }
516 return createOutput_;
517 }
518
525
526protected:
532
537 int FillInputPortInformation(int port, vtkInformation *info) override;
538
543 int FillOutputPortInformation(int port, vtkInformation *info) override;
544
549 int RequestData(vtkInformation *request,
550 vtkInformationVector **inputVector,
551 vtkInformationVector *outputVector) override;
552
553 int run(vtkInformationVector *outputVector,
554 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
555 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
556
558 vtkInformationVector *outputVector,
559 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
560 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
561
563 vtkInformationVector *outputVector,
564 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
565 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
566};
#define ttkNotUsed(x)
Mark function/method parameters that are not used in the function body at all.
Definition BaseClass.h:47
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
void SetJoinSplitMixtureCoefficient(double joinSplitMixtureCoefficient)
void SetInitOriginPrimeStructByCopy(bool initOriginPrimeStructByCopy)
void SetCreateOutput(bool createOutput)
void SetEuclideanVectorsInit(bool euclideanVectorsInit)
void SetLatentSpaceOriginPrimeSizePercent(double originSize)
void SetClusteringLossWeight(double clusteringLossWeight)
void SetEpsilon3Tree1(double epsilon3Tree1)
void SetMinIteration(unsigned int minIteration)
void SetCustomLossSpace(bool customLossSpace)
void SetActivationFunction(unsigned int activationFunction)
void SetCustomLossActivate(bool customLossActivate)
static ttkMergeTreeAutoencoder * New()
void SetNodePerTask(int nodePerTask)
void SetScaleLayerAfterLatent(unsigned int scaleLayerAfterLatent)
void SetNumberOfInit(unsigned int noInit)
void SetNumberOfEncoderLayers(unsigned int numberOfEncoderLayers)
void SetMaxIteration(unsigned int maxIteration)
void SetDiagramPairTypes(int diagramPairTypes)
void SetDeleteMultiPersPairs(bool delMultiPersPairs)
void SetReconstructionLossWeight(double reconstructionLossWeight)
void SetDeterministic(bool deterministic)
void SetNormalizeMetricLoss(bool normalizeMetricLoss)
void SetInputOriginPrimeSizePercent(double originSize)
int run(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
void SetInputArrayToProcess(const char *name)
void SetFullSymmetricAE(bool fullSymmetricAE)
void SetClusteringLossTemperature(double clusteringLossTemperature)
void SetTrackingLossDecoding(double trackingLossDecoding)
void SetEpsilon2Tree1(double epsilon2Tree1)
int runCompute(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
void SetTrackingLossWeight(double trackingLossWeight)
void SetNumberOfAxes(unsigned int numberOfAxes)
void SetNumberOfProjectionSteps(unsigned int noSteps)
void SetBarycenterSizeLimitPercent(double percent)
void SetIterationGap(unsigned int iterationGap)
int runOutput(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
void SetEpsilon1UseFarthestSaddle(bool epsilon1UseFarthestSaddle)
void SetTrackingLossInitRandomness(double trackingLossInitRandomness)
void SetEpsilonTree1(double epsilonTree1)
void SetCustomLossDynamicWeight(bool customLossDynamicWeight)
void SetPersistenceThreshold(double persistenceThreshold)
void SetActivateOutputInit(bool activateOutputInit)
void SetInputNumberOfAxes(unsigned int numberOfAxes)
void SetMetricLossWeight(double metricLossWeight)