summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathieuCarriere <mathieu.carriere3@gmail.com>2020-01-16 21:26:02 -0500
committerMathieuCarriere <mathieu.carriere3@gmail.com>2020-01-16 21:26:02 -0500
commit19562b27182dcfa6ed262002c2bc8934382f5a53 (patch)
tree421f73315e9f971c176fb814557ff8af40bb1442 /src
parentc89df405c77bb7270db1a7d8f0e49bc22c1b010d (diff)
get rid of persistence_generators and modified name for cubical complex
Diffstat (limited to 'src')
-rw-r--r--src/python/gudhi/cubical_complex.pyx8
-rw-r--r--src/python/gudhi/simplex_tree.pxd1
-rw-r--r--src/python/gudhi/simplex_tree.pyx26
-rw-r--r--src/python/include/Persistent_cohomology_interface.h29
4 files changed, 8 insertions, 56 deletions
diff --git a/src/python/gudhi/cubical_complex.pyx b/src/python/gudhi/cubical_complex.pyx
index 5562e8a7..8ea31486 100644
--- a/src/python/gudhi/cubical_complex.pyx
+++ b/src/python/gudhi/cubical_complex.pyx
@@ -31,7 +31,7 @@ cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
cdef cppclass Cubical_complex_persistence_interface "Gudhi::Persistent_cohomology_interface<Gudhi::Cubical_complex::Cubical_complex_interface<>>":
Cubical_complex_persistence_interface(Bitmap_cubical_complex_base_interface * st, bool persistence_dim_max)
vector[pair[int, pair[double, double]]] get_persistence(int homology_coeff_field, double min_persistence)
- vector[pair[int, pair[pair[double, int], pair[double, int]]]] get_persistence_cubical_generators(int homology_coeff_field, double min_persistence)
+ vector[pair[int, pair[pair[double, int], pair[double, int]]]] get_cofaces_of_cubical_persistence_pairs(int homology_coeff_field, double min_persistence)
vector[int] betti_numbers()
vector[int] persistent_betti_numbers(double from_value, double to_value)
vector[pair[double,double]] intervals_in_dimension(int dimension)
@@ -146,7 +146,7 @@ cdef class CubicalComplex:
persistence_result = self.pcohptr.get_persistence(homology_coeff_field, min_persistence)
return persistence_result
- def persistence_generators(self, homology_coeff_field=11, min_persistence=0, persistence_dim_max = False):
+ def cofaces_of_cubical_persistence_pairs(self, homology_coeff_field=11, min_persistence=0, persistence_dim_max = False):
"""This function returns the persistence of the simplicial complex.
:param homology_coeff_field: The homology coefficient field. Must be a
@@ -161,7 +161,7 @@ cdef class CubicalComplex:
maximal dimension in the complex is computed. If false, it is
ignored. Default is false.
:type persistence_dim_max: bool
- :returns: The persistence of the simplicial complex, together with the corresponding generators, i.e., the positive and negative top-dimensional cells.
+ :returns: The persistence of the simplicial complex, together with the cofaces of the corresponding generators, i.e., the top-dimensional cells/cofaces of the positive and negative simplices.
:rtype: list of pairs(dimension, pair(index of positive top-dimensional cell, index of negative top-dimensional cell))
"""
if self.pcohptr != NULL:
@@ -169,7 +169,7 @@ cdef class CubicalComplex:
self.pcohptr = new Cubical_complex_persistence_interface(self.thisptr, True)
cdef vector[pair[int, pair[pair[double, int], pair[double, int]]]] persistence_result
if self.pcohptr != NULL:
- persistence_result = self.pcohptr.get_persistence_cubical_generators(homology_coeff_field, min_persistence)
+ persistence_result = self.pcohptr.get_cofaces_of_cubical_persistence_pairs(homology_coeff_field, min_persistence)
return persistence_result
def betti_numbers(self):
diff --git a/src/python/gudhi/simplex_tree.pxd b/src/python/gudhi/simplex_tree.pxd
index 9e52a8aa..1066d44b 100644
--- a/src/python/gudhi/simplex_tree.pxd
+++ b/src/python/gudhi/simplex_tree.pxd
@@ -48,7 +48,6 @@ cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
cdef cppclass Simplex_tree_persistence_interface "Gudhi::Persistent_cohomology_interface<Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_full_featured>>":
Simplex_tree_persistence_interface(Simplex_tree_interface_full_featured * st, bool persistence_dim_max)
vector[pair[int, pair[double, double]]] get_persistence(int homology_coeff_field, double min_persistence)
- vector[pair[int, pair[pair[double, vector[int]], pair[double, vector[int]]]]] get_persistence_generators(int homology_coeff_field, double min_persistence)
vector[int] betti_numbers()
vector[int] persistent_betti_numbers(double from_value, double to_value)
vector[pair[double,double]] intervals_in_dimension(int dimension)
diff --git a/src/python/gudhi/simplex_tree.pyx b/src/python/gudhi/simplex_tree.pyx
index 8cc58f8f..85d25492 100644
--- a/src/python/gudhi/simplex_tree.pyx
+++ b/src/python/gudhi/simplex_tree.pyx
@@ -412,32 +412,6 @@ cdef class SimplexTree:
persistence_result = self.pcohptr.get_persistence(homology_coeff_field, min_persistence)
return persistence_result
- def persistence_generators(self, homology_coeff_field=11, min_persistence=0, persistence_dim_max = False):
- """This function returns the persistence of the simplicial complex.
-
- :param homology_coeff_field: The homology coefficient field. Must be a
- prime number. Default value is 11.
- :type homology_coeff_field: int.
- :param min_persistence: The minimum persistence value to take into
- account (strictly greater than min_persistence). Default value is
- 0.0.
- Sets min_persistence to -1.0 to see all values.
- :type min_persistence: float.
- :param persistence_dim_max: If true, the persistent homology for the
- maximal dimension in the complex is computed. If false, it is
- ignored. Default is false.
- :type persistence_dim_max: bool
- :returns: The persistence of the simplicial complex, together with the corresponding generators, i.e., the positive and negative simplices.
- :rtype: list of pairs(dimension, pair(positive_simplex, negative_simplex))
- """
- if self.pcohptr != NULL:
- del self.pcohptr
- self.pcohptr = new Simplex_tree_persistence_interface(self.get_ptr(), persistence_dim_max)
- cdef vector[pair[int, pair[pair[double, vector[int]], pair[double, vector[int]]]]] persistence_result
- if self.pcohptr != NULL:
- persistence_result = self.pcohptr.get_persistence_generators(homology_coeff_field, min_persistence)
- return persistence_result
-
def betti_numbers(self):
"""This function returns the Betti numbers of the simplicial complex.
diff --git a/src/python/include/Persistent_cohomology_interface.h b/src/python/include/Persistent_cohomology_interface.h
index 0ad14477..1a1e716e 100644
--- a/src/python/include/Persistent_cohomology_interface.h
+++ b/src/python/include/Persistent_cohomology_interface.h
@@ -73,36 +73,15 @@ persistent_cohomology::Persistent_cohomology<FilteredComplex, persistent_cohomol
return persistence;
}
- std::vector<std::pair<int, std::pair<std::pair<double, std::vector<int>>, std::pair<double,std::vector<int>>>>> get_persistence_generators(int homology_coeff_field,
- double min_persistence) {
- persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::init_coefficients(homology_coeff_field);
- persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::compute_persistent_cohomology(min_persistence);
-
- // Custom sort and output persistence
- cmp_intervals_by_dim_then_length cmp(stptr_);
- auto persistent_pairs = persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::get_persistent_pairs();
- std::sort(std::begin(persistent_pairs), std::end(persistent_pairs), cmp);
-
- std::vector<std::pair<int, std::pair<std::pair<double, std::vector<int>>, std::pair<double,std::vector<int>>>>> persistence;
- for (auto pair : persistent_pairs) {
- std::vector<int> splx0, splx1;
- for (auto vertex : stptr_->simplex_vertex_range(get<0>(pair))){splx0.push_back(vertex);}
- if (isfinite(stptr_->filtration(get<1>(pair)))){ for (auto vertex : stptr_->simplex_vertex_range(get<1>(pair))){splx1.push_back(vertex);}}
- persistence.push_back(std::make_pair(stptr_->dimension(get<0>(pair)), std::make_pair(std::make_pair(stptr_->filtration(get<0>(pair)), splx0), std::make_pair(stptr_->filtration(get<1>(pair)), splx1))));
- }
- return persistence;
- }
-
void top_dimensional_cofaces(std::vector<int> & cofaces, int splx){
if (stptr_->dimension(stptr_->simplex(splx)) == stptr_->dimension()){cofaces.push_back(stptr_->simplex(splx));}
else{ for (auto v : stptr_->coboundary_simplex_range(stptr_->simplex(splx))){top_dimensional_cofaces(cofaces, stptr_->key(v));} }
}
- std::vector<std::pair<int, std::pair<std::pair<double, int>, std::pair<double, int>>>> get_persistence_cubical_generators(int homology_coeff_field,
- double min_persistence) {
+ std::vector<std::pair<int, std::pair<std::pair<double, int>, std::pair<double, int>>>> get_cofaces_of_cubical_persistence_pairs(int homology_coeff_field,
+ double min_persistence) {
+
+ // Warning: this function is meant to be used with CubicalComplex only!!
// Gather all top-dimensional cells and store their simplex handles
std::vector<int> max_splx; for (auto splx : stptr_->filtration_simplex_range()){ if (stptr_->dimension(splx) == stptr_->dimension()) max_splx.push_back(splx); }