summaryrefslogtreecommitdiff
path: root/src/cython
diff options
context:
space:
mode:
Diffstat (limited to 'src/cython')
-rw-r--r--src/cython/CMakeLists.txt6
-rw-r--r--src/cython/cython/simplex_tree.pyx8
-rw-r--r--src/cython/doc/fileformats.rst29
-rw-r--r--src/cython/doc/nerve_gic_complex_user.rst3
-rw-r--r--src/cython/include/Simplex_tree_interface.h22
5 files changed, 49 insertions, 19 deletions
diff --git a/src/cython/CMakeLists.txt b/src/cython/CMakeLists.txt
index 480332d7..d4ace20e 100644
--- a/src/cython/CMakeLists.txt
+++ b/src/cython/CMakeLists.txt
@@ -138,6 +138,7 @@ if(PYTHONINTERP_FOUND)
else()
add_gudhi_cython_lib("${Boost_THREAD_LIBRARY_RELEASE}")
endif()
+ message("** Add Boost ${Boost_LIBRARY_DIRS}")
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${Boost_LIBRARY_DIRS}', ")
endif()
# Add CGAL compilation args
@@ -148,6 +149,7 @@ if(PYTHONINTERP_FOUND)
add_gudhi_debug_info("CGAL version ${CGAL_VERSION}")
add_gudhi_cython_lib("${CGAL_LIBRARY}")
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${CGAL_LIBRARIES_DIR}', ")
+ message("** Add CGAL ${CGAL_LIBRARIES_DIR}")
# If CGAL is not header only, CGAL library may link with boost system,
if(CMAKE_BUILD_TYPE MATCHES Debug)
add_gudhi_cython_lib("${Boost_SYSTEM_LIBRARY_DEBUG}")
@@ -155,6 +157,7 @@ if(PYTHONINTERP_FOUND)
add_gudhi_cython_lib("${Boost_SYSTEM_LIBRARY_RELEASE}")
endif()
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${Boost_LIBRARY_DIRS}', ")
+ message("** Add Boost ${Boost_LIBRARY_DIRS}")
endif(CGAL_HEADER_ONLY)
# GMP and GMPXX are not required, but if present, CGAL will link with them.
if(GMP_FOUND)
@@ -162,11 +165,13 @@ if(PYTHONINTERP_FOUND)
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_USE_GMP', ")
add_gudhi_cython_lib("${GMP_LIBRARIES}")
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${GMP_LIBRARIES_DIR}', ")
+ message("** Add gmp ${GMP_LIBRARIES_DIR}")
if(GMPXX_FOUND)
add_gudhi_debug_info("GMPXX_LIBRARIES = ${GMPXX_LIBRARIES}")
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_USE_GMPXX', ")
add_gudhi_cython_lib("${GMPXX_LIBRARIES}")
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${GMPXX_LIBRARIES_DIR}', ")
+ message("** Add gmpxx ${GMPXX_LIBRARIES_DIR}")
endif(GMPXX_FOUND)
endif(GMP_FOUND)
endif(CGAL_FOUND)
@@ -195,6 +200,7 @@ if(PYTHONINTERP_FOUND)
add_gudhi_cython_lib("${TBB_MALLOC_RELEASE_LIBRARY}")
endif()
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${TBB_LIBRARY_DIRS}', ")
+ message("** Add tbb ${TBB_LIBRARY_DIRS}")
set(GUDHI_CYTHON_INCLUDE_DIRS "${GUDHI_CYTHON_INCLUDE_DIRS}'${TBB_INCLUDE_DIRS}', ")
endif()
diff --git a/src/cython/cython/simplex_tree.pyx b/src/cython/cython/simplex_tree.pyx
index 0ab97f80..ea99c940 100644
--- a/src/cython/cython/simplex_tree.pyx
+++ b/src/cython/cython/simplex_tree.pyx
@@ -405,7 +405,8 @@ cdef class SimplexTree:
"""This function ensures that each simplex has a higher filtration
value than its faces by increasing the filtration values.
- :returns: The filtration modification information.
+ :returns: True if any filtration value was modified,
+ False if the filtration was already non-decreasing.
:rtype: bool
@@ -513,10 +514,9 @@ cdef class SimplexTree:
return intervals_result
def persistence_pairs(self):
- """This function returns the persistence pairs of the simplicial
- complex.
+ """This function returns a list of persistence birth and death simplices pairs.
- :returns: The persistence intervals.
+ :returns: A list of persistence simplices intervals.
:rtype: list of pair of list of int
:note: persistence_pairs function requires
diff --git a/src/cython/doc/fileformats.rst b/src/cython/doc/fileformats.rst
index e205cc8b..345dfdba 100644
--- a/src/cython/doc/fileformats.rst
+++ b/src/cython/doc/fileformats.rst
@@ -5,6 +5,35 @@
File formats
############
+OFF file format
+***************
+
+OFF files must be conform to format described here:
+http://www.geomview.org/docs/html/OFF.html
+
+OFF files are mainly used as point cloud inputs. Here is an example of 7 points
+in a 3-dimensional space. As edges and faces are not used for point set, there
+is no need to specify them (just set their numbers to 0):
+
+.. literalinclude:: ../../data/points/alphacomplexdoc.off
+
+.. centered:: ../../points/alphacomplexdoc.off
+
+For dimensions bigger than 3, the dimension can be set like here::
+
+ # Dimension is no more 3
+ nOFF
+ # dimension 4 - 7 vertices - 0 face - 0 edge
+ 4 7 0 0
+ # Point set:
+ 1.0 1.0 0.0 0.0
+ 7.0 0.0 0.0 0.0
+ 4.0 6.0 0.0 0.0
+ 9.0 6.0 0.0 0.0
+ 0.0 14.0 0.0 0.0
+ 2.0 19.0 0.0 0.0
+ 9.0 17.0 0.0 0.0
+
Persistence Diagram
*******************
diff --git a/src/cython/doc/nerve_gic_complex_user.rst b/src/cython/doc/nerve_gic_complex_user.rst
index 94a2b246..9101f45d 100644
--- a/src/cython/doc/nerve_gic_complex_user.rst
+++ b/src/cython/doc/nerve_gic_complex_user.rst
@@ -13,8 +13,7 @@ Visualizations of the simplicial complexes can be done with either
neato (from `graphviz <http://www.graphviz.org/>`_),
`geomview <http://www.geomview.org/>`_,
`KeplerMapper <https://github.com/MLWave/kepler-mapper>`_.
-Input point clouds are assumed to be
-`OFF files <http://www.geomview.org/docs/html/OFF.html>`_.
+Input point clouds are assumed to be OFF files (cf. :doc:`fileformats`).
Covers
------
diff --git a/src/cython/include/Simplex_tree_interface.h b/src/cython/include/Simplex_tree_interface.h
index 3481eeff..ca98517d 100644
--- a/src/cython/include/Simplex_tree_interface.h
+++ b/src/cython/include/Simplex_tree_interface.h
@@ -45,7 +45,7 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
using Simplex_handle = typename Base::Simplex_handle;
using Insertion_result = typename std::pair<Simplex_handle, bool>;
using Simplex = std::vector<Vertex_handle>;
- using Complex = std::vector<std::pair<Simplex, Filtration_value>>;
+ using Filtered_simplices = std::vector<std::pair<Simplex, Filtration_value>>;
public:
bool find_simplex(const Simplex& vh) {
@@ -94,9 +94,9 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
Base::initialize_filtration();
}
- Complex get_filtration() {
+ Filtered_simplices get_filtration() {
Base::initialize_filtration();
- Complex filtrations;
+ Filtered_simplices filtrations;
for (auto f_simplex : Base::filtration_simplex_range()) {
Simplex simplex;
for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
@@ -107,8 +107,8 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
return filtrations;
}
- Complex get_skeleton(int dimension) {
- Complex skeletons;
+ Filtered_simplices get_skeleton(int dimension) {
+ Filtered_simplices skeletons;
for (auto f_simplex : Base::skeleton_simplex_range(dimension)) {
Simplex simplex;
for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
@@ -119,29 +119,25 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
return skeletons;
}
- Complex get_star(const Simplex& simplex) {
- Complex star;
+ Filtered_simplices get_star(const Simplex& simplex) {
+ Filtered_simplices star;
for (auto f_simplex : Base::star_simplex_range(Base::find(simplex))) {
Simplex simplex_star;
for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
simplex_star.insert(simplex_star.begin(), vertex);
}
- std::cout << std::endl;
star.push_back(std::make_pair(simplex_star, Base::filtration(f_simplex)));
}
return star;
}
- Complex get_cofaces(const Simplex& simplex, int dimension) {
- Complex cofaces;
+ Filtered_simplices get_cofaces(const Simplex& simplex, int dimension) {
+ Filtered_simplices cofaces;
for (auto f_simplex : Base::cofaces_simplex_range(Base::find(simplex), dimension)) {
Simplex simplex_coface;
for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
simplex_coface.insert(simplex_coface.begin(), vertex);
}
- std::cout << std::endl;
cofaces.push_back(std::make_pair(simplex_coface, Base::filtration(f_simplex)));
}
return cofaces;