|
TTK
|
TTK PersistentGenerators processing package. More...
#include <PersistentGenerators.h>
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, 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. | |
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) |
Protected Attributes | |
| bool | PruneHandlesGenerators {false} |
Protected Attributes inherited from ttk::DiscreteMorseSandwich | |
| dcg::DiscreteGradient | dg_ {} |
| std::vector< SimplexId > | firstRepMin_ {} |
| std::vector< SimplexId > | firstRepMax_ {} |
| std::vector< SimplexId > | edgeTrianglePartner_ {} |
| std::vector< SimplexId > | s2Mapping_ {} |
| std::vector< SimplexId > | s1Mapping_ {} |
| std::vector< EdgeSimplex > | critEdges_ {} |
| 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_ |
| Wrapper * | wrapper_ |
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 |
TTK PersistentGenerators processing package.
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.
Online examples:
Definition at line 52 of file PersistentGenerators.h.
| ttk::PersistentGenerators::PersistentGenerators | ( | ) |
Definition at line 4 of file PersistentGenerators.cpp.
| 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.
| [out] | generators | Persistent generators |
| [out] | connComps | Generators connected components |
| [in] | offsets | Order field |
| [in] | triangulation | Preconditionned triangulation |
Definition at line 405 of file PersistentGenerators.h.
|
protected |
Definition at line 141 of file PersistentGenerators.h.