summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/generate_version.sh4
-rw-r--r--src/cython/gudhi.pyx105
-rwxr-xr-xsrc/cython/main.py8
3 files changed, 107 insertions, 10 deletions
diff --git a/scripts/generate_version.sh b/scripts/generate_version.sh
index 323396dc..8395723e 100755
--- a/scripts/generate_version.sh
+++ b/scripts/generate_version.sh
@@ -76,6 +76,10 @@ do
then
# SPECIFIC FOR GUDHI USER INTERFACE
cp -R $ROOT_DIR/src/$package $VERSION_DIR
+ elif [ "$package" == "cython" ]
+ then
+ # SPECIFIC FOR CYTHON INTERFACE
+ cp -R $ROOT_DIR/src/$package $VERSION_DIR
else
# PACKAGE COPY
if [ -d "$ROOT_DIR/src/$package$PACKAGE_INC_DIR" ]
diff --git a/src/cython/gudhi.pyx b/src/cython/gudhi.pyx
index ae9669f4..dd87f4bb 100644
--- a/src/cython/gudhi.pyx
+++ b/src/cython/gudhi.pyx
@@ -4,6 +4,7 @@ from libcpp.utility cimport pair
cimport cgudhi
+
# SimplexTree python interface
cdef class SimplexTree:
cdef cgudhi.Simplex_tree_interface[cgudhi.Simplex_tree_options_full_featured] *thisptr
@@ -37,17 +38,57 @@ cdef class SimplexTree:
complex.push_back(i)
return self.thisptr.find_simplex(complex)
def insert(self, simplex, filtration = 0.0):
- return self.thisptr.insert_simplex(simplex, <double>filtration)
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ return self.thisptr.insert_simplex(complex, <double>filtration)
def insert_with_subfaces(self, simplex, filtration = 0.0):
- return self.thisptr.insert_simplex_and_subfaces(simplex, <double>filtration)
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ return self.thisptr.insert_simplex_and_subfaces(complex, <double>filtration)
def get_filtered_tree(self):
- return self.thisptr.get_filtered_tree()
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_filtered_tree()
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
def get_skeleton_tree(self, dim):
- return self.thisptr.get_skeleton_tree(<int>dim)
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_skeleton_tree(<int>dim)
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
def get_star_tree(self, simplex):
- return self.thisptr.get_star_tree(simplex)
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_star_tree(complex)
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
def get_coface_tree(self, simplex, dim):
- return self.thisptr.get_coface_tree(simplex, <int>dim)
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_coface_tree(complex, <int>dim)
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
cdef class MiniSimplexTree:
@@ -70,3 +111,55 @@ cdef class MiniSimplexTree:
for i in simplex:
complex.push_back(i)
return self.thisptr.find_simplex(complex)
+ def insert(self, simplex):
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ return self.thisptr.insert_simplex(complex, 0.0)
+ def insert_with_subfaces(self, simplex, filtration = 0.0):
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ return self.thisptr.insert_simplex_and_subfaces(complex, <double>filtration)
+ def get_filtered_tree(self):
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_filtered_tree()
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
+ def get_skeleton_tree(self, dim):
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_skeleton_tree(<int>dim)
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
+ def get_star_tree(self, simplex):
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_star_tree(complex)
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
+ def get_coface_tree(self, simplex, dim):
+ cdef vector[int] complex
+ for i in simplex:
+ complex.push_back(i)
+ cdef vector[pair[vector[int], double]] coface_tree = self.thisptr.get_coface_tree(complex, <int>dim)
+ ct = []
+ for filtered_complex in coface_tree:
+ v = []
+ for vertex in filtered_complex.first:
+ v.append(vertex)
+ ct.append((v,filtered_complex.second))
+ return ct
diff --git a/src/cython/main.py b/src/cython/main.py
index a36b4fa8..a4fc87ba 100755
--- a/src/cython/main.py
+++ b/src/cython/main.py
@@ -52,13 +52,13 @@ print("MiniSimplexTree creation from insertion")
triangle012 = [0, 1, 2]
edge03 = [0, 3]
mini_st = gudhi.MiniSimplexTree()
-mini_st.insert_simplex_and_subfaces(triangle012)
-mini_st.insert_simplex_and_subfaces(edge03)
+mini_st.insert_with_subfaces(triangle012)
+mini_st.insert_with_subfaces(edge03)
# FIXME: Remove this line
mini_st.set_dimension(2);
edge02 = [0, 2]
-if st.st.find(edge02):
+if mini_st.find(edge02):
# Only coface is 012
- print("coface(edge02,1)=", st_from_graph_expansion.get_coface_tree(edge02, 1))
+ print("coface(edge02,1)=", mini_st.get_coface_tree(edge02, 1))