TTK
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
ttk::PersistentGenerators Class Reference

TTK PersistentGenerators processing package. More...

#include <PersistentGenerators.h>

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

Public Member Functions

 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.
 
- Public Member Functions inherited from ttk::DiscreteMorseSandwich
 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)
 
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.
 
- 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)
 
virtual int setWrapper (const Wrapper *wrapper)
 

Protected Attributes

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}
 
- 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_
 

Additional Inherited Members

- Protected Types inherited from ttk::DiscreteMorseSandwich
using tripletType = std::array< SimplexId, 3 >
 Triplet type for persistence pairs.
 
- 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 ()
 
- 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)
 
- Static Protected Attributes inherited from ttk::Debug
static COMMON_EXPORTS debug::LineMode lastLineMode = ttk::debug::LineMode::NEW
 

Detailed Description

TTK PersistentGenerators processing package.

Author
Julien Tierny julie.nosp@m.n.ti.nosp@m.erny@.nosp@m.lip6.nosp@m..fr
Pierre Guillou pierr.nosp@m.e.gu.nosp@m.illou.nosp@m.@lip.nosp@m.6.fr
Date
March 2021.

ttk::PersistentGenerators uses ttk::discreteMorseSandwich to compute generators for persistence pairs of dimensions 1.

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.

See also
ttk::DiscreteMorseSandwich

Online examples:

Definition at line 52 of file PersistentGenerators.h.

Constructor & Destructor Documentation

◆ PersistentGenerators()

ttk::PersistentGenerators::PersistentGenerators ( )

Definition at line 4 of file PersistentGenerators.cpp.

Member Function Documentation

◆ computePersistentGenerators()

template<typename triangulationType >
int ttk::PersistentGenerators::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.

Precondition
buildGradient and preconditionTriangulation should be called prior to this function
Parameters
[out]generatorsPersistent generators
[out]connCompsGenerators connected components
[in]offsetsOrder field
[in]triangulationPreconditionned triangulation
Returns
0 when success

Definition at line 405 of file PersistentGenerators.h.

Member Data Documentation

◆ PruneHandlesGenerators

bool ttk::PersistentGenerators::PruneHandlesGenerators {false}
protected

Definition at line 141 of file PersistentGenerators.h.


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