56 template <
class dataType>
60 std::vector<std::tuple<ftm::idNode, ftm::idNode, double>> &matching) {
106 = mergeTreeDistance.
execute<dataType>(mTree1, mTree2, matching);
112 template <
class dataType>
115 std::vector<std::tuple<ftm::idNode, ftm::idNode, double>> matching;
119 template <
class dataType>
137 mergeTreeBarycenter.
setAlpha(alpha);
158 std::vector<ftm::MergeTree<dataType>> intermediateTrees;
159 intermediateTrees.push_back(mTree1);
160 intermediateTrees.push_back(mTree2);
161 std::vector<std::vector<std::tuple<ftm::idNode, ftm::idNode, double>>>
162 outputMatchingBarycenter(2);
164 mergeTreeBarycenter.
execute<dataType>(
165 intermediateTrees, outputMatchingBarycenter, barycenter);
169 template <
class dataType>
172 std::vector<std::tuple<double, int, int, int, int>> &coefs,
174 std::vector<std::vector<std::tuple<ftm::idNode, ftm::idNode, double>>>
190 for(
unsigned int i = 0; i < mTrees.size(); ++i) {
240 while(cpt < coefs.size()) {
241 while(cpt < coefs.size() and std::get<2>(coefs[cpt]) <= index) {
242 double const alpha = std::get<0>(coefs[cpt]);
243 int const index1 = std::get<1>(coefs[cpt]);
244 int const index2 = std::get<2>(coefs[cpt]);
246 mTrees[index1], mTrees[index2], alpha);
247 allMT.push_back(tree);
254 allMT.push_back(mTrees[index]);
258 allMatching = std::vector<
259 std::vector<std::tuple<ftm::idNode, ftm::idNode, double>>>(allMT.size()
262 for(
unsigned int i = 0; i < allMT.size() - 1; ++i)
268 for(
unsigned int i = 0; i < allMT.size(); ++i)
270 for(
unsigned int i = 0; i < mTrees.size(); ++i)
275 std::stringstream ss, ss2, ss3;
276 ss <<
"input size = " << mTrees.size();
278 ss2 <<
"output size = " << allMT.size();
280 ss3 <<
"reconstructed : " << allMT.size() - mTrees.size();
virtual int setThreadNumber(const int threadNumber)
virtual int setDebugLevel(const int &debugLevel)
void setAddNodes(bool addNodesT)
void setPreprocess(bool preproc)
void setPostprocess(bool postproc)
void execute(std::vector< ftm::MergeTree< dataType > > &trees, std::vector< double > &alphas, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &finalMatchings, std::vector< std::vector< std::pair< std::pair< ftm::idNode, ftm::idNode >, std::pair< ftm::idNode, ftm::idNode > > > > &finalMatchings_path, ftm::MergeTree< dataType > &baryMergeTree, bool finalAsgnDoubleInput=false, bool finalAsgnFirstInput=true)
void setBaseModule(int m)
void setAlpha(double alpha)
void setBranchDecomposition(bool useBD)
void setNormalizedWasserstein(bool normalizedWasserstein)
void setDistanceSquaredRoot(bool distanceSquaredRoot)
void setEpsilon3Tree1(double epsilon)
void setEpsilonTree1(double epsilon)
void setAssignmentSolver(int assignmentSolver)
void setEpsilon2Tree1(double epsilon)
void setEpsilonTree2(double epsilon)
bool normalizedWasserstein_
void setPersistenceThreshold(double pt)
void preprocessingPipeline(ftm::MergeTree< dataType > &mTree, double epsilonTree, double epsilon2Tree, double epsilon3Tree, bool branchDecompositionT, bool useMinMaxPairT, bool cleanTreeT, double persistenceThreshold, std::vector< int > &nodeCorr, bool deleteInconsistentNodes=true, bool removeMergedSaddles=false)
void printTreesStats(std::vector< ftm::FTMTree_MT * > &trees)
void postprocessingPipeline(ftm::FTMTree_MT *tree)
std::vector< std::vector< int > > treesNodeCorr_
void setEpsilon2Tree2(double epsilon)
void setKeepSubtree(bool keepSubtree)
double persistenceThreshold_
void setUseMinMaxPair(bool useMinMaxPair)
void setEpsilon3Tree2(double epsilon)
bool branchDecomposition_
void setParallelize(bool para)
void setPreprocess(bool preproc)
void setPostprocess(bool postproc)
dataType execute(ftm::MergeTree< dataType > &mTree1, ftm::MergeTree< dataType > &mTree2, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &outputMatching)
void setPathMappings(bool usePM)
dataType computeDistance(ftm::MergeTree< dataType > &mTree1, ftm::MergeTree< dataType > &mTree2)
MergeTreeTemporalReductionDecoding()
dataType computeDistance(ftm::MergeTree< dataType > &mTree1, ftm::MergeTree< dataType > &mTree2, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matching)
void execute(std::vector< ftm::MergeTree< dataType > > &mTrees, std::vector< std::tuple< double, int, int, int, int > > &coefs, std::vector< ftm::MergeTree< dataType > > &allMT, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &allMatching)
ftm::MergeTree< dataType > computeBarycenter(ftm::MergeTree< dataType > &mTree1, ftm::MergeTree< dataType > &mTree2, double alpha)
std::vector< double > distancesToKeyFrames_
std::vector< double > finalDistances_
void setAssignmentSolver(int assignmentSolver)
void setComputeMapping(bool m)
void setPreprocess(bool p)
dataType computeDistance(ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::pair< std::pair< ftm::idNode, ftm::idNode >, std::pair< ftm::idNode, ftm::idNode > > > *outputMatching)
TTK base package defining the standard types.
printMsg(debug::output::BOLD+" | | | | | . \\ | | (__| | / __/| |_| / __/| (_) |"+debug::output::ENDCOLOR, debug::Priority::PERFORMANCE, debug::LineMode::NEW, stream)