23 #ifndef INCLUDE_PERSISTENT_COHOMOLOGY_INTERFACE_H_ 24 #define INCLUDE_PERSISTENT_COHOMOLOGY_INTERFACE_H_ 26 #include <gudhi/Persistent_cohomology.h> 34 template<
class FilteredComplex>
35 class Persistent_cohomology_interface :
public 36 persistent_cohomology::Persistent_cohomology<FilteredComplex, persistent_cohomology::Field_Zp> {
41 struct cmp_intervals_by_dim_then_length {
45 template<
typename Persistent_
interval>
46 bool operator()(
const Persistent_interval & p1,
const Persistent_interval & p2) {
47 if (sc_->dimension(get < 0 > (p1)) == sc_->dimension(get < 0 > (p2)))
48 return (sc_->filtration(get < 1 > (p1)) - sc_->filtration(get < 0 > (p1))
49 > sc_->filtration(get < 1 > (p2)) - sc_->filtration(get < 0 > (p2)));
51 return (sc_->dimension(get < 0 > (p1)) > sc_->dimension(get < 0 > (p2)));
61 Persistent_cohomology_interface(
FilteredComplex* stptr,
bool persistence_dim_max)
63 persistent_cohomology::
Field_Zp>(*stptr, persistence_dim_max),
66 std::vector<std::pair<int, std::pair<double, double>>> get_persistence(
int homology_coeff_field,
67 double min_persistence) {
69 persistent_cohomology::Field_Zp>::init_coefficients(homology_coeff_field);
70 persistent_cohomology::Persistent_cohomology<FilteredComplex,
71 persistent_cohomology::Field_Zp>::compute_persistent_cohomology(min_persistence);
74 cmp_intervals_by_dim_then_length cmp(stptr_);
75 auto persistent_pairs = persistent_cohomology::Persistent_cohomology<FilteredComplex,
76 persistent_cohomology::Field_Zp>::get_persistent_pairs();
77 std::sort(std::begin(persistent_pairs), std::end(persistent_pairs), cmp);
79 std::vector<std::pair<int, std::pair<double, double>>> persistence;
80 for (
auto pair : persistent_pairs) {
81 persistence.push_back(std::make_pair(stptr_->dimension(get<0>(pair)),
82 std::make_pair(stptr_->filtration(get<0>(pair)),
83 stptr_->filtration(get<1>(pair)))));
90 FilteredComplex* stptr_;
95 #endif // INCLUDE_PERSISTENT_COHOMOLOGY_INTERFACE_H_ Computes the persistent cohomology of a filtered complex.
Definition: Persistent_cohomology.h:64
Definition: SimplicialComplexForAlpha.h:26
Structure representing the coefficient field .
Definition: Field_Zp.h:38
The concept FilteredComplex describes the requirements for a type to implement a filtered cell comple...
Definition: FilteredComplex.h:28