summaryrefslogtreecommitdiff
path: root/cython/doc/tangential_complex_user.rst
diff options
context:
space:
mode:
Diffstat (limited to 'cython/doc/tangential_complex_user.rst')
-rw-r--r--cython/doc/tangential_complex_user.rst201
1 files changed, 0 insertions, 201 deletions
diff --git a/cython/doc/tangential_complex_user.rst b/cython/doc/tangential_complex_user.rst
deleted file mode 100644
index 5ce69e86..00000000
--- a/cython/doc/tangential_complex_user.rst
+++ /dev/null
@@ -1,201 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Tangential complex user manual
-==============================
-.. include:: tangential_complex_sum.inc
-
-Definition
-----------
-
-A Tangential Delaunay complex is a simplicial complex designed to reconstruct a
-:math:`k`-dimensional smooth manifold embedded in :math:`d`-dimensional
-Euclidean space. The input is a point sample coming from an unknown manifold,
-which means that the points lie close to a structure of "small" intrinsic
-dimension. The running time depends only linearly on the extrinsic dimension
-:math:`d` and exponentially on the intrinsic dimension :math:`k`.
-
-An extensive description of the Tangential complex can be found in
-:cite:`tangentialcomplex2014`.
-
-What is a Tangential Complex?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Let us start with the description of the Tangential complex of a simple
-example, with :math:`k = 1` and :math:`d = 2`. The input data is 4 points
-:math:`P` located on a curve embedded in 2D.
-
-.. figure:: ../../doc/Tangential_complex/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.
-using PCA).
-
-.. figure:: ../../doc/Tangential_complex/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`.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_03.png
- :alt: The Voronoi diagram
- :figclass: align-center
-
- The Voronoi diagram
-
-The Tangential Delaunay complex is the union of those stars.
-
-In practice, neither the ambient Voronoi diagram nor the ambient Delaunay
-triangulation is computed. Instead, local :math:`k`-dimensional regular
-triangulations are computed with a limited number of points as we only need the
-star of each point. More details can be found in :cite:`tangentialcomplex2014`.
-
-Inconsistencies
-^^^^^^^^^^^^^^^
-Inconsistencies between the stars can occur. An inconsistency occurs when a
-simplex is not in the star of all its vertices.
-
-Let us take the same example.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_07_before.png
- :alt: Before
- :figclass: align-center
-
- Before
-
-Let us slightly move the tangent subspace :math:`T_q`
-
-.. figure:: ../../doc/Tangential_complex/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
-not contain :math:`QP`. We have an inconsistency.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_08.png
- :alt: After
- :figclass: align-center
-
- After
-
-One way to solve inconsistencies is to randomly perturb the positions of the
-points involved in an inconsistency. In the current implementation, this
-perturbation is done in the tangent subspace of each point. The maximum
-perturbation radius is given as a parameter to the constructor.
-
-In most cases, we recommend to provide a point set where the minimum distance
-between any two points is not too small. This can be achieved using the
-functions provided by the Subsampling module. Then, a good value to start with
-for the maximum perturbation radius would be around half the minimum distance
-between any two points. The Example with perturbation below shows an example of
-such a process.
-
-In most cases, this process is able to dramatically reduce the number of
-inconsistencies, but is not guaranteed to succeed.
-
-Output
-^^^^^^
-The result of the computation is exported as a Simplex_tree. It is the union of
-the stars of all the input points. A vertex in the Simplex Tree is the index of
-the point in the range provided by the user. The point corresponding to a
-vertex can also be obtained through the Tangential_complex::get_point function.
-Note that even if the positions of the points are perturbed, their original
-positions are kept (e.g. Tangential_complex::get_point returns the original
-position of the point).
-
-The result can be obtained after the computation of the Tangential complex
-itself and/or after the perturbation process.
-
-
-Simple example
---------------
-
-This example builds the Tangential complex of point set read in an OFF file.
-
-.. testcode::
-
- import gudhi
- tc = gudhi.TangentialComplex(intrisic_dim = 1,
- off_file=gudhi.__root_source_dir__ + '/data/points/alphacomplexdoc.off')
- result_str = 'Tangential contains ' + repr(tc.num_simplices()) + \
- ' simplices - ' + repr(tc.num_vertices()) + ' vertices.'
- print(result_str)
-
- st = tc.create_simplex_tree()
- result_str = 'Simplex tree is of dimension ' + repr(st.dimension()) + \
- ' - ' + repr(st.num_simplices()) + ' simplices - ' + \
- repr(st.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in st.get_filtration():
- print(filtered_value[0])
-
-The output is:
-
-.. testoutput::
-
- Tangential contains 12 simplices - 7 vertices.
- Simplex tree is of dimension 1 - 15 simplices - 7 vertices.
- [0]
- [1]
- [0, 1]
- [2]
- [0, 2]
- [1, 2]
- [3]
- [1, 3]
- [4]
- [2, 4]
- [5]
- [4, 5]
- [6]
- [3, 6]
- [5, 6]
-
-
-Example with perturbation
--------------------------
-
-This example builds the Tangential complex of a point set, then tries to solve
-inconsistencies by perturbing the positions of points involved in inconsistent
-simplices.
-
-.. testcode::
-
- import gudhi
- tc = gudhi.TangentialComplex(intrisic_dim = 1,
- points=[[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])
- result_str = 'Tangential contains ' + repr(tc.num_vertices()) + ' vertices.'
- print(result_str)
-
- if tc.num_inconsistent_simplices() > 0:
- print('Tangential contains inconsistencies.')
-
- tc.fix_inconsistencies_using_perturbation(10, 60)
- if tc.num_inconsistent_simplices() == 0:
- print('Inconsistencies has been fixed.')
-
-The output is:
-
-.. testoutput::
-
- Tangential contains 4 vertices.
- Inconsistencies has been fixed.
-
-
-Bibliography
-============
-
-.. bibliography:: ../../biblio/bibliography.bib
- :filter: docnames
- :style: unsrt