/*! \mainpage * \tableofcontents * \image html "Gudhi_banner.png" "" width=20cm * * \section Introduction Introduction * The GUDHI library (Geometry Understanding in Higher Dimensions) is a generic open source * C++ library, with a * Python interface, for * Computational Topology and Topological Data Analysis * (TDA). * The GUDHI library intends to help the development of new algorithmic solutions in TDA and their transfer to * applications. It provides robust, efficient, flexible and easy to use implementations of state-of-the-art * algorithms and data structures. * * The current release of the GUDHI library includes: * * \li Data structures to represent, construct and manipulate simplicial complexes. * \li Simplification of simplicial complexes by edge contraction. * \li Algorithms to compute persistent homology persistent homology. * * All data-structures are generic and several of their aspects can be parameterized via template classes. * We refer to \cite gudhilibrary_ICMS14 for a detailed description of the design of the library. * \section DataStructures Data structures \subsection AlphaComplexDataStructure Alpha complex \image html "alpha_complex_representation.png" "Alpha complex representation"
Author: Vincent Rouvreau
Introduced in: GUDHI 1.3.0
Copyright: GPL v3
Requires: \ref cgal ≥ 4.7.0 and \ref eigen3
Alpha_complex 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.
User manual: \ref alpha_complex - Reference manual: Gudhi::alpha_complex::Alpha_complex
\subsection CubicalComplexDataStructure Cubical complex \image html "Cubical_complex_representation.png" "Cubical complex representation" \subsection RipsComplexDataStructure Rips complex \image html "rips_complex_representation.png" "Rips complex representation"
Author: Pawel Dlotko
Introduced in: GUDHI 1.3.0
Copyright: GPL v3
The cubical complex is an example of a structured complex useful in computational mathematics (specially rigorous numerics) and image analysis.
User manual: \ref cubical_complex - Reference manual: Gudhi::cubical_complex::Bitmap_cubical_complex
Author: Clément Maria, Pawel Dlotko, Vincent Rouvreau
Introduced in: GUDHI 2.0.0
Copyright: GPL v3
Rips_complex is a simplicial complex constructed from a one skeleton graph.
The filtration value of each edge is computed from a user-given 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.
User manual: \ref rips_complex - Reference manual: Gudhi::rips_complex::Rips_complex
\subsection SimplexTreeDataStructure Simplex tree \image html "Simplex_tree_representation.png" "Simplex tree representation"
Author: Clément Maria
Introduced in: GUDHI 1.0.0
Copyright: GPL v3
The simplex tree is an efficient and flexible data structure for representing general (filtered) simplicial complexes. The data structure is described in \cite boissonnatmariasimplextreealgorithmica .
User manual: \ref simplex_tree - Reference manual: Gudhi::Simplex_tree
\subsection SkeletonBlockerDataStructure Skeleton blocker \image html "ds_representation.png" "Skeleton blocker representation"
Author: David Salinas
Introduced in: GUDHI 1.1.0
Copyright: GPL v3
The Skeleton-Blocker data-structure proposes a light encoding for simplicial complexes by storing only an *implicit* representation of its simplices \cite socg_blockers_2011,\cite blockers2012. Intuitively, it just stores the 1-skeleton of a simplicial complex with a graph and the set of its "missing faces" that is very small in practice. This data-structure handles all simplicial complexes operations such as simplex enumeration or simplex removal but operations that are particularly efficient are operations that do not require simplex enumeration such as edge iteration, link computation or simplex contraction.
User manual: \ref skbl - Reference manual: Gudhi::skeleton_blocker::Skeleton_blocker_complex
\subsection TangentialComplexDataStructure Tangential complex \image html "tc_examples.png" "Tangential complex representation"
Author: Clément Jamin
Introduced in: GUDHI 2.0.0
Copyright: GPL v3
Requires: \ref cgal ≥ 4.8.1 and \ref eigen3
A Tangential Delaunay complex is a simplicial complex designed to reconstruct a \f$ k \f$-dimensional manifold embedded in \f$ d \f$-dimensional Euclidean space. The input is a point sample coming from an unknown manifold. The running time depends only linearly on the extrinsic dimension \f$ d \f$ and exponentially on the intrinsic dimension \f$ k \f$.
User manual: \ref tangential_complex - Reference manual: Gudhi::tangential_complex::Tangential_complex
\subsection WitnessComplexDataStructure Witness complex \image html "Witness_complex_representation.png" "Witness complex representation"
Author: Siargey Kachanovich
Introduced in: GUDHI 1.3.0
Copyright: GPL v3
Euclidean version requires: \ref cgal ≥ 4.6.0 and \ref eigen3
Witness complex \f$ Wit(W,L) \f$ is a simplicial complex defined on two sets of points in \f$\mathbb{R}^D\f$. The data structure is described in \cite boissonnatmariasimplextreealgorithmica .
User manual: \ref witness_complex - Reference manual: Gudhi::witness_complex::SimplicialComplexForWitness
\section Toolbox Toolbox \subsection BottleneckDistanceToolbox Bottleneck distance \image html "perturb_pd.png" "Bottleneck distance is the length of the longest edge"
Author: François Godi
Introduced in: GUDHI 2.0.0
Copyright: GPL v3
Requires: \ref cgal ≥ 4.8.1 and \ref eigen3
Bottleneck distance measures the similarity between two persistence 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.
User manual: \ref bottleneck_distance
\subsection ContractionToolbox Contraction \image html "sphere_contraction_representation.png" "Sphere contraction example"
Author: David Salinas
Introduced in: GUDHI 1.1.0
Copyright: GPL v3
The purpose of this package is to offer a user-friendly interface for edge contraction simplification of huge simplicial complexes. It uses the \ref skbl data-structure whose size remains small during simplification of most used geometrical complexes of topological data analysis such as the Rips or the Delaunay complexes. In practice, the size of this data-structure is even much lower than the total number of simplices.
User manual: \ref contr
\subsection PersistentCohomologyToolbox Persistent Cohomology \image html "3DTorus_poch.png" "Rips Persistent Cohomology on a 3D Torus"
Author: Clément Maria
Introduced in: GUDHI 1.0.0
Copyright: GPL v3
The theory of homology consists in attaching to a topological space 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 .
User manual: \ref persistent_cohomology - Reference manual: Gudhi::persistent_cohomology::Persistent_cohomology
*/ /*! \page installation GUDHI installation * \tableofcontents * As GUDHI is a header only library, there is no need to install the library. * * Examples of GUDHI headers inclusion can be found in \ref demos. * * \section compiling Compiling * The library uses c++11 and requires Boost with version 1.48.0 or * more recent. It is a multi-platform library and compiles on Linux, Mac OSX and Visual Studio 2015. * * \subsection demos Demos and examples * To build the demos and examples, run the following commands in a terminal: \verbatim cd /path-to-gudhi/ mkdir build cd build/ cmake .. make \endverbatim * A list of examples is available here. * * \subsection testsuites Test suites * To test your build, run the following command in a terminal: * \verbatim make test \endverbatim * * \subsection documentationgeneration Documentation * To generate the documentation, Doxygen is required. * Run the following command in a terminal: \verbatim make doxygen # Documentation will be generated in the folder YYYY-MM-DD-hh-mm-ss_GUDHI_X.Y.Z/doc/html/ # You can customize the directory name by calling `cmake -DUSER_VERSION_DIR=/my/custom/folder` \endverbatim * * \section optionallibrary Optional third-party library * \subsection gmp GMP * The multi-field persistent homology algorithm requires GMP which is a free library for arbitrary-precision * arithmetic, operating on signed integers, rational numbers, and floating point numbers. * * The following example requires the GNU Multiple Precision Arithmetic * Library (GMP) and will not be built if GMP is not installed: * \li * Persistent_cohomology/rips_multifield_persistence.cpp * * Having GMP version 4.2 or higher installed is recommended. * * \subsection cgal CGAL * The \ref alpha_complex data structure, \ref bottleneck_distance, and few examples requires CGAL, which is a C++ * library which provides easy access to efficient and reliable geometric algorithms. * * \note There is no need to install CGAL, you can just cmake . && make CGAL (or even * cmake -DCGAL_HEADER_ONLY=ON . for CGAL version ≥ 4.8.0), thereafter you will be able to compile * GUDHI by calling cmake -DCGAL_DIR=/your/path/to/CGAL-X.Y .. && make * * Having CGAL version 4.4.0 or higher installed is recommended. The procedure to install this library according to * your operating system is detailed here http://doc.cgal.org/latest/Manual/installation.html * * The following examples require the Computational Geometry Algorithms * Library (CGAL \cite cgal:eb-15b) and will not be built if CGAL is not installed: * \li * Persistent_cohomology/alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/exact_alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/weighted_alpha_complex_3d_persistence.cpp * \li * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp * * The following example requires CGAL version ≥ 4.6.0: * \li * Witness_complex/witness_complex_sphere.cpp * * The following example requires CGAL version ≥ 4.7.0: * \li * Alpha_complex/Alpha_complex_from_off.cpp * \li * Alpha_complex/Alpha_complex_from_points.cpp * \li * Persistent_cohomology/alpha_complex_persistence.cpp * \li * Persistent_cohomology/periodic_alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/custom_persistence_sort.cpp * * The following example requires CGAL version ≥ 4.8.1: * \li * Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp.cpp * \li * Bottleneck_distance/bottleneck_basic_example.cpp * \li * Bottleneck_distance/bottleneck_read_file_example.cpp * \li * Spatial_searching/example_spatial_searching.cpp * \li * Subsampling/example_choose_n_farthest_points.cpp * \li * Subsampling/example_custom_kernel.cpp * \li * Subsampling/example_pick_n_random_points.cpp * \li * Subsampling/example_sparsify_point_set.cpp * \li * Tangential_complex/example_basic.cpp * \li * Tangential_complex/example_with_perturb.cpp * * \subsection eigen3 Eigen3 * The \ref alpha_complex data structure and few examples requires * Eigen3 is a C++ template library for linear algebra: * matrices, vectors, numerical solvers, and related algorithms. * * The following example requires the Eigen3 and will not be * built if Eigen3 is not installed: * \li * Alpha_complex/Alpha_complex_from_off.cpp * \li * Alpha_complex/Alpha_complex_from_points.cpp * \li * Persistent_cohomology/alpha_complex_persistence.cpp * \li * Persistent_cohomology/periodic_alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/custom_persistence_sort.cpp * * \subsection tbb Threading Building Blocks * Intel® TBB lets you easily write parallel * C++ programs that take full advantage of multicore performance, that are portable and composable, and that have * future-proof scalability. * * Having Intel® TBB installed is recommended to parallelize and accelerate some GUDHI computations. * * The following examples are using Intel® TBB if installed: * \li * Alpha_complex/Alpha_complex_from_off.cpp * \li * Alpha_complex/Alpha_complex_from_points.cpp * \li * Bitmap_cubical_complex/Bitmap_cubical_complex.cpp * \li * Bitmap_cubical_complex/Bitmap_cubical_complex_periodic_boundary_conditions.cpp * \li * Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp * \li * Persistent_cohomology/alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/alpha_complex_persistence.cpp * \li * Simplex_tree/simple_simplex_tree.cpp * \li * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp * \li * Simplex_tree/simplex_tree_from_cliques_of_graph.cpp * \li * Persistent_cohomology/alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/alpha_complex_persistence.cpp * \li * Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp * \li * Persistent_cohomology/persistence_from_file.cpp * \li * Persistent_cohomology/persistence_from_simple_simplex_tree.cpp * \li * Persistent_cohomology/plain_homology.cpp * \li * Persistent_cohomology/rips_distance_matrix_persistence.cpp * \li * Persistent_cohomology/rips_multifield_persistence.cpp * \li * Persistent_cohomology/rips_persistence.cpp * \li * Persistent_cohomology/rips_persistence_step_by_step.cpp * \li * Persistent_cohomology/exact_alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/weighted_alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/periodic_alpha_complex_3d_persistence.cpp * \li * Persistent_cohomology/custom_persistence_sort.cpp * \li * Rips_complex/example_one_skeleton_rips_from_points.cpp * \li * Rips_complex/example_rips_complex_from_off_file.cpp * * \section Contributions Bug reports and contributions * Please help us improving the quality of the GUDHI library. You may report bugs or suggestions to: * \verbatim Contact: gudhi-users@lists.gforge.inria.fr \endverbatim * * GUDHI is open to external contributions. If you want to join our development team, please contact us. * */ /*! \page Citation Acknowledging the GUDHI library * We kindly ask users to cite the GUDHI library as appropriately as possible in their papers, and to mention the use * of the GUDHI library on the web pages of their projects using GUDHI and provide us with links to these web pages. * Feel free to contact us in case you have any question or remark on this topic. * * We provide \ref GudhiBibtex entries for the modules of the User and Reference Manual, as well as for publications * directly related to the GUDHI library. * \section GudhiBibtex GUDHI bibtex * \verbinclude biblio/how_to_cite_gudhi.bib */ // List of GUDHI examples - Doxygen needs at least a file tag to analyse comments /*! @file Examples * @example Alpha_complex/Alpha_complex_from_off.cpp * @example Alpha_complex/Alpha_complex_from_points.cpp * @example Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp * @example Bottleneck_distance/bottleneck_basic_example.cpp * @example Bottleneck_distance/bottleneck_read_file_example.cpp * @example Bitmap_cubical_complex/Bitmap_cubical_complex.cpp * @example Bitmap_cubical_complex/Bitmap_cubical_complex_periodic_boundary_conditions.cpp * @example Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp * @example common/example_CGAL_3D_points_off_reader.cpp * @example common/example_CGAL_points_off_reader.cpp * @example Contraction/Garland_heckbert.cpp * @example Contraction/Rips_contraction.cpp * @example Persistent_cohomology/alpha_complex_3d_persistence.cpp * @example Persistent_cohomology/alpha_complex_persistence.cpp * @example Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp * @example Persistent_cohomology/exact_alpha_complex_3d_persistence.cpp * @example Persistent_cohomology/weighted_alpha_complex_3d_persistence.cpp * @example Persistent_cohomology/periodic_alpha_complex_3d_persistence.cpp * @example Persistent_cohomology/persistence_from_file.cpp * @example Persistent_cohomology/persistence_from_simple_simplex_tree.cpp * @example Persistent_cohomology/plain_homology.cpp * @example Persistent_cohomology/rips_multifield_persistence.cpp * @example Persistent_cohomology/rips_distance_matrix_persistence.cpp * @example Persistent_cohomology/rips_persistence.cpp * @example Persistent_cohomology/custom_persistence_sort.cpp * @example Persistent_cohomology/rips_persistence_step_by_step.cpp * @example Rips_complex/example_one_skeleton_rips_from_points.cpp * @example Rips_complex/example_rips_complex_from_off_file.cpp * @example Simplex_tree/mini_simplex_tree.cpp * @example Simplex_tree/simple_simplex_tree.cpp * @example Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp * @example Simplex_tree/simplex_tree_from_cliques_of_graph.cpp * @example Skeleton_blocker/Skeleton_blocker_from_simplices.cpp * @example Skeleton_blocker/Skeleton_blocker_iteration.cpp * @example Skeleton_blocker/Skeleton_blocker_link.cpp * @example Spatial_searching/example_spatial_searching.cpp * @example Subsampling/example_choose_n_farthest_points.cpp * @example Subsampling/example_custom_kernel.cpp * @example Subsampling/example_pick_n_random_points.cpp * @example Subsampling/example_sparsify_point_set.cpp * @example Tangential_complex/example_basic.cpp * @example Tangential_complex/example_with_perturb.cpp * @example Witness_complex/example_nearest_landmark_table.cpp * @example Witness_complex/example_strong_witness_complex_off.cpp * @example Witness_complex/example_strong_witness_persistence.cpp * @example Witness_complex/example_witness_complex_off.cpp * @example Witness_complex/example_witness_complex_persistence.cpp * @example Witness_complex/example_witness_complex_sphere.cpp */