summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/python/gudhi/simplex_tree.pxd2
-rw-r--r--src/python/gudhi/simplex_tree.pyx4
-rw-r--r--src/python/include/Simplex_tree_interface.h4
-rwxr-xr-xsrc/python/test/test_simplex_tree.py7
4 files changed, 8 insertions, 9 deletions
diff --git a/src/python/gudhi/simplex_tree.pxd b/src/python/gudhi/simplex_tree.pxd
index 3c4cbed3..000323af 100644
--- a/src/python/gudhi/simplex_tree.pxd
+++ b/src/python/gudhi/simplex_tree.pxd
@@ -63,7 +63,7 @@ cdef extern from "Simplex_tree_interface.h" namespace "Gudhi":
bool make_filtration_non_decreasing() nogil
void compute_extended_filtration() nogil
vector[vector[pair[int, pair[double, double]]]] compute_extended_persistence_subdiagrams(vector[pair[int, pair[double, double]]] dgm, double min_persistence) nogil
- Simplex_tree_interface_full_featured* collapse_edges(int nb_collapse_iteration) nogil
+ Simplex_tree_interface_full_featured* collapse_edges(int nb_collapse_iteration) nogil except +
void reset_filtration(double filtration, int dimension) nogil
# Iterators over Simplex tree
pair[vector[int], double] get_simplex_and_filtration(Simplex_tree_simplex_handle f_simplex) nogil
diff --git a/src/python/gudhi/simplex_tree.pyx b/src/python/gudhi/simplex_tree.pyx
index 7d6ab89a..665d41e6 100644
--- a/src/python/gudhi/simplex_tree.pyx
+++ b/src/python/gudhi/simplex_tree.pyx
@@ -628,8 +628,8 @@ cdef class SimplexTree:
:param nb_iterations: The number of edge collapse iterations to perform. Default is 1.
:type nb_iterations: int
- :note: collapse_edges function requires `Eigen <installation.html#eigen>`_ >= 3.1.0, otherwise no action is
- performed.
+ :note: collapse_edges method requires `Eigen <installation.html#eigen>`_ >= 3.1.0 and an exception is thrown
+ if this method is not available.
"""
# Backup old pointer
cdef Simplex_tree_interface_full_featured* ptr = self.get_ptr()
diff --git a/src/python/include/Simplex_tree_interface.h b/src/python/include/Simplex_tree_interface.h
index 82444609..629f6083 100644
--- a/src/python/include/Simplex_tree_interface.h
+++ b/src/python/include/Simplex_tree_interface.h
@@ -191,9 +191,7 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
}
return collapsed_stree_ptr;
#else
- // If no Eigen3, return a copy, as it will be deleted in pyx
- Simplex_tree_interface* collapsed_stree_ptr = new Simplex_tree_interface(*this);
- return collapsed_stree_ptr;
+ throw std::runtime_error("Unable to collapse edges as it requires Eigen3 >= 3.1.0.");
#endif
}
diff --git a/src/python/test/test_simplex_tree.py b/src/python/test/test_simplex_tree.py
index 0c072baa..a3eacaa9 100755
--- a/src/python/test/test_simplex_tree.py
+++ b/src/python/test/test_simplex_tree.py
@@ -353,15 +353,16 @@ def test_collapse_edges():
assert st.num_simplices() == 10
- # If no Eigen3, collapse_edges just return a copy, no action. Maybe it would require some user warning
- st.collapse_edges()
if __GUDHI_USE_EIGEN3:
+ st.collapse_edges()
assert st.num_simplices() == 9
assert st.find([1, 3]) == False
for simplex in st.get_skeleton(0):
assert simplex[1] == 1.
else:
- assert st.num_simplices() == 10
+ # If no Eigen3, collapse_edges throws an exception
+ with pytest.raises(RuntimeError):
+ st.collapse_edges()
def test_reset_filtration():
st = SimplexTree()