TTK
|
TTK filter for the computation of merge trees. More...
#include <ttkMergeTree.h>
Public Types | |
enum class | BACKEND { FTM = 0 , EXTREEM = 1 } |
typedef ttkAlgorithm | Superclass |
![]() | |
typedef vtkAlgorithm | Superclass |
Public Member Functions | |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
virtual bool | GetForceInputOffsetScalarField () |
the offset array to use for simulation of simplicity | |
virtual void | SetForceInputOffsetScalarField (bool) |
virtual int | GetBackend () |
the backend to use for computations. | |
virtual void | SetBackend (int) |
void | SetTreeType (const int type) |
the type of tree to compute (Join, Split, Contour, JoinSplit) | |
void | SetWithSegmentation (const bool segm) |
control if the output should contains the segmentation information | |
bool | GetWithSegmentation () const |
void | SetWithNormalize (const bool norm) |
if true, a post process pass will ensure NodesId have a deterministic order | |
bool | GetWithNormalize () const |
void | SetWithAdvStats (const bool adv) |
Compute additional information on the segmentation like the span and size (in nb of vertex) of each region. | |
bool | GetWithAdvStats () const |
void | SetSuperArcSamplingLevel (int lvl) |
control the sampling level of the superarc. By default: 0 | |
int | GetSuperArcSamplingLevel () const |
![]() | |
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 | |
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) |
![]() | |
BaseClass () | |
virtual | ~BaseClass ()=default |
int | getThreadNumber () const |
virtual int | setThreadNumber (const int threadNumber) |
![]() | |
ttkMergeTreeBase () | |
~ttkMergeTreeBase () override=default | |
int | getSkeletonNodes (vtkUnstructuredGrid *outputSkeletonNodes) |
int | addDirectSkeletonArc (const ttk::ftm::idSuperArc arcId, const int cc, vtkPoints *points, vtkUnstructuredGrid *skeletonArcs, ttk::ftm::ArcData &arcData) |
int | addSampledSkeletonArc (const ttk::ftm::idSuperArc arcId, const int cc, vtkPoints *points, vtkUnstructuredGrid *skeletonArcs, ttk::ftm::ArcData &arcData) |
int | addCompleteSkeletonArc (const ttk::ftm::idSuperArc arcId, const int cc, vtkPoints *points, vtkUnstructuredGrid *skeletonArcs, ttk::ftm::ArcData &arcData) |
int | getSkeletonArcs (vtkUnstructuredGrid *outputSkeletonArcs) |
int | getSegmentation (vtkDataSet *outputSegmentation) |
ttk::ftm::TreeType | GetTreeType () const |
void | identify (vtkDataSet *ds) const |
Static Public Member Functions | |
static ttkMergeTree * | New () |
static int | IsTypeOf (const char *type) |
static ttkMergeTree * | SafeDownCast (vtkObject *o) |
![]() | |
static ttkAlgorithm * | New () |
static int | IsTypeOf (const char *type) |
static ttkAlgorithm * | SafeDownCast (vtkObject *o) |
static std::string | GetOrderArrayName (vtkDataArray *const array) |
static vtkInformationIntegerKey * | SAME_DATA_TYPE_AS_INPUT_PORT () |
Protected Member Functions | |
ttkMergeTree () | |
int | getOffsets () |
int | getScalars () |
int | preconditionTriangulation () |
int | FillInputPortInformation (int port, vtkInformation *info) override |
int | FillOutputPortInformation (int port, vtkInformation *info) override |
int | RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
![]() | |
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) |
![]() | |
template<class triangulationType > | |
int | getMergeTree (vtkUnstructuredGrid *outputSkeletonArcs, std::vector< ttk::ExTreeM::Branch > &mergeTree, vtkDataArray *inputScalars, const triangulationType *triangulation) |
template<class triangulationType > | |
int | getMergeTreePoints (vtkUnstructuredGrid *outputSkeletonNodes, std::map< ttk::SimplexId, int > cpMap, std::vector< std::pair< ttk::SimplexId, ttk::SimplexId > > &persistencePairs, vtkDataArray *inputScalars, const triangulationType *triangulation) |
Additional Inherited Members | |
![]() | |
float | CompactTriangulationCacheSize {0.2f} |
![]() | |
int | debugLevel_ |
std::string | debugMsgPrefix_ |
std::string | debugMsgNamePrefix_ |
![]() | |
bool | lastObject_ |
int | threadNumber_ |
Wrapper * | wrapper_ |
![]() | |
bool | ForceInputOffsetScalarField = false |
ttk::ftm::Params | params_ |
int | nbCC_ |
std::vector< vtkSmartPointer< vtkDataSet > > | connected_components_ |
std::vector< ttk::Triangulation * > | triangulation_ |
std::vector< ttk::ftm::LocalFTM > | ftmTree_ |
std::vector< vtkDataArray * > | inputScalars_ |
std::vector< std::vector< ttk::SimplexId > > | offsets_ |
![]() | |
static COMMON_EXPORTS debug::LineMode | lastLineMode = ttk::debug::LineMode::NEW |
TTK filter for the computation of merge trees.
VTK-level features for merge tree representation.
The computation of the merge tree done by this package is done in parallel if TTK_ENABLE_OPENMP is set to ON, using a task based approach described in the article mention below. The VTK wrapper will first call a connectivity filter, and then call a merge tree computation for each connected components. The final tree is then aggregated.
Input | Input scalar field, either 2D or 3D, regular grid or triangulation (vtkDataSet) |
TreeType | the Type of three to Compute:
|
Segmentation | control wethear or not the output should be augmented with the segmentation. |
SuperArcSamplingLevel | control the number of subdivision of each superarc. Intermediate point will be located on the barycenter of the corresponding portion of vertex. |
Output | the output of this filter is composed of:
|
This filter can be used as any other VTK filter (for instance, by using the sequence of calls SetInputData(), Update(), GetOutput()).
Related publication
"Task-based Augmented Merge Trees with Fibonacci Heaps"
Charles Gueunet, Pierre Fortin, Julien Jomier, Julien Tierny
2017 IEEE 7th Symposium on Large Data Analysis and Visualization (LDAV), doi: 10.1109/LDAV.2017.8231846.
"Task-based augmented contour trees with fibonacci heaps"
Charles Gueunet, Pierre Fortin, Julien Jomier, Julien Tierny
IEEE Transactions on Parallel and Distributed Systems, Volume 30, Issue 8, Pages 1889-1905
Online examples:
The computation of the merge tree done by this package is done in parallel if TTK_ENABLE_OPENMP is set to ON, using a task based approach described in the article mention below. The VTK wrapper will first call a connectivity filter, and then call a merge tree computation for each connected components. The final tree is then aggregated.
Input | Input scalar field, either 2D or 3D, regular grid or triangulation (vtkDataSet) |
TreeType | the Type of three to Compute:
|
Segmentation | control wethear or not the output should be augmented with the segmentation. |
SuperArcSamplingLevel | control the number of subdivision of each superarc. Intermediate point will be located on the barycenter of the corresponding portion of vertex. |
Output | the output of this filter is composed of:
|
This filter can be used as any other VTK filter (for instance, by using the sequence of calls SetInputData(), Update(), GetOutput()).
Related publication
"Task-based Augmented Merge Trees with Fibonacci Heaps"
Charles Gueunet, Pierre Fortin, Julien Jomier, Julien Tierny
2017 IEEE 7th Symposium on Large Data Analysis and Visualization (LDAV), doi: 10.1109/LDAV.2017.8231846.
"Task-based augmented contour trees with fibonacci heaps"
Charles Gueunet, Pierre Fortin, Julien Jomier, Julien Tierny
IEEE Transactions on Parallel and Distributed Systems, Volume 30, Issue 8, Pages 1889-1905
Online examples:
Definition at line 93 of file ttkMergeTree.h.
typedef ttkAlgorithm ttkMergeTree::Superclass |
Definition at line 104 of file ttkMergeTree.h.
|
strong |
Enumerator | |
---|---|
FTM | |
EXTREEM |
Definition at line 97 of file ttkMergeTree.h.
|
protected |
Definition at line 19 of file ttkMergeTree.cpp.
|
overrideprotected |
Definition at line 102 of file ttkMergeTree.cpp.
|
overrideprotected |
Definition at line 110 of file ttkMergeTree.cpp.
|
virtual |
the backend to use for computations.
|
virtual |
Reimplemented from ttkAlgorithm.
|
virtual |
the offset array to use for simulation of simplicity
|
protected |
Definition at line 25 of file ttkMergeTree.cpp.
|
protected |
Definition at line 53 of file ttkMergeTree.cpp.
|
inline |
Definition at line 169 of file ttkMergeTree.h.
|
inline |
Definition at line 158 of file ttkMergeTree.h.
|
inline |
Definition at line 146 of file ttkMergeTree.h.
|
inline |
Definition at line 134 of file ttkMergeTree.h.
|
virtual |
Reimplemented from ttkAlgorithm.
|
static |
|
static |
|
protected |
Definition at line 72 of file ttkMergeTree.cpp.
|
overrideprotected |
Definition at line 121 of file ttkMergeTree.cpp.
|
static |
|
virtual |
|
virtual |
|
inline |
control the sampling level of the superarc. By default: 0
Definition at line 165 of file ttkMergeTree.h.
|
inline |
the type of tree to compute (Join, Split, Contour, JoinSplit)
Definition at line 122 of file ttkMergeTree.h.
|
inline |
Compute additional information on the segmentation like the span and size (in nb of vertex) of each region.
Definition at line 154 of file ttkMergeTree.h.
|
inline |
if true, a post process pass will ensure NodesId have a deterministic order
Definition at line 142 of file ttkMergeTree.h.
|
inline |
control if the output should contains the segmentation information
Definition at line 130 of file ttkMergeTree.h.