multipers 2.4.0__tar.gz → 2.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multipers-2.4.0 → multipers-2.4.1}/PKG-INFO +4 -2
- {multipers-2.4.0 → multipers-2.4.1}/README.md +3 -1
- {multipers-2.4.0 → multipers-2.4.1}/_tempita_grid_gen.py +7 -5
- {multipers-2.4.0 → multipers-2.4.1}/multipers/_signed_measure_meta.py +1 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/_slicer_meta.py +2 -5
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/Persistence_slices_interface.h +62 -51
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Degree_rips_bifiltration.h +10 -7
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Dynamic_multi_parameter_filtration.h +18 -4
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field.h +5 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field_operators.h +5 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field_shared.h +5 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field_small.h +5 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +5 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +5 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Z2_field.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Zp_field.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Matrix.h +13 -13
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_filtration/Multi_parameter_generator.h +10 -5
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_parameter_filtered_complex.h +27 -39
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_parameter_filtration.h +26 -15
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_persistence/Line.h +13 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_persistence/Multi_parameter_filtered_complex_pcoh_interface.h +16 -31
- multipers-2.4.1/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_cohomology.h +211 -0
- multipers-2.4.1/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_homology.h +255 -0
- multipers-2.4.1/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_vineyard.h +138 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +11 -11
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +11 -11
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +22 -22
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +6 -4
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +3 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/index_mapper.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +9 -9
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Projective_cover_kernel.h +7 -6
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Slicer.h +60 -104
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Thread_safe_slicer.h +21 -22
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/persistence_matrix_options.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/slicer_helpers.h +53 -39
- multipers-2.4.1/multipers/gudhi/gudhi/vineyard_base.h +286 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/io.pyx +40 -33
- {multipers-2.4.0 → multipers-2.4.1}/multipers/mma_structures.pyx +4 -4
- {multipers-2.4.0 → multipers-2.4.1}/multipers/mma_structures.pyx.tp +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multi_parameter_rank_invariant/hilbert_function.h +3 -7
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multi_parameter_rank_invariant/persistence_slices.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multi_parameter_rank_invariant/rank_invariant.h +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multiparameter_module_approximation/approximation.h +19 -15
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ops.pyx +3 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/plots.py +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/simplex_tree_multi.pyx +9 -1
- {multipers-2.4.0 → multipers-2.4.1}/multipers/simplex_tree_multi.pyx.tp +9 -1
- multipers-2.4.1/multipers/slicer.pxd +5611 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/slicer.pxd.tp +3 -2
- multipers-2.4.1/multipers/slicer.pyx +35506 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/slicer.pyx.tp +17 -3
- {multipers-2.4.0 → multipers-2.4.1}/multipers.egg-info/PKG-INFO +4 -2
- {multipers-2.4.0 → multipers-2.4.1}/multipers.egg-info/SOURCES.txt +3 -1
- {multipers-2.4.0 → multipers-2.4.1}/pyproject.toml +1 -1
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_slicer.py +2 -0
- multipers-2.4.0/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_cohomology.h +0 -159
- multipers-2.4.0/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_matrix.h +0 -463
- multipers-2.4.0/multipers/slicer.pxd +0 -15757
- multipers-2.4.0/multipers/slicer.pyx +0 -102422
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/aida.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/birth_death.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/brute_force_mpm_decomposition.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/generate_decompositions.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/include/aida_interface.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/include/config.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/include/option_parser.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/include/types.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/making_examples.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/minimize_pres.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/mpfree_clone.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/presentation_to_quiver.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/presentation_to_quiver_new.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/resolution.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_decompose.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_decompose.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_functions.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_functions.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_helpers.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_helpers.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/aida_interface.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/block.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/block.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/config.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/src/option_parser.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/AIDA/vectorspace_decompositions.cpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/LICENSE +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/MANIFEST.in +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/bitset_algebra.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/column_types.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/dense_matrix.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/draw_hf.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/general.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/graded_linalg.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/graded_matrix.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/grid_scheduler.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/homomorphisms.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/matrix_base.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/modules.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/orders_and_graphs.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/r2graded_matrix.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/r3graded_matrix.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/sparse_matrix.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/Persistence-Algebra/include/grlina/to_quiver.hpp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/array_api/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/array_api/numpy.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/array_api/torch.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/MOL2.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/UCR.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/graphs.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/immuno_regions.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/minimal_presentation_to_st_bf.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/pytorch2simplextree.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/shape3d.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/data/synthetic.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/distances.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtration_conversions.pxd +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtration_conversions.pxd.tp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtrations/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtrations/density.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtrations/filtrations.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtrations.pxd +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/filtrations.pxd.tp +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/function_rips.pyx +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/grids.pyx +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/Simplex_tree_interface.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/Simplex_tree_multi_interface.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Bitmap_cubical_complex.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Debug_utils.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Z2_field_operators.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Zp_field_operators.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Zp_field_shared.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_filtration/multi_filtration_conversions.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_filtration/multi_filtration_utils.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_persistence/Box.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Multi_persistence/Point.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Off_reader.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_on_a_line.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistence_on_rectangle.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Persistent_cohomology.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Points_off_io.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simple_object_pool.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/filtration_value_utils.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Simplex_tree.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/distance_functions.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/graph_simplicial_complex.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/multi_simplex_tree_helpers.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/persistence_interval.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/reader_utils.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/simple_mdspan.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/tmp_h0_pers/mma_interface_h0.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/tmp_h0_pers/naive_merge_tree.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/accuracies.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/invariants_with_persistable.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/kernels.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/mma.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/one.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/point_clouds.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/signed_measures.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/sliced_wasserstein.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/ml/tools.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/mma_structures.pxd +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multi_parameter_rank_invariant/diff_helpers.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multi_parameter_rank_invariant/euler_characteristic.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multi_parameter_rank_invariant/function_rips.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multiparameter_edge_collapse.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multiparameter_module_approximation/debug.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multiparameter_module_approximation/format_python-cpp.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multiparameter_module_approximation/utilities.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/multiparameter_module_approximation.pyx +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/pickle.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/point_measure.pyx +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/simplex_tree_multi.pxd +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/tensor/tensor.h +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/tensor.pxd +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/test.pyx +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/tests/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/torch/__init__.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/torch/diff_grids.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/torch/rips_density.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers/vector_interface.pxd +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers.egg-info/dependency_links.txt +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers.egg-info/requires.txt +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/multipers.egg-info/top_level.txt +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/setup.cfg +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/setup.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_aida.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_diff_helper.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_filtrations.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_grids.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_hilbert_function.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_mma.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_parallel.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_point_clouds.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_python-cpp_conversion.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_signed_betti.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_signed_measure.py +0 -0
- {multipers-2.4.0 → multipers-2.4.1}/tests/test_simplextreemulti.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multipers
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.1
|
|
4
4
|
Summary: Multiparameter Topological Persistence for Machine Learning
|
|
5
5
|
Author-email: David Loiseaux <david.lapous@proton.me>, Hannah Schreiber <hannah.schreiber@inria.fr>
|
|
6
6
|
Maintainer-email: David Loiseaux <david.lapous@proton.me>
|
|
@@ -86,11 +86,13 @@ This library features a bunch of different functions and helpers. See below for
|
|
|
86
86
|
- [x] [[Differentiability and Optimization of Multiparameter Persistent Homology, ICML2024]](https://proceedings.mlr.press/v235/scoccola24a.html) An approach to compute a (clarke) gradient for any reasonable multiparameter persistent invariant. Currently, any `multipers` computation is auto-differentiable using this strategy, provided that the input are pytorch gradient capable tensor.
|
|
87
87
|
- [x] [[Multiparameter Persistence Landscapes, JMLR]](https://jmlr.org/papers/v21/19-054.html) A vectorization technic for multiparameter persistence modules.
|
|
88
88
|
- [x] [[Filtration-Domination in Bifiltered Graphs, ALENEX2023]](https://doi.org/10.1137/1.9781611977561.ch3) Allows for 2-parameter edge collapses for 1-critical clique complexes. Very useful to speed up, e.g., Rips-Codensity bifiltrations.
|
|
89
|
+
- [x] [[Fast free resolutions of bifiltered chain complexes]](https://arxiv.org/abs/2512.08652) One-critical representation of multicritical filtrations, using [multi_critical](https://bitbucket.org/mkerber/multi_critical).
|
|
89
90
|
- [x] [[Chunk Reduction for Multi-Parameter Persistent Homology, SoCG2019]](https://doi.org/10.4230/LIPIcs.SoCG.2019.37) Multi-filtration preprocessing algorithm for homology computations.
|
|
90
91
|
- [x] [[Computing Minimal Presentations and Bigraded Betti Numbers of 2-Parameter Persistent Homology, JAAG]](https://doi.org/10.1137/20M1388425) Minimal presentation of multiparameter persistence modules, using [mpfree](https://bitbucket.org/mkerber/mpfree/src/master/). Hilbert, Rank Decomposition Signed Measures, and MMA decompositions can be computed using the mpfree backend.
|
|
91
|
-
- [
|
|
92
|
+
- [x] [WIP] [[Decomposing Multiparameter Persistence Modules, SoCG2025]](https://doi.org/10.4230/LIPIcs.SoCG.2025.41) Using the [AIDA](https://github.com/JanJend/AIDA) and [Persistence-Algebra](https://github.com/JanJend/Persistence-Algebra/) libraries.
|
|
92
93
|
- [x] [[Delaunay Bifiltrations of Functions on Point Clouds, SODA2024]](https://epubs.siam.org/doi/10.1137/1.9781611977912.173) Provides an alternative to function rips bifiltrations, using Delaunay complexes. Very good alternative to Rips-Density like bifiltrations.
|
|
93
94
|
- [x] [[Delaunay Core Bifiltration]](https://arxiv.org/abs/2405.01214) Bifiltration for point clouds, taking into account the density. Similar to Rips-Density.
|
|
95
|
+
- [x] [[Computing the Multicover Bifiltration, SOCG2021]](https://doi.org/10.4230/LIPIcs.SoCG.2021.27) Rhomboid Tiling bifiltration. Equivalent to the multicover bifiltration, using [rhomboidtiling](https://github.com/geoo89/rhomboidtiling).
|
|
94
96
|
- [x] [[Rivet]](https://github.com/rivetTDA/rivet) Interactive two parameter persistence
|
|
95
97
|
- [x] [[Kernel Operations on the GPU, with Autodiff, without Memory Overflows, JMLR]](http://jmlr.org/papers/v22/20-275.html) Although not linked, at first glance, to persistence in any way, this library allows computing blazingly fast signed measures convolutions (and more!) with custom kernels.
|
|
96
98
|
- [ ] [Backend only] [[Projected distances for multi-parameter persistence modules]](https://arxiv.org/abs/2206.08818) Provides a strategy to estimate the convolution distance between multiparameter persistence module using projected barcodes. Implementation is a WIP.
|
|
@@ -48,11 +48,13 @@ This library features a bunch of different functions and helpers. See below for
|
|
|
48
48
|
- [x] [[Differentiability and Optimization of Multiparameter Persistent Homology, ICML2024]](https://proceedings.mlr.press/v235/scoccola24a.html) An approach to compute a (clarke) gradient for any reasonable multiparameter persistent invariant. Currently, any `multipers` computation is auto-differentiable using this strategy, provided that the input are pytorch gradient capable tensor.
|
|
49
49
|
- [x] [[Multiparameter Persistence Landscapes, JMLR]](https://jmlr.org/papers/v21/19-054.html) A vectorization technic for multiparameter persistence modules.
|
|
50
50
|
- [x] [[Filtration-Domination in Bifiltered Graphs, ALENEX2023]](https://doi.org/10.1137/1.9781611977561.ch3) Allows for 2-parameter edge collapses for 1-critical clique complexes. Very useful to speed up, e.g., Rips-Codensity bifiltrations.
|
|
51
|
+
- [x] [[Fast free resolutions of bifiltered chain complexes]](https://arxiv.org/abs/2512.08652) One-critical representation of multicritical filtrations, using [multi_critical](https://bitbucket.org/mkerber/multi_critical).
|
|
51
52
|
- [x] [[Chunk Reduction for Multi-Parameter Persistent Homology, SoCG2019]](https://doi.org/10.4230/LIPIcs.SoCG.2019.37) Multi-filtration preprocessing algorithm for homology computations.
|
|
52
53
|
- [x] [[Computing Minimal Presentations and Bigraded Betti Numbers of 2-Parameter Persistent Homology, JAAG]](https://doi.org/10.1137/20M1388425) Minimal presentation of multiparameter persistence modules, using [mpfree](https://bitbucket.org/mkerber/mpfree/src/master/). Hilbert, Rank Decomposition Signed Measures, and MMA decompositions can be computed using the mpfree backend.
|
|
53
|
-
- [
|
|
54
|
+
- [x] [WIP] [[Decomposing Multiparameter Persistence Modules, SoCG2025]](https://doi.org/10.4230/LIPIcs.SoCG.2025.41) Using the [AIDA](https://github.com/JanJend/AIDA) and [Persistence-Algebra](https://github.com/JanJend/Persistence-Algebra/) libraries.
|
|
54
55
|
- [x] [[Delaunay Bifiltrations of Functions on Point Clouds, SODA2024]](https://epubs.siam.org/doi/10.1137/1.9781611977912.173) Provides an alternative to function rips bifiltrations, using Delaunay complexes. Very good alternative to Rips-Density like bifiltrations.
|
|
55
56
|
- [x] [[Delaunay Core Bifiltration]](https://arxiv.org/abs/2405.01214) Bifiltration for point clouds, taking into account the density. Similar to Rips-Density.
|
|
57
|
+
- [x] [[Computing the Multicover Bifiltration, SOCG2021]](https://doi.org/10.4230/LIPIcs.SoCG.2021.27) Rhomboid Tiling bifiltration. Equivalent to the multicover bifiltration, using [rhomboidtiling](https://github.com/geoo89/rhomboidtiling).
|
|
56
58
|
- [x] [[Rivet]](https://github.com/rivetTDA/rivet) Interactive two parameter persistence
|
|
57
59
|
- [x] [[Kernel Operations on the GPU, with Autodiff, without Memory Overflows, JMLR]](http://jmlr.org/papers/v22/20-275.html) Although not linked, at first glance, to persistence in any way, this library allows computing blazingly fast signed measures convolutions (and more!) with custom kernels.
|
|
58
60
|
- [ ] [Backend only] [[Projected distances for multi-parameter persistence modules]](https://arxiv.org/abs/2206.08818) Provides a strategy to estimate the convolution distance between multiparameter persistence module using projected barcodes. Implementation is a WIP.
|
|
@@ -14,7 +14,7 @@ columns_name = [ # only one column is necessary
|
|
|
14
14
|
# "HEAP",
|
|
15
15
|
# "UNORDERED_SET",
|
|
16
16
|
# "NAIVE_VECTOR",
|
|
17
|
-
"VECTOR",
|
|
17
|
+
# "VECTOR",
|
|
18
18
|
# "INTRUSIVE_LIST",
|
|
19
19
|
# "LIST",
|
|
20
20
|
# "SMALL_VECTOR",
|
|
@@ -30,7 +30,7 @@ value_types = [
|
|
|
30
30
|
]
|
|
31
31
|
COARSENNED_VALUE_TYPE = ("int32_t", "np.int32", "i32")
|
|
32
32
|
REAL_VALUE_TYPE = ("double", "np.float64", "f64")
|
|
33
|
-
|
|
33
|
+
assert COARSENNED_VALUE_TYPE in value_types and REAL_VALUE_TYPE in value_types
|
|
34
34
|
|
|
35
35
|
## True needed for MMA, and False is default value
|
|
36
36
|
vineyards_values = [
|
|
@@ -88,11 +88,11 @@ def check_combination(
|
|
|
88
88
|
if backend_type in ["Graph", "GudhiCohomology"]:
|
|
89
89
|
if column_type[0] != 0:
|
|
90
90
|
return False
|
|
91
|
-
if filtration_container == "
|
|
91
|
+
if filtration_container == "Degree_rips_bifiltration":
|
|
92
92
|
if not is_kcritical:
|
|
93
93
|
return False
|
|
94
|
-
if value_type[0] == "f":
|
|
95
|
-
|
|
94
|
+
# if value_type[-1][0] == "f": # needed for mma
|
|
95
|
+
# return False
|
|
96
96
|
return True
|
|
97
97
|
|
|
98
98
|
|
|
@@ -224,6 +224,8 @@ print("#----------------------")
|
|
|
224
224
|
print("Slicers")
|
|
225
225
|
print("#----------------------")
|
|
226
226
|
print("#----------------------")
|
|
227
|
+
print(*[s["PYTHON_TYPE"] for s in slicers], sep="\n")
|
|
228
|
+
print("----------------------")
|
|
227
229
|
print(*slicers, sep="\n")
|
|
228
230
|
with open("build/tmp/_slicer_names.pkl", "wb") as f:
|
|
229
231
|
pickle.dump(slicers, f)
|
|
@@ -132,10 +132,6 @@ def Slicer(
|
|
|
132
132
|
- `multipers.module_approximation(this, *args)`
|
|
133
133
|
- `multipers.signed_measure(this, *args)`
|
|
134
134
|
|
|
135
|
-
Note : it is recommended and sometime required to apply
|
|
136
|
-
a minimal presentation before computing these functions !
|
|
137
|
-
`mp.slicer.minimal_presentation(slicer, *args, **kwargs)`
|
|
138
|
-
|
|
139
135
|
Input
|
|
140
136
|
-----
|
|
141
137
|
- st : SimplexTreeMulti or scc-like blocks or path to scc file
|
|
@@ -222,7 +218,8 @@ You can try using `multipers.slicer.to_simplextree`."""
|
|
|
222
218
|
filtration_container,
|
|
223
219
|
)
|
|
224
220
|
if reduce:
|
|
225
|
-
|
|
221
|
+
from multipers.ops import minimal_presentation
|
|
222
|
+
slicer = minimal_presentation(
|
|
226
223
|
slicer,
|
|
227
224
|
backend=reduce_backend,
|
|
228
225
|
slicer_backend=backend,
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
#include "gudhi/multi_simplex_tree_helpers.h"
|
|
8
8
|
#include "gudhi/persistence_matrix_options.h"
|
|
9
9
|
#include "gudhi/Multi_parameter_filtered_complex.h"
|
|
10
|
-
#include "gudhi/Multi_persistence/
|
|
10
|
+
#include "gudhi/Multi_persistence/Persistence_interface_vineyard.h"
|
|
11
|
+
#include "gudhi/Multi_persistence/Persistence_interface_homology.h"
|
|
11
12
|
#include "gudhi/Multi_persistence/Persistence_interface_cohomology.h"
|
|
12
13
|
#include "gudhi/Dynamic_multi_parameter_filtration.h"
|
|
13
14
|
#include "gudhi/Degree_rips_bifiltration.h"
|
|
@@ -39,26 +40,26 @@ enum Filtration_containers_strs : std::uint8_t {
|
|
|
39
40
|
|
|
40
41
|
using Available_columns = Gudhi::persistence_matrix::Column_types;
|
|
41
42
|
|
|
42
|
-
template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
43
|
-
struct Multi_persistence_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
52
|
-
struct Multi_persistence_Clement_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
};
|
|
43
|
+
// template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
44
|
+
// struct Multi_persistence_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
45
|
+
// using Index = std::uint32_t;
|
|
46
|
+
// static const bool has_matrix_maximal_dimension_access = false;
|
|
47
|
+
// static const bool has_column_pairings = true;
|
|
48
|
+
// static const bool has_vine_update = true;
|
|
49
|
+
// static const bool can_retrieve_representative_cycles = true;
|
|
50
|
+
// };
|
|
51
|
+
|
|
52
|
+
// template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
53
|
+
// struct Multi_persistence_Clement_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
54
|
+
// using Index = std::uint32_t;
|
|
55
|
+
// static const bool has_matrix_maximal_dimension_access = false;
|
|
56
|
+
// static const bool has_column_pairings = true;
|
|
57
|
+
// static const bool has_vine_update = true;
|
|
58
|
+
// static const bool is_of_boundary_type = false;
|
|
59
|
+
// static const Gudhi::persistence_matrix::Column_indexation_types column_indexation_type =
|
|
60
|
+
// Gudhi::persistence_matrix::Column_indexation_types::POSITION;
|
|
61
|
+
// static const bool can_retrieve_representative_cycles = true;
|
|
62
|
+
// };
|
|
62
63
|
|
|
63
64
|
template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
64
65
|
struct No_vine_multi_persistence_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
@@ -68,50 +69,61 @@ struct No_vine_multi_persistence_options : Gudhi::persistence_matrix::Default_op
|
|
|
68
69
|
static const bool has_vine_update = false;
|
|
69
70
|
};
|
|
70
71
|
|
|
71
|
-
template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET,
|
|
72
|
-
|
|
73
|
-
struct fix_presentation_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
// template <Gudhi::persistence_matrix::Column_types column_type = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET,
|
|
73
|
+
// bool row_access = true>
|
|
74
|
+
// struct fix_presentation_options : Gudhi::persistence_matrix::Default_options<column_type, true> {
|
|
75
|
+
// using Index = std::uint32_t;
|
|
76
|
+
// static const bool has_row_access = row_access;
|
|
77
|
+
// static const bool has_map_column_container = false;
|
|
78
|
+
// static const bool has_removable_columns = false; // WARN : idx will change if map is not true
|
|
79
|
+
// };
|
|
80
|
+
|
|
81
|
+
template <Gudhi::persistence_matrix::Column_types col = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
82
|
+
struct Multi_persistence_vineyard_ru_options : Gudhi::vineyard::Default_vineyard_options {
|
|
83
|
+
static constexpr bool is_RU = true;
|
|
84
|
+
static const Gudhi::persistence_matrix::Column_types column_type = col;
|
|
78
85
|
};
|
|
79
86
|
|
|
80
|
-
template <
|
|
81
|
-
|
|
87
|
+
template <Gudhi::persistence_matrix::Column_types col = Gudhi::persistence_matrix::Column_types::INTRUSIVE_SET>
|
|
88
|
+
struct Multi_persistence_vineyard_chain_options : Gudhi::vineyard::Default_vineyard_options {
|
|
89
|
+
static constexpr bool is_RU = false;
|
|
90
|
+
static const Gudhi::persistence_matrix::Column_types column_type = col;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// template <Available_columns col>
|
|
94
|
+
// using BackendOptionsWithVine = Multi_persistence_options<col>;
|
|
82
95
|
template <Available_columns col>
|
|
83
96
|
using BackendOptionsWithoutVine = No_vine_multi_persistence_options<col>;
|
|
84
97
|
|
|
85
|
-
template <Available_columns col>
|
|
86
|
-
using ClementBackendOptionsWithVine = Multi_persistence_Clement_options<col>;
|
|
98
|
+
// template <Available_columns col>
|
|
99
|
+
// using ClementBackendOptionsWithVine = Multi_persistence_Clement_options<col>;
|
|
87
100
|
|
|
88
101
|
// using SimplicialStructure = Gudhi::multiparameter::truc_interface::SimplicialStructure;
|
|
89
102
|
template <typename Filtration>
|
|
90
103
|
using StructureStuff = Gudhi::multi_persistence::Multi_parameter_filtered_complex<Filtration>;
|
|
91
104
|
|
|
92
|
-
template <Available_columns col>
|
|
93
|
-
using MatrixBackendNoVine = Gudhi::multi_persistence::
|
|
105
|
+
template <Available_columns col, class Filtration>
|
|
106
|
+
using MatrixBackendNoVine = Gudhi::multi_persistence::Persistence_interface_homology<BackendOptionsWithoutVine<col>, Filtration>;
|
|
94
107
|
|
|
95
108
|
template <Available_columns col>
|
|
96
|
-
using MatrixBackendVine = Gudhi::multi_persistence::
|
|
109
|
+
using MatrixBackendVine = Gudhi::multi_persistence::Persistence_interface_vineyard<Multi_persistence_vineyard_ru_options<col>>;
|
|
97
110
|
|
|
98
111
|
template <Available_columns col>
|
|
99
|
-
using ClementMatrixBackendVine =
|
|
100
|
-
Gudhi::multi_persistence::Persistence_interface_matrix<ClementBackendOptionsWithVine<col>>;
|
|
112
|
+
using ClementMatrixBackendVine = Gudhi::multi_persistence::Persistence_interface_vineyard<Multi_persistence_vineyard_chain_options<col>>;
|
|
101
113
|
template <typename Filtration>
|
|
102
114
|
using GraphBackendVine = Gudhi::multiparameter::truc_interface::Persistence_backend_h0<StructureStuff<Filtration>>;
|
|
103
115
|
|
|
104
116
|
template <typename value_type = float>
|
|
105
117
|
using Filtration_value = Gudhi::multi_filtration::Multi_parameter_filtration<value_type, false, true>;
|
|
106
118
|
|
|
107
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
108
|
-
using SimplicialNoVineMatrixTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col>>;
|
|
119
|
+
template <class Filtration, Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
120
|
+
using SimplicialNoVineMatrixTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col, Filtration>>;
|
|
109
121
|
|
|
110
122
|
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
111
123
|
using GeneralVineTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendVine<col>>;
|
|
112
124
|
|
|
113
|
-
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
114
|
-
using GeneralNoVineTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col>>;
|
|
125
|
+
template <class Filtration, Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
126
|
+
using GeneralNoVineTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, MatrixBackendNoVine<col, Filtration>>;
|
|
115
127
|
|
|
116
128
|
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
117
129
|
using GeneralVineClementTruc = Gudhi::multi_persistence::Slicer<Filtration_value<>, ClementMatrixBackendVine<col>>;
|
|
@@ -128,8 +140,8 @@ using Multi_critical_filtration_value = Gudhi::multi_filtration::Multi_parameter
|
|
|
128
140
|
template <Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
129
141
|
using KCriticalVineTruc = Gudhi::multi_persistence::Slicer<Multi_critical_filtration_value<>, MatrixBackendVine<col>>;
|
|
130
142
|
|
|
131
|
-
template <bool is_vine, Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
132
|
-
using Matrix_interface = std::conditional_t<is_vine, MatrixBackendVine<col>, MatrixBackendNoVine<col>>;
|
|
143
|
+
template <bool is_vine, class Filtration, Available_columns col = Available_columns::INTRUSIVE_SET>
|
|
144
|
+
using Matrix_interface = std::conditional_t<is_vine, MatrixBackendVine<col>, MatrixBackendNoVine<col, Filtration>>;
|
|
133
145
|
|
|
134
146
|
template <Filtration_containers_strs fil_container, bool is_k_critical, typename value_type>
|
|
135
147
|
using filtration_options = std::conditional_t<fil_container == Filtration_containers_strs::Dynamic_multi_parameter_filtration,
|
|
@@ -138,13 +150,12 @@ using filtration_options = std::conditional_t<fil_container == Filtration_contai
|
|
|
138
150
|
Gudhi::multi_filtration::Multi_parameter_filtration<value_type, false, !is_k_critical>,
|
|
139
151
|
Gudhi::multi_filtration::Degree_rips_bifiltration<value_type, false, !is_k_critical>>>;
|
|
140
152
|
|
|
141
|
-
template <bool is_vine,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
using MatrixTrucPythonInterface =
|
|
147
|
-
Gudhi::multi_persistence::Slicer<filtration_options<filt_cont,is_k_critical, value_type>, Matrix_interface<is_vine, col>>;
|
|
153
|
+
// template <bool is_vine,
|
|
154
|
+
// bool is_k_critical,
|
|
155
|
+
// typename value_type,
|
|
156
|
+
// Available_columns col = Available_columns::INTRUSIVE_SET,
|
|
157
|
+
// Filtration_containers_strs filt_cont = Filtration_containers_strs::Multi_parameter_filtration>
|
|
158
|
+
// using MatrixTrucPythonInterface = Gudhi::multi_persistence::Slicer<filtration_options<filt_cont,is_k_critical, value_type>, Matrix_interface<is_vine, Filtration, col>>;
|
|
148
159
|
|
|
149
160
|
enum class BackendsEnum : std::uint8_t { Matrix, Graph, Clement, GudhiCohomology };
|
|
150
161
|
|
|
@@ -154,7 +165,7 @@ struct PersBackendOptsImpl;
|
|
|
154
165
|
|
|
155
166
|
template <bool is_vine, Available_columns col, typename Filtration>
|
|
156
167
|
struct PersBackendOptsImpl<BackendsEnum::Matrix, is_vine, col, Filtration> {
|
|
157
|
-
using type = Matrix_interface<is_vine, col>;
|
|
168
|
+
using type = Matrix_interface<is_vine, Filtration, col>;
|
|
158
169
|
};
|
|
159
170
|
|
|
160
171
|
template <bool is_vine, Available_columns col, typename Filtration>
|
|
@@ -31,13 +31,16 @@
|
|
|
31
31
|
#include <vector>
|
|
32
32
|
#include <initializer_list>
|
|
33
33
|
|
|
34
|
+
#ifdef GUDHI_USE_TBB
|
|
35
|
+
#include <oneapi/tbb/parallel_for.h>
|
|
36
|
+
#endif
|
|
37
|
+
|
|
34
38
|
#include <gudhi/Debug_utils.h>
|
|
35
39
|
#include <gudhi/simple_mdspan.h>
|
|
36
40
|
#include <gudhi/Multi_filtration/multi_filtration_utils.h>
|
|
37
41
|
#include <gudhi/Simplex_tree/filtration_value_utils.h>
|
|
38
42
|
#include <gudhi/Multi_parameter_filtration.h>
|
|
39
43
|
#include <gudhi/Dynamic_multi_parameter_filtration.h>
|
|
40
|
-
#include <oneapi/tbb/concurrent_vector.h>
|
|
41
44
|
|
|
42
45
|
namespace Gudhi::multi_filtration {
|
|
43
46
|
|
|
@@ -1708,7 +1711,8 @@ class Degree_rips_bifiltration
|
|
|
1708
1711
|
|
|
1709
1712
|
GUDHI_CHECK_code(const OneDimArray &indices = grid[1]);
|
|
1710
1713
|
const OneDimArray &values = grid[0];
|
|
1711
|
-
|
|
1714
|
+
|
|
1715
|
+
auto project_generator = [&](size_type g) {
|
|
1712
1716
|
GUDHI_CHECK_code(GUDHI_CHECK(static_cast<size_type>(indices[g]) == g, std::invalid_argument("Unvalid grid.")));
|
|
1713
1717
|
|
|
1714
1718
|
auto v = static_cast<typename OneDimArray::value_type>(generators_[g]);
|
|
@@ -1718,11 +1722,12 @@ class Degree_rips_bifiltration
|
|
|
1718
1722
|
}
|
|
1719
1723
|
generators_[g] = coordinate ? static_cast<T>(d) : static_cast<T>(values[d]);
|
|
1720
1724
|
};
|
|
1725
|
+
|
|
1721
1726
|
#ifdef GUDHI_USE_TBB
|
|
1722
|
-
tbb::parallel_for(size_type
|
|
1727
|
+
tbb::parallel_for(size_type(0), num_generators(), project_generator);
|
|
1723
1728
|
#else
|
|
1724
1729
|
for (size_type g = 0; g < num_generators(); ++g) {
|
|
1725
|
-
|
|
1730
|
+
project_generator(g);
|
|
1726
1731
|
}
|
|
1727
1732
|
#endif
|
|
1728
1733
|
}
|
|
@@ -1842,9 +1847,7 @@ class Degree_rips_bifiltration
|
|
|
1842
1847
|
|
|
1843
1848
|
#ifdef GUDHI_USE_TBB
|
|
1844
1849
|
std::vector<U> projections(f.num_generators());
|
|
1845
|
-
tbb::parallel_for(size_type{0}, f.num_generators(), [&](size_type g) {
|
|
1846
|
-
projections[g] = project_generator(g);
|
|
1847
|
-
});
|
|
1850
|
+
tbb::parallel_for(size_type{0}, f.num_generators(), [&](size_type g) { projections[g] = project_generator(g); });
|
|
1848
1851
|
if constexpr (Co) {
|
|
1849
1852
|
return *std::max_element(projections.begin(), projections.end());
|
|
1850
1853
|
} else {
|
{multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Dynamic_multi_parameter_filtration.h
RENAMED
|
@@ -31,10 +31,13 @@
|
|
|
31
31
|
#include <vector>
|
|
32
32
|
#include <initializer_list>
|
|
33
33
|
|
|
34
|
+
#ifdef GUDHI_USE_TBB
|
|
35
|
+
#include <oneapi/tbb/parallel_for.h>
|
|
36
|
+
#endif
|
|
37
|
+
|
|
34
38
|
#include <gudhi/Debug_utils.h>
|
|
35
39
|
#include <gudhi/Multi_filtration/Multi_parameter_generator.h>
|
|
36
40
|
#include <gudhi/Multi_filtration/multi_filtration_utils.h>
|
|
37
|
-
#include <oneapi/tbb/parallel_for.h>
|
|
38
41
|
|
|
39
42
|
namespace Gudhi::multi_filtration {
|
|
40
43
|
|
|
@@ -1856,9 +1859,8 @@ class Dynamic_multi_parameter_filtration
|
|
|
1856
1859
|
std::invalid_argument("The grid should not be smaller than the number of parameters in the filtration value."));
|
|
1857
1860
|
|
|
1858
1861
|
#ifdef GUDHI_USE_TBB
|
|
1859
|
-
tbb::parallel_for(
|
|
1860
|
-
|
|
1861
|
-
});
|
|
1862
|
+
tbb::parallel_for(
|
|
1863
|
+
size_type(0), num_generators(), [&](size_type i) { generators_[i].project_onto_grid(grid, coordinate); });
|
|
1862
1864
|
#else
|
|
1863
1865
|
for (Generator &g : generators_) {
|
|
1864
1866
|
g.project_onto_grid(grid, coordinate);
|
|
@@ -1946,6 +1948,17 @@ class Dynamic_multi_parameter_filtration
|
|
|
1946
1948
|
{
|
|
1947
1949
|
if (f.num_generators() == 1) return compute_linear_projection(f.generators_[0], x);
|
|
1948
1950
|
|
|
1951
|
+
#ifdef GUDHI_USE_TBB
|
|
1952
|
+
std::vector<U> projections(f.num_generators());
|
|
1953
|
+
tbb::parallel_for(size_type{0}, f.num_generators(), [&](size_type g) {
|
|
1954
|
+
projections[g] = compute_linear_projection(f.generators_[g], x);
|
|
1955
|
+
});
|
|
1956
|
+
if constexpr (Co) {
|
|
1957
|
+
return *std::max_element(projections.begin(), projections.end());
|
|
1958
|
+
} else {
|
|
1959
|
+
return *std::min_element(projections.begin(), projections.end());
|
|
1960
|
+
}
|
|
1961
|
+
#else
|
|
1949
1962
|
if constexpr (Co) {
|
|
1950
1963
|
U projection = std::numeric_limits<U>::lowest();
|
|
1951
1964
|
for (const Generator &g : f.generators_) {
|
|
@@ -1961,6 +1974,7 @@ class Dynamic_multi_parameter_filtration
|
|
|
1961
1974
|
}
|
|
1962
1975
|
return projection;
|
|
1963
1976
|
}
|
|
1977
|
+
#endif
|
|
1964
1978
|
}
|
|
1965
1979
|
|
|
1966
1980
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
|
|
3
3
|
* Author(s): Hannah Schreiber, Clément Maria
|
|
4
4
|
*
|
|
5
|
-
* Copyright (C) 2022
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
6
|
*
|
|
7
7
|
* Modification(s):
|
|
8
8
|
* - YYYY/MM Author: Description of the modification
|
|
@@ -305,7 +305,8 @@ class Multi_field_element
|
|
|
305
305
|
const Characteristic& productOfCharacteristics) const
|
|
306
306
|
{
|
|
307
307
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
308
|
-
|
|
308
|
+
std::invalid_argument(
|
|
309
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
309
310
|
|
|
310
311
|
Characteristic QR;
|
|
311
312
|
mpz_gcd(QR.get_mpz_t(), element_.get_mpz_t(), productOfCharacteristics.get_mpz_t()); // QR <- gcd(x,QS)
|
|
@@ -350,7 +351,8 @@ class Multi_field_element
|
|
|
350
351
|
static Multi_field_element get_partial_multiplicative_identity(const Characteristic& productOfCharacteristics)
|
|
351
352
|
{
|
|
352
353
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
353
|
-
|
|
354
|
+
std::invalid_argument(
|
|
355
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
354
356
|
|
|
355
357
|
if (productOfCharacteristics == 0 || productOfCharacteristics == productOfAllCharacteristics_) {
|
|
356
358
|
return get_multiplicative_identity();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
|
|
3
3
|
* Author(s): Hannah Schreiber, Clément Maria
|
|
4
4
|
*
|
|
5
|
-
* Copyright (C) 2022
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
6
|
*
|
|
7
7
|
* Modification(s):
|
|
8
8
|
* - YYYY/MM Author: Description of the modification
|
|
@@ -366,7 +366,8 @@ class Multi_field_operators
|
|
|
366
366
|
const Characteristic& productOfCharacteristics) const
|
|
367
367
|
{
|
|
368
368
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
369
|
-
|
|
369
|
+
std::invalid_argument(
|
|
370
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
370
371
|
|
|
371
372
|
Characteristic QR;
|
|
372
373
|
mpz_gcd(QR.get_mpz_t(), e.get_mpz_t(), productOfCharacteristics.get_mpz_t()); // QR <- gcd(x,QS)
|
|
@@ -409,7 +410,8 @@ class Multi_field_operators
|
|
|
409
410
|
[[nodiscard]] Element get_partial_multiplicative_identity(const Characteristic& productOfCharacteristics) const
|
|
410
411
|
{
|
|
411
412
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
412
|
-
|
|
413
|
+
std::invalid_argument(
|
|
414
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
413
415
|
|
|
414
416
|
if (productOfCharacteristics == nullCharacteristic || productOfCharacteristics == productOfAllCharacteristics_) {
|
|
415
417
|
return get_multiplicative_identity();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
|
|
3
3
|
* Author(s): Hannah Schreiber, Clément Maria
|
|
4
4
|
*
|
|
5
|
-
* Copyright (C) 2022
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
6
|
*
|
|
7
7
|
* Modification(s):
|
|
8
8
|
* - YYYY/MM Author: Description of the modification
|
|
@@ -347,7 +347,8 @@ class Shared_multi_field_element
|
|
|
347
347
|
const Characteristic& productOfCharacteristics) const
|
|
348
348
|
{
|
|
349
349
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
350
|
-
|
|
350
|
+
std::invalid_argument(
|
|
351
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
351
352
|
|
|
352
353
|
Element QR;
|
|
353
354
|
mpz_gcd(QR.get_mpz_t(), element_.get_mpz_t(), productOfCharacteristics.get_mpz_t()); // QR <- gcd(x,QS)
|
|
@@ -390,7 +391,8 @@ class Shared_multi_field_element
|
|
|
390
391
|
static Shared_multi_field_element get_partial_multiplicative_identity(const Characteristic& productOfCharacteristics)
|
|
391
392
|
{
|
|
392
393
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
393
|
-
|
|
394
|
+
std::invalid_argument(
|
|
395
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
394
396
|
|
|
395
397
|
if (productOfCharacteristics == 0 || productOfCharacteristics == productOfAllCharacteristics_) {
|
|
396
398
|
return get_multiplicative_identity();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
|
|
3
3
|
* Author(s): Hannah Schreiber, Clément Maria
|
|
4
4
|
*
|
|
5
|
-
* Copyright (C) 2022
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
6
|
*
|
|
7
7
|
* Modification(s):
|
|
8
8
|
* - YYYY/MM Author: Description of the modification
|
|
@@ -353,7 +353,8 @@ class Multi_field_element_with_small_characteristics
|
|
|
353
353
|
Characteristic productOfCharacteristics) const
|
|
354
354
|
{
|
|
355
355
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
356
|
-
|
|
356
|
+
std::invalid_argument(
|
|
357
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
357
358
|
|
|
358
359
|
Characteristic gcd = std::gcd(element_, productOfAllCharacteristics_);
|
|
359
360
|
|
|
@@ -401,7 +402,8 @@ class Multi_field_element_with_small_characteristics
|
|
|
401
402
|
const Characteristic& productOfCharacteristics)
|
|
402
403
|
{
|
|
403
404
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
404
|
-
|
|
405
|
+
std::invalid_argument(
|
|
406
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
405
407
|
|
|
406
408
|
if (productOfCharacteristics == 0 || productOfCharacteristics == productOfAllCharacteristics_) {
|
|
407
409
|
return get_multiplicative_identity();
|
{multipers-2.4.0 → multipers-2.4.1}/multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
|
|
3
3
|
* Author(s): Hannah Schreiber, Clément Maria
|
|
4
4
|
*
|
|
5
|
-
* Copyright (C) 2022
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
6
|
*
|
|
7
7
|
* Modification(s):
|
|
8
8
|
* - YYYY/MM Author: Description of the modification
|
|
@@ -327,7 +327,8 @@ class Multi_field_operators_with_small_characteristics
|
|
|
327
327
|
const Characteristic& productOfCharacteristics) const
|
|
328
328
|
{
|
|
329
329
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
330
|
-
|
|
330
|
+
std::invalid_argument(
|
|
331
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
331
332
|
|
|
332
333
|
Characteristic gcd = std::gcd(e, productOfAllCharacteristics_);
|
|
333
334
|
|
|
@@ -368,7 +369,8 @@ class Multi_field_operators_with_small_characteristics
|
|
|
368
369
|
[[nodiscard]] Element get_partial_multiplicative_identity(const Characteristic& productOfCharacteristics) const
|
|
369
370
|
{
|
|
370
371
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
371
|
-
|
|
372
|
+
std::invalid_argument(
|
|
373
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
372
374
|
|
|
373
375
|
if (productOfCharacteristics == nullCharacteristic || productOfCharacteristics == productOfAllCharacteristics_) {
|
|
374
376
|
return get_multiplicative_identity();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
|
|
3
3
|
* Author(s): Hannah Schreiber, Clément Maria
|
|
4
4
|
*
|
|
5
|
-
* Copyright (C) 2022
|
|
5
|
+
* Copyright (C) 2022 Inria
|
|
6
6
|
*
|
|
7
7
|
* Modification(s):
|
|
8
8
|
* - YYYY/MM Author: Description of the modification
|
|
@@ -395,7 +395,8 @@ class Shared_multi_field_element_with_small_characteristics
|
|
|
395
395
|
Characteristic productOfCharacteristics) const
|
|
396
396
|
{
|
|
397
397
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
398
|
-
|
|
398
|
+
std::invalid_argument(
|
|
399
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
399
400
|
|
|
400
401
|
Characteristic gcd = std::gcd(element_, productOfAllCharacteristics_);
|
|
401
402
|
|
|
@@ -443,7 +444,8 @@ class Shared_multi_field_element_with_small_characteristics
|
|
|
443
444
|
const Characteristic& productOfCharacteristics)
|
|
444
445
|
{
|
|
445
446
|
GUDHI_CHECK(productOfCharacteristics >= 0 && productOfCharacteristics <= productOfAllCharacteristics_,
|
|
446
|
-
|
|
447
|
+
std::invalid_argument(
|
|
448
|
+
"The given product is not the product of a subset of the current Multi-field characteristics."));
|
|
447
449
|
|
|
448
450
|
if (productOfCharacteristics == 0 || productOfCharacteristics == productOfAllCharacteristics_) {
|
|
449
451
|
return Shared_multi_field_element_with_small_characteristics(multiplicativeID_);
|