Skip to content

Commit 9ce69c9

Browse files
committed
rebase fix
1 parent 8a15a04 commit 9ce69c9

File tree

5 files changed

+132
-140
lines changed

5 files changed

+132
-140
lines changed

core/base/trackingFromCriticalPoints/TrackingFromCriticalPoints.h

Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,15 @@ namespace ttk {
2222
class TrackingFromCriticalPoints : virtual public Debug {
2323

2424
private:
25-
double epsilonConstant{10e-1};
26-
double epsilonAdapt{0.5};
27-
double meshDiameter{1};
28-
double tolerance{10e-3};
29-
int assignmentMethod{0};
30-
int dimension{2};
31-
double xWeight{1};
32-
double yWeight{1};
33-
double zWeight{1};
34-
double fWeight{1};
35-
bool adaptiveDeathBirthCost{false};
25+
double relativeEpsilon_{10e-1};
26+
double meshDiameter_{1};
27+
double tolerance_{10e-3};
28+
int assignmentMethod_{0};
29+
double assignmentPrecision{0.01};
30+
double xWeight_{1};
31+
double yWeight_{1};
32+
double zWeight_{1};
33+
double fWeight_{0};
3634

3735
public:
3836
TrackingFromCriticalPoints() {
@@ -44,11 +42,7 @@ namespace ttk {
4442
}
4543

4644
void setEpsilon(double e) {
47-
epsilonConstant = e;
48-
}
49-
50-
void setEpsilonAdapt(double e) {
51-
epsilonAdapt = e;
45+
relativeEpsilon_ = e;
5246
}
5347

5448
void setTolerance(double t) {
@@ -65,14 +59,6 @@ namespace ttk {
6559
}
6660
}
6761

68-
void setAdaptDeathBirthCost(bool b) {
69-
adaptiveDeathBirthCost = b;
70-
}
71-
72-
void setDimension(int d) {
73-
dimension = d;
74-
}
75-
7662
void setWeights(double PX, double PY, double PZ, double PF) {
7763
xWeight_ = PX;
7864
yWeight_ = PY;
@@ -103,34 +89,32 @@ namespace ttk {
10389
+ fWeight_ * std::pow(maxScalar - minScalar, 2));
10490
}
10591

106-
void performMatchings(
107-
const std::vector<DiagramType> persistenceDiagrams,
108-
std::vector<std::vector<MatchingType>> &maximaMatchings,
109-
std::vector<std::vector<MatchingType>> &sad_1_Matchings,
110-
std::vector<std::vector<MatchingType>> &sad_2_Matchings,
111-
std::vector<std::vector<MatchingType>> &minimaMatchings,
112-
std::vector<std::vector<MatchingType>> &maxMatchingsPersistence,
113-
std::vector<std::vector<MatchingType>> &sad_1_MatchingsPersistence,
114-
std::vector<std::vector<MatchingType>> &sad_2_MatchingsPersistence,
115-
std::vector<std::vector<MatchingType>> &minMatchingsPersistence,
116-
int fieldNumber);
117-
92+
void
93+
performMatchings(const std::vector<DiagramType> &persistenceDiagrams,
94+
std::vector<std::vector<MatchingType>> &maximaMatchings,
95+
std::vector<std::vector<MatchingType>> &sad_1_Matchings,
96+
std::vector<std::vector<MatchingType>> &sad_2_Matchings,
97+
std::vector<std::vector<MatchingType>> &minimaMatchings,
98+
std::vector<std::vector<SimplexId>> &maxMap,
99+
std::vector<std::vector<SimplexId>> &sad_1Map,
100+
std::vector<std::vector<SimplexId>> &sad_2Map,
101+
std::vector<std::vector<SimplexId>> &minMap);
118102
void performTrackings(
119-
int fieldNumber,
120-
std::vector<std::vector<MatchingType>> &maximaMatchings,
121-
std::vector<std::vector<MatchingType>> &sad_1_Matchings,
122-
std::vector<std::vector<MatchingType>> &sad_2_Matchings,
123-
std::vector<std::vector<MatchingType>> &minimaMatchings,
124-
std::vector<std::vector<MatchingType>> &maxMatchingsPersistence,
125-
std::vector<std::vector<MatchingType>> &sad_1_MatchingsPersistence,
126-
std::vector<std::vector<MatchingType>> &sad_2_MatchingsPersistence,
127-
std::vector<std::vector<MatchingType>> &minMatchingsPersistence,
103+
const std::vector<DiagramType> &persistenceDiagrams,
104+
const std::vector<std::vector<MatchingType>> &maximaMatchings,
105+
const std::vector<std::vector<MatchingType>> &sad_1_Matchings,
106+
const std::vector<std::vector<MatchingType>> &sad_2_Matchings,
107+
const std::vector<std::vector<MatchingType>> &minimaMatchings,
108+
const std::vector<std::vector<SimplexId>> &maxMap,
109+
const std::vector<std::vector<SimplexId>> &sad_1Map,
110+
const std::vector<std::vector<SimplexId>> &sad_2Map,
111+
const std::vector<std::vector<SimplexId>> &minMap,
128112
std::vector<trackingTuple> &allTrackings,
129-
std::vector<std::vector<double>> &allTrackingCost,
130-
std::vector<double> &allTrackingsMeanPersistences,
131-
unsigned int (&sizes)[]);
113+
std::vector<std::vector<double>> &allTrackingsCost,
114+
std::vector<std::vector<double>> &allTrackingsInstantPersistences,
115+
unsigned int (&typesArrayLimits)[3]);
132116

133-
protected:
117+
private:
134118
double computeRelevantPersistence(const DiagramType &d1,
135119
const DiagramType &d2) {
136120
const auto sp = this->tolerance_;

core/vtk/ttkSeparatrixStability/ttkSeparatrixStability.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ bool ttkSeparatrixStability::updateVisitedVertices(
5757
if(localId == -1) {
5858
localId = localToGlobal.size();
5959
localToGlobal.push_back(globalId);
60-
std::array<double, 3> newCoords;
61-
points->GetPoint(pointId, sourceCoords.data());
62-
coords.push_back(newCoords);
6360
}
6461
return false;
6562
}

core/vtk/ttkTrackingFromFields/ttkTrackingFromFields.cpp

Lines changed: 57 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#include <vtkInformation.h>
33
#include <vtkPointData.h>
44

5-
#include <Timer.h>
65
#include <ttkMacros.h>
76
#include <ttkTrackingFromFields.h>
87
#include <ttkTrackingFromPersistenceDiagrams.h>
@@ -100,11 +99,6 @@ int ttkTrackingFromFields::trackWithPersistenceMatching(
10099

101100
output->ShallowCopy(persistenceDiagram);
102101

103-
double Mesh_RT = timer.getElapsedTime() - clock;
104-
std::cout << std::fixed << "DiagramComputationRT = " << Diagram_RT
105-
<< ", PerformMatchingRT = " << Matching_RT
106-
<< ", PerformTrackingRT = " << Tracking_RT
107-
<< ", BuildMeshRT = " << Mesh_RT << std::endl;
108102
return 1;
109103
}
110104

@@ -114,11 +108,10 @@ int ttkTrackingFromFields::trackWithCriticalPointMatching(
114108
unsigned long fieldNumber,
115109
const triangulationType *triangulation) {
116110

117-
ttk::Timer timer;
118-
double clock = timer.getElapsedTime();
119-
ttk::CriticalPointTracking tracker;
120-
float x, y, z;
121-
float maxX, minX, maxY, minY, maxZ, minZ;
111+
ttk::Timer t{};
112+
113+
float x = 0, y = 0, z = 0;
114+
float maxX = 0, minX = 0, maxY = 0, minY = 0, maxZ = 0, minZ = 0;
122115
triangulation->getVertexPoint(0, minX, minY, minZ);
123116
triangulation->getVertexPoint(0, maxX, maxY, maxZ);
124117

@@ -132,58 +125,58 @@ int ttkTrackingFromFields::trackWithCriticalPointMatching(
132125
minZ = std::min(z, minZ);
133126
}
134127

135-
double const costDeathBirth = CostDeathBirth;
128+
double const relativeDestructionCost = RelativeDestructionCost;
136129
double const tolerance = (double)Tolerance;
137130
float meshDiameter
138131
= std::sqrt(std::pow(maxX - minX, 2) + std::pow(maxY - minY, 2)
139132
+ std::pow(maxZ - minZ, 2));
140133
int assignmentMethod = AssignmentMethod;
141-
bool adaptDeathBirthCost = AdaptDeathBirthCost;
142-
double epsilonAdapt = EpsilonAdapt;
143134

144-
tracker.setMeshDiamater(meshDiameter);
135+
ttk::TrackingFromCriticalPoints tracker;
136+
tracker.setMeshDiameter(meshDiameter);
145137
tracker.setTolerance(tolerance);
146-
tracker.setEpsilon(costDeathBirth);
147-
tracker.setAdaptDeathBirthCost(adaptDeathBirthCost);
138+
tracker.setEpsilon(relativeDestructionCost);
148139
tracker.setAssignmentMethod(assignmentMethod);
149-
tracker.setDimension(triangulation->getDimensionality());
150-
tracker.setEpsilonAdapt(epsilonAdapt);
151140
tracker.setWeights(PX, PY, PZ, PF);
141+
tracker.setAssignmentPrecision(AssignmentPrecision);
152142

153143
tracker.setThreadNumber(this->threadNumber_);
144+
tracker.setDebugLevel(this->debugLevel_);
154145

155146
std::vector<ttk::DiagramType> persistenceDiagrams(fieldNumber);
156147
this->performDiagramComputation<dataType, triangulationType>(
157148
(int)fieldNumber, persistenceDiagrams, triangulation);
158149

159-
double Diagram_RT = timer.getElapsedTime() - clock;
160-
clock = timer.getElapsedTime();
150+
this->printMsg("Diagram computed", 1, t.getElapsedTime(), threadNumber_);
151+
double previousStepTime = t.getElapsedTime();
152+
161153
std::vector<std::vector<ttk::MatchingType>> maximaMatchings(fieldNumber - 1);
162154
std::vector<std::vector<ttk::MatchingType>> sad_1_Matchings(fieldNumber - 1);
163155
std::vector<std::vector<ttk::MatchingType>> sad_2_Matchings(fieldNumber - 1);
164156
std::vector<std::vector<ttk::MatchingType>> minimaMatchings(fieldNumber - 1);
165157

166-
std::vector<std::vector<ttk::MatchingType>> maxMatchingsPersistence(
167-
fieldNumber - 1);
168-
std::vector<std::vector<ttk::MatchingType>> sad_1_MatchingsPersistence(
169-
fieldNumber - 1);
170-
std::vector<std::vector<ttk::MatchingType>> sad_2_MatchingsPersistence(
171-
fieldNumber - 1);
172-
std::vector<std::vector<ttk::MatchingType>> minMatchingsPersistence(
173-
fieldNumber - 1);
158+
std::vector<std::vector<ttk::SimplexId>> maxMap(fieldNumber);
159+
std::vector<std::vector<ttk::SimplexId>> sad_1Map(fieldNumber);
160+
std::vector<std::vector<ttk::SimplexId>> sad_2Map(fieldNumber);
161+
std::vector<std::vector<ttk::SimplexId>> minMap(fieldNumber);
174162

175-
tracker.performMatchings(
176-
persistenceDiagrams, maximaMatchings, sad_1_Matchings, sad_2_Matchings,
177-
minimaMatchings, maxMatchingsPersistence, sad_1_MatchingsPersistence,
178-
sad_2_MatchingsPersistence, minMatchingsPersistence, fieldNumber);
163+
tracker.performMatchings(persistenceDiagrams, maximaMatchings,
164+
sad_1_Matchings, sad_2_Matchings, minimaMatchings,
165+
maxMap, sad_1Map, sad_2Map, minMap);
166+
167+
this->printMsg("Matchings computed", 1, t.getElapsedTime() - previousStepTime,
168+
threadNumber_);
169+
previousStepTime = t.getElapsedTime();
179170

180-
double Matching_RT = timer.getElapsedTime() - clock;
181-
clock = timer.getElapsedTime();
182171
vtkNew<vtkPoints> const points{};
183-
vtkNew<vtkUnstructuredGrid> const criticalPointTracking{};
172+
vtkNew<vtkUnstructuredGrid> const outputMesh{};
184173

185174
vtkNew<vtkDoubleArray> costs{};
186175
vtkNew<vtkDoubleArray> averagePersistences{};
176+
vtkNew<vtkDoubleArray> integratedPersistences{};
177+
vtkNew<vtkDoubleArray> maximalPersistences{};
178+
vtkNew<vtkDoubleArray> minimalPersistences{};
179+
vtkNew<vtkDoubleArray> instantPersistences{};
187180
vtkNew<vtkDoubleArray> valueScalars{};
188181
vtkNew<vtkIntArray> globalVertexIds{};
189182
vtkNew<vtkIntArray> lengthScalars{};
@@ -193,6 +186,10 @@ int ttkTrackingFromFields::trackWithCriticalPointMatching(
193186

194187
costs->SetName("Costs");
195188
averagePersistences->SetName("AveragePersistence");
189+
integratedPersistences->SetName("IntegratedPersistence");
190+
maximalPersistences->SetName("MaximalPersistence");
191+
minimalPersistences->SetName("MinimalPersistence");
192+
instantPersistences->SetName("InstantPersistence");
196193
valueScalars->SetName("Scalar");
197194
globalVertexIds->SetName("VertexGlobalId");
198195
lengthScalars->SetName("ComponentLength");
@@ -201,46 +198,44 @@ int ttkTrackingFromFields::trackWithCriticalPointMatching(
201198
pointsCriticalType->SetName("CriticalType");
202199

203200
std::vector<ttk::trackingTuple> allTrackings;
204-
std::vector<double> allTrackingsMeanPersistence;
205201
std::vector<std::vector<double>> allTrackingsCosts;
202+
std::vector<std::vector<double>> allTrackingsInstantPersistence;
206203

207204
unsigned int typesArrayLimits[3] = {};
208-
tracker.performTrackings(
209-
fieldNumber, maximaMatchings, sad_1_Matchings, sad_2_Matchings,
210-
minimaMatchings, maxMatchingsPersistence, sad_1_MatchingsPersistence,
211-
sad_2_MatchingsPersistence, minMatchingsPersistence, allTrackings,
212-
allTrackingsCosts, allTrackingsMeanPersistence, typesArrayLimits);
213205

214-
std::cout << "balise 1" << std::endl;
206+
tracker.performTrackings(
207+
persistenceDiagrams, maximaMatchings, sad_1_Matchings, sad_2_Matchings,
208+
minimaMatchings, maxMap, sad_1Map, sad_2Map, minMap, allTrackings,
209+
allTrackingsCosts, allTrackingsInstantPersistence, typesArrayLimits);
215210

216-
double Tracking_RT = timer.getElapsedTime() - clock;
217-
clock = timer.getElapsedTime();
211+
this->printMsg("Trackings computed", 1, t.getElapsedTime() - previousStepTime,
212+
threadNumber_);
213+
previousStepTime = t.getElapsedTime();
218214

219215
double const spacing = Spacing;
220216
bool const useGeometricSpacing = UseGeometricSpacing;
221217

222-
ttkTrackingFromPersistenceDiagrams::buildMesh(
223-
triangulation, allTrackings, allTrackingsCosts, allTrackingsMeanPersistence,
224-
useGeometricSpacing, spacing, points, criticalPointTracking,
225-
pointsCriticalType, timeScalars, lengthScalars, globalVertexIds,
226-
connectedComponentIds, costs, averagePersistences, typesArrayLimits);
227-
228-
output->ShallowCopy(criticalPointTracking);
229-
230-
double Mesh_RT = timer.getElapsedTime() - clock;
231-
std::cout << std::fixed << "DiagramComputationRT = " << Diagram_RT
232-
<< ", PerformMatchingRT = " << Matching_RT
233-
<< ", PerformTrackingRT = " << Tracking_RT
234-
<< ", BuildMeshRT = " << Mesh_RT << std::endl;
218+
ttkTrackingFromPersistenceDiagrams::buildMeshAlt(
219+
triangulation, allTrackings, allTrackingsCosts,
220+
allTrackingsInstantPersistence, useGeometricSpacing, spacing, points,
221+
outputMesh, pointsCriticalType, timeScalars, lengthScalars, globalVertexIds,
222+
connectedComponentIds, costs, averagePersistences, integratedPersistences,
223+
maximalPersistences, minimalPersistences, instantPersistences,
224+
typesArrayLimits);
225+
226+
this->printMsg(
227+
"Mesh built", 1, t.getElapsedTime() - previousStepTime, threadNumber_);
228+
this->printMsg("Total run time ", 1, t.getElapsedTime(), this->threadNumber_);
229+
230+
output->ShallowCopy(outputMesh);
231+
235232
return 1;
236233
}
237234

238235
int ttkTrackingFromFields::RequestData(vtkInformation *ttkNotUsed(request),
239236
vtkInformationVector **inputVector,
240237
vtkInformationVector *outputVector) {
241238

242-
ttk::Timer timer;
243-
244239
auto input = vtkDataSet::GetData(inputVector[0]);
245240
auto output = vtkUnstructuredGrid::GetData(outputVector);
246241
ttk::Triangulation *triangulation = ttkAlgorithm::GetTriangulation(input);
@@ -306,7 +301,7 @@ int ttkTrackingFromFields::RequestData(vtkInformation *ttkNotUsed(request),
306301
std::string const algorithm = DistanceAlgorithm;
307302
int const pvalg = PVAlgorithm;
308303
bool useTTKMethod = false;
309-
bool criticalPointTracking = (pvalg == 2);
304+
bool trackWithCriticalPoints = (pvalg == 2);
310305

311306
if(pvalg >= 0) {
312307
switch(pvalg) {
@@ -363,8 +358,6 @@ int ttkTrackingFromFields::RequestData(vtkInformation *ttkNotUsed(request),
363358
}
364359
this->setInputOffsets(inputOrders);
365360

366-
double clock = timer.getElapsedTime();
367-
368361
int status = 0;
369362
this->printMsg("Tracking trajectories over " + std::to_string(fieldNumber)
370363
+ " timesteps");
@@ -373,7 +366,7 @@ int ttkTrackingFromFields::RequestData(vtkInformation *ttkNotUsed(request),
373366
inputScalarFields[0]->GetDataType(), triangulation->getType(),
374367
(status = this->trackWithPersistenceMatching<VTK_TT, TTK_TT>(
375368
output, fieldNumber, (TTK_TT *)triangulation->getData())));
376-
} else if(useTTKMethod && criticalPointTracking) {
369+
} else if(useTTKMethod && trackWithCriticalPoints) {
377370
ttkVtkTemplateMacro(
378371
inputScalarFields[0]->GetDataType(), triangulation->getType(),
379372
(status = this->trackWithCriticalPointMatching<VTK_TT, TTK_TT>(
@@ -382,7 +375,5 @@ int ttkTrackingFromFields::RequestData(vtkInformation *ttkNotUsed(request),
382375
this->printMsg("The specified matching method is not supported.");
383376
}
384377

385-
double total_rt = timer.getElapsedTime() - clock;
386-
std::cout << "TrackingMethodTime = " << total_rt << std::endl;
387378
return status;
388379
}

core/vtk/ttkTrackingFromFields/ttkTrackingFromFields.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
#include <vtkUnstructuredGrid.h>
3939

4040
// VTK Module
41-
#include <CriticalPointTracking.h>
41+
#include <TrackingFromCriticalPoints.h>
4242
#include <TrackingFromFields.h>
4343
#include <ttkAlgorithm.h>
4444
#include <ttkTrackingFromFieldsModule.h>
@@ -83,9 +83,6 @@ class TTKTRACKINGFROMFIELDS_EXPORT ttkTrackingFromFields
8383
vtkGetMacro(RelativeDestructionCost, double);
8484
/// @}
8585

86-
vtkSetMacro(AdaptDeathBirthCost, bool);
87-
vtkGetMacro(AdaptDeathBirthCost, bool);
88-
8986
vtkSetMacro(AssignmentPrecision, double);
9087
vtkGetMacro(AssignmentPrecision, double);
9188
/// @}

0 commit comments

Comments
 (0)