multipers 2.3.2__tar.gz → 2.3.3b1__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.

Potentially problematic release.


This version of multipers might be problematic. Click here for more details.

Files changed (191) hide show
  1. {multipers-2.3.2/multipers.egg-info → multipers-2.3.3b1}/PKG-INFO +1 -1
  2. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/plots.py +88 -2
  3. {multipers-2.3.2 → multipers-2.3.3b1/multipers.egg-info}/PKG-INFO +1 -1
  4. {multipers-2.3.2 → multipers-2.3.3b1}/pyproject.toml +1 -1
  5. {multipers-2.3.2 → multipers-2.3.3b1}/setup.py +2 -0
  6. {multipers-2.3.2 → multipers-2.3.3b1}/LICENSE +0 -0
  7. {multipers-2.3.2 → multipers-2.3.3b1}/MANIFEST.in +0 -0
  8. {multipers-2.3.2 → multipers-2.3.3b1}/README.md +0 -0
  9. {multipers-2.3.2 → multipers-2.3.3b1}/_tempita_grid_gen.py +0 -0
  10. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/__init__.py +0 -0
  11. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/_signed_measure_meta.py +0 -0
  12. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/_slicer_meta.py +0 -0
  13. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/array_api/__init__.py +0 -0
  14. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/array_api/numpy.py +0 -0
  15. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/array_api/torch.py +0 -0
  16. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/MOL2.py +0 -0
  17. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/UCR.py +0 -0
  18. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/__init__.py +0 -0
  19. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/graphs.py +0 -0
  20. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/immuno_regions.py +0 -0
  21. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/minimal_presentation_to_st_bf.py +0 -0
  22. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/pytorch2simplextree.py +0 -0
  23. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/shape3d.py +0 -0
  24. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/data/synthetic.py +0 -0
  25. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/distances.py +0 -0
  26. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/filtration_conversions.pxd +0 -0
  27. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/filtration_conversions.pxd.tp +0 -0
  28. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/filtrations/__init__.py +0 -0
  29. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/filtrations/density.py +0 -0
  30. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/filtrations/filtrations.py +0 -0
  31. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/filtrations.pxd +0 -0
  32. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/function_rips.pyx +0 -0
  33. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/grids.pyx +0 -0
  34. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/Persistence_slices_interface.h +0 -0
  35. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/Simplex_tree_interface.h +0 -0
  36. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/Simplex_tree_multi_interface.h +0 -0
  37. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/cubical_to_boundary.h +0 -0
  38. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Bitmap_cubical_complex.h +0 -0
  39. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +0 -0
  40. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +0 -0
  41. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Debug_utils.h +0 -0
  42. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Multi_field.h +0 -0
  43. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Multi_field_operators.h +0 -0
  44. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Multi_field_shared.h +0 -0
  45. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Multi_field_small.h +0 -0
  46. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +0 -0
  47. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +0 -0
  48. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Z2_field.h +0 -0
  49. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Z2_field_operators.h +0 -0
  50. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Zp_field.h +0 -0
  51. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Zp_field_operators.h +0 -0
  52. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Fields/Zp_field_shared.h +0 -0
  53. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +0 -0
  54. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Matrix.h +0 -0
  55. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Multi_critical_filtration.h +0 -0
  56. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Multi_persistence/Box.h +0 -0
  57. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Multi_persistence/Line.h +0 -0
  58. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Off_reader.h +0 -0
  59. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/One_critical_filtration.h +0 -0
  60. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +0 -0
  61. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +0 -0
  62. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +0 -0
  63. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +0 -0
  64. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +0 -0
  65. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +0 -0
  66. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +0 -0
  67. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +0 -0
  68. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +0 -0
  69. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +0 -0
  70. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +0 -0
  71. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +0 -0
  72. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +0 -0
  73. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +0 -0
  74. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +0 -0
  75. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +0 -0
  76. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +0 -0
  77. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +0 -0
  78. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +0 -0
  79. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +0 -0
  80. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +0 -0
  81. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +0 -0
  82. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +0 -0
  83. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +0 -0
  84. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +0 -0
  85. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +0 -0
  86. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +0 -0
  87. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +0 -0
  88. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +0 -0
  89. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +0 -0
  90. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +0 -0
  91. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +0 -0
  92. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +0 -0
  93. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +0 -0
  94. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +0 -0
  95. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +0 -0
  96. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +0 -0
  97. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Persistent_cohomology.h +0 -0
  98. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Points_off_io.h +0 -0
  99. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simple_object_pool.h +0 -0
  100. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +0 -0
  101. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +0 -0
  102. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +0 -0
  103. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +0 -0
  104. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +0 -0
  105. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +0 -0
  106. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +0 -0
  107. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +0 -0
  108. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree.h +0 -0
  109. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/Simplex_tree_multi.h +0 -0
  110. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/distance_functions.h +0 -0
  111. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/graph_simplicial_complex.h +0 -0
  112. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/persistence_interval.h +0 -0
  113. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/persistence_matrix_options.h +0 -0
  114. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/gudhi/reader_utils.h +0 -0
  115. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/mma_interface_coh.h +0 -0
  116. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/mma_interface_h0.h +0 -0
  117. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/mma_interface_matrix.h +0 -0
  118. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/naive_merge_tree.h +0 -0
  119. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/scc_io.h +0 -0
  120. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/gudhi/truc.h +0 -0
  121. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/io.pyx +0 -0
  122. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/__init__.py +0 -0
  123. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/accuracies.py +0 -0
  124. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/invariants_with_persistable.py +0 -0
  125. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/kernels.py +0 -0
  126. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/mma.py +0 -0
  127. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/one.py +0 -0
  128. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/point_clouds.py +0 -0
  129. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/signed_measures.py +0 -0
  130. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/sliced_wasserstein.py +0 -0
  131. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/ml/tools.py +0 -0
  132. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/mma_structures.pxd +0 -0
  133. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/mma_structures.pyx +0 -0
  134. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/mma_structures.pyx.tp +0 -0
  135. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multi_parameter_rank_invariant/diff_helpers.h +0 -0
  136. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multi_parameter_rank_invariant/euler_characteristic.h +0 -0
  137. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multi_parameter_rank_invariant/function_rips.h +0 -0
  138. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multi_parameter_rank_invariant/hilbert_function.h +0 -0
  139. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multi_parameter_rank_invariant/persistence_slices.h +0 -0
  140. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multi_parameter_rank_invariant/rank_invariant.h +0 -0
  141. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_edge_collapse.py +0 -0
  142. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/approximation.h +0 -0
  143. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/combinatory.h +0 -0
  144. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/debug.h +0 -0
  145. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/euler_curves.h +0 -0
  146. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/format_python-cpp.h +0 -0
  147. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/heap_column.h +0 -0
  148. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/images.h +0 -0
  149. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/list_column.h +0 -0
  150. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/list_column_2.h +0 -0
  151. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/ru_matrix.h +0 -0
  152. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/set_column.h +0 -0
  153. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +0 -0
  154. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/unordered_set_column.h +0 -0
  155. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/utilities.h +0 -0
  156. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/vector_column.h +0 -0
  157. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/vector_matrix.h +0 -0
  158. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/vineyards.h +0 -0
  159. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation/vineyards_trajectories.h +0 -0
  160. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/multiparameter_module_approximation.pyx +0 -0
  161. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/pickle.py +0 -0
  162. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/point_measure.pyx +0 -0
  163. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/simplex_tree_multi.pxd +0 -0
  164. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/simplex_tree_multi.pyx +0 -0
  165. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/simplex_tree_multi.pyx.tp +0 -0
  166. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/slicer.pxd +0 -0
  167. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/slicer.pxd.tp +0 -0
  168. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/slicer.pyx +12 -12
  169. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/slicer.pyx.tp +0 -0
  170. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/tensor/tensor.h +0 -0
  171. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/tensor.pxd +0 -0
  172. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/test.pyx +0 -0
  173. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/tests/__init__.py +0 -0
  174. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/torch/__init__.py +0 -0
  175. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/torch/diff_grids.py +0 -0
  176. {multipers-2.3.2 → multipers-2.3.3b1}/multipers/torch/rips_density.py +0 -0
  177. {multipers-2.3.2 → multipers-2.3.3b1}/multipers.egg-info/SOURCES.txt +0 -0
  178. {multipers-2.3.2 → multipers-2.3.3b1}/multipers.egg-info/dependency_links.txt +0 -0
  179. {multipers-2.3.2 → multipers-2.3.3b1}/multipers.egg-info/requires.txt +0 -0
  180. {multipers-2.3.2 → multipers-2.3.3b1}/multipers.egg-info/top_level.txt +0 -0
  181. {multipers-2.3.2 → multipers-2.3.3b1}/setup.cfg +0 -0
  182. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_diff_helper.py +0 -0
  183. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_filtrations.py +0 -0
  184. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_hilbert_function.py +0 -0
  185. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_mma.py +0 -0
  186. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_point_clouds.py +0 -0
  187. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_python-cpp_conversion.py +0 -0
  188. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_signed_betti.py +0 -0
  189. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_signed_measure.py +0 -0
  190. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_simplextreemulti.py +0 -0
  191. {multipers-2.3.2 → multipers-2.3.3b1}/tests/test_slicer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multipers
3
- Version: 2.3.2
3
+ Version: 2.3.3b1
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>
@@ -2,13 +2,16 @@ from typing import Optional
2
2
 
3
3
  import matplotlib.pyplot as plt
4
4
  import numpy as np
5
+ from numpy.typing import ArrayLike
5
6
 
6
7
  try:
7
8
  import torch
9
+
8
10
  istensor = torch.is_tensor
9
11
  except ImportError:
10
12
  istensor = lambda x: False
11
13
 
14
+
12
15
  def _plot_rectangle(rectangle: np.ndarray, weight, **plt_kwargs):
13
16
  rectangle = np.asarray(rectangle)
14
17
  x_axis = rectangle[[0, 2]]
@@ -137,7 +140,9 @@ def plot_signed_measure(signed_measure, threshold=None, ax=None, **plt_kwargs):
137
140
  else:
138
141
  pts_ = pts
139
142
  threshold = np.max(np.ma.masked_invalid(pts_), axis=0)
140
- threshold = np.max([threshold, [plt.gca().get_xlim()[1], plt.gca().get_ylim()[1]]], axis=0)
143
+ threshold = np.max(
144
+ [threshold, [plt.gca().get_xlim()[1], plt.gca().get_ylim()[1]]], axis=0
145
+ )
141
146
  if isinstance(pts, np.ndarray):
142
147
  pass
143
148
  else:
@@ -255,7 +260,7 @@ def plot2d_PyModule(
255
260
  dimension=-1,
256
261
  separated=False,
257
262
  min_persistence=0,
258
- alpha=.8,
263
+ alpha=0.8,
259
264
  verbose=False,
260
265
  save=False,
261
266
  dpi=200,
@@ -341,3 +346,84 @@ def plot2d_PyModule(
341
346
  if dimension >= 0:
342
347
  plt.title(rf"$H_{dimension}$ $2$-persistence")
343
348
  return
349
+
350
+
351
+ def plot_simplicial_complex(
352
+ st, pts: ArrayLike, x: float, y: float, mma=None, degree=None
353
+ ):
354
+ """
355
+ Scatters the points, with the simplices in the filtration at coordinates (x,y).
356
+ if an mma module is given, plots it in a second axis
357
+ """
358
+ if mma is not None:
359
+ fig, (a, b) = plt.subplots(ncols=2, figsize=(15, 5))
360
+ plt.sca(a)
361
+ plot_simplicial_complex(st, pts, x, y)
362
+ plt.sca(b)
363
+ mma.plot(degree=degree)
364
+ box = mma.get_box()
365
+ a, b, c, d = box.ravel()
366
+ mma.plot(degree=1, min_persistence=0.01)
367
+ plt.vlines(x, b, d, color="k", linestyle="--")
368
+ plt.hlines(y, a, c, color="k", linestyle="--")
369
+ plt.scatter([x], [y], c="r", zorder=10)
370
+ plt.text(x + 0.01 * (b - a), y + 0.01 * (d - c), f"({x},{y})")
371
+ return
372
+
373
+ pts = np.asarray(pts)
374
+ values = np.array([-f[1] for s, f in st.get_skeleton(0)])
375
+ qs = np.quantile(values, np.linspace(0, 1, 100))
376
+ color_idx = lambda d: np.searchsorted(qs, d) / 100
377
+
378
+ from matplotlib.pyplot import get_cmap
379
+
380
+ color = lambda d: get_cmap("viridis")([0, color_idx(d), 1])[1]
381
+ cols_pc = np.asarray([color(v) for v in values])
382
+ ax = plt.gca()
383
+ for s, f in st: ## simplexe, filtration
384
+ density = -f[1]
385
+ if len(s) <= 1 or f[0] > x or density < -y: ## simplexe = point
386
+ continue
387
+ if len(s) == 2: ## simplexe = segment
388
+ xx = np.array([pts[a, 0] for a in s])
389
+ yy = np.array([pts[a, 1] for a in s])
390
+ plt.plot(xx, yy, c=color(density), alpha=1, zorder=10 * density, lw=1.5)
391
+ if len(s) == 3: ## simplexe = triangle
392
+ xx = np.array([pts[a, 0] for a in s])
393
+ yy = np.array([pts[a, 1] for a in s])
394
+ _c = color(density)
395
+ ax.fill(xx, yy, c=_c, alpha=0.3, zorder=0)
396
+ out = plt.scatter(pts[:, 0], pts[:, 1], c=cols_pc, zorder=10, s=10)
397
+ ax.set_aspect(1)
398
+ return out
399
+
400
+
401
+ def plot_point_cloud(pts, function, x, y, mma=None, degree=None):
402
+ if mma is not None:
403
+ fig, (a, b) = plt.subplots(ncols=2, figsize=(15, 5))
404
+ plt.sca(a)
405
+ plot_point_cloud(pts, function, x, y)
406
+ plt.sca(b)
407
+ mma.plot(degree=degree)
408
+ box = mma.get_box()
409
+ a, b, c, d = box.ravel()
410
+ mma.plot(degree=1, min_persistence=0.01)
411
+ plt.vlines(x, b, d, color="k", linestyle="--")
412
+ plt.hlines(y, a, c, color="k", linestyle="--")
413
+ plt.scatter([x], [y], c="r", zorder=10)
414
+ plt.text(x + 0.01 * (b - a), y + 0.01 * (d - c), f"({x},{y})")
415
+ return
416
+ values = 1 - function
417
+ qs = np.quantile(values, np.linspace(0, 1, 100))
418
+ color_idx = lambda d: np.searchsorted(qs, d) / 100
419
+ from matplotlib.pyplot import get_cmap
420
+ from matplotlib.collections import PatchCollection
421
+
422
+ color = lambda d: get_cmap("viridis")([0, color_idx(d), 1])[1]
423
+ ax = plt.gca()
424
+ idx = function <= y
425
+ circles = [plt.Circle(pt, x, color=color(c)) for pt, c in zip(pts[idx], function)]
426
+ pc = PatchCollection(circles, alpha=0.3)
427
+ ax.add_collection(pc)
428
+ plt.scatter(*pts.T, c=-function, s=20)
429
+ ax.set_aspect(1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multipers
3
- Version: 2.3.2
3
+ Version: 2.3.3b1
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>
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
9
9
 
10
10
  [project]
11
11
  name = "multipers"
12
- version = "2.3.2"
12
+ version = "2.3.3b1"
13
13
  description = "Multiparameter Topological Persistence for Machine Learning"
14
14
  readme = "README.md"
15
15
  authors = [
@@ -167,6 +167,8 @@ extensions = [
167
167
  language="c++",
168
168
  extra_compile_args=[
169
169
  "-O3", # -Ofast disables infinity values for filtration values
170
+ "-fassociative-math",
171
+ "-funsafe-math-optimizations",
170
172
  # "-g",
171
173
  # "-march=native",
172
174
  "/std:c++20" if platform.system() == "Windows" else "-std=c++20",
File without changes
File without changes
File without changes
File without changes
@@ -19914,7 +19914,7 @@ def _from_bitmapi64(image, **slicer_kwargs):
19914
19914
  # print(f"F = {np.asarray(F[i])}")
19915
19915
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
19916
19916
  return slicer
19917
- def _from_bitmapi32(image, **slicer_kwargs):
19917
+ def _from_bitmapf64(image, **slicer_kwargs):
19918
19918
  from multipers import Slicer
19919
19919
  dtype = slicer_kwargs.get("dtype", image.dtype)
19920
19920
  slicer_kwargs["dtype"] = dtype
@@ -19932,9 +19932,9 @@ def _from_bitmapi32(image, **slicer_kwargs):
19932
19932
  cdef cset[unsigned int] vertices
19933
19933
 
19934
19934
  cdef unsigned int num_gens = gen_dims.size()
19935
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int32) - _Slicer._inf_value()
19936
- cdef int32_t[:,:] F = filtration_values
19937
- cdef int32_t[:,:] c_img = image.reshape(-1,num_parameters)
19935
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float64) - _Slicer._inf_value()
19936
+ cdef double[:,:] F = filtration_values
19937
+ cdef double[:,:] c_img = image.reshape(-1,num_parameters)
19938
19938
  with nogil:
19939
19939
  for i in range(num_gens):
19940
19940
  # with gil:
@@ -19990,7 +19990,7 @@ def _from_bitmapf32(image, **slicer_kwargs):
19990
19990
  # print(f"F = {np.asarray(F[i])}")
19991
19991
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
19992
19992
  return slicer
19993
- def _from_bitmapf64(image, **slicer_kwargs):
19993
+ def _from_bitmapi32(image, **slicer_kwargs):
19994
19994
  from multipers import Slicer
19995
19995
  dtype = slicer_kwargs.get("dtype", image.dtype)
19996
19996
  slicer_kwargs["dtype"] = dtype
@@ -20008,9 +20008,9 @@ def _from_bitmapf64(image, **slicer_kwargs):
20008
20008
  cdef cset[unsigned int] vertices
20009
20009
 
20010
20010
  cdef unsigned int num_gens = gen_dims.size()
20011
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float64) - _Slicer._inf_value()
20012
- cdef double[:,:] F = filtration_values
20013
- cdef double[:,:] c_img = image.reshape(-1,num_parameters)
20011
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int32) - _Slicer._inf_value()
20012
+ cdef int32_t[:,:] F = filtration_values
20013
+ cdef int32_t[:,:] c_img = image.reshape(-1,num_parameters)
20014
20014
  with nogil:
20015
20015
  for i in range(num_gens):
20016
20016
  # with gil:
@@ -20033,12 +20033,12 @@ def from_bitmap(img, **kwargs):
20033
20033
  img = np.asarray(img)
20034
20034
  if img.dtype == np.int64:
20035
20035
  return _from_bitmapi64(img, **kwargs)
20036
- if img.dtype == np.int32:
20037
- return _from_bitmapi32(img, **kwargs)
20038
- if img.dtype == np.float32:
20039
- return _from_bitmapf32(img, **kwargs)
20040
20036
  if img.dtype == np.float64:
20041
20037
  return _from_bitmapf64(img, **kwargs)
20038
+ if img.dtype == np.float32:
20039
+ return _from_bitmapf32(img, **kwargs)
20040
+ if img.dtype == np.int32:
20041
+ return _from_bitmapi32(img, **kwargs)
20042
20042
  raise ValueError(f"Invalid dtype. Got {img.dtype=}, was expecting {available_dtype=}.")
20043
20043
 
20044
20044
  def from_function_delaunay(
File without changes
File without changes