TTK
|
#include <MergeTree.h>
Public Member Functions | |
MergeTree (std::shared_ptr< Params > params, std::shared_ptr< Scalars > scalars, TreeType type, idPartition part=nullPartition) | |
~MergeTree () override | |
template<typename triangulationType > | |
void | initNbScalars (const triangulationType &tri) |
void | initTreeType () |
init the type of the current tree from params | |
template<typename scalarType > | |
void | sortInput () |
if sortedVertices_ is null, define and fill it Also fill the mirror std::vector | |
void | flush () |
clear local data for new computation | |
int | setDebugLevel (const int &local_debugLevel) override |
void | setTreeType (const int &local_treeType) |
void | setSimplificationMethod (const int &local_simplifyMethod) |
void | setSimplificationThreshold (const double &local_simplificationThreshold) |
void | setScalars (void *local_scalars) |
void | preconditionTriangulation (AbstractTriangulation *const m, const bool preproc=true) |
idPartition | getPartition () const |
template<typename scalarType > | |
const scalarType & | getValue (const SimplexId &nodeId) const |
template<typename scalarType > | |
void | setVertexScalars (scalarType *vals) |
void | setVertexSoSoffsets (const SimplexId *const offsets) |
idSuperArc | getNumberOfSuperArcs () const |
idSuperArc | getNumberOfVisibleArcs () const |
const std::vector< SuperArc > & | getSuperArc () const |
SuperArc * | getSuperArc (const idSuperArc &i) |
SimplexId | getNumberOfVisibleRegularNode (const idSuperArc &sa) |
void | addCrossingAbove (const idSuperArc &sa) |
idNode | getNumberOfNodes () const |
const std::vector< Node > & | getNodes () const |
Node * | getNode (const idNode &nodeId) |
SimplexId | getNumberOfLeaves () const |
const std::vector< idNode > & | getLeaves () const |
const idNode & | getLeave (const idNode &id) const |
const std::vector< idNode > & | getRoots () const |
void | setVert2Tree (decltype(treeData_.vert2tree) const &vect2tree) |
bool | isCorrespondingArc (const SimplexId &val) const |
bool | isCorrespondingNode (const SimplexId &val) const |
bool | isCorrespondingNull (const SimplexId &val) const |
idNode | getCorrespondingNodeId (const SimplexId &val) const |
idSuperArc | getCorrespondingSuperArcId (const SimplexId &val) const |
SuperArc * | vertex2SuperArc (const SimplexId &vert) |
Node * | vertex2Node (const SimplexId &vert) |
void | updateCorrespondingArc (const SimplexId &arc, const idSuperArc &val) |
void | updateCorrespondingNode (const SimplexId &vert, const idNode &val) |
idCorresp | idNode2corr (const idNode &id) const |
idNode | corr2idNode (const idCorresp &corr) const |
template<typename triangulationType > | |
void | processVertex (const SimplexId &vertex, std::vector< ExtendedUnionFind * > &vect_baseUF, const bool overlapB, const bool overlapA, const triangulationType &mesh, DebugTimer &begin) |
template<typename triangulationType > | |
int | build (std::vector< ExtendedUnionFind * > &vect_baseUF, const std::vector< SimplexId > &overlapBefore, const std::vector< SimplexId > &overlapAfter, SimplexId start, SimplexId end, const SimplexId &posSeed0, const SimplexId &posSeed1, const triangulationType &mesh) |
Compute the merge tree using Carr's algorithm. | |
template<typename scalarType > | |
SimplexId | localSimplify (const SimplexId &podSeed0, const SimplexId &podSeed1, std::list< std::vector< std::pair< SimplexId, bool > > > &storage) |
template<typename scalarType , typename triangulationType > | |
SimplexId | globalSimplify (const SimplexId posSeed0, const SimplexId posSeed1, std::list< std::vector< std::pair< SimplexId, bool > > > &storage, const triangulationType &mesh) |
template<typename scalarType > | |
SimplexId | simplifyTree (const SimplexId &posSeed0, const SimplexId &posSeed1, std::list< std::vector< std::pair< SimplexId, bool > > > &storage, const std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > &sortedPairs) |
void | markThisArc (std::vector< ExtendedUnionFind * > &ufArray, const idNode &curNodeId, const idSuperArc &mergingArcId, const idNode &parentNodeId) |
template<typename scalarType , typename triangulationType > | |
int | computePersistencePairs (std::vector< std::tuple< SimplexId, SimplexId, scalarType > > &pairs, const triangulationType &mesh) |
template<typename scalarType , typename triangulationType > | |
int | computePersistencePairs (std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > &pairs, const triangulationType &mesh) |
template<typename scalarType , typename triangulationType > | |
void | recoverMTPairs (const std::vector< idNode > &sortedNodes, std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > &pairsJT, std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > &pairsST, const triangulationType &mesh) |
idSuperArc | openSuperArc (const idNode &downNodeId, const bool overlapB, const bool overlapA) |
idSuperArc | makeSuperArc (const idNode &downNodeId, const idNode &upNodeId, const bool overlapB, const bool overlapA, std::pair< SimplexId, bool > *vertexList=nullptr, SimplexId vertexSize=-1) |
void | closeSuperArc (const idSuperArc &superArcId, const idNode &upNodeId, const bool overlapB, const bool overlapA) |
void | hideArc (const idSuperArc &sa) |
void | mergeArc (const idSuperArc &sa, const idSuperArc &recept, const bool changeConnectivity=true) |
SimplexId | insertNodeAboveSeed (const idSuperArc &arc, const std::pair< SimplexId, bool > &seed) |
SimplexId | getVertBelowSeed (const idSuperArc &arc, const std::pair< SimplexId, bool > &seed, const std::vector< idCorresp > &vert2treeOther) |
bool | alreadyExtLinked (const idNode &node, const idPartition &tree, const idNode &treeNode) |
idSuperArc | getNumberOfExternalDownArcs (const idNode &node) |
void | removeHiddenDownArcs (const idNode &n) |
void | removeInternalDownArcs (const idNode &node) |
idSuperArc | getNumberOfVisibleArcs (const idNode &n) |
idSuperArc | getNumberOfUnmergedDownArcs (const idNode &n) |
idNode | makeNode (const SimplexId &vertexId, const SimplexId &linked=nullVertex) |
idNode | makeNode (const Node *const n, const SimplexId &linked=nullVertex) |
idSuperArc | insertNode (Node *node, const bool segment) |
idSuperArc | reverseInsertNode (Node *node, const bool segment) |
Node * | getDownNode (const SuperArc *a) |
Node * | getUpNode (const SuperArc *a) |
idNode | getParent (const idNode &n) |
void | delNode (const idNode &node, std::list< std::vector< std::pair< SimplexId, bool > > > &storage, const std::pair< SimplexId, bool > *mv=nullptr, const SimplexId &nbm=0) |
void | hideNode (const idNode &node) |
std::vector< idNode > | getNodeNeighbors (const idNode &node) |
std::vector< idNode > | getNodeUpNeighbors (const idNode &n) |
std::vector< idNode > | getNodeDownNeighbors (const idNode &n) |
void | hideAndClearArcsAbove (const idNode &baseNode) |
void | hideAndClearArcsBelow (const idNode &baseNode, const SimplexId &seed) |
idSuperArc | hideAndClearLeadingTo (const idNode &baseNode, const SimplexId &v) |
void | updateSegmentation () |
void | parallelUpdateSegmentation (const bool ct=false) |
void | parallelInitNodeValence (const int nbThreadValence) |
void | printTree2 () |
std::string | printArc (const idSuperArc &a) |
std::string | printNode (const idNode &n) |
std::shared_ptr< MergeTree > | clone () const |
void | clone (const MergeTree *mt) |
void | doSwap (MergeTree *mt) |
Public Member Functions inherited from ttk::Debug | |
Debug () | |
~Debug () override | |
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) |
Protected Member Functions | |
bool | isLower (const SimplexId &a, const SimplexId &b) const |
bool | isHigher (const SimplexId &a, const SimplexId &b) const |
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 | |
std::shared_ptr< Params > | params_ |
std::shared_ptr< Scalars > | scalars_ |
TreeData | treeData_ |
std::list< ExtendedUnionFind > | storageEUF_ |
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_ |
Friends | |
class | ContourForests |
class | ContourForestsTree |
Additional Inherited Members | |
Static Protected Attributes inherited from ttk::Debug | |
static COMMON_EXPORTS debug::LineMode | lastLineMode = ttk::debug::LineMode::NEW |
Definition at line 37 of file MergeTree.h.
MergeTree::MergeTree | ( | std::shared_ptr< Params > | params, |
std::shared_ptr< Scalars > | scalars, | ||
TreeType | type, | ||
idPartition | part = nullPartition |
||
) |
Definition at line 16 of file MergeTree.cpp.
|
overridedefault |
|
inline |
Definition at line 225 of file MergeTree.h.
bool MergeTree::alreadyExtLinked | ( | const idNode & | node, |
const idPartition & | tree, | ||
const idNode & | treeNode | ||
) |
Definition at line 467 of file MergeTree.cpp.
int ttk::cf::MergeTree::build | ( | std::vector< ExtendedUnionFind * > & | vect_baseUF, |
const std::vector< SimplexId > & | overlapBefore, | ||
const std::vector< SimplexId > & | overlapAfter, | ||
SimplexId | start, | ||
SimplexId | end, | ||
const SimplexId & | posSeed0, | ||
const SimplexId & | posSeed1, | ||
const triangulationType & | mesh | ||
) |
Compute the merge tree using Carr's algorithm.
Definition at line 826 of file MergeTreeTemplate.h.
std::shared_ptr< MergeTree > MergeTree::clone | ( | ) | const |
Definition at line 1006 of file MergeTree.cpp.
void MergeTree::clone | ( | const MergeTree * | mt | ) |
Definition at line 1021 of file MergeTree.cpp.
void MergeTree::closeSuperArc | ( | const idSuperArc & | superArcId, |
const idNode & | upNodeId, | ||
const bool | overlapB, | ||
const bool | overlapA | ||
) |
Definition at line 261 of file MergeTree.cpp.
int ttk::cf::MergeTree::computePersistencePairs | ( | std::vector< std::tuple< SimplexId, SimplexId, scalarType > > & | pairs, |
const triangulationType & | mesh | ||
) |
Definition at line 486 of file MergeTreeTemplate.h.
int ttk::cf::MergeTree::computePersistencePairs | ( | std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > & | pairs, |
const triangulationType & | mesh | ||
) |
Definition at line 517 of file MergeTreeTemplate.h.
Definition at line 363 of file MergeTree.h.
void MergeTree::delNode | ( | const idNode & | node, |
std::list< std::vector< std::pair< SimplexId, bool > > > & | storage, | ||
const std::pair< SimplexId, bool > * | mv = nullptr , |
||
const SimplexId & | nbm = 0 |
||
) |
Definition at line 540 of file MergeTree.cpp.
void MergeTree::doSwap | ( | MergeTree * | mt | ) |
Definition at line 1032 of file MergeTree.cpp.
|
inline |
clear local data for new computation
Definition at line 87 of file MergeTree.h.
Definition at line 310 of file MergeTree.h.
|
inline |
Definition at line 321 of file MergeTree.h.
Definition at line 814 of file MergeTree.cpp.
Definition at line 261 of file MergeTree.h.
|
inline |
Definition at line 256 of file MergeTree.h.
Definition at line 244 of file MergeTree.h.
Definition at line 869 of file MergeTree.cpp.
Definition at line 827 of file MergeTree.cpp.
|
inline |
Definition at line 239 of file MergeTree.h.
Definition at line 853 of file MergeTree.cpp.
idSuperArc MergeTree::getNumberOfExternalDownArcs | ( | const idNode & | node | ) |
Definition at line 452 of file MergeTree.cpp.
|
inline |
Definition at line 252 of file MergeTree.h.
|
inline |
Definition at line 235 of file MergeTree.h.
|
inline |
Definition at line 183 of file MergeTree.h.
idSuperArc MergeTree::getNumberOfUnmergedDownArcs | ( | const idNode & | n | ) |
Definition at line 436 of file MergeTree.cpp.
|
inline |
Definition at line 187 of file MergeTree.h.
idSuperArc MergeTree::getNumberOfVisibleArcs | ( | const idNode & | n | ) |
Definition at line 413 of file MergeTree.cpp.
|
inline |
Definition at line 212 of file MergeTree.h.
Definition at line 822 of file MergeTree.cpp.
|
inline |
Definition at line 145 of file MergeTree.h.
|
inline |
Definition at line 271 of file MergeTree.h.
|
inline |
Definition at line 197 of file MergeTree.h.
|
inline |
Definition at line 202 of file MergeTree.h.
Definition at line 818 of file MergeTree.cpp.
|
inline |
Definition at line 154 of file MergeTree.h.
SimplexId MergeTree::getVertBelowSeed | ( | const idSuperArc & | arc, |
const std::pair< SimplexId, bool > & | seed, | ||
const std::vector< idCorresp > & | vert2treeOther | ||
) |
Definition at line 344 of file MergeTree.cpp.
SimplexId ttk::cf::MergeTree::globalSimplify | ( | const SimplexId | posSeed0, |
const SimplexId | posSeed1, | ||
std::list< std::vector< std::pair< SimplexId, bool > > > & | storage, | ||
const triangulationType & | mesh | ||
) |
Definition at line 100 of file MergeTreeTemplate.h.
void MergeTree::hideAndClearArcsAbove | ( | const idNode & | baseNode | ) |
Definition at line 887 of file MergeTree.cpp.
Definition at line 903 of file MergeTree.cpp.
idSuperArc MergeTree::hideAndClearLeadingTo | ( | const idNode & | baseNode, |
const SimplexId & | v | ||
) |
Definition at line 925 of file MergeTree.cpp.
void MergeTree::hideArc | ( | const idSuperArc & | sa | ) |
Definition at line 487 of file MergeTree.cpp.
void MergeTree::hideNode | ( | const idNode & | node | ) |
Definition at line 510 of file MergeTree.cpp.
Definition at line 358 of file MergeTree.h.
|
inline |
Definition at line 72 of file MergeTree.h.
|
inline |
init the type of the current tree from params
Definition at line 77 of file MergeTree.h.
idSuperArc MergeTree::insertNode | ( | Node * | node, |
const bool | segment | ||
) |
Definition at line 666 of file MergeTree.cpp.
SimplexId MergeTree::insertNodeAboveSeed | ( | const idSuperArc & | arc, |
const std::pair< SimplexId, bool > & | seed | ||
) |
Definition at line 300 of file MergeTree.cpp.
|
inline |
Definition at line 294 of file MergeTree.h.
|
inline |
Definition at line 298 of file MergeTree.h.
|
inline |
Definition at line 302 of file MergeTree.h.
|
inlineprotected |
Definition at line 649 of file MergeTree.h.
Definition at line 645 of file MergeTree.h.
SimplexId ttk::cf::MergeTree::localSimplify | ( | const SimplexId & | podSeed0, |
const SimplexId & | podSeed1, | ||
std::list< std::vector< std::pair< SimplexId, bool > > > & | storage | ||
) |
Definition at line 53 of file MergeTreeTemplate.h.
Definition at line 536 of file MergeTree.cpp.
Definition at line 516 of file MergeTree.cpp.
idSuperArc MergeTree::makeSuperArc | ( | const idNode & | downNodeId, |
const idNode & | upNodeId, | ||
const bool | overlapB, | ||
const bool | overlapA, | ||
std::pair< SimplexId, bool > * | vertexList = nullptr , |
||
SimplexId | vertexSize = -1 |
||
) |
Definition at line 232 of file MergeTree.cpp.
void MergeTree::markThisArc | ( | std::vector< ExtendedUnionFind * > & | ufArray, |
const idNode & | curNodeId, | ||
const idSuperArc & | mergingArcId, | ||
const idNode & | parentNodeId | ||
) |
Definition at line 1066 of file MergeTree.cpp.
void MergeTree::mergeArc | ( | const idSuperArc & | sa, |
const idSuperArc & | recept, | ||
const bool | changeConnectivity = true |
||
) |
Definition at line 495 of file MergeTree.cpp.
idSuperArc MergeTree::openSuperArc | ( | const idNode & | downNodeId, |
const bool | overlapB, | ||
const bool | overlapA | ||
) |
Definition at line 213 of file MergeTree.cpp.
void MergeTree::parallelInitNodeValence | ( | const int | nbThreadValence | ) |
Definition at line 175 of file MergeTree.cpp.
void MergeTree::parallelUpdateSegmentation | ( | const bool | ct = false | ) |
Definition at line 106 of file MergeTree.cpp.
|
inline |
Definition at line 133 of file MergeTree.h.
|
inline |
Definition at line 580 of file MergeTree.h.
|
inline |
Definition at line 598 of file MergeTree.h.
void MergeTree::printTree2 | ( | ) |
Definition at line 969 of file MergeTree.cpp.
void ttk::cf::MergeTree::processVertex | ( | const SimplexId & | vertex, |
std::vector< ExtendedUnionFind * > & | vect_baseUF, | ||
const bool | overlapB, | ||
const bool | overlapA, | ||
const triangulationType & | mesh, | ||
DebugTimer & | begin | ||
) |
Definition at line 1004 of file MergeTreeTemplate.h.
void ttk::cf::MergeTree::recoverMTPairs | ( | const std::vector< idNode > & | sortedNodes, |
std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > & | pairsJT, | ||
std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > & | pairsST, | ||
const triangulationType & | mesh | ||
) |
Definition at line 556 of file MergeTreeTemplate.h.
void MergeTree::removeHiddenDownArcs | ( | const idNode & | n | ) |
Definition at line 385 of file MergeTree.cpp.
void MergeTree::removeInternalDownArcs | ( | const idNode & | node | ) |
Definition at line 399 of file MergeTree.cpp.
idSuperArc MergeTree::reverseInsertNode | ( | Node * | node, |
const bool | segment | ||
) |
Definition at line 743 of file MergeTree.cpp.
|
inlineoverridevirtual |
Set the debug level of a particular object. The global variable globalDebugLevel_ will over-ride this setting if it has a lower value.
Reimplemented from ttk::Debug.
Definition at line 109 of file MergeTree.h.
|
inline |
Definition at line 129 of file MergeTree.h.
|
inline |
Definition at line 119 of file MergeTree.h.
|
inline |
Definition at line 124 of file MergeTree.h.
|
inline |
Definition at line 115 of file MergeTree.h.
|
inline |
Definition at line 280 of file MergeTree.h.
|
inline |
Definition at line 159 of file MergeTree.h.
|
inline |
offsets
buffer prior to any computation (the VTK wrapper already includes a mechanism to automatically generate such a preconditioned buffer). Definition at line 175 of file MergeTree.h.
SimplexId ttk::cf::MergeTree::simplifyTree | ( | const SimplexId & | posSeed0, |
const SimplexId & | posSeed1, | ||
std::list< std::vector< std::pair< SimplexId, bool > > > & | storage, | ||
const std::vector< std::tuple< SimplexId, SimplexId, scalarType, bool > > & | sortedPairs | ||
) |
Definition at line 185 of file MergeTreeTemplate.h.
void ttk::cf::MergeTree::sortInput | ( | ) |
if sortedVertices_ is null, define and fill it Also fill the mirror std::vector
Definition at line 31 of file MergeTreeTemplate.h.
|
inline |
Definition at line 348 of file MergeTree.h.
|
inline |
Definition at line 353 of file MergeTree.h.
void MergeTree::updateSegmentation | ( | ) |
Definition at line 44 of file MergeTree.cpp.
Definition at line 340 of file MergeTree.h.
Definition at line 336 of file MergeTree.h.
|
friend |
Definition at line 38 of file MergeTree.h.
|
friend |
Definition at line 39 of file MergeTree.h.
|
protected |
Definition at line 43 of file MergeTree.h.
|
protected |
Definition at line 44 of file MergeTree.h.
|
protected |
Definition at line 50 of file MergeTree.h.
|
protected |
Definition at line 47 of file MergeTree.h.