TTK VTK-filter that efficiently computes the contour tree of scalar data and more (data segmentation, topological simplification, persistence diagrams, persistence curves, etc.).
More...
|
virtual const char * | GetClassName () |
|
virtual int | IsA (const char *type) |
|
virtual bool | GetForceInputOffsetScalarField () |
|
void | SetForceInputOffsetScalarField (bool onOff) |
|
void | SetTreeType (int tree) |
|
void | ShowMin (bool state) |
|
void | ShowMax (bool state) |
|
void | ShowSaddle1 (bool state) |
|
void | ShowSaddle2 (bool state) |
|
void | ShowArc (bool state) |
|
void | SetArcResolution (int arcResolution) |
|
void | SetPartitionNumber (int partitionNum) |
|
void | SetLessPartition (bool l) |
|
void | SetSkeletonSmoothing (double skeletonSmooth) |
|
void | SetSimplificationType (int type) |
|
void | SetSimplificationThreshold (double simplificationThreshold) |
|
void | UpdateThreadNumber () |
|
void | SetThreadNumber (int threadNumber) |
|
void | SetUseAllCores (bool useAllCores) |
|
void | SetDebugLevel (int debugLevel) |
|
void | SetCompactTriangulationCacheSize (float cacheSize) |
|
vtkDataArray * | GetOptionalArray (const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, const int &inputPort=0) |
|
vtkDataArray * | GetOrderArray (vtkDataSet *const inputData, const int scalarArrayIdx, ttk::Triangulation *triangulation, const bool getGlobalOrder=false, const int orderArrayIdx=0, const bool enforceOrderArrayIdx=false) |
|
vtkDataArray * | checkForGlobalAndComputeOrderArray (vtkDataSet *const inputData, vtkDataArray *scalarArray, const int scalarArrayIdx, const bool getGlobalOrder, vtkDataArray *orderArray, ttk::Triangulation *triangulation, const bool enforceOrderArrayIdx) |
|
vtkDataArray * | ComputeOrderArray (vtkDataSet *const inputData, vtkDataArray *scalarArray, const int scalarArrayIdx, const bool getGlobalOrder, vtkDataArray *oldOrderArray, ttk::Triangulation *triangulation) |
|
ttk::SimplexId * | GetIdentifierArrayPtr (const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, std::vector< ttk::SimplexId > &spareStorage, const int inputPort=0, const bool printErr=true) |
|
ttk::Triangulation * | GetTriangulation (vtkDataSet *dataSet) |
|
int | ProcessRequest (vtkInformation *request, vtkInformationVector **inputVectors, vtkInformationVector *outputVector) override |
|
vtkDataSet * | GetOutput () |
|
vtkDataSet * | GetOutput (int) |
|
void | SetInputData (vtkDataSet *) |
|
void | SetInputData (int, vtkDataSet *) |
|
void | AddInputData (vtkDataSet *) |
|
void | AddInputData (int, vtkDataSet *) |
|
template<typename inputType > |
int | checkEmptyMPIInput (inputType *input) |
| This method tests whether the input is a nullptr. If the computation is being done on multiple processes, it is possible that the domain of one process or more is empty, but not others, therefore in that particular case the rest of the filter will not be computed but an error message will not be sent.
|
|
| 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) |
|
| BaseClass () |
|
virtual | ~BaseClass ()=default |
|
int | getThreadNumber () const |
|
|
| ttkContourForests () |
|
int | FillInputPortInformation (int port, vtkInformation *info) override |
|
int | FillOutputPortInformation (int port, vtkInformation *info) override |
|
int | RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
|
void | Modified () override |
|
bool | isCoincident (float p1[], double p2[]) |
|
bool | isCoincident (double p1[], double p2[]) |
|
void | getTree () |
|
void | updateTree () |
|
ttk::CriticalType | getNodeType (ttk::SimplexId id) |
|
ttk::CriticalType | getNodeType (ttk::SimplexId id, ttk::cf::TreeType type, ttk::cf::MergeTree *tree) |
|
void | getCriticalPoints () |
|
void | clearTree () |
|
void | getSkeleton () |
|
void | clearSkeleton () |
|
void | getSkeletonNodes () |
|
void | getSkeletonArcs () |
|
int | getSkeletonScalars (const std::vector< double > &scalars, std::vector< std::vector< double > > &skeletonScalars) const |
|
void | getSegmentation (vtkDataSet *input) |
|
void | clearSegmentation () |
|
int | sample (unsigned int samplingLevel) |
|
int | computeBarycenters () |
|
void | computeSkeleton (unsigned int arcRes) |
|
void | smoothSkeleton (unsigned int skeletonSmoothing) |
|
void | smooth (const ttk::SimplexId idArc, bool order) |
|
| ttkAlgorithm () |
|
| ~ttkAlgorithm () override |
|
void | MPIGhostPipelinePreconditioning (vtkDataSet *input) |
|
void | MPIPipelinePreconditioning (vtkDataSet *input, std::vector< int > &neighbors, std::map< int, int > &neighToId, ttk::Triangulation *triangulation=nullptr) |
|
bool | checkGlobalIdValidity (ttk::LongSimplexId *globalIds, ttk::SimplexId simplexNumber, unsigned char *ghost, int *rankArray) |
|
int | GenerateGlobalIds (vtkDataSet *input, std::unordered_map< ttk::SimplexId, ttk::SimplexId > &vertGtoL, std::vector< int > &neighborRanks, std::map< int, int > &neighborsToId) |
|
void | MPITriangulationPreconditioning (ttk::Triangulation *triangulation, vtkDataSet *input) |
|
virtual int | RequestDataObject (vtkInformation *request, vtkInformationVector **inputVectors, vtkInformationVector *outputVector) |
|
virtual int | RequestInformation (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestUpdateTime (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestUpdateTimeDependentInformation (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestUpdateExtent (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestDataNotGenerated (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
virtual int | RequestData (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector)) |
|
int | FillInputPortInformation (int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override |
|
int | FillOutputPortInformation (int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override |
|
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) |
|
| ContourForests () |
|
| ~ContourForests () override |
|
int | setThreadNumber (const int nbThread) override |
|
void | setPartitionNum (int p) |
|
void | setLessPartition (bool l) |
|
std::tuple< SimplexId, SimplexId > | getJTRange (const idPartition &i) const |
|
std::tuple< SimplexId, SimplexId > | getSTRange (const idPartition &i) const |
|
std::tuple< SimplexId, SimplexId > | getSeedsPos (const idPartition &i) const |
|
std::tuple< std::vector< SimplexId >, std::vector< SimplexId > > | getOverlaps (const idPartition &i) |
|
idPartition | vertex2partition (const SimplexId &v) |
|
void | initInterfaces () |
|
template<typename triangulationType > |
void | initOverlap (const triangulationType &mesh) |
|
void | initNbPartitions () |
|
template<typename scalarType , typename triangulationType > |
int | build (const triangulationType &mesh) |
|
template<typename scalarType , typename triangulationType > |
int | parallelBuild (std::vector< std::vector< ExtendedUnionFind * > > &baseUF_JT, std::vector< std::vector< ExtendedUnionFind * > > &baseUF_ST, const triangulationType &mesh) |
|
void | stitch () |
|
void | stitchTree (const char tree) |
|
void | unify () |
|
void | unifyTree (const char treetype) |
|
void | printDebug (DebugTimer &timer, const std::string &str) |
|
void | printVectCT () |
|
| ContourForestsTree (const std::shared_ptr< Params > ¶ms, const std::shared_ptr< Scalars > &scalars, idPartition part=nullPartition) |
|
| ~ContourForestsTree () override |
|
void | flush () |
|
MergeTree * | getJoinTree () |
|
MergeTree * | getSplitTree () |
|
MergeTree * | getTree (const TreeType &tt) |
|
int | combine (const SimplexId &seed0, const SimplexId &seed1, std::list< std::vector< std::pair< SimplexId, bool > > > &storage) |
| Combine tree with Natarajan's algorithm.
|
|
bool | isLower (const SimplexId &a, const SimplexId &b) const |
|
bool | isHigher (const SimplexId &a, const SimplexId &b) const |
|
| 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) |
|
TTK VTK-filter that efficiently computes the contour tree of scalar data and more (data segmentation, topological simplification, persistence diagrams, persistence curves, etc.).
- Author
- Guillaume Favelier guill.nosp@m.aume.nosp@m..fave.nosp@m.lier.nosp@m.@lip6.nosp@m..fr.
-
Julien Tierny julie.nosp@m.n.ti.nosp@m.erny@.nosp@m.lip6.nosp@m..fr
- Date
- February 2016
This filter takes a scalar field attached as point data to a geometry (either 2D or 3D, either regular grids or triangulations) and computes its contour tree. Several outputs are produced to encode the nodes of the tree (as points in 3D space), the arcs of the tree and the data segmentation.
- Parameters
-
Input | Input scalar field, either 2D or 3D, either regular grid or triangulation (vtkDataSet) |
Output0 | Output nodes (vtkPolyData) |
Output1 | Output arcs (vtkPolyData) |
Output2 | Output data segmentation (vtkUnstructuredGrid) |
Output3 | Output persistence diagram (vtkUnstructuredGrid) |
Output4 | Output persistence curve (vtkUnstructuredGrid) |
This filter can be used as any other VTK filter (for instance, by using the sequence of calls SetInputData(), Update(), GetOutput()).
See the related ParaView example state files for usage examples within a VTK pipeline.
Related publication
"Contour Forests: Fast Multi-threaded Augmented Contour Trees"
Charles Gueunet, Pierre Fortin, Julien Jomier, Julien Tierny
Proc. of IEEE LDAV 2016.
- See also
- ttk::cf::ContourForests
Definition at line 58 of file ttkContourForests.h.