multipers 2.3.5b2__tar.gz → 2.3.5b4__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.3.5b4/AIDA/aida.cpp +191 -0
- multipers-2.3.5b4/AIDA/birth_death.cpp +80 -0
- multipers-2.3.5b4/AIDA/brute_force_mpm_decomposition.cpp +1377 -0
- multipers-2.3.5b4/AIDA/generate_decompositions.cpp +657 -0
- multipers-2.3.5b4/AIDA/include/aida_interface.hpp +185 -0
- multipers-2.3.5b4/AIDA/include/config.hpp +219 -0
- multipers-2.3.5b4/AIDA/include/option_parser.hpp +103 -0
- multipers-2.3.5b4/AIDA/include/types.hpp +121 -0
- multipers-2.3.5b4/AIDA/making_examples.cpp +46 -0
- multipers-2.3.5b4/AIDA/minimize_pres.cpp +50 -0
- multipers-2.3.5b4/AIDA/mpfree_clone.cpp +43 -0
- multipers-2.3.5b4/AIDA/presentation_to_quiver.cpp +1713 -0
- multipers-2.3.5b4/AIDA/presentation_to_quiver_new.cpp +1447 -0
- multipers-2.3.5b4/AIDA/resolution.cpp +170 -0
- multipers-2.3.5b4/AIDA/src/aida_decompose.cpp +501 -0
- multipers-2.3.5b4/AIDA/src/aida_decompose.hpp +37 -0
- multipers-2.3.5b4/AIDA/src/aida_functions.cpp +781 -0
- multipers-2.3.5b4/AIDA/src/aida_functions.hpp +2389 -0
- multipers-2.3.5b4/AIDA/src/aida_helpers.cpp +71 -0
- multipers-2.3.5b4/AIDA/src/aida_helpers.hpp +30 -0
- multipers-2.3.5b4/AIDA/src/aida_interface.cpp +136 -0
- multipers-2.3.5b4/AIDA/src/block.cpp +280 -0
- multipers-2.3.5b4/AIDA/src/block.hpp +340 -0
- multipers-2.3.5b4/AIDA/src/config.cpp +335 -0
- multipers-2.3.5b4/AIDA/src/option_parser.cpp +341 -0
- multipers-2.3.5b4/AIDA/vectorspace_decompositions.cpp +1252 -0
- multipers-2.3.5b4/MANIFEST.in +5 -0
- {multipers-2.3.5b2/multipers.egg-info → multipers-2.3.5b4}/PKG-INFO +4 -2
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/bitset_algebra.hpp +256 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/column_types.hpp +406 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/dense_matrix.hpp +556 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/draw_hf.hpp +115 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/general.hpp +59 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/graded_linalg.hpp +437 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/graded_matrix.hpp +1538 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/grid_scheduler.hpp +131 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/homomorphisms.hpp +1006 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/matrix_base.hpp +1438 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/modules.hpp +18 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/orders_and_graphs.hpp +895 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/r2graded_matrix.hpp +1165 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/r3graded_matrix.hpp +225 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/sparse_matrix.hpp +1472 -0
- multipers-2.3.5b4/Persistence-Algebra/include/grlina/to_quiver.hpp +270 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/README.md +3 -1
- multipers-2.3.5b4/_tempita_grid_gen.py +304 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/_signed_measure_meta.py +29 -19
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/_slicer_meta.py +51 -26
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/array_api/numpy.py +11 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/array_api/torch.py +11 -0
- multipers-2.3.5b4/multipers/data/__init__.py +1 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/synthetic.py +2 -2
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/distances.py +2 -2
- multipers-2.3.5b4/multipers/filtration_conversions.pxd +736 -0
- multipers-2.3.5b4/multipers/filtration_conversions.pxd.tp +226 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/filtrations/__init__.py +1 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/filtrations/density.py +3 -7
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/filtrations/filtrations.py +16 -15
- multipers-2.3.5b4/multipers/filtrations.pxd +534 -0
- multipers-2.3.5b4/multipers/filtrations.pxd.tp +332 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/function_rips.pyx +8 -6
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/grids.pyx +41 -22
- multipers-2.3.5b4/multipers/gudhi/Persistence_slices_interface.h +213 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/Simplex_tree_interface.h +61 -26
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/Simplex_tree_multi_interface.h +236 -145
- multipers-2.3.5b4/multipers/gudhi/gudhi/Degree_rips_bifiltration.h +2287 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Dynamic_multi_parameter_filtration.h +2517 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field.h +155 -186
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_operators.h +94 -89
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_shared.h +198 -204
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_small.h +144 -91
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +152 -169
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +140 -91
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Z2_field.h +132 -96
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Z2_field_operators.h +64 -51
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Zp_field.h +136 -63
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Zp_field_operators.h +76 -92
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Zp_field_shared.h +139 -65
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Matrix.h +600 -507
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_filtration/Multi_parameter_generator.h +1705 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_filtration/multi_filtration_conversions.h +237 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_filtration/multi_filtration_utils.h +225 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_parameter_filtered_complex.h +485 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_parameter_filtration.h +2626 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Box.h +233 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Line.h +309 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Multi_parameter_filtered_complex_pcoh_interface.h +268 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_cohomology.h +159 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_matrix.h +463 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Point.h +853 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +244 -179
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +280 -128
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +204 -213
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +288 -271
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +249 -197
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +200 -190
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +161 -166
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +21 -38
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +82 -52
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +101 -24
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +170 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +247 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +164 -209
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +71 -39
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +46 -22
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +76 -60
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +85 -100
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +330 -378
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +262 -273
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +251 -271
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +249 -299
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +1071 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +43 -32
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +234 -269
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +297 -325
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +412 -443
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/index_mapper.h +58 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +79 -38
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +57 -21
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +55 -45
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +319 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +223 -201
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_on_a_line.h +152 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_on_rectangle.h +617 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology.h +41 -17
- multipers-2.3.5b4/multipers/gudhi/gudhi/Projective_cover_kernel.h +379 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +119 -23
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +6 -6
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +15 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +14 -14
- multipers-2.3.5b4/multipers/gudhi/gudhi/Simplex_tree/filtration_value_utils.h +155 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +8 -10
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +0 -52
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree.h +1030 -654
- multipers-2.3.5b4/multipers/gudhi/gudhi/Slicer.h +849 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/Thread_safe_slicer.h +393 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/multi_simplex_tree_helpers.h +147 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/persistence_interval.h +25 -15
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/persistence_matrix_options.h +46 -28
- multipers-2.3.5b4/multipers/gudhi/gudhi/simple_mdspan.h +484 -0
- multipers-2.3.5b4/multipers/gudhi/gudhi/slicer_helpers.h +779 -0
- {multipers-2.3.5b2/multipers/gudhi → multipers-2.3.5b4/multipers/gudhi/tmp_h0_pers}/mma_interface_h0.h +1 -1
- multipers-2.3.5b4/multipers/io.pyx +414 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/mma_structures.pxd +10 -4
- multipers-2.3.5b4/multipers/mma_structures.pyx +1483 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/mma_structures.pyx.tp +55 -23
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/diff_helpers.h +3 -2
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/euler_characteristic.h +6 -8
- multipers-2.3.5b4/multipers/multi_parameter_rank_invariant/function_rips.h +326 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/hilbert_function.h +83 -91
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/persistence_slices.h +18 -17
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/rank_invariant.h +43 -62
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/approximation.h +510 -317
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/format_python-cpp.h +21 -15
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/utilities.h +56 -31
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation.pyx +54 -34
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/pickle.py +0 -1
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/plots.py +51 -31
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/point_measure.pyx +13 -1
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/simplex_tree_multi.pxd +9 -7
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/simplex_tree_multi.pyx +2462 -1771
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/simplex_tree_multi.pyx.tp +301 -224
- multipers-2.3.5b4/multipers/slicer.pxd +2097 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/slicer.pxd.tp +87 -58
- multipers-2.3.5b4/multipers/slicer.pyx +13095 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/slicer.pyx.tp +295 -128
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/tests/__init__.py +11 -3
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/torch/diff_grids.py +1 -1
- multipers-2.3.5b4/multipers/vector_interface.pxd +46 -0
- multipers-2.3.5b4/multipers/vector_interface.pyx +92 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4/multipers.egg-info}/PKG-INFO +4 -2
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/SOURCES.txt +70 -27
- {multipers-2.3.5b2 → multipers-2.3.5b4}/pyproject.toml +1 -1
- {multipers-2.3.5b2 → multipers-2.3.5b4}/setup.py +68 -31
- multipers-2.3.5b4/tests/test_aida.py +49 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_diff_helper.py +6 -6
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_mma.py +11 -2
- multipers-2.3.5b4/tests/test_parallel.py +66 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_python-cpp_conversion.py +12 -12
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_signed_measure.py +3 -3
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_simplextreemulti.py +6 -12
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_slicer.py +54 -27
- multipers-2.3.5b2/MANIFEST.in +0 -3
- multipers-2.3.5b2/_tempita_grid_gen.py +0 -159
- multipers-2.3.5b2/multipers/data/__init__.py +0 -1
- multipers-2.3.5b2/multipers/filtration_conversions.pxd +0 -229
- multipers-2.3.5b2/multipers/filtration_conversions.pxd.tp +0 -84
- multipers-2.3.5b2/multipers/filtrations.pxd +0 -224
- multipers-2.3.5b2/multipers/gudhi/Persistence_slices_interface.h +0 -132
- multipers-2.3.5b2/multipers/gudhi/cubical_to_boundary.h +0 -59
- multipers-2.3.5b2/multipers/gudhi/gudhi/Multi_critical_filtration.h +0 -1038
- multipers-2.3.5b2/multipers/gudhi/gudhi/Multi_persistence/Box.h +0 -174
- multipers-2.3.5b2/multipers/gudhi/gudhi/Multi_persistence/Line.h +0 -282
- multipers-2.3.5b2/multipers/gudhi/gudhi/One_critical_filtration.h +0 -1441
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +0 -60
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +0 -60
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +0 -136
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +0 -190
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +0 -1092
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +0 -1093
- multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +0 -376
- multipers-2.3.5b2/multipers/gudhi/gudhi/Simplex_tree_multi.h +0 -152
- multipers-2.3.5b2/multipers/gudhi/mma_interface_coh.h +0 -256
- multipers-2.3.5b2/multipers/gudhi/mma_interface_matrix.h +0 -293
- multipers-2.3.5b2/multipers/gudhi/scc_io.h +0 -310
- multipers-2.3.5b2/multipers/gudhi/truc.h +0 -1403
- multipers-2.3.5b2/multipers/io.pyx +0 -644
- multipers-2.3.5b2/multipers/mma_structures.pyx +0 -2786
- multipers-2.3.5b2/multipers/multi_parameter_rank_invariant/function_rips.h +0 -322
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/combinatory.h +0 -129
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/euler_curves.h +0 -0
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/heap_column.h +0 -238
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/images.h +0 -79
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/list_column.h +0 -174
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/list_column_2.h +0 -232
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/ru_matrix.h +0 -347
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/set_column.h +0 -135
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +0 -36
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/unordered_set_column.h +0 -166
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/vector_column.h +0 -223
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/vector_matrix.h +0 -331
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/vineyards.h +0 -464
- multipers-2.3.5b2/multipers/multiparameter_module_approximation/vineyards_trajectories.h +0 -649
- multipers-2.3.5b2/multipers/slicer.pxd +0 -3034
- multipers-2.3.5b2/multipers/slicer.pyx +0 -21396
- {multipers-2.3.5b2 → multipers-2.3.5b4}/LICENSE +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/__init__.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/array_api/__init__.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/MOL2.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/UCR.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/graphs.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/immuno_regions.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/minimal_presentation_to_st_bf.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/pytorch2simplextree.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/shape3d.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Bitmap_cubical_complex.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Debug_utils.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Off_reader.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Points_off_io.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simple_object_pool.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/distance_functions.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/graph_simplicial_complex.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/reader_utils.h +0 -0
- {multipers-2.3.5b2/multipers/gudhi → multipers-2.3.5b4/multipers/gudhi/tmp_h0_pers}/naive_merge_tree.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/__init__.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/accuracies.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/invariants_with_persistable.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/kernels.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/mma.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/one.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/point_clouds.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/signed_measures.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/sliced_wasserstein.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/tools.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_edge_collapse.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/debug.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/tensor/tensor.h +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/tensor.pxd +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/test.pyx +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/torch/__init__.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/torch/rips_density.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/dependency_links.txt +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/requires.txt +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/top_level.txt +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/setup.cfg +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_filtrations.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_grids.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_hilbert_function.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_point_clouds.py +0 -0
- {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_signed_betti.py +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file aida.cpp
|
|
3
|
+
* @author Jan Jendrysiak
|
|
4
|
+
* @version 0.2.1
|
|
5
|
+
* @date 2025-10-21
|
|
6
|
+
* @copyright 2025 TU Graz
|
|
7
|
+
* This file is part of the AIDA library.
|
|
8
|
+
* You can redistribute it and/or modify
|
|
9
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
10
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
* (at your option) any later version.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#include <aida_interface.hpp>
|
|
15
|
+
#include <option_parser.hpp>
|
|
16
|
+
#include <iostream>
|
|
17
|
+
#include <fstream>
|
|
18
|
+
#include <sstream>
|
|
19
|
+
#include <filesystem>
|
|
20
|
+
|
|
21
|
+
namespace fs = std::filesystem;
|
|
22
|
+
|
|
23
|
+
// Helper function declarations
|
|
24
|
+
void write_to_file(std::ostringstream& ostream,
|
|
25
|
+
const std::string& input_directory,
|
|
26
|
+
const std::string& file_without_extension,
|
|
27
|
+
const std::string& extension,
|
|
28
|
+
const std::string& output_string);
|
|
29
|
+
void run_on_test_files(aida::AIDA_functor& decomposer, std::ostringstream& ostream);
|
|
30
|
+
|
|
31
|
+
int main(int argc, char** argv) {
|
|
32
|
+
// Create decomposer with default config
|
|
33
|
+
aida::AIDA_functor decomposer;
|
|
34
|
+
decomposer.config.progress = true;
|
|
35
|
+
decomposer.config.show_info = true;
|
|
36
|
+
decomposer.config.sort_output = true;
|
|
37
|
+
decomposer.config.sort = true;
|
|
38
|
+
|
|
39
|
+
// Parse options
|
|
40
|
+
aida::OptionParser parser;
|
|
41
|
+
parser.enable_stats_and_output();
|
|
42
|
+
|
|
43
|
+
if (!parser.parse(argc, argv, decomposer.config)) {
|
|
44
|
+
return 0; // Help/version shown or error
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Extract file information
|
|
48
|
+
std::string matrix_path;
|
|
49
|
+
std::string input_directory;
|
|
50
|
+
std::string filename;
|
|
51
|
+
std::string file_without_extension;
|
|
52
|
+
std::string extension;
|
|
53
|
+
|
|
54
|
+
if (parser.has_input_file()) {
|
|
55
|
+
fs::path fs_path(parser.get_input_file());
|
|
56
|
+
|
|
57
|
+
if (fs_path.is_relative()) {
|
|
58
|
+
matrix_path = fs::current_path().string() + "/" + parser.get_input_file();
|
|
59
|
+
} else {
|
|
60
|
+
matrix_path = parser.get_input_file();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
input_directory = fs_path.parent_path().string();
|
|
64
|
+
filename = fs_path.filename().string();
|
|
65
|
+
|
|
66
|
+
size_t dot_position = filename.find_last_of('.');
|
|
67
|
+
if (dot_position == std::string::npos) {
|
|
68
|
+
file_without_extension = filename;
|
|
69
|
+
extension = "";
|
|
70
|
+
} else {
|
|
71
|
+
file_without_extension = filename.substr(0, dot_position);
|
|
72
|
+
extension = filename.substr(dot_position);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Run decomposition
|
|
77
|
+
std::ostringstream ostream;
|
|
78
|
+
|
|
79
|
+
if (!parser.test_files()) {
|
|
80
|
+
std::ifstream istream(matrix_path);
|
|
81
|
+
if (!istream.is_open()) {
|
|
82
|
+
std::cerr << "Error: Could not open input file: " << matrix_path << std::endl;
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
std::cout << "Decomposing " << filename << std::endl;
|
|
87
|
+
decomposer.to_stream(istream, ostream);
|
|
88
|
+
} else {
|
|
89
|
+
run_on_test_files(decomposer, ostream);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Show statistics
|
|
93
|
+
if (parser.show_indecomp_statistics()) {
|
|
94
|
+
decomposer.cumulative_statistics.print_statistics();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (parser.show_runtime_statistics()) {
|
|
98
|
+
decomposer.cumulative_runtime_statistics.print();
|
|
99
|
+
#if TIMERS
|
|
100
|
+
decomposer.cumulative_runtime_statistics.print_timers();
|
|
101
|
+
#endif
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (decomposer.config.save_base_change) {
|
|
105
|
+
int total_row_ops = 0;
|
|
106
|
+
for (auto& base_change : decomposer.base_changes) {
|
|
107
|
+
total_row_ops += base_change->performed_row_ops.size();
|
|
108
|
+
}
|
|
109
|
+
if (decomposer.config.show_info) {
|
|
110
|
+
std::cout << "Basechange: Performed " << total_row_ops
|
|
111
|
+
<< " row operations in total." << std::endl;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Write output
|
|
116
|
+
if (parser.has_output()) {
|
|
117
|
+
write_to_file(ostream, input_directory, file_without_extension,
|
|
118
|
+
extension, parser.get_output_string());
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Comparison tests
|
|
122
|
+
if (decomposer.config.compare_both || decomposer.config.exhaustive_test) {
|
|
123
|
+
std::ifstream istream_test(matrix_path);
|
|
124
|
+
std::ostringstream ostream_test;
|
|
125
|
+
|
|
126
|
+
aida::AIDA_functor test_decomposer;
|
|
127
|
+
test_decomposer.config = decomposer.config;
|
|
128
|
+
|
|
129
|
+
if (decomposer.config.exhaustive_test) {
|
|
130
|
+
test_decomposer.config.exhaustive_test = false;
|
|
131
|
+
test_decomposer.config.exhaustive = true;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (decomposer.config.compare_both) {
|
|
135
|
+
test_decomposer.config.compare_both = false;
|
|
136
|
+
test_decomposer.config.exhaustive = true;
|
|
137
|
+
test_decomposer.config.brute_force = true;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
test_decomposer.to_stream(istream_test, ostream_test);
|
|
141
|
+
|
|
142
|
+
aida::Full_merge_info merge_data = decomposer.merge_data_vec[0];
|
|
143
|
+
aida::Full_merge_info merge_data_test = test_decomposer.merge_data_vec[0];
|
|
144
|
+
|
|
145
|
+
aida::index num_indecomp = decomposer.cumulative_statistics.num_of_summands;
|
|
146
|
+
aida::index num_indecomp_test = test_decomposer.statistics_vec.back().num_of_summands;
|
|
147
|
+
|
|
148
|
+
if (num_indecomp != num_indecomp_test) {
|
|
149
|
+
std::cout << "Decomposition is different. AIDA: " << num_indecomp
|
|
150
|
+
<< ", test: " << num_indecomp_test << std::endl;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
aida::compare_merge_info(merge_data, merge_data_test);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Helper function implementations
|
|
160
|
+
void write_to_file(std::ostringstream& ostream,
|
|
161
|
+
const std::string& input_directory,
|
|
162
|
+
const std::string& file_without_extension,
|
|
163
|
+
const std::string& extension,
|
|
164
|
+
const std::string& output_string) {
|
|
165
|
+
std::string output_path;
|
|
166
|
+
|
|
167
|
+
if (output_string.empty()) {
|
|
168
|
+
output_path = input_directory + "/" + file_without_extension + ".sccsum";
|
|
169
|
+
} else if (fs::is_directory(output_string)) {
|
|
170
|
+
output_path = output_string + "/" + file_without_extension + ".sccsum";
|
|
171
|
+
} else {
|
|
172
|
+
output_path = output_string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
std::ofstream output_file(output_path);
|
|
176
|
+
if (!output_file.is_open()) {
|
|
177
|
+
std::cerr << "Error: Could not open output file: " << output_path << std::endl;
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
output_file << ostream.str();
|
|
182
|
+
output_file.close();
|
|
183
|
+
|
|
184
|
+
std::cout << "Output written to: " << output_path << std::endl;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
void run_on_test_files(aida::AIDA_functor& decomposer, std::ostringstream& ostream) {
|
|
188
|
+
// Implementation for running test files
|
|
189
|
+
std::cout << "Running on test files..." << std::endl;
|
|
190
|
+
// Your test file logic here
|
|
191
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#include <grlina/graded_linalg.hpp>
|
|
2
|
+
#include <iostream>
|
|
3
|
+
#include <filesystem>
|
|
4
|
+
|
|
5
|
+
using namespace graded_linalg;
|
|
6
|
+
|
|
7
|
+
void death(std::filesystem::path input_path, std::filesystem::path output_path, double epsilon) {
|
|
8
|
+
R2GradedSparseMatrix<int> presentation = R2GradedSparseMatrix<int>(input_path.string());
|
|
9
|
+
presentation.sort_columns_lexicographically();
|
|
10
|
+
presentation.sort_rows_lexicographically();
|
|
11
|
+
presentation.minimize();
|
|
12
|
+
r2degree step = {epsilon, epsilon};
|
|
13
|
+
auto original = presentation;
|
|
14
|
+
presentation.shift(step);
|
|
15
|
+
R2GradedSparseMatrix<int> zero = R2GradedSparseMatrix<int>(0, presentation.get_num_rows());
|
|
16
|
+
zero.col_degrees = vec<r2degree>();
|
|
17
|
+
zero.row_degrees = presentation.row_degrees;
|
|
18
|
+
zero.data = vec<vec<int>>();
|
|
19
|
+
R2GradedSparseMatrix<int> shifted = shifted_identity<r2degree, R2GradedSparseMatrix<int>>(presentation.row_degrees, step);
|
|
20
|
+
auto ker_epsilon = shifted.inverse_image_copy(presentation, zero);
|
|
21
|
+
auto death = ker_epsilon.presentation_of_submodule(original);
|
|
22
|
+
|
|
23
|
+
std::ofstream output_file(output_path);
|
|
24
|
+
if (!output_file.is_open()) {
|
|
25
|
+
std::cerr << "Error: Unable to open output file " << output_path << std::endl;
|
|
26
|
+
return;
|
|
27
|
+
} else {
|
|
28
|
+
death.to_stream(output_file);
|
|
29
|
+
output_file.close();
|
|
30
|
+
std::cout << "death curve computed and saved to: " << output_path << std::endl;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
void birth(std::filesystem::path input_path, std::filesystem::path output_path, double epsilon) {
|
|
37
|
+
R2GradedSparseMatrix<int> presentation = R2GradedSparseMatrix<int>(input_path.string());
|
|
38
|
+
presentation.sort_columns_lexicographically();
|
|
39
|
+
presentation.sort_rows_lexicographically();
|
|
40
|
+
presentation.minimize();
|
|
41
|
+
r2degree step = {epsilon, epsilon};
|
|
42
|
+
R2GradedSparseMatrix<int> shifted = shifted_identity<r2degree, R2GradedSparseMatrix<int>>(presentation.row_degrees, step);
|
|
43
|
+
presentation.quotient_by(shifted);
|
|
44
|
+
|
|
45
|
+
std::ofstream output_file(output_path);
|
|
46
|
+
if (!output_file.is_open()) {
|
|
47
|
+
std::cerr << "Error: Unable to open output file " << output_path << std::endl;
|
|
48
|
+
return;
|
|
49
|
+
} else {
|
|
50
|
+
presentation.to_stream(output_file);
|
|
51
|
+
output_file.close();
|
|
52
|
+
std::cout << "birth curve computed and saved to: " << output_path << std::endl;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
int main(int argc, char** argv) {
|
|
58
|
+
|
|
59
|
+
std::string filepath;
|
|
60
|
+
|
|
61
|
+
if (argc != 2) {
|
|
62
|
+
std::cerr << "Usage: " << argv[0] << " <file_path>" << std::endl;
|
|
63
|
+
filepath = "/home/wsljan/AIDA/tests/test_presentations/ex1.scc";
|
|
64
|
+
} else {
|
|
65
|
+
filepath = argv[1];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
std::filesystem::path input_path(filepath);
|
|
69
|
+
|
|
70
|
+
std::string birth_path = insert_suffix_before_extension(filepath, "_birth");
|
|
71
|
+
std::filesystem::path birth_output_path(birth_path);
|
|
72
|
+
|
|
73
|
+
std::string death_path = insert_suffix_before_extension(filepath, "_death");
|
|
74
|
+
std::filesystem::path death_output_path(death_path);
|
|
75
|
+
|
|
76
|
+
double epsilon = 0.01;
|
|
77
|
+
birth(input_path, birth_output_path, epsilon);
|
|
78
|
+
death(input_path, death_output_path, epsilon);
|
|
79
|
+
return 0;
|
|
80
|
+
} // main
|