|
TTK
|
#include <MergeTreeNeuralLayer.h>
Public Member Functions | |
| MergeTreeNeuralLayer () | |
Public Member Functions inherited from ttk::Debug | |
| Debug () | |
| ~Debug () override | |
| virtual int | setDebugLevel (const int &debugLevel) |
| int | setWrapper (const Wrapper *wrapper) override |
| int | printMsg (const std::string &msg, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
| int | printMsg (const std::vector< std::string > &msgs, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
| int | printErr (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const |
| int | printWrn (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const |
| int | printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const double &memory, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
| int | printMsg (const std::string &msg, const double &progress, const double &time, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
| int | printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
| int | printMsg (const std::string &msg, const double &progress, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
| int | printMsg (const std::string &msg, const double &progress, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
| int | printMsg (const std::vector< std::vector< std::string > > &rows, const debug::Priority &priority=debug::Priority::INFO, const bool hasHeader=true, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
| int | printMsg (const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const |
| int | printMsg (const debug::Separator &separator, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
| int | printMsg (const std::string &msg, const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const |
| void | setDebugMsgPrefix (const std::string &prefix) |
Public Member Functions inherited from ttk::BaseClass | |
| BaseClass () | |
| virtual | ~BaseClass ()=default |
| int | getThreadNumber () const |
| virtual int | setThreadNumber (const int threadNumber) |
Public Member Functions inherited from ttk::MergeTreeNeuralBase | |
| MergeTreeNeuralBase () | |
Public Member Functions inherited from ttk::MergeTreeAxesAlgorithmBase | |
| MergeTreeAxesAlgorithmBase () | |
| void | setDeterministic (const bool deterministic) |
| void | setNumberOfProjectionSteps (const unsigned int k) |
| void | setBarycenterSizeLimitPercent (const double barycenterSizeLimitPercent) |
| void | setProbabilisticVectorsInit (const bool probabilisticVectorsInit) |
| template<class dataType> | |
| void | computeOneDistance (const ftm::MergeTree< dataType > &tree1, const ftm::MergeTree< dataType > &tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matching, dataType &distance, bool isCalled=false, bool useDoubleInput=false, bool isFirstInput=true) |
| template<class dataType> | |
| void | computeOneDistance (const ftm::MergeTree< dataType > &tree1, const ftm::MergeTree< dataType > &tree2, dataType &distance, bool isCalled=false, bool useDoubleInput=false, bool isFirstInput=true) |
| template<class dataType> | |
| void | initVectorFromMatching (ftm::MergeTree< dataType > &barycenter, ftm::MergeTree< dataType > &tree, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matching, std::vector< std::vector< double > > &v) |
| template<class dataType> | |
| void | initRandomVector (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< double > > &v, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s) |
| template<class dataType, typename F> | |
| int | initVectors (int axeNumber, ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &barycenter2, std::vector< ftm::MergeTree< dataType > > &trees2, std::vector< std::vector< double > > &v1, std::vector< std::vector< double > > &v2, std::vector< std::vector< double > > &trees2V1, std::vector< std::vector< double > > &trees2V2, int newVectorOffset, std::vector< double > &inputToOriginDistances, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &baryMatchings, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &baryMatchings2, std::vector< std::vector< double > > &inputToAxesDistances, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s, std::vector< std::vector< std::vector< double > > > &trees2Vs, std::vector< std::vector< std::vector< double > > > &trees2V2s, bool projectInitializedVectors, F initializedVectorsProjection) |
| template<class dataType> | |
| void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, double barycenterSizeLimitPercent, unsigned int barycenterMaximumNumberOfPairs, int barycenterInitIndex, bool oneIter, bool useDoubleInput=false, bool isFirstInput=true) |
| template<class dataType> | |
| void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, double barycenterSizeLimitPercent, unsigned int barycenterMaximumNumberOfPairs, bool useDoubleInput=false, bool isFirstInput=true) |
| template<class dataType> | |
| void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, double barycenterSizeLimitPercent, bool useDoubleInput=false, bool isFirstInput=true) |
| template<class dataType> | |
| void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, bool useDoubleInput=false, bool isFirstInput=true) |
| template<class dataType> | |
| void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings) |
| template<class dataType> | |
| void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree) |
| template<class dataType> | |
| void | preprocessingTrees (std::vector< ftm::MergeTree< dataType > > &trees, std::vector< std::vector< int > > &nodeCorr, bool useMinMaxPairT=true) |
| template<class dataType> | |
| void | preprocessingTrees (std::vector< ftm::MergeTree< dataType > > &trees, bool useMinMaxPairT=true) |
| template<class dataType> | |
| std::tuple< dataType, dataType > | getParametrizedBirthDeath (ftm::FTMTree_MT *tree, ftm::idNode node) |
| template<class dataType> | |
| void | computeBranchesCorrelationMatrix (const ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &trees, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &baryMatchings, std::vector< std::vector< double > > &allTs, std::vector< std::vector< double > > &branchesCorrelationMatrix, std::vector< std::vector< double > > &persCorrelationMatrix) |
Public Member Functions inherited from ttk::MergeTreeBase | |
| MergeTreeBase () | |
| void | setAssignmentSolver (int assignmentSolver) |
| void | setEpsilon1UseFarthestSaddle (bool b) |
| void | setEpsilonTree1 (double epsilon) |
| void | setEpsilonTree2 (double epsilon) |
| void | setEpsilon2Tree1 (double epsilon) |
| void | setEpsilon2Tree2 (double epsilon) |
| void | setEpsilon3Tree1 (double epsilon) |
| void | setEpsilon3Tree2 (double epsilon) |
| void | setPersistenceThreshold (double pt) |
| void | setParallelize (bool para) |
| void | setNodePerTask (int npt) |
| void | setBranchDecomposition (bool useBD) |
| void | setNormalizedWasserstein (bool normalizedWasserstein) |
| void | setKeepSubtree (bool keepSubtree) |
| void | setNonMatchingWeight (double weight) |
| void | setBarycenterMergeTree (bool imt) |
| void | setDistanceSquaredRoot (bool distanceSquaredRoot) |
| void | setUseMinMaxPair (bool useMinMaxPair) |
| void | setDeleteMultiPersPairs (bool deleteMultiPersPairsT) |
| void | setCleanTree (bool clean) |
| void | setIsPersistenceDiagram (bool isPD) |
| void | setJoinSplitMixtureCoefficient (const double mixtureCoefficient) |
| void | setUseDoubleInput (const bool useDoubleInput) |
| std::vector< std::vector< int > > | getTreesNodeCorr () |
| double | mixDistancesMinMaxPairWeight (bool isFirstInput) |
| double | mixDistancesWeight (bool isFirstInput) |
| template<class dataType> | |
| double | mixDistances (dataType distance1, dataType distance2) |
| template<class dataType> | |
| void | mixDistancesMatrix (std::vector< std::vector< dataType > > &distanceMatrix, std::vector< std::vector< dataType > > &distanceMatrix2) |
| template<class dataType> | |
| void | mergeSaddle (ftm::FTMTree_MT *tree, double epsilon, std::vector< std::vector< ftm::idNode > > &treeNodeMerged, bool mergeByPersistence=false) |
| template<class dataType> | |
| void | persistenceMerging (ftm::FTMTree_MT *tree, double epsilon2, double epsilon3=100) |
| void | deletePersistenceDiagramsPairs (ftm::FTMTree_MT *tree, std::vector< ftm::idNode > &nodes) |
| template<class dataType> | |
| void | keepMostImportantPairs (ftm::FTMTree_MT *tree, int n, bool useBD) |
| template<class dataType> | |
| void | persistenceThresholding (ftm::FTMTree_MT *tree, double persistenceThresholdT, std::vector< ftm::idNode > &deletedNodes) |
| template<class dataType> | |
| void | persistenceThresholding (ftm::FTMTree_MT *tree, std::vector< ftm::idNode > &deletedNodes) |
| template<class dataType> | |
| void | persistenceThresholding (ftm::FTMTree_MT *tree, double persistenceThresholdT) |
| template<class dataType> | |
| void | persistenceThresholding (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | verifyOrigins (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | preprocessTree (ftm::FTMTree_MT *tree, bool deleteInconsistentNodes=true) |
| template<class dataType> | |
| ftm::FTMTree_MT * | computeBranchDecomposition (ftm::FTMTree_MT *tree, std::vector< std::vector< ftm::idNode > > &treeNodeMerged) |
| template<class dataType> | |
| void | dontUseMinMaxPair (ftm::FTMTree_MT *tree) |
| void | verifyPairsTree (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | deleteMultiPersPairs (ftm::FTMTree_MT *tree, bool useBD) |
| template<class dataType> | |
| 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) |
| template<class dataType> | |
| void | preprocessingPipeline (ftm::MergeTree< dataType > &mTree, double epsilonTree, double epsilon2Tree, double epsilon3Tree, bool branchDecompositionT, bool useMinMaxPairT, bool cleanTreeT, std::vector< int > &nodeCorr, bool deleteInconsistentNodes=true) |
| void | reverseNodeCorr (ftm::FTMTree_MT *tree, std::vector< int > &nodeCorr) |
| template<class dataType> | |
| void | mtFlattening (ftm::MergeTree< dataType > &mt) |
| template<class dataType> | |
| void | mtsFlattening (std::vector< ftm::MergeTree< dataType > > &mts) |
| double | getSizeLimitMetric (std::vector< ftm::FTMTree_MT * > &trees) |
| template<class dataType> | |
| void | copyMinMaxPair (ftm::MergeTree< dataType > &mTree1, ftm::MergeTree< dataType > &mTree2, bool setOrigins=false) |
| template<class dataType> | |
| std::tuple< int, dataType > | fixMergedRootOrigin (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | branchDecompositionToTree (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | putBackMergedNodes (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | postprocessingPipeline (ftm::FTMTree_MT *tree) |
| template<class dataType> | |
| void | convertBranchDecompositionMatching (ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &outputMatching) |
| template<class dataType> | |
| void | convertBranchDecompositionMatching (ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode > > &outputMatching) |
| template<class dataType> | |
| void | identifyRealMatching (ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode > > &outputMatching, std::vector< std::tuple< ftm::idNode, ftm::idNode, bool > > &realMatching) |
| template<class dataType> | |
| dataType | computeDistance (dataType x1, dataType x2, dataType y1, dataType y2, double power=2) |
| template<class dataType> | |
| dataType | deleteCost (const ftm::FTMTree_MT *tree, ftm::idNode nodeId) |
| template<class dataType> | |
| dataType | insertCost (const ftm::FTMTree_MT *tree, ftm::idNode nodeId) |
| template<class dataType> | |
| dataType | relabelCostOnly (const ftm::FTMTree_MT *tree1, ftm::idNode nodeId1, const ftm::FTMTree_MT *tree2, ftm::idNode nodeId2) |
| template<class dataType> | |
| dataType | relabelCost (const ftm::FTMTree_MT *tree1, ftm::idNode nodeId1, const ftm::FTMTree_MT *tree2, ftm::idNode nodeId2) |
| void | getParamNames (std::vector< std::string > ¶mNames) |
| double | getParamValueFromName (std::string ¶mName) |
| void | setParamValueFromName (std::string ¶mName, double value) |
| void | getTreesStats (std::vector< ftm::FTMTree_MT * > &trees, std::array< double, 3 > &stats) |
| void | printTreesStats (std::vector< ftm::FTMTree_MT * > &trees) |
| template<class dataType> | |
| void | printTreesStats (std::vector< ftm::MergeTree< dataType > > &trees) |
| template<class dataType> | |
| void | printTableVector (std::vector< std::vector< dataType > > &table) |
| template<class dataType> | |
| void | printTable (dataType *table, int nRows, int nCols) |
| void | printMatching (std::vector< MatchingType > &matchings) |
| void | printMatching (std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matchings) |
| void | printMatching (std::vector< std::tuple< ftm::idNode, ftm::idNode > > &matchings) |
| template<class dataType> | |
| void | printPairs (std::vector< std::tuple< SimplexId, SimplexId, dataType > > &treePairs) |
| template<class dataType> | |
| void | printOutputMatching (std::vector< std::tuple< ftm::idNode, ftm::idNode > > &outputMatching, ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, bool computeCosts=true) |
Additional Inherited Members | |
Protected Member Functions inherited from ttk::Debug | |
| int | printMsgInternal (const std::string &msg, const std::string &right, const std::string &filler, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
| int | printMsgInternal (const std::string &msg, const debug::Priority &priority, const debug::LineMode &lineMode, std::ostream &stream=std::cout) const |
| int | welcomeMsg (std::ostream &stream) |
Protected Attributes inherited from ttk::Debug | |
| int | debugLevel_ |
| std::string | debugMsgPrefix_ |
| std::string | debugMsgNamePrefix_ |
Protected Attributes inherited from ttk::BaseClass | |
| bool | lastObject_ |
| int | threadNumber_ |
| Wrapper * | wrapper_ |
Protected Attributes inherited from ttk::MergeTreeNeuralBase | |
| double | dropout_ = 0.0 |
| bool | euclideanVectorsInit_ = false |
| bool | randomAxesInit_ = false |
| bool | initBarycenterRandom_ = false |
| bool | initBarycenterOneIter_ = false |
| bool | initOriginPrimeStructByCopy_ = true |
| bool | initOriginPrimeValuesByCopy_ = true |
| double | initOriginPrimeValuesByCopyRandomness_ = 0.0 |
| bool | activate_ = true |
| unsigned int | activationFunction_ = 1 |
| bool | useGpu_ = false |
| float | bigValuesThreshold_ = 0 |
Protected Attributes inherited from ttk::MergeTreeAxesAlgorithmBase | |
| bool | deterministic_ = true |
| unsigned int | numberOfAxes_ = 2 |
| unsigned int | k_ = 16 |
| double | barycenterSizeLimitPercent_ = 20.0 |
| bool | probabilisticVectorsInit_ = false |
| std::vector< std::vector< int > > | trees2NodeCorr_ |
Protected Attributes inherited from ttk::MergeTreeBase | |
| int | assignmentSolverID_ = 0 |
| bool | epsilon1UseFarthestSaddle_ = false |
| double | epsilonTree1_ = 0 |
| double | epsilonTree2_ = 0 |
| double | epsilon2Tree1_ = 100 |
| double | epsilon2Tree2_ = 100 |
| double | epsilon3Tree1_ = 100 |
| double | epsilon3Tree2_ = 100 |
| double | persistenceThreshold_ = 0 |
| bool | barycenterMergeTree_ = false |
| bool | useMinMaxPair_ = true |
| bool | deleteMultiPersPairs_ = false |
| bool | branchDecomposition_ = true |
| int | wassersteinPower_ = 2 |
| bool | normalizedWasserstein_ = true |
| bool | keepSubtree_ = false |
| double | nonMatchingWeight_ = 1.0 |
| bool | distanceSquaredRoot_ = true |
| bool | useFullMerge_ = false |
| bool | isPersistenceDiagram_ = false |
| bool | convertToDiagram_ = false |
| double | mixtureCoefficient_ = 0.5 |
| bool | useDoubleInput_ = false |
| bool | parallelize_ = true |
| int | nodePerTask_ = 32 |
| bool | cleanTree_ = true |
| std::vector< std::vector< int > > | treesNodeCorr_ |
Static Protected Attributes inherited from ttk::Debug | |
| static COMMON_EXPORTS debug::LineMode | lastLineMode = ttk::debug::LineMode::NEW |
The MergeTreeNeuralLayer class provides methods to define and use a wasserstein layer able to process merge trees or persistence diagrams.
This module defines the MergeTreeNeuralLayer class that provide methods to define and use a wasserstein layer able to process merge trees or persistence diagrams.
To initialize the layer you can use the following functions: "initInputBasisOrigin" and "initInputBasisVectors" for the input basis, then "initOutputBasis" for the output basis. Please refer to the documentation of these functions for how to use them.
Then, you should call the "requires_grad" function, with a parameter sets to true, to enable torch to compute gradient for this layer for it to be optimized.
The layer can then be used with the "forward" function to pass a topological representation as input and get the topological representation at the output of the layer (the transformed input).
Related publication:
"Wasserstein Auto-Encoders of Merge Trees (and Persistence Diagrams)"
Mathieu Pont, Julien Tierny.
IEEE Transactions on Visualization and Computer Graphics, 2023
Definition at line 47 of file MergeTreeNeuralLayer.h.
| ttk::MergeTreeNeuralLayer::MergeTreeNeuralLayer | ( | ) |
Definition at line 8 of file MergeTreeNeuralLayer.cpp.