multipers 2.2.3__cp311-cp311-win_amd64.whl → 2.3.0__cp311-cp311-win_amd64.whl

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 (182) hide show
  1. multipers/__init__.py +33 -31
  2. multipers/_signed_measure_meta.py +430 -430
  3. multipers/_slicer_meta.py +211 -212
  4. multipers/data/MOL2.py +458 -458
  5. multipers/data/UCR.py +18 -18
  6. multipers/data/graphs.py +466 -466
  7. multipers/data/immuno_regions.py +27 -27
  8. multipers/data/pytorch2simplextree.py +90 -90
  9. multipers/data/shape3d.py +101 -101
  10. multipers/data/synthetic.py +113 -111
  11. multipers/distances.py +198 -198
  12. multipers/filtration_conversions.pxd.tp +84 -84
  13. multipers/filtrations/__init__.py +18 -0
  14. multipers/filtrations/filtrations.py +289 -0
  15. multipers/filtrations.pxd +224 -224
  16. multipers/function_rips.cp311-win_amd64.pyd +0 -0
  17. multipers/function_rips.pyx +105 -105
  18. multipers/grids.cp311-win_amd64.pyd +0 -0
  19. multipers/grids.pyx +350 -350
  20. multipers/gudhi/Persistence_slices_interface.h +132 -132
  21. multipers/gudhi/Simplex_tree_interface.h +239 -245
  22. multipers/gudhi/Simplex_tree_multi_interface.h +516 -561
  23. multipers/gudhi/cubical_to_boundary.h +59 -59
  24. multipers/gudhi/gudhi/Bitmap_cubical_complex.h +450 -450
  25. multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +1070 -1070
  26. multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +579 -579
  27. multipers/gudhi/gudhi/Debug_utils.h +45 -45
  28. multipers/gudhi/gudhi/Fields/Multi_field.h +484 -484
  29. multipers/gudhi/gudhi/Fields/Multi_field_operators.h +455 -455
  30. multipers/gudhi/gudhi/Fields/Multi_field_shared.h +450 -450
  31. multipers/gudhi/gudhi/Fields/Multi_field_small.h +531 -531
  32. multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +507 -507
  33. multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +531 -531
  34. multipers/gudhi/gudhi/Fields/Z2_field.h +355 -355
  35. multipers/gudhi/gudhi/Fields/Z2_field_operators.h +376 -376
  36. multipers/gudhi/gudhi/Fields/Zp_field.h +420 -420
  37. multipers/gudhi/gudhi/Fields/Zp_field_operators.h +400 -400
  38. multipers/gudhi/gudhi/Fields/Zp_field_shared.h +418 -418
  39. multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +337 -337
  40. multipers/gudhi/gudhi/Matrix.h +2107 -2107
  41. multipers/gudhi/gudhi/Multi_critical_filtration.h +1038 -1038
  42. multipers/gudhi/gudhi/Multi_persistence/Box.h +171 -171
  43. multipers/gudhi/gudhi/Multi_persistence/Line.h +282 -282
  44. multipers/gudhi/gudhi/Off_reader.h +173 -173
  45. multipers/gudhi/gudhi/One_critical_filtration.h +1432 -1431
  46. multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +769 -769
  47. multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +686 -686
  48. multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +842 -842
  49. multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +1350 -1350
  50. multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +1105 -1105
  51. multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +859 -859
  52. multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +910 -910
  53. multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +139 -139
  54. multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +230 -230
  55. multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +211 -211
  56. multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +60 -60
  57. multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +60 -60
  58. multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +136 -136
  59. multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +190 -190
  60. multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +616 -616
  61. multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +150 -150
  62. multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +106 -106
  63. multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +219 -219
  64. multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +327 -327
  65. multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +1140 -1140
  66. multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +934 -934
  67. multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +934 -934
  68. multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +980 -980
  69. multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +1092 -1092
  70. multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +192 -192
  71. multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +921 -921
  72. multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +1093 -1093
  73. multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +1012 -1012
  74. multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +1244 -1244
  75. multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +186 -186
  76. multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +164 -164
  77. multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +156 -156
  78. multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +376 -376
  79. multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +540 -540
  80. multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +118 -118
  81. multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +173 -173
  82. multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +128 -128
  83. multipers/gudhi/gudhi/Persistent_cohomology.h +745 -745
  84. multipers/gudhi/gudhi/Points_off_io.h +171 -171
  85. multipers/gudhi/gudhi/Simple_object_pool.h +69 -69
  86. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +463 -463
  87. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +83 -83
  88. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +106 -106
  89. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +277 -277
  90. multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +62 -62
  91. multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +27 -27
  92. multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +62 -62
  93. multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +157 -157
  94. multipers/gudhi/gudhi/Simplex_tree.h +2794 -2794
  95. multipers/gudhi/gudhi/Simplex_tree_multi.h +152 -163
  96. multipers/gudhi/gudhi/distance_functions.h +62 -62
  97. multipers/gudhi/gudhi/graph_simplicial_complex.h +104 -104
  98. multipers/gudhi/gudhi/persistence_interval.h +253 -253
  99. multipers/gudhi/gudhi/persistence_matrix_options.h +170 -170
  100. multipers/gudhi/gudhi/reader_utils.h +367 -367
  101. multipers/gudhi/mma_interface_coh.h +256 -255
  102. multipers/gudhi/mma_interface_h0.h +223 -231
  103. multipers/gudhi/mma_interface_matrix.h +284 -282
  104. multipers/gudhi/naive_merge_tree.h +536 -575
  105. multipers/gudhi/scc_io.h +310 -289
  106. multipers/gudhi/truc.h +890 -888
  107. multipers/io.cp311-win_amd64.pyd +0 -0
  108. multipers/io.pyx +711 -711
  109. multipers/ml/accuracies.py +90 -90
  110. multipers/ml/convolutions.py +520 -520
  111. multipers/ml/invariants_with_persistable.py +79 -79
  112. multipers/ml/kernels.py +176 -176
  113. multipers/ml/mma.py +713 -714
  114. multipers/ml/one.py +472 -472
  115. multipers/ml/point_clouds.py +352 -346
  116. multipers/ml/signed_measures.py +1589 -1589
  117. multipers/ml/sliced_wasserstein.py +461 -461
  118. multipers/ml/tools.py +113 -113
  119. multipers/mma_structures.cp311-win_amd64.pyd +0 -0
  120. multipers/mma_structures.pxd +127 -127
  121. multipers/mma_structures.pyx +4 -4
  122. multipers/mma_structures.pyx.tp +1085 -1085
  123. multipers/multi_parameter_rank_invariant/diff_helpers.h +84 -93
  124. multipers/multi_parameter_rank_invariant/euler_characteristic.h +97 -97
  125. multipers/multi_parameter_rank_invariant/function_rips.h +322 -322
  126. multipers/multi_parameter_rank_invariant/hilbert_function.h +769 -769
  127. multipers/multi_parameter_rank_invariant/persistence_slices.h +148 -148
  128. multipers/multi_parameter_rank_invariant/rank_invariant.h +369 -369
  129. multipers/multiparameter_edge_collapse.py +41 -41
  130. multipers/multiparameter_module_approximation/approximation.h +2296 -2295
  131. multipers/multiparameter_module_approximation/combinatory.h +129 -129
  132. multipers/multiparameter_module_approximation/debug.h +107 -107
  133. multipers/multiparameter_module_approximation/format_python-cpp.h +286 -286
  134. multipers/multiparameter_module_approximation/heap_column.h +238 -238
  135. multipers/multiparameter_module_approximation/images.h +79 -79
  136. multipers/multiparameter_module_approximation/list_column.h +174 -174
  137. multipers/multiparameter_module_approximation/list_column_2.h +232 -232
  138. multipers/multiparameter_module_approximation/ru_matrix.h +347 -347
  139. multipers/multiparameter_module_approximation/set_column.h +135 -135
  140. multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +36 -36
  141. multipers/multiparameter_module_approximation/unordered_set_column.h +166 -166
  142. multipers/multiparameter_module_approximation/utilities.h +403 -419
  143. multipers/multiparameter_module_approximation/vector_column.h +223 -223
  144. multipers/multiparameter_module_approximation/vector_matrix.h +331 -331
  145. multipers/multiparameter_module_approximation/vineyards.h +464 -464
  146. multipers/multiparameter_module_approximation/vineyards_trajectories.h +649 -649
  147. multipers/multiparameter_module_approximation.cp311-win_amd64.pyd +0 -0
  148. multipers/multiparameter_module_approximation.pyx +216 -217
  149. multipers/pickle.py +90 -53
  150. multipers/plots.py +342 -334
  151. multipers/point_measure.cp311-win_amd64.pyd +0 -0
  152. multipers/point_measure.pyx +322 -320
  153. multipers/simplex_tree_multi.cp311-win_amd64.pyd +0 -0
  154. multipers/simplex_tree_multi.pxd +133 -133
  155. multipers/simplex_tree_multi.pyx +18 -15
  156. multipers/simplex_tree_multi.pyx.tp +1939 -1935
  157. multipers/slicer.cp311-win_amd64.pyd +0 -0
  158. multipers/slicer.pxd +81 -20
  159. multipers/slicer.pxd.tp +215 -214
  160. multipers/slicer.pyx +1091 -308
  161. multipers/slicer.pyx.tp +924 -914
  162. multipers/tensor/tensor.h +672 -672
  163. multipers/tensor.pxd +13 -13
  164. multipers/test.pyx +44 -44
  165. multipers/tests/__init__.py +57 -57
  166. multipers/torch/diff_grids.py +217 -217
  167. multipers/torch/rips_density.py +310 -304
  168. {multipers-2.2.3.dist-info → multipers-2.3.0.dist-info}/LICENSE +21 -21
  169. {multipers-2.2.3.dist-info → multipers-2.3.0.dist-info}/METADATA +21 -11
  170. multipers-2.3.0.dist-info/RECORD +182 -0
  171. multipers/tests/test_diff_helper.py +0 -73
  172. multipers/tests/test_hilbert_function.py +0 -82
  173. multipers/tests/test_mma.py +0 -83
  174. multipers/tests/test_point_clouds.py +0 -49
  175. multipers/tests/test_python-cpp_conversion.py +0 -82
  176. multipers/tests/test_signed_betti.py +0 -181
  177. multipers/tests/test_signed_measure.py +0 -89
  178. multipers/tests/test_simplextreemulti.py +0 -221
  179. multipers/tests/test_slicer.py +0 -221
  180. multipers-2.2.3.dist-info/RECORD +0 -189
  181. {multipers-2.2.3.dist-info → multipers-2.3.0.dist-info}/WHEEL +0 -0
  182. {multipers-2.2.3.dist-info → multipers-2.3.0.dist-info}/top_level.txt +0 -0
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 David Loiseaux
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2023 David Loiseaux
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: multipers
3
- Version: 2.2.3
3
+ Version: 2.3.0
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>
@@ -56,25 +56,33 @@ Requires-Dist: pykeops
56
56
  Requires-Dist: pot
57
57
 
58
58
  # multipers : Multiparameter Persistence for Machine Learning
59
- [![Documentation](https://img.shields.io/badge/Documentation-website-blue)](https://davidlapous.github.io/multipers)
60
- [![DOI](https://joss.theoj.org/papers/10.21105/joss.06773/status.svg)](https://doi.org/10.21105/joss.06773)
61
- [![PyPI](https://img.shields.io/pypi/v/multipers?color=green)](https://pypi.org/project/multipers)
62
- [![Build, test](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml/badge.svg)](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml)
63
- [![Downloads](https://static.pepy.tech/badge/multipers)](https://pepy.tech/project/multipers)
59
+ [![DOI](https://joss.theoj.org/papers/10.21105/joss.06773/status.svg)](https://doi.org/10.21105/joss.06773) [![Documentation](https://img.shields.io/badge/Documentation-website-blue)](https://davidlapous.github.io/multipers) [![Build, test](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml/badge.svg)](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml)
64
60
  <br>
65
61
  Scikit-style PyTorch-autodiff multiparameter persistent homology python library.
66
62
  This library aims to provide easy to use and performant strategies for applied multiparameter topology.
67
- <br> Meant to be integrated in [the Gudhi library](https://gudhi.inria.fr/).
63
+ <br> Meant to be integrated in the [Gudhi](https://gudhi.inria.fr/) library.
64
+
65
+ ## Compiled packages
66
+ | Source | Version | Downloads | Platforms |
67
+ | --- | --- | --- | --- |
68
+ | [![Conda Recipe](https://img.shields.io/badge/conda-recipe-green.svg)](https://anaconda.org/conda-forge/multipers)| [![Conda Version](https://img.shields.io/conda/vn/conda-forge/multipers.svg)](https://anaconda.org/conda-forge/multipers) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/multipers.svg)](https://anaconda.org/conda-forge/multipers) |[![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/multipers.svg)](https://anaconda.org/conda-forge/multipers) |
69
+ | [![pip Recipe](https://img.shields.io/badge/pip-package-green.svg)](https:///pypi.org/project/multipers) | [![PyPI](https://img.shields.io/pypi/v/multipers?color=green)](https://pypi.org/project/multipers) | [![ pip downloads](https://static.pepy.tech/badge/multipers)](https://pepy.tech/project/multipers) | |
70
+
71
+
68
72
 
69
73
  ## Quick start
70
74
  This library allows computing several representations from "geometrical datasets", e.g., point clouds, images, graphs, that have multiple scales.
71
75
  We provide some *nice* pictures in the [documentation](https://davidlapous.github.io/multipers/index.html).
72
76
  A non-exhaustive list of features can be found in the **Features** section.
73
77
 
74
- This library is available [on PyPI](https://pypi.org/project/multipers/) for (reasonably up to date) Linux, macOS and Windows, via
78
+ This library is available on pip and conda-forge for (reasonably up to date) Linux, macOS and Windows, via
75
79
  ```sh
76
80
  pip install multipers
77
81
  ```
82
+ or
83
+ ```sh
84
+ conda install multipers -c conda-forge
85
+ ```
78
86
 
79
87
  Windows support is experimental, and some core dependencies are not available on Windows.
80
88
  We hence recommend Windows user to use [WSL](https://learn.microsoft.com/en-us/windows/wsl/).
@@ -95,6 +103,7 @@ This library features a bunch of different functions and helpers. See below for
95
103
  - [x] [[Chunk Reduction for Multi-Parameter Persistent Homology, SOCG2019]](https://doi.org/10.4230/LIPIcs.SoCG.2019.37) Multi-filtration preprocessing algorithm for homology computations.
96
104
  - [x] [[Computing Minimal Presentations and Bigraded Betti Numbers of 2-Parameter Persistent Homology, JAAG]](https://doi.org/10.1137/20M1388425) Minimal presentation of multiparameter persistence modules, using [mpfree](https://bitbucket.org/mkerber/mpfree/src/master/). Hilbert, Rank Decomposition Signed Measures, and MMA decompositions can be computed using the mpfree backend.
97
105
  - [x] [[Delaunay Bifiltrations of Functions on Point Clouds, SODA2024]](https://epubs.siam.org/doi/10.1137/1.9781611977912.173) Provides an alternative to function rips bifiltrations, using Delaunay complexes. Very good alternative to Rips-Density like bifiltrations.
106
+ - [x] [[Delaunay Core Bifiltration]](https://arxiv.org/abs/2405.01214) Bifiltration for point clouds, taking into account the density. Similar to Rips-Density.
98
107
  - [x] [[Rivet]](https://github.com/rivetTDA/rivet) Interactive two parameter persistence
99
108
  - [x] [[Kernel Operations on the GPU, with Autodiff, without Memory Overflows, JMLR]](http://jmlr.org/papers/v22/20-275.html) Although not linked, at first glance, to persistence in any way, this library allows computing blazingly fast signed measures convolutions (and more!) with custom kernels.
100
109
  - [ ] [Backend only] [[Projected distances for multi-parameter persistence modules]](https://arxiv.org/abs/2206.08818) Provides a strategy to estimate the convolution distance between multiparameter persistence module using projected barcodes. Implementation is a WIP.
@@ -103,11 +112,12 @@ This library features a bunch of different functions and helpers. See below for
103
112
  If I missed something, or you want to add something, feel free to open an issue.
104
113
 
105
114
  ## Authors
106
- [David Loiseaux](https://www-sop.inria.fr/members/David.Loiseaux/index.html),<br>
115
+ [David Loiseaux](https://davidlapous.github.io/),<br>
107
116
  [Hannah Schreiber](https://github.com/hschreiber) (Persistence backend code),<br>
108
117
  [Luis Scoccola](https://luisscoccola.com/)
109
118
  (Möbius inversion in python, degree-rips using [persistable](https://github.com/LuisScoccola/persistable) and [RIVET](https://github.com/rivetTDA/rivet/)),<br>
110
- [Mathieu Carrière](https://www-sop.inria.fr/members/Mathieu.Carriere/) (Sliced Wasserstein)<br>
119
+ [Mathieu Carrière](https://www-sop.inria.fr/members/Mathieu.Carriere/) (Sliced Wasserstein),<br>
120
+ [Odin Hoff Gardå](https://odinhg.github.io/) (Delaunay Core bifiltration).<br>
111
121
 
112
122
  ## Citation
113
123
  Please cite this library when using it in scientific publications;
@@ -130,5 +140,5 @@ you can use the following journal bibtex entry
130
140
  ```
131
141
  ## Contributions
132
142
  Feel free to contribute, report a bug on a pipeline, or ask for documentation by opening an issue.<br>
133
- In particular, if you have a nice example or application that is not taken care in the documentation (see the ./docs/notebooks/ folder), please contact me to add it there.
143
+ In particular, if you have a nice example or application that is not taken care in the documentation (see the `./docs/notebooks/` folder), please contact me to add it there.
134
144
 
@@ -0,0 +1,182 @@
1
+ multipers/__init__.py,sha256=y4BfbXAY2M2yZYob758IegZHwIbRgmKrph6lwe6WR6Q,733
2
+ multipers/_signed_measure_meta.py,sha256=kS_AhjZrk5hMXN9me0EJy6c29LmTlufo_DnaIf0neRQ,16663
3
+ multipers/_slicer_meta.py,sha256=mjIGR-B6HnQLSiMowEQ8EWQkD_IF3bBnDVzvwrZugZ4,7203
4
+ multipers/distances.py,sha256=am3_SqSkGB9N59grxb_EZt-KYqqKln0WiR4Wia6N_LA,6067
5
+ multipers/filtration_conversions.pxd,sha256=Je7a3F4zS1PQn6Ul1YCXgA6p39X2FouStru-XtN-aOw,10800
6
+ multipers/filtration_conversions.pxd.tp,sha256=_9tUvZVUA7J_RUM3q7BxY48fYgDHCUA7Xhy4nBfLLs0,3309
7
+ multipers/filtrations.pxd,sha256=08ONkZNCjs8Nme8lcD9myPz-K662sA-EDpSwzgC2_ts,9461
8
+ multipers/function_rips.cp311-win_amd64.pyd,sha256=Hn3Uwrcl54WqRB6QFhfXj2bk5n08UrNt5qgTC_wsE_Y,338432
9
+ multipers/function_rips.pyx,sha256=j5NjbK3YrAv_2s8YHB1JB0k6m9NC7RQCSFlJe-w_kgE,5252
10
+ multipers/grids.cp311-win_amd64.pyd,sha256=_bdJyRDmz0zFmQczztwJbkpScOMEOsHUFyE8Tfhc8Z0,506368
11
+ multipers/grids.pyx,sha256=uYVue79CiUK1yiL3kHI9h9lx3w1atZZx1KmWE7lYGp0,13733
12
+ multipers/io.cp311-win_amd64.pyd,sha256=XoAETfoCLqazn43Nv7_pl3cVWztExhJU3saV7GMHXDU,253952
13
+ multipers/io.pyx,sha256=Hji4-sNZzYRizkyX6NmxBU1GnDP30QVoiT4rXcnE_UM,25284
14
+ multipers/mma_structures.cp311-win_amd64.pyd,sha256=Sq138i5jXYLLcSaZJahB0r77QOH71YQvIdPduhDoFD8,1331712
15
+ multipers/mma_structures.pxd,sha256=u-t_xEsLUYwLFt1v3TzKN8AcrP1V02pQRpYDw7PLpYw,6499
16
+ multipers/mma_structures.pyx,sha256=kbYSWSOSzRhswRASbnLq1YVH9oacUDwZtFOAEKmdY34,108682
17
+ multipers/mma_structures.pyx.tp,sha256=mVWimmsMmZiLsq038CbRJhZ1F3LmVvna0Dqi7uu1lu8,42110
18
+ multipers/multiparameter_edge_collapse.py,sha256=MFt0eKQQSv2354omeIqOmzASYTKIMsYdxZHFZauQr8g,1229
19
+ multipers/multiparameter_module_approximation.cp311-win_amd64.pyd,sha256=7LhWpWIE4X3fSghYg--qCxDGazhoBzETP6a9RD9tlWM,474112
20
+ multipers/multiparameter_module_approximation.pyx,sha256=cSWQJJDlWt5gi4kzR87EvRknhHnSZfDR5Fsa6HSpUSE,8557
21
+ multipers/pickle.py,sha256=YYVt4iHiD16E1x5Yn_4mX6P5P8rKi56pNGjJo5IzPhc,2579
22
+ multipers/plots.py,sha256=dobsXPp9vN_QYUyccPaeb6oKCrtKA-6TYFLfefQpt0M,11135
23
+ multipers/point_measure.cp311-win_amd64.pyd,sha256=4fd91_b8r5YPiYZADewbBdxMEq6PHIh7iI1ZySUrXns,615936
24
+ multipers/point_measure.pyx,sha256=7IjakgrAmGVv57MBb8BEHRwsSGxJgxTu_Iar6zOW2_A,11951
25
+ multipers/simplex_tree_multi.cp311-win_amd64.pyd,sha256=RuRK4q9dEk36BNgRkpk3DDz0ko6OJZ9rBy9iEfFprtw,3609600
26
+ multipers/simplex_tree_multi.pxd,sha256=B7beQwO_qgbxF_xK55B0ics3cW_REktm7cXY2Vl3NqY,6559
27
+ multipers/simplex_tree_multi.pyx,sha256=aE_0cwylWM4fgjKjS_bvl8XUgfn4QZTnyGplUkzE9Qs,479236
28
+ multipers/simplex_tree_multi.pyx.tp,sha256=W9myuZNSrVnjtKsVIHjhhDgLiqD_cOeibU34JMUwtww,86661
29
+ multipers/slicer.cp311-win_amd64.pyd,sha256=UfBLDiDdpkgYwLKOEuFs90dlS9yCHp-Y-ms7EMRHeHg,8309760
30
+ multipers/slicer.pxd,sha256=dTGofb3fcA29KhHI9SiDfvKc1ffwa6jCCFZV5aFCyU0,156678
31
+ multipers/slicer.pxd.tp,sha256=gsSCeTmp3nuSF0jHC5bQu8---Zc1fJVkPKDVZwLsQqo,9371
32
+ multipers/slicer.pyx,sha256=5rBwcK8lr5kYq5gPU1upSwMqiBCwsLgF3M0p9OLTQ6A,694534
33
+ multipers/slicer.pyx.tp,sha256=Rxruc2ZZUXEFEU3YSkSEK56f6-HHzK3WPtIgcRfsZCI,37390
34
+ multipers/tbb12.dll,sha256=jutngDNBx2TW92tVYsfuHD8Sre0oO-rh4iK2edc1SGA,337920
35
+ multipers/tbbbind_2_5.dll,sha256=-ywrB_hirPeygmtj_VhROzkQcw70G94x4JTgBdkUaUQ,23040
36
+ multipers/tbbmalloc.dll,sha256=4uOK-Y2zeptYOLEh1bu-Yz8htiG4gtF_agyanMJO-tA,112640
37
+ multipers/tbbmalloc_proxy.dll,sha256=iWWmLmm2bxDnyPQUry1kvhkgQspLyLmIjYD-k4Z9Hk0,31232
38
+ multipers/tensor.pxd,sha256=MSmaMU0sOP9CHLmg4dym7nOGaI1S4cOdM01TQ9flI54,417
39
+ multipers/test.pyx,sha256=-g7WU-jKrZK8H0c-6eAPsfrApjvTKrUoswVYFu8LoV4,1798
40
+ multipers/data/MOL2.py,sha256=nLZHy2OSFN9Z2uJKsbqWOEG2R7G-uH6dCLHG48UjvR4,15428
41
+ multipers/data/UCR.py,sha256=PuT8l3i26y0goBzIESwdgJAe6YFCyDiWSoxECcP5rhs,798
42
+ multipers/data/__init__.py,sha256=w7uUe4LOHbdbKU4R8MNs7em65wZJN0v5ukoG1otFanQ,24
43
+ multipers/data/graphs.py,sha256=wef36QXuzi2EMQJi6W_sEB3JnShfSAbfylP6-2rLSUA,16346
44
+ multipers/data/immuno_regions.py,sha256=BNN81DOwdu6sJTkaSeziAYyx0jd0kuZZB5Se0Fo95vA,903
45
+ multipers/data/minimal_presentation_to_st_bf.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ multipers/data/pytorch2simplextree.py,sha256=cvOJTUleK_qEbcpygRD77GuQl_0qDsSjjD6e6UFUDD0,3048
47
+ multipers/data/shape3d.py,sha256=AE-vvjKrhKxOwMo-lurUsFqqLjIg5obo-RTbRZF_5Mk,3893
48
+ multipers/data/synthetic.py,sha256=RvLWIBE5j99kJSt-D7cnPGI3c7skD4p8_qofJbMIXM0,3078
49
+ multipers/filtrations/__init__.py,sha256=Lg0EHe2cxT32UQAg0kr_Vpua-xPBZxGol8VIfz8UwWk,319
50
+ multipers/filtrations/filtrations.py,sha256=lrMu_JrefR8F_30kyneqAzjJI1A2M3j2gJkbhFNuuHE,10891
51
+ multipers/gudhi/Persistence_slices_interface.h,sha256=QnUeCCKi9K8CfqI3W5i3Ra1Jy2Z1IIivr3MIpnBsnYU,6562
52
+ multipers/gudhi/Simplex_tree_interface.h,sha256=kkq8pE3jKGLY1dK7sYpb_uERHaWGurrRXfaw_ygs-mY,10217
53
+ multipers/gudhi/Simplex_tree_multi_interface.h,sha256=vBS1lIfxoCEvdRTtv-3WMGRiQeZnjpMqti47f0OXyc4,23512
54
+ multipers/gudhi/cubical_to_boundary.h,sha256=ELRnPe8czj9XlGNb2fLszu7EzU6itgS2vq03eVP31aU,1955
55
+ multipers/gudhi/mma_interface_coh.h,sha256=JljD7lVwxxywxjgbK3PU4FZhLK9XUuEXuWOPDQvURWI,8433
56
+ multipers/gudhi/mma_interface_h0.h,sha256=9p82qjdfVHVeTjRgHfQRQfYOATUQQMEajxQD29TtUcE,7579
57
+ multipers/gudhi/mma_interface_matrix.h,sha256=0okqiXuSJYtdgn7eQWh-OA5u1P-HF23tSVKeT-4VTW0,10672
58
+ multipers/gudhi/naive_merge_tree.h,sha256=VBudnSASwXjx3aO0983GmXIBCyLbH3Yxuqk6wSHZyvo,18837
59
+ multipers/gudhi/scc_io.h,sha256=KB-j1CQGbJ9VLeh5VUJN9GbhxDTwbEv0Q3pQzYLjzkY,11507
60
+ multipers/gudhi/truc.h,sha256=jvD2D4tzNLp6ivGYbpUbqPqIqNrn068OI9zxW78vRNM,34835
61
+ multipers/gudhi/gudhi/Bitmap_cubical_complex.h,sha256=EdKBo5TQM8tCvap6_Lw2w-2kDOx4p10tQRXqKYcUs28,16159
62
+ multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h,sha256=62rgpvCQhAA7hpKSxRAKDO9uLZK2txxjf953kQA56eM,44544
63
+ multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h,sha256=TJTN_RWANVEl5A4NeZYAfVzwLiP474J1vl16Pn1QqJE,25829
64
+ multipers/gudhi/gudhi/Debug_utils.h,sha256=aps-ljywN_mfNSVmx2LB1lMJ7-RrzfMr5LScXBTFZ5M,1590
65
+ multipers/gudhi/gudhi/Flag_complex_edge_collapser.h,sha256=DQ_wyOG3z09jX6sq_79oTxZM_Z5Hi_zIZ_LL1EFMLAw,13247
66
+ multipers/gudhi/gudhi/Matrix.h,sha256=bxCmhdWbxATmrw36GgKkIgZZM9xkCZPz4cJNNDG8qoI,115997
67
+ multipers/gudhi/gudhi/Multi_critical_filtration.h,sha256=RDbMBMJtccxX1EtM59bVgL7uucjUUvFZhYb23kphpV8,42589
68
+ multipers/gudhi/gudhi/Off_reader.h,sha256=Owwc7wgQzOgq4URfA3V5c9v_8IY6ODKXeZefjFk8Kok,4871
69
+ multipers/gudhi/gudhi/One_critical_filtration.h,sha256=cwNh9bC79iYdK7Qc_XcbyUZWRd_vC1qZfBT-S4g8Eqg,53325
70
+ multipers/gudhi/gudhi/Persistent_cohomology.h,sha256=UEy1ae9YBamWICDwA120lolIYlt14ExZjr7VFJZaCzI,30725
71
+ multipers/gudhi/gudhi/Points_off_io.h,sha256=kdLw8d8c-zwLl-l5W7BE4lhTLr40FV4gkGo33sU-tbs,5226
72
+ multipers/gudhi/gudhi/Simple_object_pool.h,sha256=Dc_bn6g5rCMg_wZtKNzueJPKfFh1SI-QO-HKAI_74jM,1809
73
+ multipers/gudhi/gudhi/Simplex_tree.h,sha256=9ZKe20WVAH1bDjjVIbWm7LafPywOUtpk9l7_J9aw4r8,127544
74
+ multipers/gudhi/gudhi/Simplex_tree_multi.h,sha256=pKbSPkpwOFAhUDeUJXDhBrC9Sri7BTSoTrUg1Pbr9uY,6446
75
+ multipers/gudhi/gudhi/distance_functions.h,sha256=r9AZnpO0--xqrAT_XSNPdhy_i3J1iL5qfRISMyF9g34,1901
76
+ multipers/gudhi/gudhi/graph_simplicial_complex.h,sha256=Wuy5qOkx592qKsweovOaD2TwW4k7iu8ro3o5F-VnThI,3772
77
+ multipers/gudhi/gudhi/persistence_interval.h,sha256=tHigFcO1w0djVr5r_2iSL69bdFPz8ahZLxCu_FyWu0Q,10869
78
+ multipers/gudhi/gudhi/persistence_matrix_options.h,sha256=hYGbuSL-BCiLgw7zgvmwxEazNm-9Jdtm2ZWLFbawgls,6543
79
+ multipers/gudhi/gudhi/reader_utils.h,sha256=2JFkAZtqptxkUDwIA78GG-GYktzjrNlTIFoUNdsYIxM,11568
80
+ multipers/gudhi/gudhi/Fields/Multi_field.h,sha256=Ku3D2xNgYlZibQhjCUwM8uZNvTm8UpuGKMK1G6vt18Y,15953
81
+ multipers/gudhi/gudhi/Fields/Multi_field_operators.h,sha256=0sNrwDAUZICFtlk_1u1cAIiL27TwXgG2Dqy_QL8BfkM,15995
82
+ multipers/gudhi/gudhi/Fields/Multi_field_shared.h,sha256=D19HU02Tbg9yxri8nlLa8uhNzZbstB3V4MnVkwrbkP4,15266
83
+ multipers/gudhi/gudhi/Fields/Multi_field_small.h,sha256=I9ZvSG3Zq0zicmjU_Ai4KIbThHv4XFsbZ7eHn4MghEY,18872
84
+ multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h,sha256=-nTJTnYlM8wMcNqm7-Q_C1RiZNIujnmRXSfeUT5QgCY,18465
85
+ multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h,sha256=nv8XOHznngmzF1T8TTQln3Nz-QMrZPce47UHsjuGyOw,19418
86
+ multipers/gudhi/gudhi/Fields/Z2_field.h,sha256=qboccGW5OuIOc282JSLb4RMEPB8gCYit0W91A9vxiMI,11041
87
+ multipers/gudhi/gudhi/Fields/Z2_field_operators.h,sha256=8xfZf6_yLzM8qEexfAjoj2teAjTEpKOIIqohH5ffZTA,14211
88
+ multipers/gudhi/gudhi/Fields/Zp_field.h,sha256=gy8DafW6z8m4yjLCwonBwEpMnsWprvZU7xOyscZ_Aw0,13156
89
+ multipers/gudhi/gudhi/Fields/Zp_field_operators.h,sha256=xFVPchEYpGs5snzf5iXUUbFgXGvyrHroOd-t6fo3bgg,13506
90
+ multipers/gudhi/gudhi/Fields/Zp_field_shared.h,sha256=XfEw_DmUKpffcoQlmCphutipzQwgIaV4DPot0dWhM9s,14032
91
+ multipers/gudhi/gudhi/Multi_persistence/Box.h,sha256=Xbga3BoM51WVNJNmx57oJ-GAVtTxlIfOQI34yOuwNbA,5874
92
+ multipers/gudhi/gudhi/Multi_persistence/Line.h,sha256=SVVebEUBf0MMxTn48iNBVf3LO7bVOuaR5UQOH0OWUHA,10149
93
+ multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h,sha256=rTTtRJa9cu37oXsX9qPwWZkI4y5-NKuphBow1B3VtH8,32784
94
+ multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h,sha256=-i3IoKX-BGdU1LmseLGJW4K9_teUkdEuMgAJQQlLexk,29830
95
+ multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h,sha256=k-sZtAlKxTT9LZ_glfRJgKADV9NLItGAk0A9skrJmYc,36102
96
+ multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h,sha256=-bBMu8dvuZ0nkCsoz0Ur07Cu3Ic_SS7o-Yxp0d4v3m4,61526
97
+ multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h,sha256=JezmS6JX7h__MeNrMc06lN2bmrGoS_kn2NoPN89hwOY,55404
98
+ multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h,sha256=747kscocPiznAoegqWHfA6JfwyRyxRX4uWZiP8mez00,43537
99
+ multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h,sha256=GV8F68AoTqtKV_HeQ1tZd_L0ZFMA-4Y6W1JWb6g3b_w,39661
100
+ multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h,sha256=usE3EqYsYaRf0FizQ_j_bF73Vk5B68ldX5GeSn1bK6Y,8602
101
+ multipers/gudhi/gudhi/Persistence_matrix/base_swap.h,sha256=ebHV32i18JjOlWSDQBCkTdhlRMLmAkIsluxSzfiT5hE,7258
102
+ multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h,sha256=-XInkObR0afjZL0RVDNVVEQHvHb8YL1Dy7y-M2gQwP0,1679
103
+ multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h,sha256=eZiKEF6zxs-XwjDQSwZe_J5FVqc6IiGov8mvd432tk0,1644
104
+ multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h,sha256=dn7MayXXYHtesAaAdGWcBOzYjbSWCVWYigGk1b4hvVY,4076
105
+ multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h,sha256=suWnK1K-5V9Pl_TLI6PQq2WGGF8ab3Nj3W2h6OyEtLg,7142
106
+ multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h,sha256=2I0FPNTgfJmy48QU1C-IHqOFPkMAfMXzN_in8_-NNQk,23387
107
+ multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h,sha256=Awu_hijrr-wk6rc4bupfVZSQgI8VNZbmy4j1_da8L-o,5989
108
+ multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h,sha256=Q_s_g032cL1DqizuPnDGt05fOknZbopRSOa3TEn26HE,5492
109
+ multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h,sha256=2_0cVl7t06SzNfvPs2NYLq8Ou42MN7BOfRnfU9c2a2c,5356
110
+ multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h,sha256=Bg4Z8vZFG-3RYn3YWy6DhlH1nrXGuLgYUdaKRf5FeOk,13493
111
+ multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h,sha256=8B3T9HeCnqYZ1dGsebASMKv1ozkKqzxEPzdWoSq1afs,21006
112
+ multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h,sha256=6B8OYMx84OM4hYLo3fQajVLpJtZAtg265X0_2VUrL1w,3462
113
+ multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h,sha256=IcThu4W9enezz8SOb9cODeIFLvdScw3vXs0CHUJ2X7c,5490
114
+ multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h,sha256=sH6Rq4BnyWR8vwq3aLpnRdX_OZPMEuRinVoW8FD3Zi0,3178
115
+ multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h,sha256=FU5IbYxnNBfkZZTNwGCg043EF0VETsb69fTQptrhrI0,9098
116
+ multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h,sha256=e0nJWpg6ZsRsb-LEfji_kzOcE2k_Hp-mF86oPdCPgdw,10058
117
+ multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h,sha256=YVFgVN2dxJLfTaYrXdt03oaKPEQoq1taey048OMPPEI,40454
118
+ multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h,sha256=T8l-C9vj7e-wiIPy7hVX71GpdVBinqVtR0etZ2Ffc3U,36374
119
+ multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h,sha256=iobpvFkLA6b066RN8yV8QcwsM9RrrzFpSu2r6KxN8uo,36234
120
+ multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h,sha256=tfp06z949Nqr_qvQhL8iBJ55anPMXbagw5-k5bw5GFU,37180
121
+ multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h,sha256=U50XP5IvFGO33TfY6VZwL8SgkBzmIOoTC-yvM24ZTqU,41671
122
+ multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h,sha256=3d1ZA-c7Mb_pm_hkT85Q9cAdvhvligtpqzuPqpPrLWo,6012
123
+ multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h,sha256=qY9EBZ9Gx1Z118ULDPf4tC6QAnnReIsDkONlYHWY36U,34584
124
+ multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h,sha256=TINBMl_t9DUm5RzSiPqwK5mpt48hNSYoHtT2-7K7mow,41738
125
+ multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h,sha256=AOiewRpMc_Eyx_6zkEfqoLYNVWn2aTLyIT2WMpHTims,38260
126
+ multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h,sha256=rpUdcd2O6choZqjrTJMO_569-K1H5gf9DlKpYS2E2io,48090
127
+ multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h,sha256=ui3kgxOgWZBQbIDe5ki_TocRX_0Ao_7TDQIdBIZc1XI,3399
128
+ multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h,sha256=S-jpKT5KlZ1X--LfNGTyfmoULNpu29hZUz9_lttxEYY,5678
129
+ multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h,sha256=0JQzCsQGLc3uiQuC_2a8W9-2drqv2gLgazP4wbeJAFk,3967
130
+ multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h,sha256=jWWhKjtJ8o4W_-Qe5Zj1J5u71M3q7gr4TuhAMqjZGRg,15115
131
+ multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h,sha256=XuIAdwbEFOCrMCZBie-ev8r_Ezf_PcaRMQIaro51mvE,2710
132
+ multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h,sha256=025PQPFTqHet0IGY6U87dDlQIGItnt-mK35QWvcbv_c,3028
133
+ multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h,sha256=Lqe8CKNwfzJoR6AqEUSuLP_cpHrnExP_TQp_zf4Jark,11174
134
+ multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h,sha256=HDs4C5QU92Nmbw025_PxgI3GblcXy_C7N1V2bFsSgz0,2404
135
+ multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h,sha256=qadCFWwXgyw53icvnYktqqCGPa1TIwm2fNFNRM3NVwY,720
136
+ multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h,sha256=dzQfXvRCgObVLRU0hpieqOJ0gQmagerUmfkuSL1RCn0,2076
137
+ multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h,sha256=h0rr_PiwPeH7GyG3qLEiluA6z1d6Qrbfo64XFM0coLE,5536
138
+ multipers/ml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ multipers/ml/accuracies.py,sha256=4KfH7EB6-3KjXhOcleHcCP_2OOA6mC9v7DI7MSA2PnU,2940
140
+ multipers/ml/convolutions.py,sha256=3RQsITZOlpMq_j3v0ZozraINUTTSx9zE55kxmc4Vf-Y,17864
141
+ multipers/ml/invariants_with_persistable.py,sha256=HL0_IIrcJdAmCIqcyHPg0PNLle_pa2esnGQJsK2hnHc,2261
142
+ multipers/ml/kernels.py,sha256=XWfvKY68-c9E-MpRzdNqGzGD6K24Aizx95TkiSeAtIY,6175
143
+ multipers/ml/mma.py,sha256=jW-kUQ7PuqWHrEhEwLGaYn64Rt2lgN45tFla0T4GGQc,23962
144
+ multipers/ml/one.py,sha256=np5jM8gywm65TsK1yeZ1BDWqP-Ym-7hz4brTXI_0imk,20119
145
+ multipers/ml/point_clouds.py,sha256=_0sqp-eFh7-GQ5cVtZwG2XDeIaavQdPB0d4L80mSyKQ,13761
146
+ multipers/ml/signed_measures.py,sha256=5E9VT-XBxgFIrwyZ1jop8A1lRiBGf1pBTkE29pcvs5c,58212
147
+ multipers/ml/sliced_wasserstein.py,sha256=jgq4ND3EWwwJBopqRvfJLsoOptiMHjS3zEAENBmPJDc,18644
148
+ multipers/ml/tools.py,sha256=DOPcqmvZP2bA7M08GrwccdebwDq1HEwYdhNRGT7eZMI,3453
149
+ multipers/multi_parameter_rank_invariant/diff_helpers.h,sha256=wMCOhAewWd6-lulLND0y8M0MZoru6zn_8J3qfXDjLds,3477
150
+ multipers/multi_parameter_rank_invariant/euler_characteristic.h,sha256=gLzz-VCY2xPW11Fmi1kG_On33h7EHFmW1TdsVWdzovA,3295
151
+ multipers/multi_parameter_rank_invariant/function_rips.h,sha256=aUox99Y4X5kRgQ-nfpDApX2VC5iV0NJMyLBV-C7glo0,13505
152
+ multipers/multi_parameter_rank_invariant/hilbert_function.h,sha256=S_LRkNSU_bjjcPRS1pWpVHWOLMFQIAYa9dbAhwz0W8c,36412
153
+ multipers/multi_parameter_rank_invariant/persistence_slices.h,sha256=oVMsNkn_VB5lQ_2qsKw5ydPoHnMuGbtvrIN_ga7XnGQ,5986
154
+ multipers/multi_parameter_rank_invariant/rank_invariant.h,sha256=-W_ai4I_wkAIodU3Ubgvuc5cD_VLJzB4479EsVSynsM,16371
155
+ multipers/multiparameter_module_approximation/approximation.h,sha256=8387pyT23UslzfbkpjVyfto5GH0_Nf6YTrFRHGomHm8,95391
156
+ multipers/multiparameter_module_approximation/combinatory.h,sha256=Ck-VKQ56wsXCgQvIbpfTnBOweSBRm4rnChLfHf6JWlc,3605
157
+ multipers/multiparameter_module_approximation/debug.h,sha256=yy7miaqw-Lj8u1yMB9HmtJL02abf3K6JlqS6LbkUVfI,2692
158
+ multipers/multiparameter_module_approximation/euler_curves.h,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
+ multipers/multiparameter_module_approximation/format_python-cpp.h,sha256=wi0fiN6c5qtX1WJBC5M_kunRcuU3mCN7H0sUiKzQoGg,10708
160
+ multipers/multiparameter_module_approximation/heap_column.h,sha256=iiVNmCeiARGWsSmxOyvYlakBoA3CYTUrH-ZjEyt_a8g,5882
161
+ multipers/multiparameter_module_approximation/images.h,sha256=wXMYU3Bz991RC2LZ0QlQ880tNyOKdiUHsmn0c4u56kg,2215
162
+ multipers/multiparameter_module_approximation/list_column.h,sha256=kYCK_Jw6T-BJrFhFoGt8NAr1rIBqhYSZVQ8jnUS5Y8w,4153
163
+ multipers/multiparameter_module_approximation/list_column_2.h,sha256=BztipH-96RJlK73op5yb6BqqoOwfO_aATjZrPzSR_lc,5989
164
+ multipers/multiparameter_module_approximation/ru_matrix.h,sha256=7YBAEZGhEMye7_st5sG6Ll9MsC0nKQpGbSsRmrwh6FQ,10970
165
+ multipers/multiparameter_module_approximation/set_column.h,sha256=pfDKCaNkYhKuTbaEag1-GbnfR4x5wMbFox9xPIxpZJQ,3024
166
+ multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h,sha256=FkettGH77x9Nog7556Eq3uWo2eDjDOJksGBGfxR5BQ8,1187
167
+ multipers/multiparameter_module_approximation/unordered_set_column.h,sha256=Pd0q_2e2BVuzlQNx8BD-XFS6OxZ66Km4kU4XF8r1s3A,4563
168
+ multipers/multiparameter_module_approximation/utilities.h,sha256=lvbZUaOP6MrMhj1cJZpIsKqgjk09SKaYpnmdlM89Q_k,15034
169
+ multipers/multiparameter_module_approximation/vector_column.h,sha256=P4HSGc-w4kdx9LCQu9Uw4u4HT7R1_vL4y7K1aSobky0,5696
170
+ multipers/multiparameter_module_approximation/vector_matrix.h,sha256=0-iIA-Xk_Bz2kBYXM3-SgBzyM0QQ7RqV1WgTbGe-qXM,10378
171
+ multipers/multiparameter_module_approximation/vineyards.h,sha256=6wN_k4CFO1BCVoT8Cc60Wi__v4C2bvFec7rpq-GPb4w,14694
172
+ multipers/multiparameter_module_approximation/vineyards_trajectories.h,sha256=ZZ4E0gmmuHNyUD_rKioISrlWhHNLW_dhlsCWGvzHW2o,25292
173
+ multipers/tensor/tensor.h,sha256=2uJcyDUEqimrjOFhZbz0XfJ2doC4uAZwV2PtXGljUZY,25244
174
+ multipers/tests/__init__.py,sha256=19BXYlQxgBzj7OpMP6v6JYNZZi2y9afvD1Wvodwcb1E,1656
175
+ multipers/torch/__init__.py,sha256=OLxIiZ389uCqehpUxBPUI_x1SYu531onc4tiTscAuIw,27
176
+ multipers/torch/diff_grids.py,sha256=8d0UhiWeMrb471nMKkwrRgGQO_u2kCtRjYYn5I-BFkQ,6745
177
+ multipers/torch/rips_density.py,sha256=X2H41UlDZ2b88ekZa-Gsuz0sXXt-Jge7y0DFw0vv4TY,11702
178
+ multipers-2.3.0.dist-info/LICENSE,sha256=UsQRnvlo_9wpQS9DNt52GEraERHwK2GIRwuqr2Yv5JI,1071
179
+ multipers-2.3.0.dist-info/METADATA,sha256=Te8v5zlQNh69GWCNHNodJzp_Kiaa_0U0D_wwB6KyQXM,10945
180
+ multipers-2.3.0.dist-info/WHEEL,sha256=yNnHoQL2GZYIUXm9YvoaBpFjGlUoK9qq9oqYeudrWlE,101
181
+ multipers-2.3.0.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
182
+ multipers-2.3.0.dist-info/RECORD,,
@@ -1,73 +0,0 @@
1
- import gudhi as gd
2
- import numpy as np
3
-
4
- import multipers as mp
5
-
6
-
7
-
8
- def test_h1_rips_density():
9
- num_pts = 100
10
- dim = 2
11
- pts = np.random.uniform(size=(num_pts, dim))
12
- weights = np.random.uniform(size=num_pts)
13
- st = gd.RipsComplex(points=pts).create_simplex_tree()
14
- st = mp.SimplexTreeMulti(st, num_parameters=2)
15
- st.fill_lowerstar(weights, parameter=1)
16
- st.collapse_edges(num=100)
17
- st.expansion(2)
18
- # F=st.get_filtration_grid()
19
- # st.grid_squeeze(F, coordinate_values=True)
20
- (sm,) = mp.signed_measure(st, degree=1, plot=True, mass_default=None)
21
- pts, weights = sm
22
- sm_indices, unmappable_points = st.pts_to_indices(pts, simplices_dimensions=[1, 0])
23
- assert len(unmappable_points) == 0, "Found unmappable points in Rips edges ?"
24
- filtration_values = np.array([f for _, f in st.get_simplices()])
25
- reconstructed_measure = np.asarray(
26
- [
27
- [filtration_values[i][parameter] for parameter, i in enumerate(indices)]
28
- for indices in sm_indices
29
- ]
30
- )
31
- assert np.array_equal(
32
- reconstructed_measure, pts
33
- ), "Reconstructed measure is not equal to original measure ?"
34
-
35
-
36
- def test_h0_rips_density():
37
- num_pts = 100
38
- dim = 2
39
- pts = np.random.uniform(size=(num_pts, dim))
40
- weights = np.random.uniform(size=num_pts)
41
- st = gd.RipsComplex(points=pts).create_simplex_tree()
42
- st = mp.SimplexTreeMulti(st, num_parameters=2)
43
- st.fill_lowerstar(weights, parameter=1)
44
- st.collapse_edges(full=True)
45
- # F=st.get_filtration_grid()
46
- # st.grid_squeeze(F, coordinate_values=True)
47
- (sm,) = mp.signed_measure(st, degree=0, plot=True, mass_default=None)
48
- pts, weights = sm
49
- _, unmappable_points = st.pts_to_indices(pts, simplices_dimensions=[1, 0])
50
- assert (
51
- pts[unmappable_points[:, 0]][:, 0] == 0
52
- ).all(), "Unmapped points of H0 have to be the nodes of the rips."
53
-
54
-
55
- # def test_h1_rips_density_rank():
56
- # num_pts = 100
57
- # dim=2
58
- # pts = np.random.uniform(size=(num_pts,dim))
59
- # weights = np.random.uniform(size=num_pts)
60
- # st = gd.RipsComplex(points=pts).create_simplex_tree()
61
- # st = mp.SimplexTreeMulti(st, num_parameters=2)
62
- # st.fill_lowerstar(weights, parameter=1)
63
- # st.collapse_edges(full=True)
64
- # st.expansion(2)
65
- # # F=st.get_filtration_grid()
66
- # # st.grid_squeeze(F, coordinate_values=True)
67
- # sm, = mp.signed_measure(st, degree=1, plot=True, mass_default=None, invariant="rank_invariant", resolution=20, grid_strategy="quantile")
68
- # pts, weights = sm
69
- # sm_indices, unmappable_points = signed_measure_indices(st,pts, simplices_dimensions = [1,0])
70
- # assert len(unmappable_points) == 0, 'Found unmappable points in Rips edges ?'
71
- # filtration_values = np.array([f for _,f in st.get_simplices()])
72
- # reconstructed_measure = np.asarray([[filtration_values[i][parameter%2] for parameter,i in enumerate(indices)] for indices in sm_indices])
73
- # assert np.array_equal(reconstructed_measure, pts), 'Reconstructed measure is not equal to original measure ?'
@@ -1,82 +0,0 @@
1
- import numpy as np
2
-
3
- import multipers as mp
4
- from multipers import signed_measure
5
-
6
-
7
-
8
-
9
- # def test_1(): # TODO: test integrate_measure instead
10
- # st = mp.SimplexTreeMulti(num_parameters=3)
11
- # st.insert([0], [1, 0, 0])
12
- # st.insert([1], [0, 1, 0])
13
- # st.insert([2], [0, 0, 1])
14
- # st.insert([0, 1, 2], [2, 2, 2])
15
- # st.make_filtration_non_decreasing()
16
- # st = st.grid_squeeze(grid_strategy="exact")
17
- # assert np.array_equal(
18
- # hilbert_surface(st, degrees=[0])[1],
19
- # np.array(
20
- # [
21
- # [
22
- # [[0, 1, 1], [1, 2, 2], [1, 2, 2]],
23
- # [[1, 2, 2], [2, 3, 3], [2, 3, 3]],
24
- # [[1, 2, 2], [2, 3, 3], [2, 3, 1]],
25
- # ]
26
- # ]
27
- # ),
28
- # )
29
- # assert np.array_equal(hilbert_surface(st, degrees=[0])[1][0], euler_surface(st)[1])
30
-
31
-
32
- # def test_2():
33
- # st = mp.SimplexTreeMulti(num_parameters=4)
34
- # st.insert([0], [1, 0, 0, 0])
35
- # st.insert([1], [0, 1, 0, 0])
36
- # st.insert([2], [0, 0, 1, 0])
37
- # st.insert([3], [0, 0, 0, 1])
38
- # st.insert([0, 1, 2, 3], [2, 2, 2, 2])
39
- # st.make_filtration_non_decreasing()
40
- # # list(st.get_simplices())
41
- # st.grid_squeeze(grid_strategy="exact")
42
- # assert np.array_equal(
43
- # hilbert_surface(st, degrees=[0])[1][0], (euler_surface(st)[1])
44
- # )
45
-
46
-
47
- def test_3():
48
- st = mp.SimplexTreeMulti(num_parameters=2)
49
- st.insert([0, 1, 2], [1] * st.num_parameters)
50
- st.remove_maximal_simplex([0, 1, 2])
51
- st = st.grid_squeeze(grid_strategy="exact")
52
- ((a, b),) = mp.signed_measure(st, degrees=[1], mass_default=None)
53
- assert np.array_equal(a, [[1, 1]]) and np.array_equal(b, [1])
54
- assert mp.signed_measure(st, degrees=[1], mass_default="inf")[0][1].sum() == 0
55
-
56
-
57
- def test_4():
58
- st = mp.SimplexTreeMulti(num_parameters=3)
59
- st.insert([0], [1, 0, 0])
60
- st.insert([1], [0, 1, 0])
61
- st.insert([2], [0, 0, 1])
62
- st.insert([0, 1, 2], [2, 2, 2])
63
- st.make_filtration_non_decreasing()
64
- # list(st.get_simplices())
65
- st.grid_squeeze(grid_strategy="exact")
66
- assert signed_measure(st, degrees=[0], mass_default="inf")[0][1].sum() == 0
67
-
68
-
69
- def test_5():
70
- num_param = 7
71
- st = mp.SimplexTreeMulti(num_parameters=num_param)
72
- for i in range(num_param):
73
- f = np.zeros(num_param)
74
- f[i] = 1
75
- st.insert([i], f)
76
- st.insert(np.arange(num_param), [2] * num_param)
77
- assert not st.make_filtration_non_decreasing()
78
- st.grid_squeeze()
79
- (a, b), (c, d) = signed_measure(st, degrees=[0, 1])
80
- assert np.all(a[-1] == 2)
81
- assert np.sum(b) == 1 and b[-1] == -(num_param - 1)
82
- assert c.shape == (0, num_param)
@@ -1,83 +0,0 @@
1
- import numpy as np
2
- import pytest
3
-
4
- import multipers as mp
5
- import multipers.ml.mma as mma
6
- from multipers.tests import random_st
7
-
8
-
9
-
10
- def test_1():
11
- st = mp.SimplexTreeMulti(num_parameters=2)
12
- st.insert([0], [0, 1])
13
- st.insert([1], [1, 0])
14
- st.insert([0, 1], [1, 1])
15
- mma_pymodule = st.persistence_approximation()
16
- assert np.array_equal(mma_pymodule[0].get_birth_list(), [[0.0, 1.0], [1.0, 0.0]])
17
- assert np.array_equal(mma_pymodule[0].get_death_list(), [[np.inf, np.inf]])
18
-
19
-
20
- def test_img():
21
- simplextree = mp.SimplexTreeMulti(num_parameters=4)
22
- simplextree.insert([0], [1, 2, 3, 4])
23
- mod = simplextree.persistence_approximation(
24
- box=[[0, 0, 0, 0], [5, 5, 5, 5]], max_error=1.0
25
- )
26
- img = mod.representation(resolution=6, kernel="linear")
27
- assert np.isclose(img[0, 2, 3, 4, 5], 0.5)
28
- assert np.isclose(img[0, 1, 1, 1, 1], 0)
29
- assert np.isclose(img[0, 3, 4, 5, 5], 1)
30
-
31
-
32
- @pytest.mark.parametrize("n_jobs", [1, 2])
33
- @pytest.mark.parametrize("prune_degrees_above", [0, 1, None])
34
- def test_pipeline1(prune_degrees_above, n_jobs):
35
- args = locals()
36
- st = random_st(npts=50, max_dim=1).collapse_edges(-2)
37
- st.expansion(2)
38
- (truc1,) = mma.FilteredComplex2MMA(**args).fit_transform([[st]])[0]
39
- (truc2,) = mma.FilteredComplex2MMA(**args).fit_transform([[mp.Slicer(st)]])[0]
40
- box = st.filtration_bounds()
41
- st_copy = st.copy()
42
- if prune_degrees_above is not None:
43
- st_copy.prune_above_dimension(prune_degrees_above)
44
- output = mp.module_approximation(st_copy, box=box).representation(
45
- bandwidth=0.1, kernel="linear"
46
- )
47
- assert np.sum(output) > 0, "Invalid mma rpz"
48
- assert np.array_equal(
49
- truc1.representation(bandwidth=0.1, kernel="linear"),
50
- truc2.representation(bandwidth=0.1, kernel="linear"),
51
- ), "Slicer == Simplextree not satisfied"
52
- assert np.array_equal(truc1.representation(bandwidth=0.1, kernel="linear"), output)
53
-
54
- st = [random_st(npts=50).collapse_edges(-2, ignore_warning=True) for _ in range(5)]
55
- some_fited_pipeline = mma.FilteredComplex2MMA(**args).fit([st])
56
- truc1 = some_fited_pipeline.transform([st])
57
- truc2 = mma.FilteredComplex2MMA(**args).fit_transform(
58
- [[mp.Slicer(truc) for truc in st]]
59
- )
60
- for a, b in zip(truc1, truc2):
61
- assert np.array_equal(
62
- a[0].representation(bandwidth=0.01, kernel="linear"),
63
- b[0].representation(bandwidth=0.01, kernel="linear"),
64
- ), "Slicer == Simplextree not satisfied"
65
-
66
-
67
- @pytest.mark.parametrize("n_jobs", [1, 2])
68
- @pytest.mark.parametrize("prune_degrees_above", [1, None])
69
- @pytest.mark.parametrize("expand_dim", [None, 2, 3])
70
- def test_pipeline2(prune_degrees_above, n_jobs, expand_dim):
71
- args = locals()
72
- st = random_st(max_dim=1)
73
- st.collapse_edges(-2)
74
- truc = mma.FilteredComplex2MMA(**args).fit_transform([[st]])[0]
75
- box = st.filtration_bounds()
76
- st_copy = st.copy()
77
- # if prune_degrees_above is not None:
78
- # st_copy.prune_above_dimension(prune_degrees_above)
79
- if expand_dim is not None:
80
- st_copy.expansion(expand_dim)
81
-
82
- output = mp.module_approximation(st_copy, box=box).representation(bandwidth=0.01)
83
- assert np.array_equal(truc[0].representation(bandwidth=-0.01), output)
@@ -1,49 +0,0 @@
1
- import numpy as np
2
-
3
- import multipers as mp
4
- import pytest
5
- import platform
6
- np.random.seed(0)
7
-
8
-
9
- @pytest.mark.skipif(
10
- platform.system() == "Windows",
11
- reason="Detected windows. Pykeops is not compatible with windows yet. Skipping this ftm.",
12
- )
13
- def test_throw_test():
14
- import multipers.ml.point_clouds as mmp
15
- pts = np.array([[1, 1], [2, 2]], dtype=np.float32)
16
- st = mmp.PointCloud2FilteredComplex(masses=[0.1]).fit_transform([pts])[0][0]
17
- assert isinstance(st, mp.simplex_tree_multi.SimplexTreeMulti_type)
18
- st = mmp.PointCloud2FilteredComplex(bandwidths=[-0.1], complex="alpha").fit_transform(
19
- [pts]
20
- )[0][0]
21
- assert isinstance(st, mp.simplex_tree_multi.SimplexTreeMulti_type)
22
-
23
- st = mmp.PointCloud2FilteredComplex(masses=[0.1], complex="alpha", output_type="slicer_novine").fit_transform(
24
- [pts]
25
- )[0][0]
26
- assert isinstance(st, mp.slicer.Slicer_type)
27
- assert st.is_vine is False
28
-
29
- st = mmp.PointCloud2FilteredComplex(masses=[0.1], complex="alpha", output_type="slicer").fit_transform(
30
- [pts]
31
- )[0][0]
32
- assert isinstance(st, mp.slicer.Slicer_type)
33
- assert st.is_vine
34
-
35
- st1, st2 = mmp.PointCloud2FilteredComplex(bandwidths=[0.1], masses=[0.1]).fit_transform(
36
- [pts]
37
- )[0]
38
- assert isinstance(st1, mp.simplex_tree_multi.SimplexTreeMulti_type)
39
- assert isinstance(st2, mp.simplex_tree_multi.SimplexTreeMulti_type)
40
- ## ensures it doesn't throw
41
- assert isinstance(
42
- mp.module_approximation(st),
43
- mp.multiparameter_module_approximation.PyModule_type,
44
- )
45
- assert mp.signed_measure(st, degree=None, invariant="euler")[0][0].ndim == 2
46
- assert mp.signed_measure(st, degree=0, invariant="hilbert")[0][0].ndim == 2
47
- assert mp.signed_measure(st, degree=0, invariant="rank")[0][0].ndim == 2
48
- assert mp.signed_measure(st, degree=0, invariant="rank")[0][0].shape[1] == 4
49
-