TTK
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
ttkPersistentGenerators Class Reference

TTK VTK-filter for the computation of persistent generators. More...

#include <ttkPersistentGenerators.h>

Inheritance diagram for ttkPersistentGenerators:
ttkAlgorithm ttk::PersistentGenerators ttk::Debug ttk::DiscreteMorseSandwich ttk::BaseClass ttk::Debug ttk::BaseClass

Public Types

typedef ttkAlgorithm Superclass
 
- Public Types inherited from ttkAlgorithm
typedef vtkAlgorithm Superclass
 

Public Member Functions

virtual const char * GetClassName ()
 
virtual int IsA (const char *type)
 
virtual void SetPruneHandlesGenerators (bool)
 
virtual bool GetPruneHandlesGenerators ()
 
virtual void SetForceInputOffsetScalarField (bool)
 
virtual bool GetForceInputOffsetScalarField ()
 
- Public Member Functions inherited from ttkAlgorithm
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::SimplexIdGetIdentifierArrayPtr (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::TriangulationGetTriangulation (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.
 
- 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)
 

Static Public Member Functions

static ttkPersistentGeneratorsNew ()
 
static int IsTypeOf (const char *type)
 
static ttkPersistentGeneratorsSafeDownCast (vtkObject *o)
 
- Static Public Member Functions inherited from ttkAlgorithm
static ttkAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static ttkAlgorithmSafeDownCast (vtkObject *o)
 
static std::string GetOrderArrayName (vtkDataArray *const array)
 
static vtkInformationIntegerKey * SAME_DATA_TYPE_AS_INPUT_PORT ()
 

Protected Member Functions

 ttkPersistentGenerators ()
 
int RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
 
int FillInputPortInformation (int port, vtkInformation *info) override
 
int FillOutputPortInformation (int port, vtkInformation *info) override
 
- Protected Member Functions inherited from ttkAlgorithm
 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
 
- 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 Member Functions inherited from ttk::PersistentGenerators
 PersistentGenerators ()
 
template<typename triangulationType >
int computePersistentGenerators (std::vector< GeneratorType > &generators, std::vector< std::vector< SimplexId > > &connComps, const SimplexId *const offsets, const triangulationType &triangulation)
 Compute the persistence generators from the discrete gradient.
 
- Protected Member Functions inherited from ttk::DiscreteMorseSandwich
template<typename triangulationType >
std::vector< std::vector< SimplexId > > getSaddle1ToMinima (const std::vector< SimplexId > &criticalEdges, const triangulationType &triangulation) const
 Follow the descending 1-separatrices to compute the saddles -> minima association.
 
template<typename triangulationType , typename GFS , typename GFSN , typename OB >
std::vector< std::vector< SimplexId > > getSaddle2ToMaxima (const std::vector< SimplexId > &criticalCells, const GFS &getFaceStar, const GFSN &getFaceStarNumber, const OB &isOnBoundary, const triangulationType &triangulation) const
 Follow the ascending 1-separatrices to compute the saddles -> maxima association.
 
template<typename triangulationType >
void getMinSaddlePairs (std::vector< PersistencePair > &pairs, std::vector< bool > &pairedMinima, std::vector< bool > &paired1Saddles, const std::vector< SimplexId > &criticalEdges, const std::vector< SimplexId > &critEdgesOrder, const SimplexId *const offsets, const triangulationType &triangulation) const
 Compute the pairs of dimension 0.
 
template<typename triangulationType >
void getMaxSaddlePairs (std::vector< PersistencePair > &pairs, std::vector< bool > &pairedMaxima, std::vector< bool > &pairedSaddles, const std::vector< SimplexId > &criticalSaddles, const std::vector< SimplexId > &critSaddlesOrder, const std::vector< SimplexId > &critMaxsOrder, const triangulationType &triangulation) const
 Compute the pairs of dimension dim - 1.
 
template<typename triangulationType >
void getSaddleSaddlePairs (std::vector< PersistencePair > &pairs, std::vector< bool > &paired1Saddles, std::vector< bool > &paired2Saddles, const bool exportBoundaries, std::vector< GeneratorType > &boundaries, const std::vector< SimplexId > &critical1Saddles, const std::vector< SimplexId > &critical2Saddles, const std::vector< SimplexId > &crit1SaddlesOrder, const triangulationType &triangulation) const
 Compute the saddle-saddle pairs (in 3D)
 
template<typename triangulationType >
void extractCriticalCells (std::array< std::vector< SimplexId >, 4 > &criticalCellsByDim, std::array< std::vector< SimplexId >, 4 > &critCellsOrder, const SimplexId *const offsets, const triangulationType &triangulation, const bool sortEdges) const
 Extract & sort critical cell from the DiscreteGradient.
 
void displayStats (const std::vector< PersistencePair > &pairs, const std::array< std::vector< SimplexId >, 4 > &criticalCellsByDim, const std::vector< bool > &pairedMinima, const std::vector< bool > &paired1Saddles, const std::vector< bool > &paired2Saddles, const std::vector< bool > &pairedMaxima) const
 Print number of pairs, critical cells per dimension & unpaired cells.
 
void tripletsToPersistencePairs (std::vector< PersistencePair > &pairs, std::vector< bool > &pairedExtrema, std::vector< bool > &pairedSaddles, std::vector< SimplexId > &reps, std::vector< tripletType > &triplets, const SimplexId *const saddlesOrder, const SimplexId *const extremaOrder, const SimplexId pairDim) const
 Compute persistence pairs from triplets.
 
template<typename triangulationType , typename Container >
SimplexId eliminateBoundariesSandwich (const SimplexId s2, std::vector< bool > &onBoundary, std::vector< Container > &s2Boundaries, const std::vector< SimplexId > &s2Mapping, const std::vector< SimplexId > &s1Mapping, std::vector< SimplexId > &partners, std::vector< Lock > &s1Locks, std::vector< Lock > &s2Locks, const triangulationType &triangulation) const
 Detect 1-saddles paired to a given 2-saddle.
 
template<typename triangulationType >
void alloc (const triangulationType &triangulation)
 
void clear ()
 
 DiscreteMorseSandwich ()
 
void preconditionTriangulation (AbstractTriangulation *const data)
 
void setInputOffsets (const SimplexId *const offsets)
 
void setComputeMinSad (const bool data)
 
void setComputeSadSad (const bool data)
 
void setComputeSadMax (const bool data)
 
template<typename triangulationType >
int buildGradient (const void *const scalars, const size_t scalarsMTime, const SimplexId *const offsets, const triangulationType &triangulation, const std::vector< bool > *updateMask=nullptr)
 
void setGradient (ttk::dcg::DiscreteGradient &&dg)
 Ugly hack to avoid a call to buildGradient()
 
ttk::dcg::DiscreteGradient && getGradient ()
 
template<typename triangulationType >
SimplexId getCellGreaterVertex (const dcg::Cell &c, const triangulationType &triangulation)
 
const std::vector< std::vector< SimplexId > > & get2SaddlesChildren () const
 
template<typename triangulationType >
int computePersistencePairs (std::vector< PersistencePair > &pairs, const SimplexId *const offsets, const triangulationType &triangulation, const bool ignoreBoundary, const bool compute2SaddlesChildren=false)
 Compute the persistence pairs from the discrete gradient.
 

Additional Inherited Members

- Protected Types inherited from ttk::DiscreteMorseSandwich
using tripletType = std::array< SimplexId, 3 >
 Triplet type for persistence pairs.
 
- Protected Attributes inherited from ttkAlgorithm
float CompactTriangulationCacheSize {0.2f}
 
- Protected Attributes inherited from ttk::Debug
int debugLevel_
 
std::string debugMsgPrefix_
 
std::string debugMsgNamePrefix_
 
- Protected Attributes inherited from ttk::BaseClass
bool lastObject_
 
int threadNumber_
 
Wrapperwrapper_
 
- Protected Attributes inherited from ttk::PersistentGenerators
bool PruneHandlesGenerators {false}
 
- Protected Attributes inherited from ttk::DiscreteMorseSandwich
dcg::DiscreteGradient dg_ {}
 
std::vector< SimplexIdfirstRepMin_ {}
 
std::vector< SimplexIdfirstRepMax_ {}
 
std::vector< SimplexIdedgeTrianglePartner_ {}
 
std::vector< SimplexIds2Mapping_ {}
 
std::vector< SimplexIds1Mapping_ {}
 
std::vector< EdgeSimplexcritEdges_ {}
 
std::array< std::vector< bool >, 4 > pairedCritCells_ {}
 
std::vector< bool > onBoundary_ {}
 
std::array< std::vector< SimplexId >, 4 > critCellsOrder_ {}
 
std::vector< std::vector< SimplexId > > s2Children_ {}
 
bool ComputeMinSad {true}
 
bool ComputeSadSad {true}
 
bool ComputeSadMax {true}
 
bool Compute2SaddlesChildren {false}
 
- Static Protected Attributes inherited from ttk::Debug
static COMMON_EXPORTS debug::LineMode lastLineMode = ttk::debug::LineMode::NEW
 

Detailed Description

TTK VTK-filter for the computation of persistent generators.

Author
Pierre Guillou pierr.nosp@m.e.gu.nosp@m.illou.nosp@m.@lip.nosp@m.6.fr
Date
February 2022.

Related publication
"Discrete Morse Sandwich: Fast Computation of Persistence Diagrams for Scalar Data -- An Algorithm and A Benchmark"
Pierre Guillou, Jules Vidal, Julien Tierny
IEEE Transactions on Visualization and Computer Graphics, 2023.
arXiv:2206.13932, 2023.

Online examples:

Definition at line 56 of file ttkPersistentGenerators.h.

Member Typedef Documentation

◆ Superclass

Definition at line 63 of file ttkPersistentGenerators.h.

Constructor & Destructor Documentation

◆ ttkPersistentGenerators()

ttkPersistentGenerators::ttkPersistentGenerators ( )
protected

Definition at line 19 of file ttkPersistentGenerators.cpp.

Member Function Documentation

◆ FillInputPortInformation()

int ttkPersistentGenerators::FillInputPortInformation ( int  port,
vtkInformation *  info 
)
overrideprotected

Definition at line 25 of file ttkPersistentGenerators.cpp.

◆ FillOutputPortInformation()

int ttkPersistentGenerators::FillOutputPortInformation ( int  port,
vtkInformation *  info 
)
overrideprotected

Definition at line 34 of file ttkPersistentGenerators.cpp.

◆ GetClassName()

virtual const char * ttkPersistentGenerators::GetClassName ( )
virtual

Reimplemented from ttkAlgorithm.

◆ GetForceInputOffsetScalarField()

virtual bool ttkPersistentGenerators::GetForceInputOffsetScalarField ( )
virtual

◆ GetPruneHandlesGenerators()

virtual bool ttkPersistentGenerators::GetPruneHandlesGenerators ( )
virtual

◆ IsA()

virtual int ttkPersistentGenerators::IsA ( const char *  type)
virtual

Reimplemented from ttkAlgorithm.

◆ IsTypeOf()

static int ttkPersistentGenerators::IsTypeOf ( const char *  type)
static

◆ New()

static ttkPersistentGenerators * ttkPersistentGenerators::New ( )
static

◆ RequestData()

int ttkPersistentGenerators::RequestData ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector 
)
overrideprotected

Definition at line 179 of file ttkPersistentGenerators.cpp.

◆ SafeDownCast()

static ttkPersistentGenerators * ttkPersistentGenerators::SafeDownCast ( vtkObject *  o)
static

◆ SetForceInputOffsetScalarField()

virtual void ttkPersistentGenerators::SetForceInputOffsetScalarField ( bool  )
virtual

◆ SetPruneHandlesGenerators()

virtual void ttkPersistentGenerators::SetPruneHandlesGenerators ( bool  )
virtual

The documentation for this class was generated from the following files: