From c524232f734de875d69e2f190f01a6c976024368 Mon Sep 17 00:00:00 2001
From: Gard Spreemann
Date: Thu, 14 Jun 2018 20:39:01 +0200
Subject: GUDHI 2.2.0 as released by upstream in a tarball.
---
CMakeGUDHIVersion.txt | 2 +-
CMakeLists.txt | 40 +-
Doxyfile | 5 +-
GudhUI/CMakeLists.txt | 3 +-
GudhUI/gui/MainWindow.cpp | 2 +-
GudhUI/gui/MainWindow.h | 2 +-
GudhUI/gui/Menu_edge_contraction.cpp | 2 +-
GudhUI/gui/Menu_edge_contraction.h | 2 +-
GudhUI/gui/Menu_k_nearest_neighbors.cpp | 2 +-
GudhUI/gui/Menu_k_nearest_neighbors.h | 2 +-
GudhUI/gui/Menu_persistence.cpp | 2 +-
GudhUI/gui/Menu_persistence.h | 2 +-
GudhUI/gui/Menu_uniform_neighbors.cpp | 2 +-
GudhUI/gui/Menu_uniform_neighbors.h | 2 +-
GudhUI/gui/gudhui.cpp | 4 +-
GudhUI/model/Complex_typedefs.h | 2 +-
GudhUI/model/Model.h | 4 +-
GudhUI/utils/Bar_code_persistence.h | 23 +
GudhUI/utils/Critical_points.h | 4 +-
GudhUI/utils/Edge_collapsor.h | 2 +-
GudhUI/utils/Edge_contractor.h | 2 +-
GudhUI/utils/Furthest_point_epsilon_net.h | 2 +-
GudhUI/utils/Is_manifold.h | 2 +-
GudhUI/utils/K_nearest_builder.h | 4 +-
GudhUI/utils/Lloyd_builder.h | 2 +-
GudhUI/utils/MClock.h | 2 +-
GudhUI/utils/Persistence_compute.h | 2 +-
GudhUI/utils/Rips_builder.h | 4 +-
GudhUI/utils/UI_utils.h | 2 +-
GudhUI/utils/Vertex_collapsor.h | 2 +-
GudhUI/view/Color.h | 2 +-
GudhUI/view/FirstCoordProjector.h | 2 +-
GudhUI/view/Projector3D.h | 2 +-
GudhUI/view/View_parameter.h | 2 +-
GudhUI/view/Viewer.cpp | 2 +-
GudhUI/view/Viewer.h | 2 +-
GudhUI/view/Viewer_instructor.cpp | 2 +-
GudhUI/view/Viewer_instructor.h | 2 +-
biblio/bibliography.bib | 75 +-
biblio/how_to_cite_gudhi.bib | 2 +-
cmake/modules/GUDHI_compilation_flags.cmake | 72 +
cmake/modules/GUDHI_third_party_libraries.cmake | 22 +-
cmake/modules/GUDHI_user_version_target.cmake | 6 +-
concept/Alpha_complex/SimplicialComplexForAlpha.h | 2 +-
concept/Bottleneck_distance/Persistence_diagram.h | 2 +-
concept/Cech_complex/SimplicialComplexForCech.h | 66 +
.../Real_valued_topological_data.h | 2 +-
.../Topological_data_with_averages.h | 2 +-
.../Topological_data_with_distances.h | 2 +-
.../Topological_data_with_scalar_product.h | 2 +-
.../Vectorized_topological_data.h | 2 +-
concept/Persistent_cohomology/CoefficientField.h | 2 +-
concept/Persistent_cohomology/FilteredComplex.h | 40 +-
concept/Persistent_cohomology/PersistentHomology.h | 2 +-
concept/Rips_complex/SimplicialComplexForRips.h | 2 +-
concept/Simplex_tree/FiltrationValue.h | 2 +-
concept/Simplex_tree/IndexingTag.h | 2 +-
concept/Simplex_tree/SimplexKey.h | 2 +-
concept/Simplex_tree/SimplexTreeOptions.h | 2 +-
concept/Simplex_tree/VertexHandle.h | 2 +-
concept/Skeleton_blocker/SkeletonBlockerDS.h | 2 +-
.../Skeleton_blocker/SkeletonBlockerGeometricDS.h | 2 +-
.../Witness_complex/SimplicialComplexForWitness.h | 2 +-
cython/CMakeLists.txt | 41 +-
cython/cython/alpha_complex.pyx | 4 +-
cython/cython/bottleneck_distance.pyx | 4 +-
cython/cython/cubical_complex.pyx | 29 +-
cython/cython/euclidean_strong_witness_complex.pyx | 4 +-
cython/cython/euclidean_witness_complex.pyx | 4 +-
cython/cython/off_reader.pyx | 5 +-
cython/cython/periodic_cubical_complex.pyx | 29 +-
cython/cython/persistence_graphical_tools.py | 107 +-
cython/cython/reader_utils.pyx | 4 +-
cython/cython/rips_complex.pyx | 39 +-
cython/cython/simplex_tree.pyx | 45 +-
cython/cython/strong_witness_complex.pyx | 4 +-
cython/cython/subsampling.pyx | 4 +-
cython/cython/tangential_complex.pyx | 19 +-
cython/cython/witness_complex.pyx | 4 +-
cython/doc/_templates/layout.html | 122 +-
cython/doc/alpha_complex_ref.rst | 4 +
cython/doc/alpha_complex_sum.inc | 22 +
cython/doc/alpha_complex_sum.rst | 22 -
cython/doc/alpha_complex_user.rst | 12 +-
cython/doc/bottleneck_distance_sum.inc | 15 +
cython/doc/bottleneck_distance_sum.rst | 15 -
cython/doc/bottleneck_distance_user.rst | 6 +-
cython/doc/citation.rst | 4 +
cython/doc/conf.py | 3 +-
cython/doc/cubical_complex_ref.rst | 4 +
cython/doc/cubical_complex_sum.inc | 15 +
cython/doc/cubical_complex_sum.rst | 15 -
cython/doc/cubical_complex_user.rst | 7 +-
.../doc/euclidean_strong_witness_complex_ref.rst | 4 +
cython/doc/euclidean_witness_complex_ref.rst | 4 +
cython/doc/examples.rst | 4 +
cython/doc/fileformats.rst | 4 +
cython/doc/index.rst | 18 +-
cython/doc/installation.rst | 15 +-
cython/doc/periodic_cubical_complex_ref.rst | 4 +
cython/doc/persistence_graphical_tools_ref.rst | 5 +-
cython/doc/persistence_graphical_tools_sum.inc | 12 +
cython/doc/persistence_graphical_tools_sum.rst | 12 -
cython/doc/persistence_graphical_tools_user.rst | 71 +-
cython/doc/persistent_cohomology_sum.inc | 27 +
cython/doc/persistent_cohomology_sum.rst | 27 -
cython/doc/persistent_cohomology_user.rst | 4 +
cython/doc/pyplots/barcode_persistence.py | 7 -
cython/doc/pyplots/diagram_persistence.py | 8 -
cython/doc/pyplots/show_palette_values.py | 3 -
cython/doc/reader_utils_ref.rst | 4 +
cython/doc/rips_complex_ref.rst | 4 +
cython/doc/rips_complex_sum.inc | 17 +
cython/doc/rips_complex_sum.rst | 17 -
cython/doc/rips_complex_user.rst | 84 +-
cython/doc/simplex_tree_ref.rst | 4 +
cython/doc/simplex_tree_sum.inc | 14 +
cython/doc/simplex_tree_sum.rst | 14 -
cython/doc/simplex_tree_user.rst | 6 +-
cython/doc/strong_witness_complex_ref.rst | 4 +
cython/doc/tangential_complex_ref.rst | 4 +
cython/doc/tangential_complex_sum.inc | 15 +
cython/doc/tangential_complex_sum.rst | 15 -
cython/doc/tangential_complex_user.rst | 13 +-
cython/doc/todos.rst | 4 +
cython/doc/witness_complex_ref.rst | 4 +
cython/doc/witness_complex_sum.inc | 19 +
cython/doc/witness_complex_sum.rst | 19 -
cython/doc/witness_complex_user.rst | 6 +-
...ex_diagram_persistence_from_off_file_example.py | 8 +-
.../example/alpha_complex_from_points_example.py | 4 +-
.../alpha_rips_persistence_bottleneck_distance.py | 9 +-
cython/example/bottleneck_basic_example.py | 6 +-
...ex_diagram_persistence_from_off_file_example.py | 8 +-
...ex_diagram_persistence_from_off_file_example.py | 8 +-
cython/example/gudhi_graphical_tools_example.py | 11 +-
...arcode_persistence_from_perseus_file_example.py | 4 +-
.../random_cubical_complex_persistence_example.py | 4 +-
...istence_from_correlation_matrix_file_example.py | 84 +
...ersistence_from_distance_matrix_file_example.py | 15 +-
...ex_diagram_persistence_from_off_file_example.py | 11 +-
cython/example/rips_complex_from_points_example.py | 4 +-
cython/example/rips_persistence_diagram.py | 4 +-
cython/example/simplex_tree_example.py | 4 +-
...complex_plain_homology_from_off_file_example.py | 13 +-
.../witness_complex_from_nearest_landmark_table.py | 4 +-
cython/gudhi.pyx.in | 4 +-
cython/include/Alpha_complex_interface.h | 2 +-
cython/include/Bottleneck_distance_interface.h | 2 +-
cython/include/Cubical_complex_interface.h | 2 +-
.../Euclidean_strong_witness_complex_interface.h | 2 +-
.../include/Euclidean_witness_complex_interface.h | 2 +-
cython/include/Off_reader_interface.h | 2 +-
cython/include/Persistent_cohomology_interface.h | 28 +-
cython/include/Reader_utils_interface.h | 2 +-
cython/include/Rips_complex_interface.h | 19 +-
cython/include/Simplex_tree_interface.h | 2 +-
cython/include/Strong_witness_complex_interface.h | 2 +-
cython/include/Subsampling_interface.h | 2 +-
cython/include/Tangential_complex_interface.h | 15 +-
cython/include/Witness_complex_interface.h | 2 +-
cython/setup.py.in | 9 +-
cython/test/test_alpha_complex.py | 4 +-
cython/test/test_bottleneck_distance.py | 4 +-
cython/test/test_cubical_complex.py | 15 +-
cython/test/test_euclidean_witness_complex.py | 4 +-
cython/test/test_reader_utils.py | 4 +-
cython/test/test_rips_complex.py | 4 +-
cython/test/test_simplex_tree.py | 48 +-
cython/test/test_subsampling.py | 4 +-
cython/test/test_tangential_complex.py | 6 +-
cython/test/test_witness_complex.py | 4 +-
.../lower_triangular_correlation_matrix.csv | 6 +
data/persistence_diagram/rips_on_tore3D_1307.pers | 2044 ++++++++++++++++++++
data/points/Kl.off | 4 +-
doc/Alpha_complex/COPYRIGHT | 2 +-
doc/Alpha_complex/Intro_alpha_complex.h | 90 +-
doc/Bitmap_cubical_complex/COPYRIGHT | 2 +-
.../Gudhi_Cubical_Complex_doc.h | 2 +-
doc/Bottleneck_distance/COPYRIGHT | 2 +-
.../Intro_bottleneck_distance.h | 2 +-
doc/Cech_complex/COPYRIGHT | 19 +
doc/Cech_complex/Intro_cech_complex.h | 114 ++
doc/Cech_complex/cech_complex_representation.ipe | 330 ++++
doc/Cech_complex/cech_complex_representation.png | Bin 0 -> 39938 bytes
doc/Cech_complex/cech_one_skeleton.ipe | 314 +++
doc/Cech_complex/cech_one_skeleton.png | Bin 0 -> 24662 bytes
doc/Contraction/COPYRIGHT | 2 +-
doc/Nerve_GIC/COPYRIGHT | 2 +-
doc/Nerve_GIC/Intro_graph_induced_complex.h | 2 +-
.../Persistence_representations_doc.h | 2 +-
doc/Persistent_cohomology/COPYRIGHT | 2 +-
.../Intro_persistent_cohomology.h | 15 +-
doc/Rips_complex/COPYRIGHT | 2 +-
doc/Rips_complex/Intro_rips_complex.h | 121 +-
doc/Simplex_tree/COPYRIGHT | 2 +-
doc/Simplex_tree/Intro_simplex_tree.h | 2 +-
doc/Skeleton_blocker/COPYRIGHT | 2 +-
doc/Spatial_searching/Intro_spatial_searching.h | 2 +-
doc/Subsampling/Intro_subsampling.h | 2 +-
doc/Tangential_complex/COPYRIGHT | 2 +-
doc/Tangential_complex/Intro_tangential_complex.h | 2 +-
doc/Witness_complex/COPYRIGHT | 2 +-
doc/common/file_formats.h | 2 +-
doc/common/header.html | 111 +-
doc/common/installation.h | 5 +-
doc/common/main_page.h | 20 +-
doc/common/offline_header.html | 41 +
example/Alpha_complex/CMakeLists.txt | 1 -
example/Bitmap_cubical_complex/CMakeLists.txt | 1 -
.../Random_bitmap_cubical_complex.cpp | 2 +-
example/Bottleneck_distance/CMakeLists.txt | 1 -
.../alpha_rips_persistence_bottleneck_distance.cpp | 2 +-
.../bottleneck_basic_example.cpp | 2 +-
example/Cech_complex/CMakeLists.txt | 16 +
.../cech_complex_example_from_points.cpp | 54 +
.../cech_complex_example_from_points_for_doc.txt | 31 +
example/Cech_complex/cech_complex_step_by_step.cpp | 166 ++
example/Contraction/CMakeLists.txt | 1 -
example/Contraction/Garland_heckbert.cpp | 2 +-
.../Contraction/Garland_heckbert/Error_quadric.h | 2 +-
example/Contraction/Rips_contraction.cpp | 2 +-
example/Nerve_GIC/CMakeLists.txt | 10 +-
example/Nerve_GIC/CoordGIC.cpp | 5 +-
example/Nerve_GIC/FuncGIC.cpp | 2 +-
example/Persistence_representations/CMakeLists.txt | 9 +-
.../persistence_heat_maps.cpp | 2 +-
.../persistence_intervals.cpp | 2 +-
.../persistence_landscape.cpp | 2 +-
.../persistence_landscape_on_grid.cpp | 2 +-
.../persistence_vectors.cpp | 2 +-
example/Persistent_cohomology/CMakeLists.txt | 1 -
.../custom_persistence_sort.cpp | 2 +-
.../persistence_from_file.cpp | 2 +-
.../persistence_from_simple_simplex_tree.cpp | 2 +-
example/Persistent_cohomology/plain_homology.cpp | 2 +-
.../rips_multifield_persistence.cpp | 2 +-
.../rips_persistence_step_by_step.cpp | 2 +-
.../rips_persistence_via_boundary_matrix.cpp | 2 +-
example/Rips_complex/CMakeLists.txt | 14 +-
...e_one_skeleton_rips_from_correlation_matrix.cpp | 81 +
example/Rips_complex/example_sparse_rips.cpp | 30 +
...eleton_rips_from_correlation_matrix_for_doc.txt | 17 +
example/Simplex_tree/CMakeLists.txt | 1 -
.../cech_complex_cgal_mini_sphere_3d.cpp | 4 +-
...e_alpha_shapes_3_simplex_tree_from_off_file.cpp | 2 +-
.../Simplex_tree/graph_expansion_with_blocker.cpp | 46 +-
example/Simplex_tree/mini_simplex_tree.cpp | 2 +-
example/Simplex_tree/simple_simplex_tree.cpp | 2 +-
.../simplex_tree_from_cliques_of_graph.cpp | 2 +-
example/Skeleton_blocker/CMakeLists.txt | 1 -
.../Skeleton_blocker_from_simplices.cpp | 2 +-
.../Skeleton_blocker_iteration.cpp | 2 +-
example/Skeleton_blocker/Skeleton_blocker_link.cpp | 2 +-
example/Spatial_searching/CMakeLists.txt | 1 -
example/Subsampling/CMakeLists.txt | 1 -
example/Tangential_complex/CMakeLists.txt | 1 -
example/Witness_complex/CMakeLists.txt | 1 -
.../example_nearest_landmark_table.cpp | 22 -
.../example_strong_witness_complex_off.cpp | 22 -
.../example_witness_complex_sphere.cpp | 22 -
example/Witness_complex/generators.h | 8 +-
example/common/CMakeLists.txt | 12 +-
example/common/cgaloffreader_result.txt | 7 -
.../common/example_CGAL_3D_points_off_reader.cpp | 6 +-
example/common/example_CGAL_points_off_reader.cpp | 6 +-
.../example_vector_double_points_off_reader.cpp | 14 +-
example/common/vectordoubleoffreader_result.txt | 7 +
include/gudhi/Active_witness/Active_witness.h | 2 +-
.../gudhi/Active_witness/Active_witness_iterator.h | 2 +-
include/gudhi/Alpha_complex.h | 6 +-
include/gudhi/Bitmap_cubical_complex.h | 4 +-
include/gudhi/Bitmap_cubical_complex/counter.h | 2 +-
include/gudhi/Bitmap_cubical_complex_base.h | 6 +-
...cal_complex_periodic_boundary_conditions_base.h | 4 +-
include/gudhi/Bottleneck.h | 10 +-
include/gudhi/Cech_complex.h | 130 ++
include/gudhi/Cech_complex_blocker.h | 91 +
include/gudhi/Clock.h | 2 +-
include/gudhi/Contraction/Edge_profile.h | 2 +-
.../Contraction/policies/Contraction_visitor.h | 2 +-
include/gudhi/Contraction/policies/Cost_policy.h | 2 +-
.../Contraction/policies/Dummy_valid_contraction.h | 2 +-
.../gudhi/Contraction/policies/Edge_length_cost.h | 2 +-
.../Contraction/policies/First_vertex_placement.h | 2 +-
.../policies/Link_condition_valid_contraction.h | 2 +-
.../gudhi/Contraction/policies/Middle_placement.h | 2 +-
.../gudhi/Contraction/policies/Placement_policy.h | 2 +-
.../policies/Valid_contraction_policy.h | 2 +-
include/gudhi/Debug_utils.h | 2 +-
include/gudhi/Edge_contraction.h | 2 +-
include/gudhi/Euclidean_strong_witness_complex.h | 2 +-
include/gudhi/Euclidean_witness_complex.h | 2 +-
include/gudhi/GIC.h | 333 ++--
include/gudhi/Graph_matching.h | 2 +-
include/gudhi/Hasse_complex.h | 2 +-
include/gudhi/Internal_point.h | 2 +-
include/gudhi/Kd_tree_search.h | 2 +-
include/gudhi/Miniball.COPYRIGHT | 4 +
include/gudhi/Miniball.README | 26 +
include/gudhi/Miniball.hpp | 523 +++++
include/gudhi/Neighbors_finder.h | 2 +-
include/gudhi/Null_output_iterator.h | 2 +-
include/gudhi/Off_reader.h | 31 +-
include/gudhi/PSSK.h | 2 +-
include/gudhi/Persistence_graph.h | 2 +-
include/gudhi/Persistence_heat_maps.h | 2 +-
include/gudhi/Persistence_intervals.h | 2 +-
.../gudhi/Persistence_intervals_with_distances.h | 2 +-
include/gudhi/Persistence_landscape.h | 61 +-
include/gudhi/Persistence_landscape_on_grid.h | 2 +-
include/gudhi/Persistence_vectors.h | 2 +-
include/gudhi/Persistent_cohomology.h | 4 +-
include/gudhi/Persistent_cohomology/Field_Zp.h | 2 +-
include/gudhi/Persistent_cohomology/Multi_field.h | 2 +-
.../Persistent_cohomology_column.h | 2 +-
include/gudhi/Point.h | 2 +-
include/gudhi/Points_3D_off_io.h | 2 +-
include/gudhi/Points_off_io.h | 6 +-
include/gudhi/Rips_complex.h | 2 +-
include/gudhi/Simple_object_pool.h | 2 +-
include/gudhi/Simplex_tree.h | 13 +-
.../gudhi/Simplex_tree/Simplex_tree_iterators.h | 12 +-
.../Simplex_tree_node_explicit_storage.h | 2 +-
include/gudhi/Simplex_tree/Simplex_tree_siblings.h | 2 +-
include/gudhi/Simplex_tree/indexing_tag.h | 2 +-
include/gudhi/Skeleton_blocker.h | 2 +-
.../Skeleton_blocker_complex_visitor.h | 2 +-
.../Skeleton_blocker_link_superior.h | 2 +-
.../Skeleton_blocker/Skeleton_blocker_off_io.h | 2 +-
.../Skeleton_blocker_simple_geometric_traits.h | 2 +-
.../Skeleton_blocker_simple_traits.h | 2 +-
.../Skeleton_blocker/Skeleton_blocker_simplex.h | 2 +-
.../Skeleton_blocker_sub_complex.h | 2 +-
.../gudhi/Skeleton_blocker/internal/Top_faces.h | 2 +-
include/gudhi/Skeleton_blocker/internal/Trie.h | 2 +-
.../Skeleton_blockers_blockers_iterators.h | 2 +-
.../iterators/Skeleton_blockers_edges_iterators.h | 2 +-
.../iterators/Skeleton_blockers_iterators.h | 2 +-
.../Skeleton_blockers_simplices_iterators.h | 2 +-
.../Skeleton_blockers_triangles_iterators.h | 2 +-
.../Skeleton_blockers_vertices_iterators.h | 2 +-
include/gudhi/Skeleton_blocker_complex.h | 2 +-
include/gudhi/Skeleton_blocker_contractor.h | 2 +-
include/gudhi/Skeleton_blocker_geometric_complex.h | 2 +-
include/gudhi/Skeleton_blocker_link_complex.h | 2 +-
.../gudhi/Skeleton_blocker_simplifiable_complex.h | 2 +-
include/gudhi/Sparse_rips_complex.h | 175 ++
include/gudhi/Strong_witness_complex.h | 2 +-
include/gudhi/Tangential_complex.h | 7 +-
.../gudhi/Tangential_complex/Simplicial_complex.h | 2 +-
include/gudhi/Tangential_complex/config.h | 2 +-
include/gudhi/Tangential_complex/utilities.h | 2 +-
include/gudhi/Unitary_tests_utils.h | 2 +-
include/gudhi/Witness_complex.h | 2 +-
include/gudhi/Witness_complex/all_faces_in.h | 2 +-
include/gudhi/allocator.h | 2 +-
include/gudhi/choose_n_farthest_points.h | 2 +-
include/gudhi/common_persistence_representations.h | 2 +-
include/gudhi/console_color.h | 2 +-
include/gudhi/distance_functions.h | 52 +-
include/gudhi/graph_simplicial_complex.h | 8 +-
include/gudhi/pick_n_random_points.h | 2 +-
include/gudhi/random_point_generators.h | 5 +-
include/gudhi/read_persistence_from_file.h | 8 +-
include/gudhi/reader_utils.h | 2 +-
include/gudhi/sparsify_point_set.h | 2 +-
include/gudhi/writing_persistence_to_file.h | 117 ++
.../Bottleneck_distance_CGAL_patches.txt | 3 -
include/gudhi_patches/CGAL/Convex_hull.h | 56 -
.../gudhi_patches/CGAL/Delaunay_triangulation.h | 933 ---------
include/gudhi_patches/CGAL/Epeck_d.h | 53 -
include/gudhi_patches/CGAL/Epick_d.h | 71 -
.../CGAL/IO/Triangulation_off_ostream.h | 320 ---
include/gudhi_patches/CGAL/Kd_tree.h | 582 ------
include/gudhi_patches/CGAL/Kd_tree_node.h | 586 ------
.../CGAL/NewKernel_d/Cartesian_LA_base.h | 177 --
.../CGAL/NewKernel_d/Cartesian_LA_functors.h | 344 ----
.../CGAL/NewKernel_d/Cartesian_base.h | 40 -
.../CGAL/NewKernel_d/Cartesian_change_FT.h | 117 --
.../CGAL/NewKernel_d/Cartesian_complete.h | 33 -
.../CGAL/NewKernel_d/Cartesian_filter_K.h | 79 -
.../CGAL/NewKernel_d/Cartesian_filter_NT.h | 93 -
.../CGAL/NewKernel_d/Cartesian_per_dimension.h | 33 -
.../CGAL/NewKernel_d/Cartesian_static_filters.h | 95 -
include/gudhi_patches/CGAL/NewKernel_d/Coaffine.h | 330 ----
.../CGAL/NewKernel_d/Define_kernel_types.h | 50 -
.../CGAL/NewKernel_d/Dimension_base.h | 49 -
.../CGAL/NewKernel_d/Filtered_predicate2.h | 137 --
.../CGAL/NewKernel_d/KernelD_converter.h | 199 --
.../CGAL/NewKernel_d/Kernel_2_interface.h | 104 -
.../CGAL/NewKernel_d/Kernel_3_interface.h | 102 -
.../CGAL/NewKernel_d/Kernel_d_interface.h | 298 ---
.../CGAL/NewKernel_d/Kernel_object_converter.h | 134 --
.../gudhi_patches/CGAL/NewKernel_d/LA_eigen/LA.h | 175 --
.../CGAL/NewKernel_d/LA_eigen/constructors.h | 162 --
.../CGAL/NewKernel_d/Lazy_cartesian.h | 188 --
.../CGAL/NewKernel_d/Types/Aff_transformation.h | 59 -
.../CGAL/NewKernel_d/Types/Hyperplane.h | 159 --
.../gudhi_patches/CGAL/NewKernel_d/Types/Iso_box.h | 88 -
.../gudhi_patches/CGAL/NewKernel_d/Types/Line.h | 66 -
include/gudhi_patches/CGAL/NewKernel_d/Types/Ray.h | 66 -
.../gudhi_patches/CGAL/NewKernel_d/Types/Segment.h | 121 --
.../gudhi_patches/CGAL/NewKernel_d/Types/Sphere.h | 132 --
.../CGAL/NewKernel_d/Types/Weighted_point.h | 205 --
.../gudhi_patches/CGAL/NewKernel_d/Vector/array.h | 165 --
.../gudhi_patches/CGAL/NewKernel_d/Vector/avx4.h | 213 --
...f_iterator_to_points_from_iterator_to_vectors.h | 76 -
...determinant_of_iterator_to_points_from_points.h | 211 --
...terminant_of_iterator_to_vectors_from_vectors.h | 201 --
.../Vector/determinant_of_points_from_vectors.h | 164 --
.../Vector/determinant_of_vectors_small_dim.h | 58 -
.../determinant_of_vectors_small_dim_internal.h | 164 --
.../gudhi_patches/CGAL/NewKernel_d/Vector/mix.h | 46 -
.../gudhi_patches/CGAL/NewKernel_d/Vector/sse2.h | 145 --
.../gudhi_patches/CGAL/NewKernel_d/Vector/v2int.h | 181 --
.../gudhi_patches/CGAL/NewKernel_d/Vector/vector.h | 167 --
.../CGAL/NewKernel_d/Wrapper/Cartesian_wrap.h | 305 ---
.../CGAL/NewKernel_d/Wrapper/Hyperplane_d.h | 131 --
.../CGAL/NewKernel_d/Wrapper/Point_d.h | 284 ---
.../CGAL/NewKernel_d/Wrapper/Ref_count_obj.h | 120 --
.../CGAL/NewKernel_d/Wrapper/Segment_d.h | 133 --
.../CGAL/NewKernel_d/Wrapper/Sphere_d.h | 130 --
.../CGAL/NewKernel_d/Wrapper/Vector_d.h | 266 ---
.../CGAL/NewKernel_d/Wrapper/Weighted_point_d.h | 129 --
.../CGAL/NewKernel_d/function_objects_cartesian.h | 1355 -------------
.../CGAL/NewKernel_d/functor_properties.h | 40 -
.../gudhi_patches/CGAL/NewKernel_d/functor_tags.h | 363 ----
.../gudhi_patches/CGAL/NewKernel_d/static_int.h | 61 -
.../gudhi_patches/CGAL/NewKernel_d/store_kernel.h | 104 -
include/gudhi_patches/CGAL/NewKernel_d/utils.h | 306 ---
.../CGAL/Orthogonal_incremental_neighbor_search.h | 620 ------
include/gudhi_patches/CGAL/Regular_triangulation.h | 1169 -----------
.../CGAL/Regular_triangulation_traits_adapter.h | 288 ---
.../CGAL/TDS_full_cell_default_storage_policy.h | 99 -
.../CGAL/TDS_full_cell_mirror_storage_policy.h | 71 -
include/gudhi_patches/CGAL/Triangulation.h | 1424 --------------
.../CGAL/Triangulation_data_structure.h | 1603 ---------------
.../CGAL/Triangulation_ds_full_cell.h | 311 ---
.../gudhi_patches/CGAL/Triangulation_ds_vertex.h | 154 --
include/gudhi_patches/CGAL/Triangulation_face.h | 111 --
.../gudhi_patches/CGAL/Triangulation_full_cell.h | 148 --
include/gudhi_patches/CGAL/Triangulation_vertex.h | 128 --
include/gudhi_patches/CGAL/argument_swaps.h | 88 -
.../gudhi_patches/CGAL/determinant_of_vectors.h | 117 --
.../CGAL/internal/Combination_enumerator.h | 148 --
.../CGAL/internal/Static_or_dynamic_array.h | 116 --
.../CGAL/internal/Triangulation/Dummy_TDS.h | 49 -
.../Triangulation/Triangulation_ds_iterators.h | 154 --
.../CGAL/internal/Triangulation/utilities.h | 154 --
include/gudhi_patches/CGAL/iterator_from_indices.h | 75 -
include/gudhi_patches/CGAL/transforming_iterator.h | 123 --
.../CGAL/transforming_pair_iterator.h | 127 --
include/gudhi_patches/CGAL/typeset.h | 117 --
.../Tangential_complex_CGAL_patches.txt | 82 -
utilities/Alpha_complex/CMakeLists.txt | 1 -
utilities/Alpha_complex/alpha_complex_3d_helper.h | 2 +-
.../Alpha_complex/alpha_complex_3d_persistence.cpp | 4 +-
.../Alpha_complex/alpha_complex_persistence.cpp | 22 +
utilities/Alpha_complex/alphacomplex.md | 13 +-
.../exact_alpha_complex_3d_persistence.cpp | 4 +-
.../periodic_alpha_complex_3d_persistence.cpp | 4 +-
.../weighted_alpha_complex_3d_persistence.cpp | 4 +-
...ghted_periodic_alpha_complex_3d_persistence.cpp | 4 +-
utilities/Bitmap_cubical_complex/CMakeLists.txt | 1 -
.../cubical_complex_persistence.cpp | 2 +-
utilities/Bitmap_cubical_complex/cubicalcomplex.md | 12 +-
.../periodic_cubical_complex_persistence.cpp | 2 +-
utilities/Bottleneck_distance/CMakeLists.txt | 1 -
.../Bottleneck_distance/bottleneck_distance.cpp | 2 +-
.../Bottleneck_distance/bottleneckdistance.md | 12 +-
utilities/Cech_complex/CMakeLists.txt | 14 +
utilities/Cech_complex/cech_persistence.cpp | 136 ++
utilities/Cech_complex/cechcomplex.md | 38 +
utilities/Nerve_GIC/CMakeLists.txt | 5 +-
utilities/Nerve_GIC/KeplerMapperVisuFromTxtFile.py | 4 +-
utilities/Nerve_GIC/Nerve.cpp | 2 +-
utilities/Nerve_GIC/VoronoiGIC.cpp | 2 +-
utilities/Nerve_GIC/covercomplex.md | 13 +-
.../Persistence_representations/CMakeLists.txt | 6 +
.../persistence_heat_maps/CMakeLists.txt | 1 -
.../average_persistence_heat_maps.cpp | 2 +-
.../compute_distance_of_persistence_heat_maps.cpp | 2 +-
...ute_scalar_product_of_persistence_heat_maps.cpp | 2 +-
...h_m_weighted_by_arctan_of_their_persistence.cpp | 2 +-
...te_p_h_m_weighted_by_distance_from_diagonal.cpp | 2 +-
...ate_p_h_m_weighted_by_squared_diag_distance.cpp | 2 +-
.../create_persistence_heat_maps.cpp | 2 +-
.../persistence_heat_maps/create_pssk.cpp | 2 +-
.../plot_persistence_heat_map.cpp | 2 +-
.../persistence_intervals/CMakeLists.txt | 7 +-
...te_birth_death_range_in_persistence_diagram.cpp | 2 +-
.../compute_bottleneck_distance.cpp | 2 +-
.../compute_number_of_dominant_intervals.cpp | 2 +-
.../plot_histogram_of_intervals_lengths.cpp | 2 +-
.../plot_persistence_Betti_numbers.cpp | 2 +-
.../plot_persistence_intervals.cpp | 2 +-
.../persistence_landscapes/CMakeLists.txt | 1 -
.../persistence_landscapes/average_landscapes.cpp | 2 +-
.../compute_distance_of_landscapes.cpp | 2 +-
.../compute_scalar_product_of_landscapes.cpp | 2 +-
.../persistence_landscapes/create_landscapes.cpp | 2 +-
.../persistence_landscapes/plot_landscapes.cpp | 2 +-
.../persistence_landscapes_on_grid/CMakeLists.txt | 1 -
.../average_landscapes_on_grid.cpp | 2 +-
.../compute_distance_of_landscapes_on_grid.cpp | 2 +-
...ompute_scalar_product_of_landscapes_on_grid.cpp | 2 +-
.../create_landscapes_on_grid.cpp | 2 +-
.../plot_landscapes_on_grid.cpp | 2 +-
.../persistence_vectors/CMakeLists.txt | 1 -
.../average_persistence_vectors.cpp | 2 +-
.../compute_distance_of_persistence_vectors.cpp | 2 +-
...mpute_scalar_product_of_persistence_vectors.cpp | 2 +-
.../create_persistence_vectors.cpp | 2 +-
.../plot_persistence_vectors.cpp | 2 +-
utilities/Rips_complex/CMakeLists.txt | 15 +-
.../rips_correlation_matrix_persistence.cpp | 171 ++
.../rips_distance_matrix_persistence.cpp | 2 +-
utilities/Rips_complex/rips_persistence.cpp | 2 +-
utilities/Rips_complex/ripscomplex.md | 66 +-
utilities/Rips_complex/sparse_rips_persistence.cpp | 133 ++
utilities/Witness_complex/CMakeLists.txt | 1 -
.../Witness_complex/strong_witness_persistence.cpp | 2 +-
.../Witness_complex/weak_witness_persistence.cpp | 2 +-
utilities/Witness_complex/witnesscomplex.md | 13 +-
utilities/common/CMakeLists.txt | 1 -
utilities/common/off_file_from_shape_generator.cpp | 2 +-
utilities/common/pointsetgenerator.md | 14 +-
528 files changed, 7079 insertions(+), 20864 deletions(-)
create mode 100644 cmake/modules/GUDHI_compilation_flags.cmake
create mode 100644 concept/Cech_complex/SimplicialComplexForCech.h
create mode 100644 cython/doc/alpha_complex_sum.inc
delete mode 100644 cython/doc/alpha_complex_sum.rst
create mode 100644 cython/doc/bottleneck_distance_sum.inc
delete mode 100644 cython/doc/bottleneck_distance_sum.rst
create mode 100644 cython/doc/cubical_complex_sum.inc
delete mode 100644 cython/doc/cubical_complex_sum.rst
create mode 100644 cython/doc/persistence_graphical_tools_sum.inc
delete mode 100644 cython/doc/persistence_graphical_tools_sum.rst
create mode 100644 cython/doc/persistent_cohomology_sum.inc
delete mode 100644 cython/doc/persistent_cohomology_sum.rst
delete mode 100755 cython/doc/pyplots/barcode_persistence.py
delete mode 100755 cython/doc/pyplots/diagram_persistence.py
delete mode 100755 cython/doc/pyplots/show_palette_values.py
create mode 100644 cython/doc/rips_complex_sum.inc
delete mode 100644 cython/doc/rips_complex_sum.rst
create mode 100644 cython/doc/simplex_tree_sum.inc
delete mode 100644 cython/doc/simplex_tree_sum.rst
create mode 100644 cython/doc/tangential_complex_sum.inc
delete mode 100644 cython/doc/tangential_complex_sum.rst
create mode 100644 cython/doc/witness_complex_sum.inc
delete mode 100644 cython/doc/witness_complex_sum.rst
create mode 100755 cython/example/rips_complex_diagram_persistence_from_correlation_matrix_file_example.py
create mode 100644 data/correlation_matrix/lower_triangular_correlation_matrix.csv
create mode 100644 data/persistence_diagram/rips_on_tore3D_1307.pers
create mode 100644 doc/Cech_complex/COPYRIGHT
create mode 100644 doc/Cech_complex/Intro_cech_complex.h
create mode 100644 doc/Cech_complex/cech_complex_representation.ipe
create mode 100644 doc/Cech_complex/cech_complex_representation.png
create mode 100644 doc/Cech_complex/cech_one_skeleton.ipe
create mode 100644 doc/Cech_complex/cech_one_skeleton.png
create mode 100644 doc/common/offline_header.html
create mode 100644 example/Cech_complex/CMakeLists.txt
create mode 100644 example/Cech_complex/cech_complex_example_from_points.cpp
create mode 100644 example/Cech_complex/cech_complex_example_from_points_for_doc.txt
create mode 100644 example/Cech_complex/cech_complex_step_by_step.cpp
create mode 100644 example/Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp
create mode 100644 example/Rips_complex/example_sparse_rips.cpp
create mode 100644 example/Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt
delete mode 100644 example/common/cgaloffreader_result.txt
create mode 100644 example/common/vectordoubleoffreader_result.txt
create mode 100644 include/gudhi/Cech_complex.h
create mode 100644 include/gudhi/Cech_complex_blocker.h
create mode 100644 include/gudhi/Miniball.COPYRIGHT
create mode 100644 include/gudhi/Miniball.README
create mode 100644 include/gudhi/Miniball.hpp
create mode 100644 include/gudhi/Sparse_rips_complex.h
create mode 100644 include/gudhi/writing_persistence_to_file.h
delete mode 100644 include/gudhi_patches/Bottleneck_distance_CGAL_patches.txt
delete mode 100644 include/gudhi_patches/CGAL/Convex_hull.h
delete mode 100644 include/gudhi_patches/CGAL/Delaunay_triangulation.h
delete mode 100644 include/gudhi_patches/CGAL/Epeck_d.h
delete mode 100644 include/gudhi_patches/CGAL/Epick_d.h
delete mode 100644 include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h
delete mode 100644 include/gudhi_patches/CGAL/Kd_tree.h
delete mode 100644 include/gudhi_patches/CGAL/Kd_tree_node.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_LA_base.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_LA_functors.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_base.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_change_FT.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_complete.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_filter_K.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_filter_NT.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_per_dimension.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Cartesian_static_filters.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Coaffine.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Define_kernel_types.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Dimension_base.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Filtered_predicate2.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/KernelD_converter.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Kernel_2_interface.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Kernel_3_interface.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Kernel_d_interface.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Kernel_object_converter.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/LA_eigen/LA.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/LA_eigen/constructors.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Lazy_cartesian.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Aff_transformation.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Hyperplane.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Iso_box.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Line.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Ray.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Segment.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Sphere.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Types/Weighted_point.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/array.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/avx4.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/determinant_of_iterator_to_points_from_iterator_to_vectors.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/determinant_of_iterator_to_points_from_points.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/determinant_of_iterator_to_vectors_from_vectors.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/determinant_of_points_from_vectors.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/determinant_of_vectors_small_dim.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/determinant_of_vectors_small_dim_internal.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/mix.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/sse2.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/v2int.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Vector/vector.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Cartesian_wrap.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Hyperplane_d.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Point_d.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Ref_count_obj.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Segment_d.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Sphere_d.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Vector_d.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/Wrapper/Weighted_point_d.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/function_objects_cartesian.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/functor_properties.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/functor_tags.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/static_int.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/store_kernel.h
delete mode 100644 include/gudhi_patches/CGAL/NewKernel_d/utils.h
delete mode 100644 include/gudhi_patches/CGAL/Orthogonal_incremental_neighbor_search.h
delete mode 100644 include/gudhi_patches/CGAL/Regular_triangulation.h
delete mode 100644 include/gudhi_patches/CGAL/Regular_triangulation_traits_adapter.h
delete mode 100644 include/gudhi_patches/CGAL/TDS_full_cell_default_storage_policy.h
delete mode 100644 include/gudhi_patches/CGAL/TDS_full_cell_mirror_storage_policy.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation_data_structure.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation_ds_full_cell.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation_ds_vertex.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation_face.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation_full_cell.h
delete mode 100644 include/gudhi_patches/CGAL/Triangulation_vertex.h
delete mode 100644 include/gudhi_patches/CGAL/argument_swaps.h
delete mode 100644 include/gudhi_patches/CGAL/determinant_of_vectors.h
delete mode 100644 include/gudhi_patches/CGAL/internal/Combination_enumerator.h
delete mode 100644 include/gudhi_patches/CGAL/internal/Static_or_dynamic_array.h
delete mode 100644 include/gudhi_patches/CGAL/internal/Triangulation/Dummy_TDS.h
delete mode 100644 include/gudhi_patches/CGAL/internal/Triangulation/Triangulation_ds_iterators.h
delete mode 100644 include/gudhi_patches/CGAL/internal/Triangulation/utilities.h
delete mode 100644 include/gudhi_patches/CGAL/iterator_from_indices.h
delete mode 100644 include/gudhi_patches/CGAL/transforming_iterator.h
delete mode 100644 include/gudhi_patches/CGAL/transforming_pair_iterator.h
delete mode 100644 include/gudhi_patches/CGAL/typeset.h
delete mode 100644 include/gudhi_patches/Tangential_complex_CGAL_patches.txt
create mode 100644 utilities/Cech_complex/CMakeLists.txt
create mode 100644 utilities/Cech_complex/cech_persistence.cpp
create mode 100644 utilities/Cech_complex/cechcomplex.md
create mode 100644 utilities/Rips_complex/rips_correlation_matrix_persistence.cpp
create mode 100644 utilities/Rips_complex/sparse_rips_persistence.cpp
diff --git a/CMakeGUDHIVersion.txt b/CMakeGUDHIVersion.txt
index 5e71f7eb..6811d7e1 100644
--- a/CMakeGUDHIVersion.txt
+++ b/CMakeGUDHIVersion.txt
@@ -1,5 +1,5 @@
set (GUDHI_MAJOR_VERSION 2)
-set (GUDHI_MINOR_VERSION 1)
+set (GUDHI_MINOR_VERSION 2)
set (GUDHI_PATCH_VERSION 0)
set(GUDHI_VERSION ${GUDHI_MAJOR_VERSION}.${GUDHI_MINOR_VERSION}.${GUDHI_PATCH_VERSION})
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94587044..c60346d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,12 +1,19 @@
-cmake_minimum_required(VERSION 2.6)
-project(GUDHI)
+cmake_minimum_required(VERSION 3.1)
-include("CMakeGUDHIVersion.txt")
+project(GUDHI)
-enable_testing()
+include(CMakeGUDHIVersion.txt)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")
+# This variable is used by Cython CMakeLists.txt and by GUDHI_third_party_libraries to know its path
+set(GUDHI_CYTHON_PATH "cython")
+
+# For third parties libraries management - To be done last as CGAL updates CMAKE_MODULE_PATH
+include(GUDHI_third_party_libraries NO_POLICY_SCOPE)
+
+include(GUDHI_compilation_flags)
+
# Add your new module in the list, order is not important
include(GUDHI_modules)
@@ -14,6 +21,7 @@ add_gudhi_module(common)
add_gudhi_module(Alpha_complex)
add_gudhi_module(Bitmap_cubical_complex)
add_gudhi_module(Bottleneck_distance)
+add_gudhi_module(Cech_complex)
add_gudhi_module(Contraction)
add_gudhi_module(Hasse_complex)
add_gudhi_module(Persistence_representations)
@@ -33,30 +41,6 @@ message("++ GUDHI_MODULES list is:\"${GUDHI_MODULES}\"")
set(GUDHI_USER_VERSION_DIR ${CMAKE_SOURCE_DIR})
include(GUDHI_doxygen_target)
-# This variable is used by Cython CMakeLists.txt to know its path
-set(GUDHI_CYTHON_PATH "cython")
-# For third parties libraries management - To be done last as CGAL updates CMAKE_MODULE_PATH
-include(GUDHI_third_party_libraries)
-
-if(MSVC)
- # Turn off some VC++ warnings
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4668 /wd4311 /wd4800 /wd4820 /wd4503 /wd4244 /wd4345 /wd4996 /wd4396 /wd4018")
-else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -pedantic")
-endif()
-
-if(CMAKE_BUILD_TYPE MATCHES Debug)
- message("++ Debug compilation flags are: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
-else()
- message("++ Release compilation flags are: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
-endif()
-
-if (DEBUG_TRACES)
- message(STATUS "DEBUG_TRACES are activated")
- # For programs to be more verbose
- add_definitions(-DDEBUG_TRACES)
-endif()
-
#---------------------------------------------------------------------------------------
# Gudhi compilation part
include_directories(include)
diff --git a/Doxyfile b/Doxyfile
index f1981e2e..020667e9 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -38,7 +38,7 @@ PROJECT_NAME = "GUDHI"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = "2.1.0"
+PROJECT_NUMBER = "2.2.0"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -843,7 +843,8 @@ EXAMPLE_RECURSIVE = NO
IMAGE_PATH = doc/Skeleton_blocker/ \
doc/Alpha_complex/ \
doc/common/ \
- doc/Contraction/ \
+ doc/Cech_complex/ \
+ doc/Contraction/ \
doc/Simplex_tree/ \
doc/Persistent_cohomology/ \
doc/Witness_complex/ \
diff --git a/GudhUI/CMakeLists.txt b/GudhUI/CMakeLists.txt
index 2503a03e..b357b8f7 100644
--- a/GudhUI/CMakeLists.txt
+++ b/GudhUI/CMakeLists.txt
@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 2.8)
project(GudhUI)
# Need to find OpenGL first as find_package(Qt5) tries to #include"GL/gl.h" on some platforms
@@ -38,4 +37,4 @@ if (OPENGL_FOUND)
install(TARGETS GudhUI DESTINATION bin)
endif()
-endif(OPENGL_FOUND)
\ No newline at end of file
+endif(OPENGL_FOUND)
diff --git a/GudhUI/gui/MainWindow.cpp b/GudhUI/gui/MainWindow.cpp
index 779ccd33..b11b80e9 100644
--- a/GudhUI/gui/MainWindow.cpp
+++ b/GudhUI/gui/MainWindow.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/MainWindow.h b/GudhUI/gui/MainWindow.h
index 15664dcb..6076c2ee 100644
--- a/GudhUI/gui/MainWindow.h
+++ b/GudhUI/gui/MainWindow.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_edge_contraction.cpp b/GudhUI/gui/Menu_edge_contraction.cpp
index a679b0bf..041bdf9e 100644
--- a/GudhUI/gui/Menu_edge_contraction.cpp
+++ b/GudhUI/gui/Menu_edge_contraction.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_edge_contraction.h b/GudhUI/gui/Menu_edge_contraction.h
index 2d5640e8..0ef7b267 100644
--- a/GudhUI/gui/Menu_edge_contraction.h
+++ b/GudhUI/gui/Menu_edge_contraction.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_k_nearest_neighbors.cpp b/GudhUI/gui/Menu_k_nearest_neighbors.cpp
index e24865f2..b1ad15c8 100644
--- a/GudhUI/gui/Menu_k_nearest_neighbors.cpp
+++ b/GudhUI/gui/Menu_k_nearest_neighbors.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_k_nearest_neighbors.h b/GudhUI/gui/Menu_k_nearest_neighbors.h
index 77303b67..56b5b63d 100644
--- a/GudhUI/gui/Menu_k_nearest_neighbors.h
+++ b/GudhUI/gui/Menu_k_nearest_neighbors.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_persistence.cpp b/GudhUI/gui/Menu_persistence.cpp
index 016c076b..ec990559 100644
--- a/GudhUI/gui/Menu_persistence.cpp
+++ b/GudhUI/gui/Menu_persistence.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_persistence.h b/GudhUI/gui/Menu_persistence.h
index 1a2a2408..32f0c5ca 100644
--- a/GudhUI/gui/Menu_persistence.h
+++ b/GudhUI/gui/Menu_persistence.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_uniform_neighbors.cpp b/GudhUI/gui/Menu_uniform_neighbors.cpp
index 20e4f98f..7f392b6c 100644
--- a/GudhUI/gui/Menu_uniform_neighbors.cpp
+++ b/GudhUI/gui/Menu_uniform_neighbors.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/Menu_uniform_neighbors.h b/GudhUI/gui/Menu_uniform_neighbors.h
index 61316966..88a3823b 100644
--- a/GudhUI/gui/Menu_uniform_neighbors.h
+++ b/GudhUI/gui/Menu_uniform_neighbors.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/gui/gudhui.cpp b/GudhUI/gui/gudhui.cpp
index 276c4a5f..2a100fd5 100644
--- a/GudhUI/gui/gudhui.cpp
+++ b/GudhUI/gui/gudhui.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@
int main(int argc, char** argv) {
QApplication application(argc, argv);
application.setOrganizationDomain("inria.fr");
- application.setOrganizationName("INRIA");
+ application.setOrganizationName("Inria");
application.setApplicationName("GudhUI");
MainWindow mw;
diff --git a/GudhUI/model/Complex_typedefs.h b/GudhUI/model/Complex_typedefs.h
index a4df2c94..347db1e3 100644
--- a/GudhUI/model/Complex_typedefs.h
+++ b/GudhUI/model/Complex_typedefs.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/model/Model.h b/GudhUI/model/Model.h
index fc284cc6..1d5cc087 100644
--- a/GudhUI/model/Model.h
+++ b/GudhUI/model/Model.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -74,7 +74,7 @@ class CGAL_geometric_flag_complex_wrapper {
// std::cout << "size:" << vertices.size() << std::endl;
for (std::size_t i = 0; i < vertices.size(); ++i)
for (std::size_t j = i + 1; j < vertices.size(); ++j)
- complex_.add_edge(Vertex_handle(vertices[i]), Vertex_handle(vertices[j]));
+ complex_.add_edge_without_blockers(Vertex_handle(vertices[i]), Vertex_handle(vertices[j]));
}
}
diff --git a/GudhUI/utils/Bar_code_persistence.h b/GudhUI/utils/Bar_code_persistence.h
index b527d684..49c87b3c 100644
--- a/GudhUI/utils/Bar_code_persistence.h
+++ b/GudhUI/utils/Bar_code_persistence.h
@@ -1,3 +1,26 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): David Salinas
+ *
+ * Copyright (C) 2014 Inria
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
#include // isfinite
#include
diff --git a/GudhUI/utils/Critical_points.h b/GudhUI/utils/Critical_points.h
index 2a18e079..fbd690f8 100644
--- a/GudhUI/utils/Critical_points.h
+++ b/GudhUI/utils/Critical_points.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -79,7 +79,7 @@ template class Critical_points {
unsigned pos = 0;
for (Edge e : edges) {
std::cout << "edge " << pos++ << "/" << edges.size() << "\n";
- auto eh = filled_complex_.add_edge(e.first, e.second);
+ auto eh = filled_complex_.add_edge_without_blockers(e.first, e.second);
int is_contractible(is_link_reducible(eh));
switch (is_contractible) {
diff --git a/GudhUI/utils/Edge_collapsor.h b/GudhUI/utils/Edge_collapsor.h
index 151e9b01..b3cc7df7 100644
--- a/GudhUI/utils/Edge_collapsor.h
+++ b/GudhUI/utils/Edge_collapsor.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/Edge_contractor.h b/GudhUI/utils/Edge_contractor.h
index 8a29ff4b..090baabe 100644
--- a/GudhUI/utils/Edge_contractor.h
+++ b/GudhUI/utils/Edge_contractor.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/Furthest_point_epsilon_net.h b/GudhUI/utils/Furthest_point_epsilon_net.h
index 98346daa..dbb6661c 100644
--- a/GudhUI/utils/Furthest_point_epsilon_net.h
+++ b/GudhUI/utils/Furthest_point_epsilon_net.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/Is_manifold.h b/GudhUI/utils/Is_manifold.h
index d0974463..732df607 100644
--- a/GudhUI/utils/Is_manifold.h
+++ b/GudhUI/utils/Is_manifold.h
@@ -7,7 +7,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/K_nearest_builder.h b/GudhUI/utils/K_nearest_builder.h
index 7be0a4f4..14851d96 100644
--- a/GudhUI/utils/K_nearest_builder.h
+++ b/GudhUI/utils/K_nearest_builder.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -81,7 +81,7 @@ template class K_nearest_builder {
for (auto it = ++search.begin(); it != search.end(); ++it) {
Vertex_handle q(std::get<1>(it->first));
if (p != q && complex_.contains_vertex(p) && complex_.contains_vertex(q))
- complex_.add_edge(p, q);
+ complex_.add_edge_without_blockers(p, q);
}
}
}
diff --git a/GudhUI/utils/Lloyd_builder.h b/GudhUI/utils/Lloyd_builder.h
index 18ec9fac..67595d33 100644
--- a/GudhUI/utils/Lloyd_builder.h
+++ b/GudhUI/utils/Lloyd_builder.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/MClock.h b/GudhUI/utils/MClock.h
index e8d8918a..992f6fa5 100644
--- a/GudhUI/utils/MClock.h
+++ b/GudhUI/utils/MClock.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/Persistence_compute.h b/GudhUI/utils/Persistence_compute.h
index 2dc03c8e..c8afded9 100644
--- a/GudhUI/utils/Persistence_compute.h
+++ b/GudhUI/utils/Persistence_compute.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/Rips_builder.h b/GudhUI/utils/Rips_builder.h
index b22f4db6..ed62c1c0 100644
--- a/GudhUI/utils/Rips_builder.h
+++ b/GudhUI/utils/Rips_builder.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -60,7 +60,7 @@ template class Rips_builder {
std::cout.flush();
for (auto q = p; ++q != vertices.end(); /**/)
if (squared_eucl_distance(complex_.point(*p), complex_.point(*q)) < 4 * alpha * alpha)
- complex_.add_edge(*p, *q);
+ complex_.add_edge_without_blockers(*p, *q);
}
std::cout << std::endl;
}
diff --git a/GudhUI/utils/UI_utils.h b/GudhUI/utils/UI_utils.h
index 9cc209d3..67a02869 100644
--- a/GudhUI/utils/UI_utils.h
+++ b/GudhUI/utils/UI_utils.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/utils/Vertex_collapsor.h b/GudhUI/utils/Vertex_collapsor.h
index 568dab2f..fca57f7d 100644
--- a/GudhUI/utils/Vertex_collapsor.h
+++ b/GudhUI/utils/Vertex_collapsor.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/Color.h b/GudhUI/view/Color.h
index ba0592e1..808dc2d8 100644
--- a/GudhUI/view/Color.h
+++ b/GudhUI/view/Color.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/FirstCoordProjector.h b/GudhUI/view/FirstCoordProjector.h
index 1333f5d3..3f8a6fd9 100644
--- a/GudhUI/view/FirstCoordProjector.h
+++ b/GudhUI/view/FirstCoordProjector.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/Projector3D.h b/GudhUI/view/Projector3D.h
index 2a756541..a1421f51 100644
--- a/GudhUI/view/Projector3D.h
+++ b/GudhUI/view/Projector3D.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/View_parameter.h b/GudhUI/view/View_parameter.h
index 9805abc2..578a0268 100644
--- a/GudhUI/view/View_parameter.h
+++ b/GudhUI/view/View_parameter.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/Viewer.cpp b/GudhUI/view/Viewer.cpp
index c6c2b345..42e35d6c 100644
--- a/GudhUI/view/Viewer.cpp
+++ b/GudhUI/view/Viewer.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/Viewer.h b/GudhUI/view/Viewer.h
index 797ddc53..414044ef 100644
--- a/GudhUI/view/Viewer.h
+++ b/GudhUI/view/Viewer.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/Viewer_instructor.cpp b/GudhUI/view/Viewer_instructor.cpp
index 1ddd4d8b..a9dc4525 100644
--- a/GudhUI/view/Viewer_instructor.cpp
+++ b/GudhUI/view/Viewer_instructor.cpp
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/GudhUI/view/Viewer_instructor.h b/GudhUI/view/Viewer_instructor.h
index 05c5c1fc..4b06acb8 100644
--- a/GudhUI/view/Viewer_instructor.h
+++ b/GudhUI/view/Viewer_instructor.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Mediterranee (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/biblio/bibliography.bib b/biblio/bibliography.bib
index b101cb76..16f43d6f 100644
--- a/biblio/bibliography.bib
+++ b/biblio/bibliography.bib
@@ -1,12 +1,12 @@
@inproceedings{gudhilibrary_ICMS14,
- author = {Cl\'ement Maria and Jean-Daniel Boissonnat and
+ author = {Cl\'ement Maria and Jean-Daniel Boissonnat and
Marc Glisse and Mariette Yvinec},
title = {The {G}udhi Library: Simplicial Complexes and Persistent Homology},
booktitle = {ICMS},
year = {2014},
}
-@article{Carriere17c,
+@article{Carriere17c,
author = {Carri\`ere, Mathieu and Michel, Bertrand and Oudot, Steve},
title = {{Statistical Analysis and Parameter Selection for Mapper}},
journal = {CoRR},
@@ -20,7 +20,7 @@
booktitle = {Proceedings of the Twenty-ninth Annual Symposium on Computational Geometry},
year = {2013},
pages = {107--116},
-}
+}
@article{Carriere16,
title={{Structure and Stability of the 1-Dimensional Mapper}},
@@ -70,7 +70,7 @@ language={English}
publisher = {ACM Press/Addison-Wesley Publishing Co.},
address = {New York, NY, USA},
keywords = {level of detail, mutiresolution modeling, non-manifold, pair contraction, surface simplification},
-}
+}
@inproceedings{Lindstrom,
@@ -85,7 +85,7 @@ language={English}
numpages = {8},
publisher = {IEEE Computer Society Press},
address = {Los Alamitos, CA, USA},
-}
+}
@article{boissonnatmariacamalgorithmica,
@@ -201,13 +201,13 @@ language={English},
bibsource = {DBLP, http://dblp.uni-trier.de}
}
@article{RS62,
- author={J. B. Rosser and L. Schoenfeld},
- title={Approximate Formulas for some Functions of Prime Numbers},
- journal= {ijm},
- volume= 6,
- year= 1962,
- pages={64-94},
- mrnumber={25 \#1139}
+ author={J. B. Rosser and L. Schoenfeld},
+ title={Approximate Formulas for some Functions of Prime Numbers},
+ journal= {ijm},
+ volume= 6,
+ year= 1962,
+ pages={64-94},
+ mrnumber={25 \#1139}
}
@article{DBLP:journals/siamcomp/Furer09,
author = {Martin F{\"u}rer},
@@ -410,7 +410,7 @@ url="http://dx.doi.org/10.1007/s00454-013-9557-2"
edition = {2},
publisher = {Cambridge University Press},
address = {New York, NY, USA},
-}
+}
@book{DBLP:books/aw/AhoHU74,
author = {Alfred V. Aho and
John E. Hopcroft and
@@ -508,7 +508,7 @@ proceedings{DBLP:conf/issac/1996,
pages = {501--509},
numpages = {9},
keywords = {clique complexes, data structure, edge contraction, flag complexes, high dimensions, homotopy equivalence, shape reconstruction, shape simplification, simplicial complexes, vietoris-rips complexes},
-}
+}
@@ -571,7 +571,7 @@ note = "http://gmplib.org/",
publisher = {ACM},
address = {New York, NY, USA},
keywords = {discrete and computational geometry, embedding theorem, persistent homology},
-}
+}
@article{Fredman:1984:SST:828.1884,
author = {Fredman, Michael L. and Koml\'{o}s, J\'{a}nos and Szemer{\'e}di, Endre},
title = {Storing a Sparse Table with {O}(1) Worst Case Access Time},
@@ -589,7 +589,7 @@ note = "http://gmplib.org/",
acmid = {1884},
publisher = {ACM},
address = {New York, NY, USA},
-}
+}
%------------------------------------------------------------------
@@ -739,7 +739,7 @@ inproceedings{DBLP:conf/soda/1997,
publisher = {Kluwer Academic Publishers},
address = {Hingham, MA, USA},
keywords = {Filtration, Klein bottle, Manifold, Natural images, Persistent homology, Topology},
-}
+}
article{DBLP:journals/ijcv/LeePM03,
author = {Ann B. Lee and
@@ -767,7 +767,7 @@ pages={234115},
year={2010},
abstract={Understanding energy landscapes is a major challenge in chemistry and biology. Although a wide variety of methods have been invented and applied to this problem, very little is understood about the actual mathematical structures underlying such landscapes. Perhaps the most general assumption is the idea that energy landscapes are low-dimensional manifolds embedded in high-dimensional Euclidean space. While this is a very mild assumption, we have discovered an example of an energy landscape which is nonmanifold, demonstrating previously unknown mathematical complexity. The example occurs in the energy landscape of cyclo-octane, which was found to have the structure of a reducible algebraic variety, composed of the union of a sphere and a Klein bottle, intersecting in two rings.}
}
-
+
book{hatcher2002algebraic,
title={Algebraic Topology},
@@ -803,7 +803,7 @@ book{hatcher2002algebraic,
isbn = {0070131511},
edition = {2nd},
publisher = {McGraw-Hill Higher Education},
-}
+}
@article{DBLP:journals/focm/CarlssonS10,
author = {Gunnar E. Carlsson and
@@ -1017,7 +1017,7 @@ language={English}
journal = {Journal of Symbolic Computation.},
year = {2016}
}
-
+
@ARTICLE{Fasy_Kim_Lecci_Maria_tda,
author = {B. Fasy and J. Kim and F. Lecci and C. Maria},
title = {Introduction to the R package TDA.},
@@ -1064,11 +1064,42 @@ language={English}
}
@ARTICLE{Carriere_Oudot_Ovsjanikov_top_signatures_3d,
- author = {M. Carrière and S. Oudot and M. Ovsjanikov},
+ author = {M. Carri\`ere and S. Oudot and M. Ovsjanikov},
title = {Stable Topological Signatures for Points on 3D Shapes.},
journal = {Proc. Sympos. on Geometry Processing},
year = {2015}
}
-
+@article{buchet16efficient,
+ title = {Efficient and Robust Persistent Homology for Measures},
+ author = {Micka\"{e}l Buchet and Fr\'{e}d\'{e}ric Chazal and Steve Y. Oudot and Donald Sheehy},
+ booktitle = {Computational Geometry: Theory and Applications},
+ volume = {58},
+ pages = {70--96},
+ year = {2016}
+}
+
+@inproceedings{cavanna15geometric,
+ author = {Nicholas J. Cavanna and Mahmoodreza Jahanseir and Donald R. Sheehy},
+ booktitle = {Proceedings of the Canadian Conference on Computational Geometry},
+ title = {A Geometric Perspective on Sparse Filtrations},
+ year = {2015}
+}
+
+@inproceedings{cavanna15visualizing,
+ author = {Nicholas J. Cavanna and Mahmoodreza Jahanseir and Donald R. Sheehy},
+ booktitle = {Proceedings of the 31st International Symposium on Computational Geometry},
+ title = {Visualizing Sparse Filtrations},
+ year = {2015},
+ doi = {10.4230/LIPIcs.SOCG.2015.23}
+}
+@article{sheehy13linear,
+ title = {Linear-Size Approximations to the {V}ietoris-{R}ips Filtration},
+ author = {Donald R. Sheehy},
+ journal = {Discrete \& Computational Geometry},
+ volume = {49},
+ number = {4},
+ pages = {778--796},
+ year = {2013}
+}
diff --git a/biblio/how_to_cite_gudhi.bib b/biblio/how_to_cite_gudhi.bib
index 5994124a..942f8d7e 100644
--- a/biblio/how_to_cite_gudhi.bib
+++ b/biblio/how_to_cite_gudhi.bib
@@ -97,7 +97,7 @@
}
@incollection{gudhi:RipsComplex
-, author = "Cl\'ement Maria, Pawel Dlotko, Vincent Rouvreau"
+, author = "Cl\'ement Maria, Pawel Dlotko, Vincent Rouvreau, Marc Glisse"
, title = "Rips complex"
, publisher = "{GUDHI Editorial Board}"
, booktitle = "{GUDHI} User and Reference Manual"
diff --git a/cmake/modules/GUDHI_compilation_flags.cmake b/cmake/modules/GUDHI_compilation_flags.cmake
new file mode 100644
index 00000000..a01d6e13
--- /dev/null
+++ b/cmake/modules/GUDHI_compilation_flags.cmake
@@ -0,0 +1,72 @@
+# This files manage compilation flags required by GUDHI
+
+include(TestCXXAcceptsFlag)
+include(CheckCXXSourceCompiles)
+
+# add a compiler flag only if it is accepted
+macro(add_cxx_compiler_flag _flag)
+ string(REPLACE "-" "_" _flag_var ${_flag})
+ check_cxx_accepts_flag("${_flag}" CXX_COMPILER_${_flag_var}_OK)
+ if(CXX_COMPILER_${_flag_var}_OK)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}")
+ endif()
+endmacro()
+
+function(can_cgal_use_cxx11_thread_local)
+ # This is because of https://github.com/CGAL/cgal/blob/master/Installation/include/CGAL/tss.h
+ # CGAL is using boost thread if thread_local is not ready (requires XCode 8 for Mac).
+ # The test in https://github.com/CGAL/cgal/blob/master/Installation/include/CGAL/config.h
+ # #if __has_feature(cxx_thread_local) || \
+ # ( (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L ) || \
+ # ( _MSC_VER >= 1900 )
+ # #define CGAL_CAN_USE_CXX11_THREAD_LOCAL
+ # #endif
+ set(CGAL_CAN_USE_CXX11_THREAD_LOCAL "
+ int main() {
+ #ifndef __has_feature
+ #define __has_feature(x) 0 // Compatibility with non-clang compilers.
+ #endif
+ #if __has_feature(cxx_thread_local) || \
+ ( (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L ) || \
+ ( _MSC_VER >= 1900 )
+ bool has_feature_thread_local = true;
+ #else
+ // Explicit error of compilation for CMake test purpose - has_feature_thread_local is not defined
+ #endif
+ bool result = has_feature_thread_local;
+ } ")
+ check_cxx_source_compiles("${CGAL_CAN_USE_CXX11_THREAD_LOCAL}" CGAL_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
+endfunction()
+
+set (CMAKE_CXX_STANDARD 11)
+
+enable_testing()
+
+if(MSVC)
+ # Turn off some VC++ warnings
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4668 /wd4311 /wd4800 /wd4820 /wd4503 /wd4244 /wd4345 /wd4996 /wd4396 /wd4018")
+endif()
+
+add_cxx_compiler_flag("-Wall")
+
+if (DEBUG_TRACES)
+ # For programs to be more verbose
+ message(STATUS "DEBUG_TRACES are activated")
+ add_definitions(-DDEBUG_TRACES)
+endif()
+
+set(GUDHI_CAN_USE_CXX11_THREAD_LOCAL "
+ int main() {
+ thread_local int result = 0;
+ return result;
+ } ")
+check_cxx_source_compiles("${GUDHI_CAN_USE_CXX11_THREAD_LOCAL}" GUDHI_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
+if (GUDHI_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
+ add_definitions(-DGUDHI_CAN_USE_CXX11_THREAD_LOCAL)
+endif()
+
+if(CMAKE_BUILD_TYPE MATCHES Debug)
+ message("++ Debug compilation flags are: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
+else()
+ message("++ Release compilation flags are: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
+endif()
diff --git a/cmake/modules/GUDHI_third_party_libraries.cmake b/cmake/modules/GUDHI_third_party_libraries.cmake
index 419c2581..7433f2f3 100644
--- a/cmake/modules/GUDHI_third_party_libraries.cmake
+++ b/cmake/modules/GUDHI_third_party_libraries.cmake
@@ -54,23 +54,27 @@ if(CGAL_FOUND)
endforeach(CGAL_INCLUDE_DIR ${CGAL_INCLUDE_DIRS})
endif(NOT CGAL_VERSION VERSION_GREATER 4.9.0)
- if (NOT CGAL_VERSION VERSION_GREATER 4.11.0)
+ if (CGAL_VERSION VERSION_LESS 4.11.0)
# For dev version
include_directories(BEFORE "src/common/include/gudhi_patches")
# For user version
include_directories(BEFORE "include/gudhi_patches")
- endif (NOT CGAL_VERSION VERSION_GREATER 4.11.0)
+ endif ()
endif()
endif()
+option(WITH_GUDHI_USE_TBB "Build with Intel TBB parallelization" ON)
+
# Find TBB package for parallel sort - not mandatory, just optional.
-set(TBB_FIND_QUIETLY ON)
-find_package(TBB)
-if (TBB_FOUND)
- include(${TBB_USE_FILE})
- message("TBB found in ${TBB_LIBRARY_DIRS}")
- add_definitions(-DGUDHI_USE_TBB)
-endif()
+if(WITH_GUDHI_USE_TBB)
+ set(TBB_FIND_QUIETLY ON)
+ find_package(TBB)
+ if (TBB_FOUND)
+ include(${TBB_USE_FILE})
+ message("TBB found in ${TBB_LIBRARY_DIRS}")
+ add_definitions(-DGUDHI_USE_TBB)
+ endif()
+endif(WITH_GUDHI_USE_TBB)
set(CGAL_WITH_EIGEN3_VERSION 0.0.0)
find_package(Eigen3 3.1.0)
diff --git a/cmake/modules/GUDHI_user_version_target.cmake b/cmake/modules/GUDHI_user_version_target.cmake
index 4abc2574..1205966a 100644
--- a/cmake/modules/GUDHI_user_version_target.cmake
+++ b/cmake/modules/GUDHI_user_version_target.cmake
@@ -48,10 +48,10 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
copy_directory ${CMAKE_SOURCE_DIR}/src/GudhUI ${GUDHI_USER_VERSION_DIR}/GudhUI)
set(GUDHI_DIRECTORIES "doc;example;concept;utilities")
- if (NOT CGAL_VERSION VERSION_GREATER 4.11.0)
- set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi;include/gudhi_patches")
+ if (CGAL_VERSION VERSION_LESS 4.11.0)
+ set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi;include/Miniball;include/gudhi_patches")
else ()
- set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi")
+ set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi;include/Miniball")
endif ()
foreach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST})
diff --git a/concept/Alpha_complex/SimplicialComplexForAlpha.h b/concept/Alpha_complex/SimplicialComplexForAlpha.h
index 2b8bff94..a51df127 100644
--- a/concept/Alpha_complex/SimplicialComplexForAlpha.h
+++ b/concept/Alpha_complex/SimplicialComplexForAlpha.h
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2016 INRIA
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Bottleneck_distance/Persistence_diagram.h b/concept/Bottleneck_distance/Persistence_diagram.h
index b157f22a..d016faf4 100644
--- a/concept/Bottleneck_distance/Persistence_diagram.h
+++ b/concept/Bottleneck_distance/Persistence_diagram.h
@@ -4,7 +4,7 @@
*
* Author: François Godi
*
- * Copyright (C) 2015 INRIA
+ * Copyright (C) 2015 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Cech_complex/SimplicialComplexForCech.h b/concept/Cech_complex/SimplicialComplexForCech.h
new file mode 100644
index 00000000..89231eec
--- /dev/null
+++ b/concept/Cech_complex/SimplicialComplexForCech.h
@@ -0,0 +1,66 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Vincent Rouvreau
+ *
+ * Copyright (C) 2018 Inria
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef CONCEPT_CECH_COMPLEX_SIMPLICIAL_COMPLEX_FOR_CECH_H_
+#define CONCEPT_CECH_COMPLEX_SIMPLICIAL_COMPLEX_FOR_CECH_H_
+
+namespace Gudhi {
+
+namespace cech_complex {
+
+/** \brief The concept SimplicialComplexForCech describes the requirements for a type to implement a simplicial
+ * complex, that can be created from a `Cech_complex`.
+ */
+struct SimplicialComplexForCech {
+ /** Handle to specify a simplex. */
+ typedef unspecified Simplex_handle;
+ /** Handle to specify a vertex. Must be a non-negative integer. */
+ typedef unspecified Vertex_handle;
+ /** Handle to specify the simplex filtration value. */
+ typedef unspecified Filtration_value;
+
+ /** Assigns the 'simplex' with the given 'filtration' value. */
+ int assign_filtration(Simplex_handle simplex, Filtration_value filtration);
+
+ /** \brief Returns a range over vertices of a given
+ * simplex. */
+ Simplex_vertex_range simplex_vertex_range(Simplex_handle const & simplex);
+
+ /** \brief Inserts a given `Gudhi::ProximityGraph` in the simplicial complex. */
+ template
+ void insert_graph(const ProximityGraph& proximity_graph);
+
+ /** \brief Expands the simplicial complex containing only its one skeleton until a given maximal dimension.
+ * expansion can be blocked by the blocker oracle. */
+ template< typename Blocker >
+ void expansion_with_blockers(int max_dim, Blocker block_simplex);
+
+ /** Returns the number of vertices in the simplicial complex. */
+ std::size_t num_vertices();
+
+};
+
+} // namespace alpha_complex
+
+} // namespace Gudhi
+
+#endif // CONCEPT_ALPHA_COMPLEX_SIMPLICIAL_COMPLEX_FOR_ALPHA_H_
diff --git a/concept/Persistence_representations/Real_valued_topological_data.h b/concept/Persistence_representations/Real_valued_topological_data.h
index 1d3595ad..22ef6d72 100644
--- a/concept/Persistence_representations/Real_valued_topological_data.h
+++ b/concept/Persistence_representations/Real_valued_topological_data.h
@@ -4,7 +4,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2016 INRIA (France)
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Persistence_representations/Topological_data_with_averages.h b/concept/Persistence_representations/Topological_data_with_averages.h
index 9ebd105f..aa64467f 100644
--- a/concept/Persistence_representations/Topological_data_with_averages.h
+++ b/concept/Persistence_representations/Topological_data_with_averages.h
@@ -5,7 +5,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2016 INRIA (France)
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Persistence_representations/Topological_data_with_distances.h b/concept/Persistence_representations/Topological_data_with_distances.h
index a6a62307..c8eb2b34 100644
--- a/concept/Persistence_representations/Topological_data_with_distances.h
+++ b/concept/Persistence_representations/Topological_data_with_distances.h
@@ -4,7 +4,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2016 INRIA (France)
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Persistence_representations/Topological_data_with_scalar_product.h b/concept/Persistence_representations/Topological_data_with_scalar_product.h
index 2e506ca9..0f08b8c6 100644
--- a/concept/Persistence_representations/Topological_data_with_scalar_product.h
+++ b/concept/Persistence_representations/Topological_data_with_scalar_product.h
@@ -4,7 +4,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2016 INRIA (France)
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Persistence_representations/Vectorized_topological_data.h b/concept/Persistence_representations/Vectorized_topological_data.h
index b6b5b109..365105d6 100644
--- a/concept/Persistence_representations/Vectorized_topological_data.h
+++ b/concept/Persistence_representations/Vectorized_topological_data.h
@@ -4,7 +4,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2016 INRIA (France)
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Persistent_cohomology/CoefficientField.h b/concept/Persistent_cohomology/CoefficientField.h
index 953b06c2..9d066cca 100644
--- a/concept/Persistent_cohomology/CoefficientField.h
+++ b/concept/Persistent_cohomology/CoefficientField.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Persistent_cohomology/FilteredComplex.h b/concept/Persistent_cohomology/FilteredComplex.h
index c19698df..62b9002f 100644
--- a/concept/Persistent_cohomology/FilteredComplex.h
+++ b/concept/Persistent_cohomology/FilteredComplex.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,10 +29,6 @@ struct FilteredComplex
{
/** Handle to specify a simplex. */
typedef unspecified Simplex_handle;
-/** \brief Key associated to each simplex.
- *
- * Must be a signed integer type. */
- typedef unspecified Simplex_key;
/** \brief Type for the value of the filtration function.
*
* Must be comparable with <. */
@@ -58,20 +54,10 @@ struct FilteredComplex
* filtration function on the complex. */
Filtration_value filtration(Simplex_handle sh);
-/** \brief Returns a key that is different from the keys associated
- * to the simplices. */
- Simplex_key null_key ();
-/** \brief Returns the key associated to a simplex.
- *
- * This is never called on null_simplex(). */
- Simplex_key key ( Simplex_handle sh );
/** \brief Returns the simplex that has index idx in the filtration.
*
- * This is never called on null_key(). */
- Simplex_handle simplex ( Simplex_key idx );
-/** \brief Assign a key to a simplex. */
- void assign_key(Simplex_handle sh, Simplex_key key);
-
+ * This is only called on valid indices. */
+ Simplex_handle simplex ( size_t idx );
/** \brief Iterator on the simplices belonging to the
* boundary of a simplex.
*
@@ -115,6 +101,26 @@ typedef unspecified Filtration_simplex_range;
* .begin() and .end() return type Filtration_simplex_iterator.*/
Filtration_simplex_range filtration_simplex_range();
+/** \name Map interface
+ * Conceptually a `std::unordered_map`.
+ * @{ */
+/** \brief Data stored for each simplex.
+ *
+ * Must be an integer type. */
+ typedef unspecified Simplex_key;
+/** \brief Returns a constant dummy number that is either negative,
+ * or at least as large as `num_simplices()`. Suggested value: -1. */
+ Simplex_key null_key ();
+/** \brief Returns the number stored for a simplex by `assign_key`.
+ *
+ * This is never called on null_simplex(). */
+ Simplex_key key ( Simplex_handle sh );
+/** \brief Store a number for a simplex, which can later be retrieved with `key(sh)`.
+ *
+ * This is never called on null_simplex(). */
+ void assign_key(Simplex_handle sh, Simplex_key n);
+/** @} */
+
/* \brief Iterator over the simplices of the complex,
* in an arbitrary order.
diff --git a/concept/Persistent_cohomology/PersistentHomology.h b/concept/Persistent_cohomology/PersistentHomology.h
index 111723a5..f9a78763 100644
--- a/concept/Persistent_cohomology/PersistentHomology.h
+++ b/concept/Persistent_cohomology/PersistentHomology.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Rips_complex/SimplicialComplexForRips.h b/concept/Rips_complex/SimplicialComplexForRips.h
index 7dab0615..3c5acecf 100644
--- a/concept/Rips_complex/SimplicialComplexForRips.h
+++ b/concept/Rips_complex/SimplicialComplexForRips.h
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2016 INRIA
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Simplex_tree/FiltrationValue.h b/concept/Simplex_tree/FiltrationValue.h
index 79ca06cc..f4dcf985 100644
--- a/concept/Simplex_tree/FiltrationValue.h
+++ b/concept/Simplex_tree/FiltrationValue.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Simplex_tree/IndexingTag.h b/concept/Simplex_tree/IndexingTag.h
index 1dcdd756..37e7e294 100644
--- a/concept/Simplex_tree/IndexingTag.h
+++ b/concept/Simplex_tree/IndexingTag.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Simplex_tree/SimplexKey.h b/concept/Simplex_tree/SimplexKey.h
index 9fbed401..c03f7da1 100644
--- a/concept/Simplex_tree/SimplexKey.h
+++ b/concept/Simplex_tree/SimplexKey.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Simplex_tree/SimplexTreeOptions.h b/concept/Simplex_tree/SimplexTreeOptions.h
index 89acdc18..6638da26 100644
--- a/concept/Simplex_tree/SimplexTreeOptions.h
+++ b/concept/Simplex_tree/SimplexTreeOptions.h
@@ -4,7 +4,7 @@
*
* Author(s): Marc Glisse
*
- * Copyright (C) 2015 INRIA Saclay - Ile-de-France (France)
+ * Copyright (C) 2015 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Simplex_tree/VertexHandle.h b/concept/Simplex_tree/VertexHandle.h
index 3efbba61..9d0642c3 100644
--- a/concept/Simplex_tree/VertexHandle.h
+++ b/concept/Simplex_tree/VertexHandle.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Skeleton_blocker/SkeletonBlockerDS.h b/concept/Skeleton_blocker/SkeletonBlockerDS.h
index d82425a0..fd806ff1 100644
--- a/concept/Skeleton_blocker/SkeletonBlockerDS.h
+++ b/concept/Skeleton_blocker/SkeletonBlockerDS.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h b/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h
index 477464c4..d8521343 100644
--- a/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h
+++ b/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h
@@ -4,7 +4,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/concept/Witness_complex/SimplicialComplexForWitness.h b/concept/Witness_complex/SimplicialComplexForWitness.h
index d78cc83f..8b85f4e4 100644
--- a/concept/Witness_complex/SimplicialComplexForWitness.h
+++ b/concept/Witness_complex/SimplicialComplexForWitness.h
@@ -4,7 +4,7 @@
*
* Author(s): Siargey Kachanovich
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/cython/CMakeLists.txt b/cython/CMakeLists.txt
index afca9d60..17d440ee 100644
--- a/cython/CMakeLists.txt
+++ b/cython/CMakeLists.txt
@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 2.8)
project(Cython)
function( add_gudhi_cython_lib THE_LIB )
@@ -32,35 +31,6 @@ if(CYTHON_FOUND)
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DBOOST_ALL_NO_LIB', ")
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DBOOST_SYSTEM_NO_DEPRECATED', ")
- # This is because of https://github.com/CGAL/cgal/blob/master/Installation/include/CGAL/tss.h
- # CGAL is using boost thread if thread_local is not ready (requires XCode 8 for Mac).
- # The test in https://github.com/CGAL/cgal/blob/master/Installation/include/CGAL/config.h
- # #if __has_feature(cxx_thread_local) || \
- # ( (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L ) || \
- # ( _MSC_VER >= 1900 )
- # #define CGAL_CAN_USE_CXX11_THREAD_LOCAL
- # #endif
- set(CGAL_CAN_USE_CXX11_THREAD_LOCAL "
- int main() {
- #ifndef __has_feature
- #define __has_feature(x) 0 // Compatibility with non-clang compilers.
- #endif
- #if __has_feature(cxx_thread_local) || \
- ( (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L ) || \
- ( _MSC_VER >= 1900 )
- bool has_feature_thread_local = true;
- #else
- // Explicit error of compilation for CMake test purpose - has_feature_thread_local is not defined
- #endif
- bool result = has_feature_thread_local;
- } ")
- check_cxx_source_compiles("${CGAL_CAN_USE_CXX11_THREAD_LOCAL}" CGAL_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
-
- if (NOT CGAL_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
- add_gudhi_cython_lib(${Boost_THREAD_LIBRARY})
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${Boost_LIBRARY_DIRS}', ")
- endif()
-
# Gudhi and CGAL compilation option
if(MSVC)
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'/fp:strict', ")
@@ -99,11 +69,16 @@ if(CYTHON_FOUND)
endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
if(CGAL_FOUND)
+ can_cgal_use_cxx11_thread_local()
+ if (NOT CGAL_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
+ add_gudhi_cython_lib(${Boost_THREAD_LIBRARY})
+ set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${Boost_LIBRARY_DIRS}', ")
+ endif()
# Add CGAL compilation args
if(CGAL_HEADER_ONLY)
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_HEADER_ONLY', ")
else(CGAL_HEADER_ONLY)
- add_gudhi_cython_lib(${CGAL_LIBRARIES})
+ add_gudhi_cython_lib(${CGAL_LIBRARY})
set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${CGAL_LIBRARIES_DIR}', ")
# If CGAL is not header only, CGAL library may link with boost system,
add_gudhi_cython_lib(${Boost_SYSTEM_LIBRARY})
@@ -135,7 +110,7 @@ if(CYTHON_FOUND)
endforeach()
set(GUDHI_CYTHON_INCLUDE_DIRS "${GUDHI_CYTHON_INCLUDE_DIRS}'${CMAKE_SOURCE_DIR}/${GUDHI_CYTHON_PATH}/include', ")
- if (TBB_FOUND)
+ if (TBB_FOUND AND WITH_GUDHI_USE_TBB)
set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DGUDHI_USE_TBB', ")
add_gudhi_cython_lib(${TBB_RELEASE_LIBRARY})
add_gudhi_cython_lib(${TBB_MALLOC_RELEASE_LIBRARY})
@@ -181,7 +156,7 @@ if(CYTHON_FOUND)
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/tangential_complex_plain_homology_from_off_file_example.py"
- --no-diagram -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off)
+ --no-diagram -i 2 -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off)
add_gudhi_py_test(test_tangential_complex)
diff --git a/cython/cython/alpha_complex.pyx b/cython/cython/alpha_complex.pyx
index a0e8f9b7..4f772e31 100644
--- a/cython/cython/alpha_complex.pyx
+++ b/cython/cython/alpha_complex.pyx
@@ -11,7 +11,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Alpha_complex_interface.h" namespace "Gudhi":
diff --git a/cython/cython/bottleneck_distance.pyx b/cython/cython/bottleneck_distance.pyx
index 9fb377ff..76ef81f4 100644
--- a/cython/cython/bottleneck_distance.pyx
+++ b/cython/cython/bottleneck_distance.pyx
@@ -9,7 +9,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Bottleneck_distance_interface.h" namespace "Gudhi::persistence_diagram":
diff --git a/cython/cython/cubical_complex.pyx b/cython/cython/cubical_complex.pyx
index ffc85130..e94cd539 100644
--- a/cython/cython/cubical_complex.pyx
+++ b/cython/cython/cubical_complex.pyx
@@ -11,7 +11,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Cubical_complex_interface.h" namespace "Gudhi":
@@ -104,22 +104,21 @@ cdef class CubicalComplex:
return self.pcohptr != NULL
def num_simplices(self):
- """This function returns the number of simplices of the simplicial
- complex.
+ """This function returns the number of all cubes in the complex.
- :returns: int -- the simplicial complex number of simplices.
+ :returns: int -- the number of all cubes in the complex.
"""
return self.thisptr.num_simplices()
def dimension(self):
- """This function returns the dimension of the simplicial complex.
+ """This function returns the dimension of the complex.
- :returns: int -- the simplicial complex dimension.
+ :returns: int -- the complex dimension.
"""
return self.thisptr.dimension()
def persistence(self, homology_coeff_field=11, min_persistence=0):
- """This function returns the persistence of the simplicial complex.
+ """This function returns the persistence of the complex.
:param homology_coeff_field: The homology coefficient field. Must be a
prime number
@@ -130,7 +129,7 @@ cdef class CubicalComplex:
Sets min_persistence to -1.0 to see all values.
:type min_persistence: float.
:returns: list of pairs(dimension, pair(birth, death)) -- the
- persistence of the simplicial complex.
+ persistence of the complex.
"""
if self.pcohptr != NULL:
del self.pcohptr
@@ -142,12 +141,15 @@ cdef class CubicalComplex:
return persistence_result
def betti_numbers(self):
- """This function returns the Betti numbers of the simplicial complex.
+ """This function returns the Betti numbers of the complex.
:returns: list of int -- The Betti numbers ([B0, B1, ..., Bn]).
:note: betti_numbers function requires persistence function to be
launched first.
+
+ :note: betti_numbers function always returns [1, 0, 0, ...] as infinity
+ filtration cubes are not removed from the complex.
"""
cdef vector[int] bn_result
if self.pcohptr != NULL:
@@ -155,8 +157,7 @@ cdef class CubicalComplex:
return bn_result
def persistent_betti_numbers(self, from_value, to_value):
- """This function returns the persistent Betti numbers of the
- simplicial complex.
+ """This function returns the persistent Betti numbers of the complex.
:param from_value: The persistence birth limit to be added in the
numbers (persistent birth <= from_value).
@@ -177,8 +178,8 @@ cdef class CubicalComplex:
return pbn_result
def persistence_intervals_in_dimension(self, dimension):
- """This function returns the persistence intervals of the simplicial
- complex in a specific dimension.
+ """This function returns the persistence intervals of the complex in a
+ specific dimension.
:param dimension: The specific dimension.
:type from_value: int.
diff --git a/cython/cython/euclidean_strong_witness_complex.pyx b/cython/cython/euclidean_strong_witness_complex.pyx
index c1523892..62b7cf71 100644
--- a/cython/cython/euclidean_strong_witness_complex.pyx
+++ b/cython/cython/euclidean_strong_witness_complex.pyx
@@ -8,7 +8,7 @@ from libcpp.utility cimport pair
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ from libcpp.utility cimport pair
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Euclidean_strong_witness_complex_interface.h" namespace "Gudhi":
diff --git a/cython/cython/euclidean_witness_complex.pyx b/cython/cython/euclidean_witness_complex.pyx
index 7c443b6b..c10ca73d 100644
--- a/cython/cython/euclidean_witness_complex.pyx
+++ b/cython/cython/euclidean_witness_complex.pyx
@@ -8,7 +8,7 @@ from libcpp.utility cimport pair
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ from libcpp.utility cimport pair
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Euclidean_witness_complex_interface.h" namespace "Gudhi":
diff --git a/cython/cython/off_reader.pyx b/cython/cython/off_reader.pyx
index b6e107ef..b939013f 100644
--- a/cython/cython/off_reader.pyx
+++ b/cython/cython/off_reader.pyx
@@ -9,7 +9,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Off_reader_interface.h" namespace "Gudhi":
@@ -46,4 +46,5 @@ def read_off(off_file=''):
return read_points_from_OFF_file(str.encode(off_file))
else:
print("file " + off_file + " not found.")
+ return []
diff --git a/cython/cython/periodic_cubical_complex.pyx b/cython/cython/periodic_cubical_complex.pyx
index 3025f125..e626950b 100644
--- a/cython/cython/periodic_cubical_complex.pyx
+++ b/cython/cython/periodic_cubical_complex.pyx
@@ -11,7 +11,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Cubical_complex_interface.h" namespace "Gudhi":
@@ -106,22 +106,21 @@ cdef class PeriodicCubicalComplex:
return self.pcohptr != NULL
def num_simplices(self):
- """This function returns the number of simplices of the simplicial
- complex.
+ """This function returns the number of all cubes in the complex.
- :returns: int -- the simplicial complex number of simplices.
+ :returns: int -- the number of all cubes in the complex.
"""
return self.thisptr.num_simplices()
def dimension(self):
- """This function returns the dimension of the simplicial complex.
+ """This function returns the dimension of the complex.
- :returns: int -- the simplicial complex dimension.
+ :returns: int -- the complex dimension.
"""
return self.thisptr.dimension()
def persistence(self, homology_coeff_field=11, min_persistence=0):
- """This function returns the persistence of the simplicial complex.
+ """This function returns the persistence of the complex.
:param homology_coeff_field: The homology coefficient field. Must be a
prime number
@@ -132,7 +131,7 @@ cdef class PeriodicCubicalComplex:
Sets min_persistence to -1.0 to see all values.
:type min_persistence: float.
:returns: list of pairs(dimension, pair(birth, death)) -- the
- persistence of the simplicial complex.
+ persistence of the complex.
"""
if self.pcohptr != NULL:
del self.pcohptr
@@ -144,12 +143,15 @@ cdef class PeriodicCubicalComplex:
return persistence_result
def betti_numbers(self):
- """This function returns the Betti numbers of the simplicial complex.
+ """This function returns the Betti numbers of the complex.
:returns: list of int -- The Betti numbers ([B0, B1, ..., Bn]).
:note: betti_numbers function requires persistence function to be
launched first.
+
+ :note: betti_numbers function always returns [1, 0, 0, ...] as infinity
+ filtration cubes are not removed from the complex.
"""
cdef vector[int] bn_result
if self.pcohptr != NULL:
@@ -157,8 +159,7 @@ cdef class PeriodicCubicalComplex:
return bn_result
def persistent_betti_numbers(self, from_value, to_value):
- """This function returns the persistent Betti numbers of the
- simplicial complex.
+ """This function returns the persistent Betti numbers of the complex.
:param from_value: The persistence birth limit to be added in the
numbers (persistent birth <= from_value).
@@ -179,8 +180,8 @@ cdef class PeriodicCubicalComplex:
return pbn_result
def persistence_intervals_in_dimension(self, dimension):
- """This function returns the persistence intervals of the simplicial
- complex in a specific dimension.
+ """This function returns the persistence intervals of the complex in a
+ specific dimension.
:param dimension: The specific dimension.
:type from_value: int.
diff --git a/cython/cython/persistence_graphical_tools.py b/cython/cython/persistence_graphical_tools.py
index fb837e29..216ab8d6 100755
--- a/cython/cython/persistence_graphical_tools.py
+++ b/cython/cython/persistence_graphical_tools.py
@@ -1,4 +1,5 @@
import matplotlib.pyplot as plt
+import matplotlib.patches as mpatches
import numpy as np
import os
@@ -8,7 +9,7 @@ import os
Author(s): Vincent Rouvreau, Bertrand Michel
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,16 +26,16 @@ import os
"""
__author__ = "Vincent Rouvreau, Bertrand Michel"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
-def __min_birth_max_death(persistence, band_boot=0.):
+def __min_birth_max_death(persistence, band=0.):
"""This function returns (min_birth, max_death) from the persistence.
:param persistence: The persistence to plot.
:type persistence: list of tuples(dimension, tuple(birth, death)).
- :param band_boot: bootstrap band
- :type band_boot: float.
+ :param band: band
+ :type band: float.
:returns: (float, float) -- (min_birth, max_death).
"""
# Look for minimum birth date and maximum death date for plot optimisation
@@ -48,8 +49,8 @@ def __min_birth_max_death(persistence, band_boot=0.):
max_death = float(interval[1][0])
if float(interval[1][0]) < min_birth:
min_birth = float(interval[1][0])
- if band_boot > 0.:
- max_death += band_boot
+ if band > 0.:
+ max_death += band
return (min_birth, max_death)
"""
@@ -59,37 +60,27 @@ palette = ['#ff0000', '#00ff00', '#0000ff', '#00ffff', '#ff00ff', '#ffff00',
'#000000', '#880000', '#008800', '#000088', '#888800', '#880088',
'#008888']
-def show_palette_values(alpha=0.6):
- """This function shows palette color values in function of the dimension.
+def plot_persistence_barcode(persistence=[], persistence_file='', alpha=0.6,
+ max_barcodes=1000, inf_delta=0.1, legend=False):
+ """This function plots the persistence bar code from persistence values list
+ or from a :doc:`persistence file `.
- :param alpha: alpha value in [0.0, 1.0] for horizontal bars (default is 0.6).
- :type alpha: float.
- :returns: plot the dimension palette values.
- """
- colors = []
- for color in palette:
- colors.append(color)
-
- y_pos = np.arange(len(palette))
-
- plt.barh(y_pos, y_pos + 1, align='center', alpha=alpha, color=colors)
- plt.ylabel('Dimension')
- plt.title('Dimension palette values')
- return plt
-
-def plot_persistence_barcode(persistence=[], persistence_file='', alpha=0.6, max_barcodes=0):
- """This function plots the persistence bar code.
-
- :param persistence: The persistence to plot.
+ :param persistence: Persistence values list.
:type persistence: list of tuples(dimension, tuple(birth, death)).
- :param persistence_file: A persistence file style name (reset persistence if both are set).
+ :param persistence_file: A :doc:`persistence file ` style name
+ (reset persistence if both are set).
:type persistence_file: string
- :param alpha: alpha value in [0.0, 1.0] for horizontal bars (default is 0.6).
+ :param alpha: barcode transparency value (0.0 transparent through 1.0 opaque - default is 0.6).
:type alpha: float.
- :param max_barcodes: number of maximal barcodes to be displayed
+ :param max_barcodes: number of maximal barcodes to be displayed.
+ Set it to 0 to see all, Default value is 1000.
(persistence will be sorted by life time if max_barcodes is set)
:type max_barcodes: int.
- :returns: plot -- An horizontal bar plot of persistence.
+ :param inf_delta: Infinity is placed at ((max_death - min_birth) x inf_delta).
+ A reasonable value is between 0.05 and 0.5 - default is 0.1.
+ :type inf_delta: float.
+ :returns: A matplotlib object containing horizontal bar plot of persistence
+ (launch `show()` method on it to display it).
"""
if persistence_file is not '':
if os.path.isfile(persistence_file):
@@ -107,9 +98,11 @@ def plot_persistence_barcode(persistence=[], persistence_file='', alpha=0.6, max
# Sort by life time, then takes only the max_plots elements
persistence = sorted(persistence, key=lambda life_time: life_time[1][1]-life_time[1][0], reverse=True)[:max_barcodes]
+ persistence = sorted(persistence, key=lambda birth: birth[1][0])
+
(min_birth, max_death) = __min_birth_max_death(persistence)
ind = 0
- delta = ((max_death - min_birth) / 10.0)
+ delta = ((max_death - min_birth) * inf_delta)
# Replace infinity values with max_death + delta for bar code to be more
# readable
infinity = max_death + delta
@@ -120,33 +113,49 @@ def plot_persistence_barcode(persistence=[], persistence_file='', alpha=0.6, max
# Finite death case
plt.barh(ind, (interval[1][1] - interval[1][0]), height=0.8,
left = interval[1][0], alpha=alpha,
- color = palette[interval[0]])
+ color = palette[interval[0]],
+ linewidth=0)
else:
# Infinite death case for diagram to be nicer
plt.barh(ind, (infinity - interval[1][0]), height=0.8,
left = interval[1][0], alpha=alpha,
- color = palette[interval[0]])
+ color = palette[interval[0]],
+ linewidth=0)
ind = ind + 1
+ if legend:
+ dimensions = list(set(item[0] for item in persistence))
+ plt.legend(handles=[mpatches.Patch(color=palette[dim],
+ label=str(dim)) for dim in dimensions],
+ loc='lower right')
plt.title('Persistence barcode')
# Ends plot on infinity value and starts a little bit before min_birth
plt.axis([axis_start, infinity, 0, ind])
return plt
-def plot_persistence_diagram(persistence=[], persistence_file='', alpha=0.6, band_boot=0., max_plots=0):
- """This function plots the persistence diagram with an optional confidence band.
+def plot_persistence_diagram(persistence=[], persistence_file='', alpha=0.6,
+ band=0., max_plots=1000, inf_delta=0.1, legend=False):
+ """This function plots the persistence diagram from persistence values list
+ or from a :doc:`persistence file `.
- :param persistence: The persistence to plot.
+ :param persistence: Persistence values list.
:type persistence: list of tuples(dimension, tuple(birth, death)).
- :param persistence_file: A persistence file style name (reset persistence if both are set).
+ :param persistence_file: A :doc:`persistence file ` style name
+ (reset persistence if both are set).
:type persistence_file: string
- :param alpha: alpha value in [0.0, 1.0] for points and horizontal infinity line (default is 0.6).
+ :param alpha: plot transparency value (0.0 transparent through 1.0 opaque - default is 0.6).
:type alpha: float.
- :param band_boot: bootstrap band (not displayed if :math:`\leq` 0.)
- :type band_boot: float.
+ :param band: band (not displayed if :math:`\leq` 0. - default is 0.)
+ :type band: float.
:param max_plots: number of maximal plots to be displayed
+ Set it to 0 to see all, Default value is 1000.
+ (persistence will be sorted by life time if max_plots is set)
:type max_plots: int.
- :returns: plot -- A diagram plot of persistence.
+ :param inf_delta: Infinity is placed at ((max_death - min_birth) x inf_delta).
+ A reasonable value is between 0.05 and 0.5 - default is 0.1.
+ :type inf_delta: float.
+ :returns: A matplotlib object containing diagram plot of persistence
+ (launch `show()` method on it to display it).
"""
if persistence_file is not '':
if os.path.isfile(persistence_file):
@@ -164,9 +173,9 @@ def plot_persistence_diagram(persistence=[], persistence_file='', alpha=0.6, ban
# Sort by life time, then takes only the max_plots elements
persistence = sorted(persistence, key=lambda life_time: life_time[1][1]-life_time[1][0], reverse=True)[:max_plots]
- (min_birth, max_death) = __min_birth_max_death(persistence, band_boot)
+ (min_birth, max_death) = __min_birth_max_death(persistence, band)
ind = 0
- delta = ((max_death - min_birth) / 10.0)
+ delta = ((max_death - min_birth) * inf_delta)
# Replace infinity values with max_death + delta for diagram to be more
# readable
infinity = max_death + delta
@@ -179,8 +188,8 @@ def plot_persistence_diagram(persistence=[], persistence_file='', alpha=0.6, ban
plt.plot(x, [infinity] * len(x), linewidth=1.0, color='k', alpha=alpha)
plt.text(axis_start, infinity, r'$\infty$', color='k', alpha=alpha)
# bootstrap band
- if band_boot > 0.:
- plt.fill_between(x, x, x+band_boot, alpha=alpha, facecolor='red')
+ if band > 0.:
+ plt.fill_between(x, x, x+band, alpha=alpha, facecolor='red')
# Draw points in loop
for interval in reversed(persistence):
@@ -194,6 +203,10 @@ def plot_persistence_diagram(persistence=[], persistence_file='', alpha=0.6, ban
color = palette[interval[0]])
ind = ind + 1
+ if legend:
+ dimensions = list(set(item[0] for item in persistence))
+ plt.legend(handles=[mpatches.Patch(color=palette[dim], label=str(dim)) for dim in dimensions])
+
plt.title('Persistence diagram')
plt.xlabel('Birth')
plt.ylabel('Death')
diff --git a/cython/cython/reader_utils.pyx b/cython/cython/reader_utils.pyx
index 3a17c5a0..e4572db0 100644
--- a/cython/cython/reader_utils.pyx
+++ b/cython/cython/reader_utils.pyx
@@ -11,7 +11,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2017 INRIA
+ Copyright (C) 2017 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2017 INRIA"
+__copyright__ = "Copyright (C) 2017 Inria"
__license__ = "GPL v3"
cdef extern from "Reader_utils_interface.h" namespace "Gudhi":
diff --git a/cython/cython/rips_complex.pyx b/cython/cython/rips_complex.pyx
index ad9b0a4d..59c16bff 100644
--- a/cython/cython/rips_complex.pyx
+++ b/cython/cython/rips_complex.pyx
@@ -11,7 +11,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,14 +28,12 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Rips_complex_interface.h" namespace "Gudhi":
cdef cppclass Rips_complex_interface "Gudhi::rips_complex::Rips_complex_interface":
Rips_complex_interface(vector[vector[double]] values, double threshold, bool euclidean)
- # bool from_file is a workaround for cython to find the correct signature
- Rips_complex_interface(string file_name, double threshold, bool euclidean, bool from_file)
void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, int dim_max)
# RipsComplex python interface
@@ -49,7 +47,7 @@ cdef class RipsComplex:
cdef Rips_complex_interface * thisptr
# Fake constructor that does nothing but documenting the constructor
- def __init__(self, points=None, off_file='', distance_matrix=None, csv_file='', max_edge_length=float('inf')):
+ def __init__(self, points=None, distance_matrix=None, max_edge_length=float('inf')):
"""RipsComplex constructor.
:param max_edge_length: Rips value.
@@ -60,41 +58,14 @@ cdef class RipsComplex:
Or
- :param off_file: An OFF file style name.
- :type off_file: string
-
- Or
-
:param distance_matrix: A distance matrix (full square or lower
triangular).
:type points: list of list of double
-
- Or
-
- :param csv_file: A csv file style name containing a full square or a
- lower triangular distance matrix.
- :type csv_file: string
"""
# The real cython constructor
- def __cinit__(self, points=None, off_file='', distance_matrix=None, csv_file='', max_edge_length=float('inf')):
- if off_file is not '':
- if os.path.isfile(off_file):
- self.thisptr = new Rips_complex_interface(str.encode(off_file),
- max_edge_length,
- True,
- True)
- else:
- print("file " + off_file + " not found.")
- elif csv_file is not '':
- if os.path.isfile(csv_file):
- self.thisptr = new Rips_complex_interface(str.encode(csv_file),
- max_edge_length,
- False,
- True)
- else:
- print("file " + csv_file + " not found.")
- elif distance_matrix is not None:
+ def __cinit__(self, points=None, distance_matrix=None, max_edge_length=float('inf')):
+ if distance_matrix is not None:
self.thisptr = new Rips_complex_interface(distance_matrix, max_edge_length, False)
else:
if points is None:
diff --git a/cython/cython/simplex_tree.pyx b/cython/cython/simplex_tree.pyx
index 0cb575d2..e302486b 100644
--- a/cython/cython/simplex_tree.pyx
+++ b/cython/cython/simplex_tree.pyx
@@ -10,7 +10,7 @@ from libcpp.string cimport string
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ from libcpp.string cimport string
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Simplex_tree_interface.h" namespace "Gudhi":
@@ -55,6 +55,7 @@ cdef extern from "Simplex_tree_interface.h" namespace "Gudhi":
void expansion(int max_dim)
void remove_maximal_simplex(vector[int] simplex)
bool prune_above_filtration(double filtration)
+ bool make_filtration_non_decreasing()
cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
cdef cppclass Simplex_tree_persistence_interface "Gudhi::Persistent_cohomology_interface>":
@@ -64,6 +65,7 @@ cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
vector[int] persistent_betti_numbers(double from_value, double to_value)
vector[pair[double,double]] intervals_in_dimension(int dimension)
void write_output_diagram(string diagram_file_name)
+ vector[pair[vector[int], vector[int]]] persistence_pairs()
# SimplexTree python interface
cdef class SimplexTree:
@@ -399,6 +401,26 @@ cdef class SimplexTree:
"""
self.thisptr.expansion(max_dim)
+ def make_filtration_non_decreasing(self):
+ """This function ensures that each simplex has a higher filtration
+ value than its faces by increasing the filtration values.
+
+ :returns: The filtration modification information.
+ :rtype: bint
+
+
+ .. note::
+
+ Some simplex tree functions require the filtration to be valid.
+ make_filtration_non_decreasing function is not launching
+ :func:`initialize_filtration()`
+ but returns the filtration modification
+ information. If the complex has changed , please call
+ :func:`initialize_filtration()`
+ to recompute it.
+ """
+ return self.thisptr.make_filtration_non_decreasing()
+
def persistence(self, homology_coeff_field=11, min_persistence=0, persistence_dim_max = False):
"""This function returns the persistence of the simplicial complex.
@@ -486,6 +508,25 @@ cdef class SimplexTree:
" to be launched first.")
return intervals_result
+ def persistence_pairs(self):
+ """This function returns the persistence pairs of the simplicial
+ complex.
+
+ :returns: The persistence intervals.
+ :rtype: list of pair of list of int
+
+ :note: intervals_in_dim function requires
+ :func:`persistence()`
+ function to be launched first.
+ """
+ cdef vector[pair[vector[int],vector[int]]] persistence_pairs_result
+ if self.pcohptr != NULL:
+ persistence_pairs_result = self.pcohptr.persistence_pairs()
+ else:
+ print("persistence_pairs function requires persistence function"
+ " to be launched first.")
+ return persistence_pairs_result
+
def write_persistence_diagram(self, persistence_file=''):
"""This function writes the persistence intervals of the simplicial
complex in a user given file name.
diff --git a/cython/cython/strong_witness_complex.pyx b/cython/cython/strong_witness_complex.pyx
index 770b46f5..74c5cb05 100644
--- a/cython/cython/strong_witness_complex.pyx
+++ b/cython/cython/strong_witness_complex.pyx
@@ -8,7 +8,7 @@ from libcpp.utility cimport pair
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ from libcpp.utility cimport pair
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Strong_witness_complex_interface.h" namespace "Gudhi":
diff --git a/cython/cython/subsampling.pyx b/cython/cython/subsampling.pyx
index 894a4fbe..ac09b7a3 100644
--- a/cython/cython/subsampling.pyx
+++ b/cython/cython/subsampling.pyx
@@ -10,7 +10,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Subsampling_interface.h" namespace "Gudhi::subsampling":
diff --git a/cython/cython/tangential_complex.pyx b/cython/cython/tangential_complex.pyx
index d55bb050..4bb07076 100644
--- a/cython/cython/tangential_complex.pyx
+++ b/cython/cython/tangential_complex.pyx
@@ -11,7 +11,7 @@ import os
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,14 +28,14 @@ import os
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Tangential_complex_interface.h" namespace "Gudhi":
cdef cppclass Tangential_complex_interface "Gudhi::tangential_complex::Tangential_complex_interface":
- Tangential_complex_interface(vector[vector[double]] points)
+ Tangential_complex_interface(int intrisic_dim, vector[vector[double]] points)
# bool from_file is a workaround for cython to find the correct signature
- Tangential_complex_interface(string off_file, bool from_file)
+ Tangential_complex_interface(int intrisic_dim, string off_file, bool from_file)
vector[double] get_point(unsigned vertex)
unsigned number_of_vertices()
unsigned number_of_simplices()
@@ -54,9 +54,12 @@ cdef class TangentialComplex:
cdef Tangential_complex_interface * thisptr
# Fake constructor that does nothing but documenting the constructor
- def __init__(self, points=None, off_file=''):
+ def __init__(self, intrisic_dim, points=None, off_file=''):
"""TangentialComplex constructor.
+ :param intrisic_dim: Intrinsic dimension of the manifold.
+ :type intrisic_dim: integer
+
:param points: A list of points in d-Dimension.
:type points: list of list of double
@@ -67,17 +70,17 @@ cdef class TangentialComplex:
"""
# The real cython constructor
- def __cinit__(self, points=None, off_file=''):
+ def __cinit__(self, intrisic_dim, points=None, off_file=''):
if off_file is not '':
if os.path.isfile(off_file):
- self.thisptr = new Tangential_complex_interface(str.encode(off_file), True)
+ self.thisptr = new Tangential_complex_interface(intrisic_dim, str.encode(off_file), True)
else:
print("file " + off_file + " not found.")
else:
if points is None:
# Empty tangential construction
points=[]
- self.thisptr = new Tangential_complex_interface(points)
+ self.thisptr = new Tangential_complex_interface(intrisic_dim, points)
def __dealloc__(self):
diff --git a/cython/cython/witness_complex.pyx b/cython/cython/witness_complex.pyx
index 96d122bb..8591465a 100644
--- a/cython/cython/witness_complex.pyx
+++ b/cython/cython/witness_complex.pyx
@@ -8,7 +8,7 @@ from libcpp.utility cimport pair
Author(s): Vincent Rouvreau
- Copyright (C) 2016 INRIA
+ Copyright (C) 2016 Inria
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ from libcpp.utility cimport pair
"""
__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 INRIA"
+__copyright__ = "Copyright (C) 2016 Inria"
__license__ = "GPL v3"
cdef extern from "Witness_complex_interface.h" namespace "Gudhi":
diff --git a/cython/doc/_templates/layout.html b/cython/doc/_templates/layout.html
index 8e4eba40..1161ed8e 100644
--- a/cython/doc/_templates/layout.html
+++ b/cython/doc/_templates/layout.html
@@ -56,6 +56,12 @@
- *
+ *
+ * \f$
+ * \textbf{for } \text{i : dimension } \rightarrow 0 \textbf{ do}\\
+ * \quad \textbf{for all } \sigma \text{ of dimension i}\\
+ * \quad\quad \textbf{if } \text{filtration(} \sigma ) \text{ is NaN} \textbf{ then}\\
+ * \quad\quad\quad \text{filtration(} \sigma ) = \alpha^2( \sigma )\\
+ * \quad\quad \textbf{end if}\\
+ * \quad\quad \textbf{for all } \tau \text{ face of } \sigma \textbf{ do}\quad\quad
+ * \textit{// propagate alpha filtration value}\\
+ * \quad\quad\quad \textbf{if } \text{filtration(} \tau ) \text{ is not NaN} \textbf{ then}\\
+ * \quad\quad\quad\quad \text{filtration(} \tau \text{) = min( filtration(} \tau \text{), filtration(} \sigma
+ * \text{) )}\\
+ * \quad\quad\quad \textbf{else}\\
+ * \quad\quad\quad\quad \textbf{if } \textbf{if } \tau \text{ is not Gabriel for } \sigma \textbf{ then}\\
+ * \quad\quad\quad\quad\quad \text{filtration(} \tau \text{) = filtration(} \sigma \text{)}\\
+ * \quad\quad\quad\quad \textbf{end if}\\
+ * \quad\quad\quad \textbf{end if}\\
+ * \quad\quad \textbf{end for}\\
+ * \quad \textbf{end for}\\
+ * \textbf{end for}\\
+ * \text{make_filtration_non_decreasing()}\\
+ * \text{prune_above_filtration()}\\
+ * \f$
*
* \subsubsection dimension2 Dimension 2
*
diff --git a/doc/Bitmap_cubical_complex/COPYRIGHT b/doc/Bitmap_cubical_complex/COPYRIGHT
index bcd46b23..2b14dcb9 100644
--- a/doc/Bitmap_cubical_complex/COPYRIGHT
+++ b/doc/Bitmap_cubical_complex/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Pawel Dlotko
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h b/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h
index a5d7b60f..d1836ef0 100644
--- a/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h
+++ b/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h
@@ -4,7 +4,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2015 INRIA Sophia-Saclay (France)
+ * Copyright (C) 2015 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Bottleneck_distance/COPYRIGHT b/doc/Bottleneck_distance/COPYRIGHT
index 179740a6..1c2016b1 100644
--- a/doc/Bottleneck_distance/COPYRIGHT
+++ b/doc/Bottleneck_distance/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): François Godi
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Bottleneck_distance/Intro_bottleneck_distance.h b/doc/Bottleneck_distance/Intro_bottleneck_distance.h
index 3998fe8d..f8fce96c 100644
--- a/doc/Bottleneck_distance/Intro_bottleneck_distance.h
+++ b/doc/Bottleneck_distance/Intro_bottleneck_distance.h
@@ -4,7 +4,7 @@
*
* Author: François Godi
*
- * Copyright (C) 2015 INRIA
+ * Copyright (C) 2015 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Cech_complex/COPYRIGHT b/doc/Cech_complex/COPYRIGHT
new file mode 100644
index 00000000..5f1d97cc
--- /dev/null
+++ b/doc/Cech_complex/COPYRIGHT
@@ -0,0 +1,19 @@
+The files of this directory are part of the Gudhi Library. The Gudhi library
+(Geometric Understanding in Higher Dimensions) is a generic C++ library for
+computational topology.
+
+Author(s): Vincent Rouvreau
+
+Copyright (C) 2015 Inria
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation, either version 3 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program. If not, see .
diff --git a/doc/Cech_complex/Intro_cech_complex.h b/doc/Cech_complex/Intro_cech_complex.h
new file mode 100644
index 00000000..4483bcb9
--- /dev/null
+++ b/doc/Cech_complex/Intro_cech_complex.h
@@ -0,0 +1,114 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Vincent Rouvreau
+ *
+ * Copyright (C) 2018 Inria
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_
+#define DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_
+
+namespace Gudhi {
+
+namespace cech_complex {
+
+/** \defgroup cech_complex Čech complex
+ *
+ * \author Vincent Rouvreau
+ *
+ * @{
+ *
+ * \section cechdefinition Čech complex definition
+ *
+ * Čech complex
+ * (Wikipedia) is a
+ * simplicial complex constructed
+ * from a proximity graph. The set of all simplices is filtered by the radius of their minimal enclosing ball.
+ *
+ * The input shall be a point cloud in an Euclidean space.
+ *
+ * \remark For people only interested in the topology of the \ref cech_complex (for instance persistence),
+ * \ref alpha_complex is equivalent to the \ref cech_complex and much smaller if you do not bound the radii.
+ * \ref cech_complex can still make sense in higher dimension precisely because you can bound the radii.
+ *
+ * \subsection cechalgorithm Algorithm
+ *
+ * Cech_complex first builds a proximity graph from a point cloud.
+ * The filtration value of each edge of the `Gudhi::Proximity_graph` is computed from
+ * `Gudhi::Minimal_enclosing_ball_radius` function.
+ *
+ * All edges that have a filtration value strictly greater than a user given maximal radius value, \f$max\_radius\f$,
+ * are not inserted into the complex.
+ *
+ * Vertex name correspond to the index of the point in the given range (aka. the point cloud).
+ *
+ * \image html "cech_one_skeleton.png" "Čech complex proximity graph representation"
+ *
+ * When creating a simplicial complex from this proximity graph, Cech_complex inserts the proximity graph into the
+ * simplicial complex data structure, and then expands the simplicial complex when required.
+ *
+ * On this example, as edges \f$(x,y)\f$, \f$(y,z)\f$ and \f$(z,y)\f$ are in the complex, the minimal ball radius
+ * containing the points \f$(x,y,z)\f$ is computed.
+ *
+ * \f$(x,y,z)\f$ is inserted to the simplicial complex with the filtration value set with
+ * \f$mini\_ball\_radius(x,y,z))\f$ iff \f$mini\_ball\_radius(x,y,z)) \leq max\_radius\f$.
+ *
+ * And so on for higher dimensions.
+ *
+ * \image html "cech_complex_representation.png" "Čech complex expansion"
+ *
+ * The minimal ball radius computation is insured by
+ *
+ * the miniball software (V3.0) - Smallest Enclosing Balls of Points - and distributed with GUDHI.
+ * Please refer to
+ *
+ * the miniball software design description for more information about this computation.
+ *
+ * This radius computation is the reason why the Cech_complex is taking much more time to be computed than the
+ * \ref rips_complex but it offers more topological guarantees.
+ *
+ * If the Cech_complex interfaces are not detailed enough for your need, please refer to
+ *
+ * cech_complex_step_by_step.cpp example, where the graph construction over the Simplex_tree is more detailed.
+ *
+ * \subsection cechpointscloudexample Example from a point cloud
+ *
+ * This example builds the proximity graph from the given points, and maximal radius values.
+ * Then it creates a `Simplex_tree` with it.
+ *
+ * Then, it is asked to display information about the simplicial complex.
+ *
+ * \include Cech_complex/cech_complex_example_from_points.cpp
+ *
+ * When launching (maximal enclosing ball radius is 1., is expanded until dimension 2):
+ *
+ * \code $> ./Cech_complex_example_from_points
+ * \endcode
+ *
+ * the program output is:
+ *
+ * \include Cech_complex/cech_complex_example_from_points_for_doc.txt
+ *
+ */
+/** @} */ // end defgroup cech_complex
+
+} // namespace cech_complex
+
+} // namespace Gudhi
+
+#endif // DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_
diff --git a/doc/Cech_complex/cech_complex_representation.ipe b/doc/Cech_complex/cech_complex_representation.ipe
new file mode 100644
index 00000000..377745a3
--- /dev/null
+++ b/doc/Cech_complex/cech_complex_representation.ipe
@@ -0,0 +1,330 @@
+
+
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+0.6 0 0 0.6 0 0 e
+
+
+
+
+
+0.5 0 0 0.5 0 0 e
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+
+
+
+
+
+-0.5 -0.5 m
+0.5 -0.5 l
+0.5 0.5 l
+-0.5 0.5 l
+h
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+
+
+-0.43 -0.57 m
+0.57 0.43 l
+0.43 0.57 l
+-0.57 -0.43 l
+h
+
+
+-0.43 0.57 m
+0.57 -0.43 l
+0.43 -0.57 l
+-0.57 0.43 l
+h
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+-1 0.333 m
+0 0 l
+-1 -0.333 l
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+48 640 m
+80 672 l
+48 672 l
+h
+
+Cech complex
+0
+1
+2
+3
+4
+5
+6
+
+
+
+
+
+
+
+
+
+
+
+
+
+32 0 0 32 304 672 e
+
+
+304 672 m
+336 672 l
+
+Maximal radius
+7
+8
+9
+
+112 576 m
+144 608 l
+
+
+144 672 m
+144 608 l
+200 640 l
+h
+
+
+48 576 m
+112 576 l
+80 544 l
+h
+
+
+
+80 672 m
+144 672 l
+112 728 l
+h
+
+
+
+
+
+48 576 m
+48 640 l
+32 608 l
+h
+
+
+
+
+
+
+
+
+32 0 0 32 80 576 e
+
+
+22.6274 0 0 22.6274 64 656 e
+
+
+37.1429 0 0 37.1429 112 690.857 e
+
+
+37.1429 0 0 37.1429 162.857 640 e
+
+
+10
+
+32 0 0 32 48 608 e
+
+
+
+
+
diff --git a/doc/Cech_complex/cech_complex_representation.png b/doc/Cech_complex/cech_complex_representation.png
new file mode 100644
index 00000000..d0eb85a5
Binary files /dev/null and b/doc/Cech_complex/cech_complex_representation.png differ
diff --git a/doc/Cech_complex/cech_one_skeleton.ipe b/doc/Cech_complex/cech_one_skeleton.ipe
new file mode 100644
index 00000000..ed66e132
--- /dev/null
+++ b/doc/Cech_complex/cech_one_skeleton.ipe
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+0.6 0 0 0.6 0 0 e
+
+
+
+
+
+0.5 0 0 0.5 0 0 e
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+
+
+
+
+
+-0.5 -0.5 m
+0.5 -0.5 l
+0.5 0.5 l
+-0.5 0.5 l
+h
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+
+
+-0.43 -0.57 m
+0.57 0.43 l
+0.43 0.57 l
+-0.57 -0.43 l
+h
+
+
+-0.43 0.57 m
+0.57 -0.43 l
+0.43 -0.57 l
+-0.57 0.43 l
+h
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+-1 0.333 m
+0 0 l
+-1 -0.333 l
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Proximity graph
+0
+1
+
+304 672 m
+336 672 l
+
+2
+3
+4
+5
+6
+
+
+
+
+
+
+
+
+
+
+
+32 0 0 32 304 672 e
+
+Maximal radius
+7
+8
+9
+
+112 576 m
+144 608 l
+
+
+144 672 m
+144 608 l
+200 640 l
+h
+
+
+48 640 m
+80 672 l
+48 672 l
+h
+
+
+48 576 m
+112 576 l
+80 544 l
+h
+
+
+
+80 672 m
+144 672 l
+112 728 l
+h
+
+
+
+48 576 m
+48 640 l
+32 608 l
+h
+
+
+
+
+
+
+
+
+
+
+
+10
+
+
+
+
diff --git a/doc/Cech_complex/cech_one_skeleton.png b/doc/Cech_complex/cech_one_skeleton.png
new file mode 100644
index 00000000..cc636616
Binary files /dev/null and b/doc/Cech_complex/cech_one_skeleton.png differ
diff --git a/doc/Contraction/COPYRIGHT b/doc/Contraction/COPYRIGHT
index 1de850d7..5b606ac2 100644
--- a/doc/Contraction/COPYRIGHT
+++ b/doc/Contraction/COPYRIGHT
@@ -3,7 +3,7 @@ The files of this directory are part of the Gudhi Library. The Gudhi library
computational topology.
Author(s): David Salinas
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Nerve_GIC/COPYRIGHT b/doc/Nerve_GIC/COPYRIGHT
index 0c36a526..6b33053e 100644
--- a/doc/Nerve_GIC/COPYRIGHT
+++ b/doc/Nerve_GIC/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Mathieu Carrière
-Copyright (C) 2017 INRIA
+Copyright (C) 2017 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Nerve_GIC/Intro_graph_induced_complex.h b/doc/Nerve_GIC/Intro_graph_induced_complex.h
index 2b648425..bc8aecc3 100644
--- a/doc/Nerve_GIC/Intro_graph_induced_complex.h
+++ b/doc/Nerve_GIC/Intro_graph_induced_complex.h
@@ -4,7 +4,7 @@
*
* Author(s): Mathieu Carriere
*
- * Copyright (C) 2017 INRIA
+ * Copyright (C) 2017 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Persistence_representations/Persistence_representations_doc.h b/doc/Persistence_representations/Persistence_representations_doc.h
index 38bd3a21..4d850a02 100644
--- a/doc/Persistence_representations/Persistence_representations_doc.h
+++ b/doc/Persistence_representations/Persistence_representations_doc.h
@@ -4,7 +4,7 @@
*
* Author(s): Pawel Dlotko
*
- * Copyright (C) 2016 INRIA Sophia-Saclay (France)
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Persistent_cohomology/COPYRIGHT b/doc/Persistent_cohomology/COPYRIGHT
index 34345bef..6cde9520 100644
--- a/doc/Persistent_cohomology/COPYRIGHT
+++ b/doc/Persistent_cohomology/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Clément Maria
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Persistent_cohomology/Intro_persistent_cohomology.h b/doc/Persistent_cohomology/Intro_persistent_cohomology.h
index 4dbe82c7..5fb9d4d2 100644
--- a/doc/Persistent_cohomology/Intro_persistent_cohomology.h
+++ b/doc/Persistent_cohomology/Intro_persistent_cohomology.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -162,6 +162,19 @@ persistence diagram with a family of field coefficients.
Rips_complex/rips_distance_matrix_persistence.cpp computes the Rips complex of a distance matrix and
outputs its persistence diagram.
+The file should contain square or lower triangular distance matrix with semicolons as separators.
+The code do not check if it is dealing with a distance matrix. It is the user responsibility to provide a valid input.
+Please refer to data/distance_matrix/lower_triangular_distance_matrix.csv for an example of a file.
+
+\li
+Rips_complex/rips_correlation_matrix_persistence.cpp
+computes the Rips complex of a correlation matrix and outputs its persistence diagram.
+
+Note that no check is performed if the matrix given as the input is a correlation matrix.
+It is the user responsibility to ensure that this is the case. The input is to be given either as a square or a lower
+triangular matrix.
+Please refer to data/correlation_matrix/lower_triangular_correlation_matrix.csv for an example of a file.
+
\li
Alpha_complex/alpha_complex_3d_persistence.cpp computes the persistent homology with
\f$\mathbb{Z}/2\mathbb{Z}\f$ coefficients of the alpha complex on points sampling from an OFF file.
diff --git a/doc/Rips_complex/COPYRIGHT b/doc/Rips_complex/COPYRIGHT
index 594b7d03..2c31a0d6 100644
--- a/doc/Rips_complex/COPYRIGHT
+++ b/doc/Rips_complex/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Rips_complex/Intro_rips_complex.h b/doc/Rips_complex/Intro_rips_complex.h
index 8c517516..712d3b6e 100644
--- a/doc/Rips_complex/Intro_rips_complex.h
+++ b/doc/Rips_complex/Intro_rips_complex.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
*
- * Copyright (C) 2016 INRIA
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,28 +29,41 @@ namespace rips_complex {
/** \defgroup rips_complex Rips complex
*
- * \author Clément Maria, Pawel Dlotko, Vincent Rouvreau
+ * \author Clément Maria, Pawel Dlotko, Vincent Rouvreau, Marc Glisse
*
* @{
*
* \section ripsdefinition Rips complex definition
*
- * Rips_complex
- * (Wikipedia) 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.
+ * The Vietoris-Rips complex
+ * (Wikipedia)
+ * is an abstract simplicial complex
+ * defined on a finite metric space, where each simplex corresponds to a subset
+ * of point whose diameter is smaller that some given threshold.
+ * Varying the threshold, we can also see the Rips complex as a filtration of
+ * the \f$(n-1)-\f$dimensional simplex, where the filtration value of each
+ * simplex is the diameter of the corresponding subset of points.
+ *
+ * This filtered complex is most often used as an approximation of the
+ * Čech complex. After rescaling (Rips using the length of the edges and Čech
+ * the half-length), they share the same 1-skeleton and are multiplicatively
+ * 2-interleaved or better. While it is slightly bigger, it is also much
+ * easier to compute.
+ *
+ * The number of simplices in the full Rips complex is exponential in the
+ * number of vertices, it is thus usually restricted, by excluding all the
+ * simplices with filtration value larger than some threshold, and keeping only
+ * the dim_max-skeleton.
+ *
+ * In order to build this complex, the algorithm first builds the graph.
+ * The filtration value of each edge is computed from a user-given distance
+ * function, or directly read from the distance matrix.
+ * In a second step, this graph is inserted in a simplicial complex, which then
+ * gets expanded to a flag complex.
*
- * All edges that have a filtration value strictly greater than a given threshold value are not inserted into
- * the complex.
+ * The input can be given as a range of points and a distance function, or as a
+ * distance matrix.
*
- * 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).
*
* \image html "rips_complex_representation.png" "Rips-complex one skeleton graph representation"
@@ -61,7 +74,36 @@ namespace rips_complex {
*
* 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.
+ * rips_persistence_step_by_step.cpp example, where the constructions of the graph and
+ * the Simplex_tree are more detailed.
+ *
+ * \section sparserips Sparse Rips complex
+ *
+ * Even truncated in filtration value and dimension, the Rips complex remains
+ * quite large. However, it is possible to approximate it by a much smaller
+ * filtered simplicial complex (linear size, with constants that depend on
+ * ε and the doubling dimension of the space) that is
+ * \f$(1+O(\epsilon))-\f$interleaved with it (in particular, their persistence
+ * diagrams are at log-bottleneck distance at most \f$O(\epsilon)\f$).
+ *
+ * The sparse Rips filtration was introduced by Don Sheehy
+ * \cite sheehy13linear. We are using the version described in
+ * \cite buchet16efficient (except that we multiply all filtration values
+ * by 2, to match the usual Rips complex), which proves a
+ * \f$\frac{1+\epsilon}{1-\epsilon}\f$-interleaving, although in practice the
+ * error is usually smaller.
+ * A more intuitive presentation of the idea is available in
+ * \cite cavanna15geometric, and in a video \cite cavanna15visualizing.
+ *
+ * The interface of `Sparse_rips_complex` is similar to the one for the usual
+ * `Rips_complex`, except that one has to specify the approximation factor, and
+ * there is no option to limit the maximum filtration value (the way the
+ * approximation is done means that larger filtration values are much cheaper
+ * to handle than low filtration values, so the gain would be too small).
+ *
+ * Theoretical guarantees are only available for \f$\epsilon<1\f$. The
+ * construction accepts larger values of ε, and the size of the complex
+ * keeps decreasing, but there is no guarantee on the quality of the result.
*
* \section ripspointsdistance Point cloud and distance function
*
@@ -104,6 +146,24 @@ namespace rips_complex {
*
* \include Rips_complex/full_skeleton_rips_for_doc.txt
*
+ *
+ * \subsection sparseripspointscloudexample Example of a sparse Rips from a point cloud
+ *
+ * This example builds the full sparse Rips of a set of 2D Euclidean points, then prints some minimal
+ * information about the complex.
+ *
+ * \include Rips_complex/example_sparse_rips.cpp
+ *
+ * When launching:
+ *
+ * \code $> ./Rips_complex_example_sparse
+ * \endcode
+ *
+ * the program output may be (the exact output varies from one run to the next):
+ *
+ * \code Sparse Rips complex is of dimension 2 - 19 simplices - 7 vertices.
+ * \endcode
+ *
*
*
* \section ripsdistancematrix Distance matrix
@@ -146,6 +206,33 @@ namespace rips_complex {
*
* \include Rips_complex/full_skeleton_rips_for_doc.txt
*
+ *
+ * \section ripscorrelationematrix Correlation matrix
+ *
+ * Analogously to the case of distance matrix, Rips complexes can be also constructed based on correlation matrix.
+ * Given a correlation matrix M, comportment-wise 1-M is a distance matrix.
+ * This example builds the one skeleton graph from the given corelation matrix and threshold value.
+ * Then it creates a `Simplex_tree` with it.
+ *
+ * Then, it is asked to display information about the simplicial complex.
+ *
+ * \include Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp
+ *
+ * When launching:
+ *
+ * \code $> ./example_one_skeleton_from_correlation_matrix
+ * \endcode
+ *
+ * the program output is:
+ *
+ * \include Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt
+ *
+ * All the other constructions discussed for Rips complex for distance matrix can be also performed for Rips complexes
+ * construction from correlation matrices.
+ *
+ * @warning As persistence diagrams points will be under the diagonal, bottleneck distance and persistence graphical
+ * tool will not work properly, this is a known issue.
+ *
*/
/** @} */ // end defgroup rips_complex
diff --git a/doc/Simplex_tree/COPYRIGHT b/doc/Simplex_tree/COPYRIGHT
index 34345bef..6cde9520 100644
--- a/doc/Simplex_tree/COPYRIGHT
+++ b/doc/Simplex_tree/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Clément Maria
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Simplex_tree/Intro_simplex_tree.h b/doc/Simplex_tree/Intro_simplex_tree.h
index 6b80d1c9..db399489 100644
--- a/doc/Simplex_tree/Intro_simplex_tree.h
+++ b/doc/Simplex_tree/Intro_simplex_tree.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Skeleton_blocker/COPYRIGHT b/doc/Skeleton_blocker/COPYRIGHT
index 1de850d7..5b606ac2 100644
--- a/doc/Skeleton_blocker/COPYRIGHT
+++ b/doc/Skeleton_blocker/COPYRIGHT
@@ -3,7 +3,7 @@ The files of this directory are part of the Gudhi Library. The Gudhi library
computational topology.
Author(s): David Salinas
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Spatial_searching/Intro_spatial_searching.h b/doc/Spatial_searching/Intro_spatial_searching.h
index 52ed65e4..f387ab2f 100644
--- a/doc/Spatial_searching/Intro_spatial_searching.h
+++ b/doc/Spatial_searching/Intro_spatial_searching.h
@@ -4,7 +4,7 @@
*
* Author(s): Clement Jamin
*
- * Copyright (C) 2016 INRIA
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Subsampling/Intro_subsampling.h b/doc/Subsampling/Intro_subsampling.h
index ab9cdc37..d88f6bf6 100644
--- a/doc/Subsampling/Intro_subsampling.h
+++ b/doc/Subsampling/Intro_subsampling.h
@@ -4,7 +4,7 @@
*
* Author(s): Clement Jamin
*
- * Copyright (C) 2016 INRIA
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Tangential_complex/COPYRIGHT b/doc/Tangential_complex/COPYRIGHT
index c4df0f64..f9f92471 100644
--- a/doc/Tangential_complex/COPYRIGHT
+++ b/doc/Tangential_complex/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Clement Jamin
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/Tangential_complex/Intro_tangential_complex.h b/doc/Tangential_complex/Intro_tangential_complex.h
index 00e00c52..f4fc8ac7 100644
--- a/doc/Tangential_complex/Intro_tangential_complex.h
+++ b/doc/Tangential_complex/Intro_tangential_complex.h
@@ -4,7 +4,7 @@
*
* Author(s): Clement Jamin
*
- * Copyright (C) 2016 INRIA
+ * Copyright (C) 2016 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/Witness_complex/COPYRIGHT b/doc/Witness_complex/COPYRIGHT
index 7d032c87..25a700cf 100644
--- a/doc/Witness_complex/COPYRIGHT
+++ b/doc/Witness_complex/COPYRIGHT
@@ -4,7 +4,7 @@ computational topology.
Author(s): Siargey Kachanovich
-Copyright (C) 2015 INRIA
+Copyright (C) 2015 Inria
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/doc/common/file_formats.h b/doc/common/file_formats.h
index c60ed15a..523153b8 100644
--- a/doc/common/file_formats.h
+++ b/doc/common/file_formats.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Jamin
*
-* Copyright (C) 2017 INRIA
+* Copyright (C) 2017 Inria
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/doc/common/header.html b/doc/common/header.html
index 9c514381..f8b13ec4 100644
--- a/doc/common/header.html
+++ b/doc/common/header.html
@@ -9,7 +9,7 @@
$projectname: $title$title
-
+
@@ -24,60 +24,61 @@ $extrastylesheet
-
+
diff --git a/doc/common/installation.h b/doc/common/installation.h
index 25675cc5..12407c18 100644
--- a/doc/common/installation.h
+++ b/doc/common/installation.h
@@ -5,8 +5,9 @@
* 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.
+ * The library uses c++11 and requires Boost ≥ 1.48.0
+ * and CMake ≥ 3.1.
+ * 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:
diff --git a/doc/common/main_page.h b/doc/common/main_page.h
index b3e9ea03..db1e80ce 100644
--- a/doc/common/main_page.h
+++ b/doc/common/main_page.h
@@ -41,6 +41,22 @@
User manual: \ref alpha_complex - Reference manual: Gudhi::alpha_complex::Alpha_complex
+
+ \subsection CechComplexDataStructure Čech complex
+ \image html "cech_complex_representation.png" "Čech complex representation"
+
+ The Čech complex is a simplicial complex constructed from a proximity graph.
+ The set of all simplices is filtered by the radius of their minimal enclosing ball.
+ User manual: \ref cech_complex - Reference manual: Gudhi::cech_complex::Cech_complex
+