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.
Files changed (278) hide show
  1. multipers-2.3.5b4/AIDA/aida.cpp +191 -0
  2. multipers-2.3.5b4/AIDA/birth_death.cpp +80 -0
  3. multipers-2.3.5b4/AIDA/brute_force_mpm_decomposition.cpp +1377 -0
  4. multipers-2.3.5b4/AIDA/generate_decompositions.cpp +657 -0
  5. multipers-2.3.5b4/AIDA/include/aida_interface.hpp +185 -0
  6. multipers-2.3.5b4/AIDA/include/config.hpp +219 -0
  7. multipers-2.3.5b4/AIDA/include/option_parser.hpp +103 -0
  8. multipers-2.3.5b4/AIDA/include/types.hpp +121 -0
  9. multipers-2.3.5b4/AIDA/making_examples.cpp +46 -0
  10. multipers-2.3.5b4/AIDA/minimize_pres.cpp +50 -0
  11. multipers-2.3.5b4/AIDA/mpfree_clone.cpp +43 -0
  12. multipers-2.3.5b4/AIDA/presentation_to_quiver.cpp +1713 -0
  13. multipers-2.3.5b4/AIDA/presentation_to_quiver_new.cpp +1447 -0
  14. multipers-2.3.5b4/AIDA/resolution.cpp +170 -0
  15. multipers-2.3.5b4/AIDA/src/aida_decompose.cpp +501 -0
  16. multipers-2.3.5b4/AIDA/src/aida_decompose.hpp +37 -0
  17. multipers-2.3.5b4/AIDA/src/aida_functions.cpp +781 -0
  18. multipers-2.3.5b4/AIDA/src/aida_functions.hpp +2389 -0
  19. multipers-2.3.5b4/AIDA/src/aida_helpers.cpp +71 -0
  20. multipers-2.3.5b4/AIDA/src/aida_helpers.hpp +30 -0
  21. multipers-2.3.5b4/AIDA/src/aida_interface.cpp +136 -0
  22. multipers-2.3.5b4/AIDA/src/block.cpp +280 -0
  23. multipers-2.3.5b4/AIDA/src/block.hpp +340 -0
  24. multipers-2.3.5b4/AIDA/src/config.cpp +335 -0
  25. multipers-2.3.5b4/AIDA/src/option_parser.cpp +341 -0
  26. multipers-2.3.5b4/AIDA/vectorspace_decompositions.cpp +1252 -0
  27. multipers-2.3.5b4/MANIFEST.in +5 -0
  28. {multipers-2.3.5b2/multipers.egg-info → multipers-2.3.5b4}/PKG-INFO +4 -2
  29. multipers-2.3.5b4/Persistence-Algebra/include/grlina/bitset_algebra.hpp +256 -0
  30. multipers-2.3.5b4/Persistence-Algebra/include/grlina/column_types.hpp +406 -0
  31. multipers-2.3.5b4/Persistence-Algebra/include/grlina/dense_matrix.hpp +556 -0
  32. multipers-2.3.5b4/Persistence-Algebra/include/grlina/draw_hf.hpp +115 -0
  33. multipers-2.3.5b4/Persistence-Algebra/include/grlina/general.hpp +59 -0
  34. multipers-2.3.5b4/Persistence-Algebra/include/grlina/graded_linalg.hpp +437 -0
  35. multipers-2.3.5b4/Persistence-Algebra/include/grlina/graded_matrix.hpp +1538 -0
  36. multipers-2.3.5b4/Persistence-Algebra/include/grlina/grid_scheduler.hpp +131 -0
  37. multipers-2.3.5b4/Persistence-Algebra/include/grlina/homomorphisms.hpp +1006 -0
  38. multipers-2.3.5b4/Persistence-Algebra/include/grlina/matrix_base.hpp +1438 -0
  39. multipers-2.3.5b4/Persistence-Algebra/include/grlina/modules.hpp +18 -0
  40. multipers-2.3.5b4/Persistence-Algebra/include/grlina/orders_and_graphs.hpp +895 -0
  41. multipers-2.3.5b4/Persistence-Algebra/include/grlina/r2graded_matrix.hpp +1165 -0
  42. multipers-2.3.5b4/Persistence-Algebra/include/grlina/r3graded_matrix.hpp +225 -0
  43. multipers-2.3.5b4/Persistence-Algebra/include/grlina/sparse_matrix.hpp +1472 -0
  44. multipers-2.3.5b4/Persistence-Algebra/include/grlina/to_quiver.hpp +270 -0
  45. {multipers-2.3.5b2 → multipers-2.3.5b4}/README.md +3 -1
  46. multipers-2.3.5b4/_tempita_grid_gen.py +304 -0
  47. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/_signed_measure_meta.py +29 -19
  48. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/_slicer_meta.py +51 -26
  49. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/array_api/numpy.py +11 -0
  50. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/array_api/torch.py +11 -0
  51. multipers-2.3.5b4/multipers/data/__init__.py +1 -0
  52. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/synthetic.py +2 -2
  53. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/distances.py +2 -2
  54. multipers-2.3.5b4/multipers/filtration_conversions.pxd +736 -0
  55. multipers-2.3.5b4/multipers/filtration_conversions.pxd.tp +226 -0
  56. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/filtrations/__init__.py +1 -0
  57. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/filtrations/density.py +3 -7
  58. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/filtrations/filtrations.py +16 -15
  59. multipers-2.3.5b4/multipers/filtrations.pxd +534 -0
  60. multipers-2.3.5b4/multipers/filtrations.pxd.tp +332 -0
  61. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/function_rips.pyx +8 -6
  62. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/grids.pyx +41 -22
  63. multipers-2.3.5b4/multipers/gudhi/Persistence_slices_interface.h +213 -0
  64. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/Simplex_tree_interface.h +61 -26
  65. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/Simplex_tree_multi_interface.h +236 -145
  66. multipers-2.3.5b4/multipers/gudhi/gudhi/Degree_rips_bifiltration.h +2287 -0
  67. multipers-2.3.5b4/multipers/gudhi/gudhi/Dynamic_multi_parameter_filtration.h +2517 -0
  68. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field.h +155 -186
  69. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_operators.h +94 -89
  70. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_shared.h +198 -204
  71. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_small.h +144 -91
  72. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +152 -169
  73. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +140 -91
  74. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Z2_field.h +132 -96
  75. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Z2_field_operators.h +64 -51
  76. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Zp_field.h +136 -63
  77. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Zp_field_operators.h +76 -92
  78. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Fields/Zp_field_shared.h +139 -65
  79. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Matrix.h +600 -507
  80. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_filtration/Multi_parameter_generator.h +1705 -0
  81. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_filtration/multi_filtration_conversions.h +237 -0
  82. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_filtration/multi_filtration_utils.h +225 -0
  83. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_parameter_filtered_complex.h +485 -0
  84. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_parameter_filtration.h +2626 -0
  85. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Box.h +233 -0
  86. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Line.h +309 -0
  87. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Multi_parameter_filtered_complex_pcoh_interface.h +268 -0
  88. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_cohomology.h +159 -0
  89. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_matrix.h +463 -0
  90. multipers-2.3.5b4/multipers/gudhi/gudhi/Multi_persistence/Point.h +853 -0
  91. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +244 -179
  92. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +280 -128
  93. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +204 -213
  94. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +288 -271
  95. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +249 -197
  96. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +200 -190
  97. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +161 -166
  98. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +21 -38
  99. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +82 -52
  100. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +101 -24
  101. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +170 -0
  102. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +247 -0
  103. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +164 -209
  104. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +71 -39
  105. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +46 -22
  106. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +76 -60
  107. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +85 -100
  108. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +330 -378
  109. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +262 -273
  110. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +251 -271
  111. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +249 -299
  112. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +1071 -0
  113. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +43 -32
  114. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +234 -269
  115. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +297 -325
  116. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +412 -443
  117. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/index_mapper.h +58 -0
  118. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +79 -38
  119. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +57 -21
  120. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +55 -45
  121. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +319 -0
  122. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +223 -201
  123. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_on_a_line.h +152 -0
  124. multipers-2.3.5b4/multipers/gudhi/gudhi/Persistence_on_rectangle.h +617 -0
  125. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology.h +41 -17
  126. multipers-2.3.5b4/multipers/gudhi/gudhi/Projective_cover_kernel.h +379 -0
  127. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +119 -23
  128. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +6 -6
  129. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +15 -0
  130. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +14 -14
  131. multipers-2.3.5b4/multipers/gudhi/gudhi/Simplex_tree/filtration_value_utils.h +155 -0
  132. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +8 -10
  133. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +0 -52
  134. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree.h +1030 -654
  135. multipers-2.3.5b4/multipers/gudhi/gudhi/Slicer.h +849 -0
  136. multipers-2.3.5b4/multipers/gudhi/gudhi/Thread_safe_slicer.h +393 -0
  137. multipers-2.3.5b4/multipers/gudhi/gudhi/multi_simplex_tree_helpers.h +147 -0
  138. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/persistence_interval.h +25 -15
  139. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/persistence_matrix_options.h +46 -28
  140. multipers-2.3.5b4/multipers/gudhi/gudhi/simple_mdspan.h +484 -0
  141. multipers-2.3.5b4/multipers/gudhi/gudhi/slicer_helpers.h +779 -0
  142. {multipers-2.3.5b2/multipers/gudhi → multipers-2.3.5b4/multipers/gudhi/tmp_h0_pers}/mma_interface_h0.h +1 -1
  143. multipers-2.3.5b4/multipers/io.pyx +414 -0
  144. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/mma_structures.pxd +10 -4
  145. multipers-2.3.5b4/multipers/mma_structures.pyx +1483 -0
  146. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/mma_structures.pyx.tp +55 -23
  147. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/diff_helpers.h +3 -2
  148. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/euler_characteristic.h +6 -8
  149. multipers-2.3.5b4/multipers/multi_parameter_rank_invariant/function_rips.h +326 -0
  150. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/hilbert_function.h +83 -91
  151. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/persistence_slices.h +18 -17
  152. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multi_parameter_rank_invariant/rank_invariant.h +43 -62
  153. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/approximation.h +510 -317
  154. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/format_python-cpp.h +21 -15
  155. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/utilities.h +56 -31
  156. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation.pyx +54 -34
  157. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/pickle.py +0 -1
  158. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/plots.py +51 -31
  159. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/point_measure.pyx +13 -1
  160. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/simplex_tree_multi.pxd +9 -7
  161. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/simplex_tree_multi.pyx +2462 -1771
  162. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/simplex_tree_multi.pyx.tp +301 -224
  163. multipers-2.3.5b4/multipers/slicer.pxd +2097 -0
  164. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/slicer.pxd.tp +87 -58
  165. multipers-2.3.5b4/multipers/slicer.pyx +13095 -0
  166. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/slicer.pyx.tp +295 -128
  167. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/tests/__init__.py +11 -3
  168. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/torch/diff_grids.py +1 -1
  169. multipers-2.3.5b4/multipers/vector_interface.pxd +46 -0
  170. multipers-2.3.5b4/multipers/vector_interface.pyx +92 -0
  171. {multipers-2.3.5b2 → multipers-2.3.5b4/multipers.egg-info}/PKG-INFO +4 -2
  172. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/SOURCES.txt +70 -27
  173. {multipers-2.3.5b2 → multipers-2.3.5b4}/pyproject.toml +1 -1
  174. {multipers-2.3.5b2 → multipers-2.3.5b4}/setup.py +68 -31
  175. multipers-2.3.5b4/tests/test_aida.py +49 -0
  176. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_diff_helper.py +6 -6
  177. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_mma.py +11 -2
  178. multipers-2.3.5b4/tests/test_parallel.py +66 -0
  179. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_python-cpp_conversion.py +12 -12
  180. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_signed_measure.py +3 -3
  181. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_simplextreemulti.py +6 -12
  182. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_slicer.py +54 -27
  183. multipers-2.3.5b2/MANIFEST.in +0 -3
  184. multipers-2.3.5b2/_tempita_grid_gen.py +0 -159
  185. multipers-2.3.5b2/multipers/data/__init__.py +0 -1
  186. multipers-2.3.5b2/multipers/filtration_conversions.pxd +0 -229
  187. multipers-2.3.5b2/multipers/filtration_conversions.pxd.tp +0 -84
  188. multipers-2.3.5b2/multipers/filtrations.pxd +0 -224
  189. multipers-2.3.5b2/multipers/gudhi/Persistence_slices_interface.h +0 -132
  190. multipers-2.3.5b2/multipers/gudhi/cubical_to_boundary.h +0 -59
  191. multipers-2.3.5b2/multipers/gudhi/gudhi/Multi_critical_filtration.h +0 -1038
  192. multipers-2.3.5b2/multipers/gudhi/gudhi/Multi_persistence/Box.h +0 -174
  193. multipers-2.3.5b2/multipers/gudhi/gudhi/Multi_persistence/Line.h +0 -282
  194. multipers-2.3.5b2/multipers/gudhi/gudhi/One_critical_filtration.h +0 -1441
  195. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +0 -60
  196. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +0 -60
  197. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +0 -136
  198. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +0 -190
  199. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +0 -1092
  200. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +0 -1093
  201. multipers-2.3.5b2/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +0 -376
  202. multipers-2.3.5b2/multipers/gudhi/gudhi/Simplex_tree_multi.h +0 -152
  203. multipers-2.3.5b2/multipers/gudhi/mma_interface_coh.h +0 -256
  204. multipers-2.3.5b2/multipers/gudhi/mma_interface_matrix.h +0 -293
  205. multipers-2.3.5b2/multipers/gudhi/scc_io.h +0 -310
  206. multipers-2.3.5b2/multipers/gudhi/truc.h +0 -1403
  207. multipers-2.3.5b2/multipers/io.pyx +0 -644
  208. multipers-2.3.5b2/multipers/mma_structures.pyx +0 -2786
  209. multipers-2.3.5b2/multipers/multi_parameter_rank_invariant/function_rips.h +0 -322
  210. multipers-2.3.5b2/multipers/multiparameter_module_approximation/combinatory.h +0 -129
  211. multipers-2.3.5b2/multipers/multiparameter_module_approximation/euler_curves.h +0 -0
  212. multipers-2.3.5b2/multipers/multiparameter_module_approximation/heap_column.h +0 -238
  213. multipers-2.3.5b2/multipers/multiparameter_module_approximation/images.h +0 -79
  214. multipers-2.3.5b2/multipers/multiparameter_module_approximation/list_column.h +0 -174
  215. multipers-2.3.5b2/multipers/multiparameter_module_approximation/list_column_2.h +0 -232
  216. multipers-2.3.5b2/multipers/multiparameter_module_approximation/ru_matrix.h +0 -347
  217. multipers-2.3.5b2/multipers/multiparameter_module_approximation/set_column.h +0 -135
  218. multipers-2.3.5b2/multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +0 -36
  219. multipers-2.3.5b2/multipers/multiparameter_module_approximation/unordered_set_column.h +0 -166
  220. multipers-2.3.5b2/multipers/multiparameter_module_approximation/vector_column.h +0 -223
  221. multipers-2.3.5b2/multipers/multiparameter_module_approximation/vector_matrix.h +0 -331
  222. multipers-2.3.5b2/multipers/multiparameter_module_approximation/vineyards.h +0 -464
  223. multipers-2.3.5b2/multipers/multiparameter_module_approximation/vineyards_trajectories.h +0 -649
  224. multipers-2.3.5b2/multipers/slicer.pxd +0 -3034
  225. multipers-2.3.5b2/multipers/slicer.pyx +0 -21396
  226. {multipers-2.3.5b2 → multipers-2.3.5b4}/LICENSE +0 -0
  227. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/__init__.py +0 -0
  228. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/array_api/__init__.py +0 -0
  229. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/MOL2.py +0 -0
  230. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/UCR.py +0 -0
  231. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/graphs.py +0 -0
  232. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/immuno_regions.py +0 -0
  233. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/minimal_presentation_to_st_bf.py +0 -0
  234. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/pytorch2simplextree.py +0 -0
  235. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/data/shape3d.py +0 -0
  236. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Bitmap_cubical_complex.h +0 -0
  237. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +0 -0
  238. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +0 -0
  239. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Debug_utils.h +0 -0
  240. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +0 -0
  241. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Off_reader.h +0 -0
  242. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +0 -0
  243. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +0 -0
  244. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +0 -0
  245. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Points_off_io.h +0 -0
  246. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simple_object_pool.h +0 -0
  247. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +0 -0
  248. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +0 -0
  249. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/distance_functions.h +0 -0
  250. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/graph_simplicial_complex.h +0 -0
  251. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/gudhi/gudhi/reader_utils.h +0 -0
  252. {multipers-2.3.5b2/multipers/gudhi → multipers-2.3.5b4/multipers/gudhi/tmp_h0_pers}/naive_merge_tree.h +0 -0
  253. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/__init__.py +0 -0
  254. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/accuracies.py +0 -0
  255. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/invariants_with_persistable.py +0 -0
  256. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/kernels.py +0 -0
  257. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/mma.py +0 -0
  258. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/one.py +0 -0
  259. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/point_clouds.py +0 -0
  260. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/signed_measures.py +0 -0
  261. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/sliced_wasserstein.py +0 -0
  262. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/ml/tools.py +0 -0
  263. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_edge_collapse.py +0 -0
  264. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/multiparameter_module_approximation/debug.h +0 -0
  265. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/tensor/tensor.h +0 -0
  266. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/tensor.pxd +0 -0
  267. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/test.pyx +0 -0
  268. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/torch/__init__.py +0 -0
  269. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers/torch/rips_density.py +0 -0
  270. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/dependency_links.txt +0 -0
  271. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/requires.txt +0 -0
  272. {multipers-2.3.5b2 → multipers-2.3.5b4}/multipers.egg-info/top_level.txt +0 -0
  273. {multipers-2.3.5b2 → multipers-2.3.5b4}/setup.cfg +0 -0
  274. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_filtrations.py +0 -0
  275. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_grids.py +0 -0
  276. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_hilbert_function.py +0 -0
  277. {multipers-2.3.5b2 → multipers-2.3.5b4}/tests/test_point_clouds.py +0 -0
  278. {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