From 0921d31dec497b21a3b2805790ef295e90566e3d Mon Sep 17 00:00:00 2001 From: vrouvrea Date: Thu, 2 Feb 2017 07:58:53 +0000 Subject: Change doc html theme. Change tables git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/ST_cythonize@2047 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: aaa29b8f610d506efc3762ad17c4fd768e74d399 --- src/cython/CMakeLists.txt | 6 +- src/cython/cython/rips_complex.pyx | 20 +--- src/cython/doc/alpha_complex_sum.rst | 43 ++++--- src/cython/doc/alpha_complex_user.rst | 16 ++- src/cython/doc/biblio.rst | 3 +- src/cython/doc/bottleneck_distance_sum.rst | 28 ++--- src/cython/doc/bottleneck_distance_user.rst | 2 +- src/cython/doc/conf.py | 2 +- src/cython/doc/cubical_complex_sum.rst | 25 ++-- src/cython/doc/cubical_complex_user.rst | 14 ++- src/cython/doc/index.rst | 6 +- src/cython/doc/persistence_graphical_tools_sum.rst | 23 ++-- src/cython/doc/persistent_cohomology_sum.rst | 50 ++++---- src/cython/doc/rips_complex_ref.rst | 10 ++ src/cython/doc/rips_complex_sum.rst | 17 +++ src/cython/doc/rips_complex_user.rst | 133 +++++++++++++++++++++ src/cython/doc/simplex_tree_sum.rst | 25 ++-- src/cython/doc/tangential_complex_sum.rst | 29 +++-- src/cython/doc/tangential_complex_user.rst | 7 ++ src/cython/doc/witness_complex_sum.rst | 48 ++++---- 20 files changed, 338 insertions(+), 169 deletions(-) create mode 100644 src/cython/doc/rips_complex_ref.rst create mode 100644 src/cython/doc/rips_complex_sum.rst create mode 100644 src/cython/doc/rips_complex_user.rst diff --git a/src/cython/CMakeLists.txt b/src/cython/CMakeLists.txt index 6c49c800..72be7b30 100644 --- a/src/cython/CMakeLists.txt +++ b/src/cython/CMakeLists.txt @@ -101,7 +101,7 @@ if(PYTHON_PATH AND CYTHON_PATH) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND python "${CMAKE_CURRENT_BINARY_DIR}/cythonize_gudhi.py" "build_ext" "--inplace") - add_custom_target(cythonize_gudhi ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gudhi.so" + add_custom_target(cython ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gudhi.so" COMMENT "Do not forget to add ${CMAKE_CURRENT_BINARY_DIR}/gudhi.so to your PYTHONPATH before using examples") # Unitary tests are available through py.test @@ -135,11 +135,11 @@ if(PYTHON_PATH AND CYTHON_PATH) file(COPY "${CMAKE_SOURCE_DIR}/data/bitmap/3d_torus.txt" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/doc/") file(COPY "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/doc/") if (UNIX) - add_custom_target(html + add_custom_target(sphinx WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc COMMAND make html && make doctest) else (UNIX) - add_custom_target(html + add_custom_target(sphinx WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc COMMAND make.bat html) endif (UNIX) diff --git a/src/cython/cython/rips_complex.pyx b/src/cython/cython/rips_complex.pyx index 2e739ac3..7e04ca4b 100644 --- a/src/cython/cython/rips_complex.pyx +++ b/src/cython/cython/rips_complex.pyx @@ -40,22 +40,10 @@ cdef extern from "Rips_complex_interface.h" namespace "Gudhi": # RipsComplex python interface cdef class RipsComplex: - """RipsComplex is a simplicial complex constructed from the finite cells - of a Delaunay Triangulation. - - The filtration value of each simplex is computed as the square of the - circumradius of the simplex if the circumsphere is empty (the simplex is - then said to be Gabriel), and as the minimum of the filtration values of - the codimension 1 cofaces that make it not Gabriel otherwise. - - All simplices that have a filtration value strictly greater than a given - alpha squared value are not inserted into the complex. - - .. note:: - - When Rips_complex is constructed with an infinite value of alpha, the - complex is a Delaunay complex. - + """The data structure is a one skeleton graph, or Rips graph, containing + edges when the edge length is less or equal to a given threshold. Edge + length is computed from a user given point cloud with a given distance + function, or a distance matrix. """ cdef Rips_complex_interface * thisptr diff --git a/src/cython/doc/alpha_complex_sum.rst b/src/cython/doc/alpha_complex_sum.rst index af6c087f..0ccbcc21 100644 --- a/src/cython/doc/alpha_complex_sum.rst +++ b/src/cython/doc/alpha_complex_sum.rst @@ -1,23 +1,22 @@ -===================================== ===================================== ===================================== -:Author: Vincent Rouvreau :Introduced in: GUDHI 1.3.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== -:Requires: CGAL ≥ 4.7.0 Eigen3 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Vincent Rouvreau :Introduced in: GUDHI 1.3.0 :Copyright: GPL v3 +:Requires: CGAL :math:`\geq` 4.7.0 Eigen3 +================================================================= =================================== =================================== -+-------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | Alpha_complex is a simplicial complex constructed from the finite | -| img/alpha_complex_representation.png | cells of a Delaunay Triangulation. | -| | | -| | The filtration value of each simplex is computed as the square of the| -| | circumradius of the simplex if the circumsphere is empty (the simplex| -| | is then said to be Gabriel), and as the minimum of the filtration | -| | values of the codimension 1 cofaces that make it not Gabriel | -| | otherwise. All simplices that have a filtration value strictly | -| | greater than a given alpha squared value are not inserted into the | -| | complex. | -| | | -| | This package requires having CGAL version 4.7 or higher (4.8.1 is | -| | advised for better perfomances). | -+-------------------------------------------+----------------------------------------------------------------------+ -| :doc:`alpha_complex_user` | :doc:`alpha_complex_ref` | -+-------------------------------------------+----------------------------------------------------------------------+ ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| .. figure:: | Alpha_complex is a simplicial complex constructed from the finite | +| img/alpha_complex_representation.png | cells of a Delaunay Triangulation. | +| :alt: Alpha complex representation | | +| :figclass: align-center | The filtration value of each simplex is computed as the square of the | +| | circumradius of the simplex if the circumsphere is empty (the simplex | +| Alpha complex representation | is then said to be Gabriel), and as the minimum of the filtration | +| | values of the codimension 1 cofaces that make it not Gabriel | +| | otherwise. All simplices that have a filtration value strictly | +| | greater than a given alpha squared value are not inserted into the | +| | complex. | +| | | +| | This package requires having CGAL version 4.7 or higher (4.8.1 is | +| | advised for better perfomances). | ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| :doc:`alpha_complex_user` | :doc:`alpha_complex_ref` | ++----------------------------------------------------------------+------------------------------------------------------------------------+ diff --git a/src/cython/doc/alpha_complex_user.rst b/src/cython/doc/alpha_complex_user.rst index 1ca96b6e..f1c57248 100644 --- a/src/cython/doc/alpha_complex_user.rst +++ b/src/cython/doc/alpha_complex_user.rst @@ -74,11 +74,13 @@ Data structure In order to build the alpha complex, first, a Simplex tree is built from the cells of a Delaunay Triangulation. (The filtration value is set to NaN, which stands for unknown value): -.. image:: +.. figure:: img/alpha_complex_doc.png - :align: center + :figclass: align-center :alt: Simplex tree structure construction example + Simplex tree structure construction example + Filtration value computation algorithm ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -87,9 +89,9 @@ Filtration value computation algorithm **if** filtration(:math:`\sigma`) is NaN **then** filtration(:math:`\sigma`) = :math:`\alpha^2(\sigma)` **end if** - + *//propagate alpha filtration value* - + **for all** :math:`\tau` face of :math:`\sigma` **if** filtration(:math:`\tau`) is not NaN **then** filtration(:math:`\tau`) = filtration(:math:`\sigma`) @@ -109,11 +111,13 @@ From the example above, it means the algorithm looks into each triangle ([0,1,2] computes the filtration value of the triangle, and then propagates the filtration value as described here: -.. image:: +.. figure:: img/alpha_complex_doc_420.png - :align: center + :figclass: align-center :alt: Filtration value propagation example + Filtration value propagation example + Dimension 1 ^^^^^^^^^^^ diff --git a/src/cython/doc/biblio.rst b/src/cython/doc/biblio.rst index b8e733ed..3995e9c0 100644 --- a/src/cython/doc/biblio.rst +++ b/src/cython/doc/biblio.rst @@ -1,6 +1,5 @@ -============ Bibliography -============ +************ .. bibliography:: bibliography.bib :filter: docnames diff --git a/src/cython/doc/bottleneck_distance_sum.rst b/src/cython/doc/bottleneck_distance_sum.rst index 6cffa122..6fec9b7e 100644 --- a/src/cython/doc/bottleneck_distance_sum.rst +++ b/src/cython/doc/bottleneck_distance_sum.rst @@ -1,15 +1,15 @@ -===================================== ===================================== ===================================== -:Author: Francois Godi :Introduced in: GUDHI 1.4.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== -:Requires: CGAL ≥ 4.8.0 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: François Godi :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3 +:Requires: CGAL :math:`\geq` 4.8.0 +================================================================= =================================== =================================== -+-------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | Bottleneck distance measures the similarity between two persistence | -| img/perturb_pd.png | diagrams. It's the shortest distance b for which there exists a | -| | perfect matching between the points of the two diagrams (+ all the | -| | diagonal points) such that any couple of matched points are at | -| | distance at most b. | -+-------------------------------------------+----------------------------------------------------------------------+ -| :doc:`bottleneck_distance_user` | :doc:`bottleneck_distance_ref` | -+-------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------------------------+----------------------------------------------------------------------+ +| .. figure:: | Bottleneck distance measures the similarity between two persistence | +| img/perturb_pd.png | diagrams. It's the shortest distance b for which there exists a | +| :figclass: align-center | perfect matching between the points of the two diagrams (+ all the | +| | diagonal points) such that any couple of matched points are at | +| Bottleneck distance is the length of | distance at most b. | +| the longest edge | | ++-----------------------------------------------------------------+----------------------------------------------------------------------+ +| :doc:`bottleneck_distance_user` | :doc:`bottleneck_distance_ref` | ++-----------------------------------------------------------------+----------------------------------------------------------------------+ diff --git a/src/cython/doc/bottleneck_distance_user.rst b/src/cython/doc/bottleneck_distance_user.rst index 08c6e451..3bc170f4 100644 --- a/src/cython/doc/bottleneck_distance_user.rst +++ b/src/cython/doc/bottleneck_distance_user.rst @@ -8,7 +8,7 @@ Definition Function -------- -.. automethod:: gudhi.bottleneck_distance +.. autofunction:: gudhi.bottleneck_distance Basic example diff --git a/src/cython/doc/conf.py b/src/cython/doc/conf.py index 8b42ce37..680377b3 100755 --- a/src/cython/doc/conf.py +++ b/src/cython/doc/conf.py @@ -114,7 +114,7 @@ pygments_style = 'sphinx' # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = 'bizstyle' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the diff --git a/src/cython/doc/cubical_complex_sum.rst b/src/cython/doc/cubical_complex_sum.rst index 98e23849..399c2357 100644 --- a/src/cython/doc/cubical_complex_sum.rst +++ b/src/cython/doc/cubical_complex_sum.rst @@ -1,12 +1,15 @@ -===================================== ===================================== ===================================== -:Author: Pawel Dlotko :Introduced in: GUDHI 1.3.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Pawel Dlotko :Introduced in: GUDHI 1.3.0 :Copyright: GPL v3 +================================================================= =================================== =================================== -+---------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | The cubical complex is an example of a structured complex useful in | -| img/Cubical_complex_representation.png | computational mathematics (specially rigorous numerics) and image | -| | analysis. | -+---------------------------------------------+----------------------------------------------------------------------+ -| :doc:`cubical_complex_user` | * :doc:`cubical_complex_ref` | -| | * :doc:`periodic_cubical_complex_ref` | -+---------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------------------------+----------------------------------------------------------------------+ +| .. figure:: | The cubical complex is an example of a structured complex useful in | +| img/Cubical_complex_representation.png | computational mathematics (specially rigorous numerics) and image | +| :alt: Cubical complex representation | analysis. | +| :figclass: align-center | | +| | | +| Cubical complex representation | | ++-----------------------------------------------------------------+----------------------------------------------------------------------+ +| :doc:`cubical_complex_user` | * :doc:`cubical_complex_ref` | +| | * :doc:`periodic_cubical_complex_ref` | ++-----------------------------------------------------------------+----------------------------------------------------------------------+ diff --git a/src/cython/doc/cubical_complex_user.rst b/src/cython/doc/cubical_complex_user.rst index 16712de5..809aaddf 100644 --- a/src/cython/doc/cubical_complex_user.rst +++ b/src/cython/doc/cubical_complex_user.rst @@ -5,7 +5,7 @@ Definition ---------- ===================================== ===================================== ===================================== -:Author: Pawel Dlotko :Introduced in: GUDHI PYTHON 1.4.0 :Copyright: GPL v3 +:Author: Pawel Dlotko :Introduced in: GUDHI PYTHON 1.3.0 :Copyright: GPL v3 ===================================== ===================================== ===================================== +---------------------------------------------+----------------------------------------------------------------------+ @@ -59,10 +59,12 @@ of filtration. This, together with dimension of :math:`\mathcal{K}` and the size directions, allows to determine, dimension, neighborhood, boundary and coboundary of every cube :math:`C \in \mathcal{K}`. -.. image:: +.. figure:: img/Cubical_complex_representation.png - :align: center :alt: Cubical complex. + :figclass: align-center + + Cubical complex. Note that the cubical complex in the figure above is, in a natural way, a product of one dimensional cubical complexes in :math:`\mathbb{R}`. The number of all cubes in each direction is equal :math:`2n+1`, where :math:`n` is @@ -85,10 +87,12 @@ bitmap (2 in the example below). Next d lines are the numbers of top dimensional in the example below). Next, in lexicographical order, the filtration of top dimensional cubes is given (1 4 6 8 20 4 7 6 5 in the example below). -.. image:: +.. figure:: img/exampleBitmap.png - :align: center :alt: Example of a input data. + :figclass: align-center + + Example of a input data. The input file for the following complex is: diff --git a/src/cython/doc/index.rst b/src/cython/doc/index.rst index bd138fd5..236ef3a4 100644 --- a/src/cython/doc/index.rst +++ b/src/cython/doc/index.rst @@ -11,7 +11,6 @@ GUDHI's documentation Introduction ************ -:doc:`biblio` The Gudhi library (Geometry Understanding in Higher Dimensions) is a generic open source C++ library for Computational Topology and Topological Data @@ -44,6 +43,11 @@ Cubical complex .. include:: cubical_complex_sum.rst +Rips complex +============ + +.. include:: rips_complex_sum.rst + Simplex tree ============ diff --git a/src/cython/doc/persistence_graphical_tools_sum.rst b/src/cython/doc/persistence_graphical_tools_sum.rst index a4ee4398..d602daa7 100644 --- a/src/cython/doc/persistence_graphical_tools_sum.rst +++ b/src/cython/doc/persistence_graphical_tools_sum.rst @@ -1,13 +1,12 @@ -===================================== ===================================== ===================================== -:Author: Vincent Rouvreau :Introduced in: GUDHI 1.4.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== -:Requires: Matplotlib Numpy -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Vincent Rouvreau :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3 +:Requires: Matplotlib Numpy +================================================================= =================================== =================================== -+---------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | These graphical tools comes on top of persistence results and allows | -| img/graphical_tools_representation.png | the user to build easily barcode and persistence diagram. | -| | | -+---------------------------------------------+----------------------------------------------------------------------+ -| :doc:`persistence_graphical_tools_user` | :doc:`persistence_graphical_tools_ref` | -+---------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------------+ +| .. figure:: | These graphical tools comes on top of persistence results and allows | +| img/graphical_tools_representation.png | the user to build easily barcode and persistence diagram. | +| | | ++-----------------------------------------------------------------+-----------------------------------------------------------------------+ +| :doc:`persistence_graphical_tools_user` | :doc:`persistence_graphical_tools_ref` | ++-----------------------------------------------------------------+-----------------------------------------------------------------------+ diff --git a/src/cython/doc/persistent_cohomology_sum.rst b/src/cython/doc/persistent_cohomology_sum.rst index cf3029fc..5d059b00 100644 --- a/src/cython/doc/persistent_cohomology_sum.rst +++ b/src/cython/doc/persistent_cohomology_sum.rst @@ -1,25 +1,27 @@ -===================================== ===================================== ===================================== -:Author: Clément Maria :Introduced in: GUDHI 1.0.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Clément Maria :Introduced in: GUDHI 1.0.0 :Copyright: GPL v3 +================================================================= =================================== =================================== -+---------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | The theory of homology consists in attaching to a topological space | -| img/3DTorus_poch.png | a sequence of (homology) groups, capturing global topological | -| | features like connected components, holes, cavities, etc. Persistent | -| | homology studies the evolution -- birth, life and death -- of these | -| | features when the topological space is changing. Consequently, the | -| | theory is essentially composed of three elements: topological spaces,| -| | their homology groups and an evolution scheme. | -| | | -| | Computation of persistent cohomology using the algorithm of | -| | :cite:`DBLP:journals/dcg/SilvaMV11` and | -| | :cite:`DBLP:journals/corr/abs-1208-5018` and the Compressed | -| | Annotation Matrix implementation of | -| | :cite:`DBLP:conf/esa/BoissonnatDM13`. | -| | | -+---------------------------------------------+----------------------------------------------------------------------+ -| :doc:`persistent_cohomology_user` | Please refer to each data structure that contains persistence | -| | feature for reference: | -| | | -| | * :doc:`simplex_tree_ref` | -+---------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------------+ +| .. figure:: | The theory of homology consists in attaching to a topological space | +| img/3DTorus_poch.png | a sequence of (homology) groups, capturing global topological | +| :figclass: align-center | features like connected components, holes, cavities, etc. Persistent | +| | homology studies the evolution -- birth, life and death -- of these | +| Rips Persistent Cohomology on a 3D | features when the topological space is changing. Consequently, the | +| Torus | theory is essentially composed of three elements: topological spaces, | +| | their homology groups and an evolution scheme. | +| | | +| | Computation of persistent cohomology using the algorithm of | +| | :cite:`DBLP:journals/dcg/SilvaMV11` and | +| | :cite:`DBLP:journals/corr/abs-1208-5018` and the Compressed | +| | Annotation Matrix implementation of | +| | :cite:`DBLP:conf/esa/BoissonnatDM13`. | +| | | ++-----------------------------------------------------------------+-----------------------------------------------------------------------+ +| :doc:`persistent_cohomology_user` | Please refer to each data structure that contains persistence | +| | feature for reference: | +| | | +| | * :doc:`simplex_tree_ref` | +| | * :doc:`cubical_complex_ref` | +| | * :doc:`periodic_cubical_complex_ref` | ++-----------------------------------------------------------------+-----------------------------------------------------------------------+ diff --git a/src/cython/doc/rips_complex_ref.rst b/src/cython/doc/rips_complex_ref.rst new file mode 100644 index 00000000..b17dc4e0 --- /dev/null +++ b/src/cython/doc/rips_complex_ref.rst @@ -0,0 +1,10 @@ +============================= +Rips complex reference manual +============================= + +.. autoclass:: gudhi.RipsComplex + :members: + :undoc-members: + :show-inheritance: + + .. automethod:: gudhi.RipsComplex.__init__ diff --git a/src/cython/doc/rips_complex_sum.rst b/src/cython/doc/rips_complex_sum.rst new file mode 100644 index 00000000..ad57e54e --- /dev/null +++ b/src/cython/doc/rips_complex_sum.rst @@ -0,0 +1,17 @@ +================================================================= =================================== =================================== +:Author: Clément Maria, Pawel Dlotko, Vincent Rouvreau :Introduced in: GUDHI 1.0.0 :Copyright: GPL v3 +================================================================= =================================== =================================== + ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| .. figure:: | Rips_complex is a simplicial complex constructed from a one skeleton | +| img/rips_complex_representation.png | graph. | +| :figclass: align-center | | +| | The filtration value of each edge is computed from a user-given | +| Rips complex representation | distance function and is inserted until a user-given threshold | +| | value. | +| | | +| | This complex can be built from a point cloud and a distance function, | +| | or from a distance matrix. | ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| :doc:`rips_complex_user` | :doc:`rips_complex_ref` | ++----------------------------------------------------------------+------------------------------------------------------------------------+ diff --git a/src/cython/doc/rips_complex_user.rst b/src/cython/doc/rips_complex_user.rst new file mode 100644 index 00000000..be9481de --- /dev/null +++ b/src/cython/doc/rips_complex_user.rst @@ -0,0 +1,133 @@ +========================= +Rips complex user manual +========================= +Definition +---------- + +======================================================= ===================================== ===================================== +:Authors: Clément Maria, Pawel Dlotko, Vincent Rouvreau :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3 +======================================================= ===================================== ===================================== + ++-------------------------------------------+----------------------------------------------------------------------+ +| :doc:`rips_complex_user` | :doc:`rips_complex_ref` | ++-------------------------------------------+----------------------------------------------------------------------+ + +`Rips complex `_ is a one skeleton graph that allows to +construct a simplicial complex from it. The input can be a point cloud with a given distance function, or a distance +matrix. + +The filtration value of each edge is computed from a user-given distance function, or directly from the distance +matrix. + +All edges that have a filtration value strictly greater than a given threshold value are not inserted into the complex. + +When creating a simplicial complex from this one skeleton graph, Rips inserts the one skeleton graph into the data +structure, and then expands the simplicial complex when required. + +Vertex name correspond to the index of the point in the given range (aka. the point cloud). + +.. figure:: + img/rips_complex_representation.png + :align: center + + Rips-complex one skeleton graph representation + +On this example, as edges (4,5), (4,6) and (5,6) are in the complex, simplex (4,5,6) is added with the filtration value +set with :math:`max(filtration(4,5), filtration(4,6), filtration(5,6))`. And so on for simplex (0,1,2,3). + +If the Rips_complex interfaces are not detailed enough for your need, please refer to rips_persistence_step_by_step.cpp +example, where the graph construction over the Simplex_tree is more detailed. + +Point cloud and distance function +--------------------------------- + +Example from a point cloud and a distance function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This example builds the one skeleton graph from the given points, threshold value, and distance function. Then it +creates a :doc:`Simplex_tree ` with it. + +Then, it is asked to display information about the simplicial complex. + +.. testcode:: + + import gudhi + rips_complex = gudhi.RipsComplex(points=[[1, 1], [7, 0], [4, 6], [9, 6], [0, 14], [2, 19], [9, 17]], + max_edge_length=12.0) + + simplex_tree = rips_complex.create_simplex_tree(max_dimension=1) + result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \ + repr(simplex_tree.num_simplices()) + ' simplices - ' + \ + repr(simplex_tree.num_vertices()) + ' vertices.' + print(result_str) + for filtered_value in simplex_tree.get_filtered_tree(): + print(filtered_value) + +The output is: + +.. testoutput:: + + Rips complex is of dimension 1 - 18 simplices - 7 vertices. + ([0], 0.0) + ([1], 0.0) + ([2], 0.0) + ([3], 0.0) + ([4], 0.0) + ([5], 0.0) + ([6], 0.0) + ([2, 3], 5.0) + ([4, 5], 5.385164807134504) + ([0, 2], 5.830951894845301) + ([0, 1], 6.082762530298219) + ([1, 3], 6.324555320336759) + ([1, 2], 6.708203932499369) + ([5, 6], 7.280109889280518) + ([2, 4], 8.94427190999916) + ([0, 3], 9.433981132056603) + ([4, 6], 9.486832980505138) + ([3, 6], 11.0) + +Example from OFF file +^^^^^^^^^^^^^^^^^^^^^ + +This example builds the :doc:`Rips_complex ` from the given points in an OFF file, threshold value, +and distance function. Then it creates a :doc:`Simplex_tree ` with it. + +Then, it is asked to display information about the Rips complex. + + +.. testcode:: + + import gudhi + rips_complex = gudhi.RipsComplex(off_file='alphacomplexdoc.off', max_edge_length=12.0) + simplex_tree = rips_complex.create_simplex_tree(max_dimension=1) + result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \ + repr(simplex_tree.num_simplices()) + ' simplices - ' + \ + repr(simplex_tree.num_vertices()) + ' vertices.' + print(result_str) + for filtered_value in simplex_tree.get_filtered_tree(): + print(filtered_value) + +the program output is: + +.. testoutput:: + + Rips complex is of dimension 1 - 18 simplices - 7 vertices. + ([0], 0.0) + ([1], 0.0) + ([2], 0.0) + ([3], 0.0) + ([4], 0.0) + ([5], 0.0) + ([6], 0.0) + ([2, 3], 5.0) + ([4, 5], 5.385164807134504) + ([0, 2], 5.830951894845301) + ([0, 1], 6.082762530298219) + ([1, 3], 6.324555320336759) + ([1, 2], 6.708203932499369) + ([5, 6], 7.280109889280518) + ([2, 4], 8.94427190999916) + ([0, 3], 9.433981132056603) + ([4, 6], 9.486832980505138) + ([3, 6], 11.0) diff --git a/src/cython/doc/simplex_tree_sum.rst b/src/cython/doc/simplex_tree_sum.rst index 0f34888a..b79cf4fd 100644 --- a/src/cython/doc/simplex_tree_sum.rst +++ b/src/cython/doc/simplex_tree_sum.rst @@ -1,13 +1,14 @@ -===================================== ===================================== ===================================== -:Author: Clément Maria :Introduced in: GUDHI 1.0.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Clément Maria :Introduced in: GUDHI 1.0.0 :Copyright: GPL v3 +================================================================= =================================== =================================== -+-------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | The simplex tree is an efficient and flexible data structure for | -| img/Simplex_tree_representation.png | representing general (filtered) simplicial complexes. | -| | | -| | The data structure is described in | -| | :cite:`boissonnatmariasimplextreealgorithmica` | -+-------------------------------------------+----------------------------------------------------------------------+ -| :doc:`simplex_tree_user` | :doc:`simplex_tree_ref` | -+-------------------------------------------+----------------------------------------------------------------------+ ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| .. figure:: | The simplex tree is an efficient and flexible data structure for | +| img/Simplex_tree_representation.png | representing general (filtered) simplicial complexes. | +| :alt: Simplex tree representation | | +| :figclass: align-center | The data structure is described in | +| | :cite:`boissonnatmariasimplextreealgorithmica` | +| Simplex tree representation | | ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| :doc:`simplex_tree_user` | :doc:`simplex_tree_ref` | ++----------------------------------------------------------------+------------------------------------------------------------------------+ diff --git a/src/cython/doc/tangential_complex_sum.rst b/src/cython/doc/tangential_complex_sum.rst index 4e358a7b..2b05bc10 100644 --- a/src/cython/doc/tangential_complex_sum.rst +++ b/src/cython/doc/tangential_complex_sum.rst @@ -1,16 +1,15 @@ -===================================== ===================================== ===================================== -:Author: Clément Jamin :Introduced in: GUDHI 1.4.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== -:Requires: CGAL ≥ 4.8.0 Eigen3 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Clément Jamin :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3 +:Requires: CGAL :math:`\geq` 4.8.0 Eigen3 +================================================================= =================================== =================================== -+-------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | A Tangential Delaunay complex is a simplicial complex designed to | -| img/tc_examples.png | reconstruct a :math:`k`-dimensional manifold embedded in :math:`d`- | -| | dimensional Euclidean space. The input is a point sample coming from | -| | an unknown manifold. The running time depends only linearly on the | -| | extrinsic dimension :math:`d` and exponentially on the intrinsic | -| | dimension :math:`k`. | -+-------------------------------------------+----------------------------------------------------------------------+ -| :doc:`tangential_complex_user` | :doc:`tangential_complex_ref` | -+-------------------------------------------+----------------------------------------------------------------------+ ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| .. figure:: | A Tangential Delaunay complex is a simplicial complex designed to | +| img/tc_examples.png | reconstruct a :math:`k`-dimensional manifold embedded in :math:`d`- | +| :figclass: align-center | dimensional Euclidean space. The input is a point sample coming from | +| | an unknown manifold. The running time depends only linearly on the | +| **Tangential complex representation** | extrinsic dimension :math:`d` and exponentially on the intrinsic | +| | dimension :math:`k`. | ++----------------------------------------------------------------+------------------------------------------------------------------------+ +| :doc:`tangential_complex_user` | :doc:`tangential_complex_ref` | ++----------------------------------------------------------------+------------------------------------------------------------------------+ diff --git a/src/cython/doc/tangential_complex_user.rst b/src/cython/doc/tangential_complex_user.rst index 7b6c9e79..2679528c 100644 --- a/src/cython/doc/tangential_complex_user.rst +++ b/src/cython/doc/tangential_complex_user.rst @@ -26,6 +26,7 @@ example, with :math:`k = 1` and :math:`d = 2`. The input data is 4 points .. figure:: img/tc_example_01.png :alt: The input :figclass: align-center + The input For each point :math:`p`, estimate its tangent subspace :math:`T_p` (e.g. @@ -34,8 +35,10 @@ using PCA). .. figure:: img/tc_example_02.png :alt: The estimated normals :figclass: align-center + The estimated normals + Let us add the Voronoi diagram of the points in orange. For each point :math:`p`, construct its star in the Delaunay triangulation of :math:`P` restricted to :math:`T_p`. @@ -43,6 +46,7 @@ restricted to :math:`T_p`. .. figure:: img/tc_example_03.png :alt: The Voronoi diagram :figclass: align-center + The Voronoi diagram The Tangential Delaunay complex is the union of those stars. @@ -62,6 +66,7 @@ Let us take the same example. .. figure:: img/tc_example_07_before.png :alt: Before :figclass: align-center + Before Let us slightly move the tangent subspace :math:`T_q` @@ -69,6 +74,7 @@ Let us slightly move the tangent subspace :math:`T_q` .. figure:: img/tc_example_07_after.png :alt: After :figclass: align-center + After Now, the star of :math:`Q` contains :math:`QP`, but the star of :math:`P` does @@ -77,6 +83,7 @@ not contain :math:`QP`. We have an inconsistency. .. figure:: img/tc_example_08.png :alt: After :figclass: align-center + After One way to solve inconsistencies is to randomly perturb the positions of the diff --git a/src/cython/doc/witness_complex_sum.rst b/src/cython/doc/witness_complex_sum.rst index 005a5a41..22ef36ea 100644 --- a/src/cython/doc/witness_complex_sum.rst +++ b/src/cython/doc/witness_complex_sum.rst @@ -1,25 +1,25 @@ -===================================== ===================================== ===================================== -:Author: Siargey Kachanovich :Introduced in: GUDHI 1.3.0 :Copyright: GPL v3 -===================================== ===================================== ===================================== +================================================================= =================================== =================================== +:Author: Siargey Kachanovich :Introduced in: GUDHI 1.3.0 :Copyright: GPL v3 +================================================================= =================================== =================================== -+---------------------------------------------+----------------------------------------------------------------------+ -| .. image:: | Witness complex :math:`Wit(W,L)` is a simplicial complex defined on | -| img/Witness_complex_representation.png | two sets of points in :math:`\mathbb{R}^D`:Wit(W,L)` is a simplicial | -| | complex defined on two sets of points in :math:`\mathbb{R}^D`: | -| | | -| | * :math:`W` set of **witnesses** and | -| | * :math:`L \subseteq W` set of **landmarks**. | -| | | -| | The simplices are based on landmarks and a simplex belongs to the | -| | witness complex if and only if it is witnessed, that is: | -| | | -| | :math:`\sigma \subset L` is witnessed if there exists a point | -| | :math:`w \in W` such that w is closer to the vertices of | -| | :math:`\sigma` than other points in :math:`L` and all of its faces | -| | are witnessed as well. | -| | | -| | The data structure is described in | -| | :cite:`boissonnatmariasimplextreealgorithmica`. | -+---------------------------------------------+----------------------------------------------------------------------+ -| :doc:`witness_complex_user` | :doc:`witness_complex_ref` | -+---------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------------------------+----------------------------------------------------------------------+ +| .. image:: | Witness complex :math:`Wit(W,L)` is a simplicial complex defined on | +| img/Witness_complex_representation.png | two sets of points in :math:`\mathbb{R}^D`:Wit(W,L)` is a simplicial | +| | complex defined on two sets of points in :math:`\mathbb{R}^D`: | +| | | +| | * :math:`W` set of **witnesses** and | +| | * :math:`L \subseteq W` set of **landmarks**. | +| | | +| | The simplices are based on landmarks and a simplex belongs to the | +| | witness complex if and only if it is witnessed, that is: | +| | | +| | :math:`\sigma \subset L` is witnessed if there exists a point | +| | :math:`w \in W` such that w is closer to the vertices of | +| | :math:`\sigma` than other points in :math:`L` and all of its faces | +| | are witnessed as well. | +| | | +| | The data structure is described in | +| | :cite:`boissonnatmariasimplextreealgorithmica`. | ++-----------------------------------------------------------------+----------------------------------------------------------------------+ +| :doc:`witness_complex_user` | :doc:`witness_complex_ref` | ++-----------------------------------------------------------------+----------------------------------------------------------------------+ -- cgit v1.2.3