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.