summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-12-09 09:41:13 +0100
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-12-09 09:41:13 +0100
commitfda0084941ece5d41a258d19ca4eb0b3d87384a4 (patch)
tree47bacdf323347ef12bf9764486eb681363611c47
parent6279ac91dd7e2d3206e8a380d38cb2e5d503e9dc (diff)
Fix #388
-rw-r--r--src/cmake/modules/GUDHI_third_party_libraries.cmake1
-rw-r--r--src/python/CMakeLists.txt1
-rw-r--r--src/python/gudhi/simplex_tree.pxd2
-rw-r--r--src/python/gudhi/simplex_tree.pyx3
-rw-r--r--src/python/include/Simplex_tree_interface.h10
-rwxr-xr-xsrc/python/test/test_simplex_tree.py14
6 files changed, 24 insertions, 7 deletions
diff --git a/src/cmake/modules/GUDHI_third_party_libraries.cmake b/src/cmake/modules/GUDHI_third_party_libraries.cmake
index e2684aa4..e1566877 100644
--- a/src/cmake/modules/GUDHI_third_party_libraries.cmake
+++ b/src/cmake/modules/GUDHI_third_party_libraries.cmake
@@ -58,7 +58,6 @@ endif(WITH_GUDHI_USE_TBB)
set(CGAL_WITH_EIGEN3_VERSION 0.0.0)
find_package(Eigen3 3.1.0)
if (EIGEN3_FOUND)
- add_definitions(-DGUDHI_USE_EIGEN3)
include( ${EIGEN3_USE_FILE} )
set(CGAL_WITH_EIGEN3_VERSION ${CGAL_VERSION})
endif (EIGEN3_FOUND)
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
index 2d5f793a..45c89609 100644
--- a/src/python/CMakeLists.txt
+++ b/src/python/CMakeLists.txt
@@ -133,6 +133,7 @@ if(PYTHONINTERP_FOUND)
add_gudhi_debug_info("Eigen3 version ${EIGEN3_VERSION}")
# No problem, even if no CGAL found
set(GUDHI_PYTHON_EXTRA_COMPILE_ARGS "${GUDHI_PYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_EIGEN3_ENABLED', ")
+ set(GUDHI_PYTHON_EXTRA_COMPILE_ARGS "${GUDHI_PYTHON_EXTRA_COMPILE_ARGS}'-DGUDHI_USE_EIGEN3', ")
endif (EIGEN3_FOUND)
set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}'off_reader', ")
diff --git a/src/python/gudhi/simplex_tree.pxd b/src/python/gudhi/simplex_tree.pxd
index 3c4cbed3..283830ff 100644
--- a/src/python/gudhi/simplex_tree.pxd
+++ b/src/python/gudhi/simplex_tree.pxd
@@ -74,6 +74,8 @@ cdef extern from "Simplex_tree_interface.h" namespace "Gudhi":
Simplex_tree_skeleton_iterator get_skeleton_iterator_begin(int dimension) nogil
Simplex_tree_skeleton_iterator get_skeleton_iterator_end(int dimension) nogil
pair[Simplex_tree_boundary_iterator, Simplex_tree_boundary_iterator] get_boundary_iterators(vector[int] simplex) nogil except +
+
+ cdef int _GUDHI_USE_EIGEN3
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>>":
diff --git a/src/python/gudhi/simplex_tree.pyx b/src/python/gudhi/simplex_tree.pyx
index 7d6ab89a..eb44c0fc 100644
--- a/src/python/gudhi/simplex_tree.pyx
+++ b/src/python/gudhi/simplex_tree.pyx
@@ -17,6 +17,9 @@ __author__ = "Vincent Rouvreau"
__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "MIT"
+# For unitary tests purpose
+__GUDHI_USE_EIGEN3 = _GUDHI_USE_EIGEN3
+
# SimplexTree python interface
cdef class SimplexTree:
"""The simplex tree is an efficient and flexible data structure for
diff --git a/src/python/include/Simplex_tree_interface.h b/src/python/include/Simplex_tree_interface.h
index 2bd704b4..50592e25 100644
--- a/src/python/include/Simplex_tree_interface.h
+++ b/src/python/include/Simplex_tree_interface.h
@@ -27,6 +27,12 @@
namespace Gudhi {
+#ifdef GUDHI_USE_EIGEN3
+const int _GUDHI_USE_EIGEN3 = 1;
+#else
+const int _GUDHI_USE_EIGEN3 = 0;
+#endif
+
template<typename SimplexTreeOptions = Simplex_tree_options_full_featured>
class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
public:
@@ -191,7 +197,9 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
}
return collapsed_stree_ptr;
#else
- return this;
+ // 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;
#endif
}
diff --git a/src/python/test/test_simplex_tree.py b/src/python/test/test_simplex_tree.py
index 3b23fa0b..15b472ee 100755
--- a/src/python/test/test_simplex_tree.py
+++ b/src/python/test/test_simplex_tree.py
@@ -8,7 +8,7 @@
- YYYY/MM Author: Description of the modification
"""
-from gudhi import SimplexTree
+from gudhi import SimplexTree, simplex_tree
import pytest
__author__ = "Vincent Rouvreau"
@@ -353,11 +353,15 @@ 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()
- assert st.num_simplices() == 9
- assert st.find([1, 3]) == False
- for simplex in st.get_skeleton(0):
- assert simplex[1] == 1.
+ if simplex_tree.__GUDHI_USE_EIGEN3:
+ 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
def test_reset_filtration():
st = SimplexTree()