43 template <
class dataType>
47 std::vector<std::tuple<ftm::idNode, ftm::idNode, double>> &matching) {
70 = mergeTreeDistance.
execute<dataType>(mTree1, mTree2, matching);
75 template <
class dataType>
78 std::vector<std::tuple<ftm::idNode, ftm::idNode, double>> matching;
82 template <
class dataType>
101 mergeTreeBarycenter.
setAlpha(alpha);
107 std::vector<ftm::MergeTree<dataType>> intermediateTrees;
108 intermediateTrees.push_back(mTree1);
109 intermediateTrees.push_back(mTree2);
110 std::vector<std::vector<std::tuple<ftm::idNode, ftm::idNode, double>>>
111 outputMatchingBarycenter(2);
113 mergeTreeBarycenter.
execute<dataType>(
114 intermediateTrees, outputMatchingBarycenter, barycenter);
118 template <
class dataType>
121 std::vector<std::tuple<double, int, int, int, int>> &coefs,
123 std::vector<std::vector<std::tuple<ftm::idNode, ftm::idNode, double>>>
129 for(
unsigned int i = 0; i < mTrees.size(); ++i) {
140 while(cpt < coefs.size()) {
141 while(cpt < coefs.size() and std::get<2>(coefs[cpt]) <= index) {
142 double const alpha = std::get<0>(coefs[cpt]);
143 int const index1 = std::get<1>(coefs[cpt]);
144 int const index2 = std::get<2>(coefs[cpt]);
146 mTrees[index1], mTrees[index2], alpha);
147 allMT.push_back(tree);
154 allMT.push_back(mTrees[index]);
158 allMatching = std::vector<
159 std::vector<std::tuple<ftm::idNode, ftm::idNode, double>>>(allMT.size()
162 for(
unsigned int i = 0; i < allMT.size() - 1; ++i)
167 for(
unsigned int i = 0; i < allMT.size(); ++i)
169 for(
unsigned int i = 0; i < mTrees.size(); ++i)
173 std::stringstream ss, ss2, ss3;
174 ss <<
"input size = " << mTrees.size();
176 ss2 <<
"output size = " << allMT.size();
178 ss3 <<
"reconstructed : " << allMT.size() - mTrees.size();
virtual int setThreadNumber(const int threadNumber)
virtual int setDebugLevel(const int &debugLevel)
void setPreprocess(bool preproc)
void setPostprocess(bool postproc)
void setAlpha(double alpha)
void execute(std::vector< ftm::MergeTree< dataType > > &trees, std::vector< double > &alphas, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &finalMatchings, ftm::MergeTree< dataType > &baryMergeTree, bool finalAsgnDoubleInput=false, bool finalAsgnFirstInput=true)
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 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)
void setEpsilon2Tree1(double epsilon)
void setEpsilonTree2(double epsilon)
bool normalizedWasserstein_
void setPersistenceThreshold(double pt)
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)
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_
TTK base package defining the standard types.
printMsg(debug::output::BOLD+" | | | | | . \\ | | (__| | / __/| |_| / __/| (_) |"+debug::output::ENDCOLOR, debug::Priority::PERFORMANCE, debug::LineMode::NEW, stream)