multipers 2.3.1__cp313-cp313-macosx_13_0_x86_64.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 (180) hide show
  1. multipers/.dylibs/libc++.1.0.dylib +0 -0
  2. multipers/.dylibs/libtbb.12.14.dylib +0 -0
  3. multipers/__init__.py +33 -0
  4. multipers/_signed_measure_meta.py +430 -0
  5. multipers/_slicer_meta.py +211 -0
  6. multipers/data/MOL2.py +458 -0
  7. multipers/data/UCR.py +18 -0
  8. multipers/data/__init__.py +1 -0
  9. multipers/data/graphs.py +466 -0
  10. multipers/data/immuno_regions.py +27 -0
  11. multipers/data/minimal_presentation_to_st_bf.py +0 -0
  12. multipers/data/pytorch2simplextree.py +91 -0
  13. multipers/data/shape3d.py +101 -0
  14. multipers/data/synthetic.py +113 -0
  15. multipers/distances.py +198 -0
  16. multipers/filtration_conversions.pxd +229 -0
  17. multipers/filtration_conversions.pxd.tp +84 -0
  18. multipers/filtrations/__init__.py +18 -0
  19. multipers/filtrations/density.py +563 -0
  20. multipers/filtrations/filtrations.py +289 -0
  21. multipers/filtrations.pxd +224 -0
  22. multipers/function_rips.cpython-313-darwin.so +0 -0
  23. multipers/function_rips.pyx +105 -0
  24. multipers/grids.cpython-313-darwin.so +0 -0
  25. multipers/grids.pyx +350 -0
  26. multipers/gudhi/Persistence_slices_interface.h +132 -0
  27. multipers/gudhi/Simplex_tree_interface.h +239 -0
  28. multipers/gudhi/Simplex_tree_multi_interface.h +516 -0
  29. multipers/gudhi/cubical_to_boundary.h +59 -0
  30. multipers/gudhi/gudhi/Bitmap_cubical_complex.h +450 -0
  31. multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +1070 -0
  32. multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +579 -0
  33. multipers/gudhi/gudhi/Debug_utils.h +45 -0
  34. multipers/gudhi/gudhi/Fields/Multi_field.h +484 -0
  35. multipers/gudhi/gudhi/Fields/Multi_field_operators.h +455 -0
  36. multipers/gudhi/gudhi/Fields/Multi_field_shared.h +450 -0
  37. multipers/gudhi/gudhi/Fields/Multi_field_small.h +531 -0
  38. multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +507 -0
  39. multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +531 -0
  40. multipers/gudhi/gudhi/Fields/Z2_field.h +355 -0
  41. multipers/gudhi/gudhi/Fields/Z2_field_operators.h +376 -0
  42. multipers/gudhi/gudhi/Fields/Zp_field.h +420 -0
  43. multipers/gudhi/gudhi/Fields/Zp_field_operators.h +400 -0
  44. multipers/gudhi/gudhi/Fields/Zp_field_shared.h +418 -0
  45. multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +337 -0
  46. multipers/gudhi/gudhi/Matrix.h +2107 -0
  47. multipers/gudhi/gudhi/Multi_critical_filtration.h +1038 -0
  48. multipers/gudhi/gudhi/Multi_persistence/Box.h +171 -0
  49. multipers/gudhi/gudhi/Multi_persistence/Line.h +282 -0
  50. multipers/gudhi/gudhi/Off_reader.h +173 -0
  51. multipers/gudhi/gudhi/One_critical_filtration.h +1433 -0
  52. multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +769 -0
  53. multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +686 -0
  54. multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +842 -0
  55. multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +1350 -0
  56. multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +1105 -0
  57. multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +859 -0
  58. multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +910 -0
  59. multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +139 -0
  60. multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +230 -0
  61. multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +211 -0
  62. multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +60 -0
  63. multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +60 -0
  64. multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +136 -0
  65. multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +190 -0
  66. multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +616 -0
  67. multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +150 -0
  68. multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +106 -0
  69. multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +219 -0
  70. multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +327 -0
  71. multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +1140 -0
  72. multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +934 -0
  73. multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +934 -0
  74. multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +980 -0
  75. multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +1092 -0
  76. multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +192 -0
  77. multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +921 -0
  78. multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +1093 -0
  79. multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +1012 -0
  80. multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +1244 -0
  81. multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +186 -0
  82. multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +164 -0
  83. multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +156 -0
  84. multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +376 -0
  85. multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +540 -0
  86. multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +118 -0
  87. multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +173 -0
  88. multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +128 -0
  89. multipers/gudhi/gudhi/Persistent_cohomology.h +745 -0
  90. multipers/gudhi/gudhi/Points_off_io.h +171 -0
  91. multipers/gudhi/gudhi/Simple_object_pool.h +69 -0
  92. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +463 -0
  93. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +83 -0
  94. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +106 -0
  95. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +277 -0
  96. multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +62 -0
  97. multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +27 -0
  98. multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +62 -0
  99. multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +157 -0
  100. multipers/gudhi/gudhi/Simplex_tree.h +2794 -0
  101. multipers/gudhi/gudhi/Simplex_tree_multi.h +152 -0
  102. multipers/gudhi/gudhi/distance_functions.h +62 -0
  103. multipers/gudhi/gudhi/graph_simplicial_complex.h +104 -0
  104. multipers/gudhi/gudhi/persistence_interval.h +253 -0
  105. multipers/gudhi/gudhi/persistence_matrix_options.h +170 -0
  106. multipers/gudhi/gudhi/reader_utils.h +367 -0
  107. multipers/gudhi/mma_interface_coh.h +256 -0
  108. multipers/gudhi/mma_interface_h0.h +223 -0
  109. multipers/gudhi/mma_interface_matrix.h +291 -0
  110. multipers/gudhi/naive_merge_tree.h +536 -0
  111. multipers/gudhi/scc_io.h +310 -0
  112. multipers/gudhi/truc.h +957 -0
  113. multipers/io.cpython-313-darwin.so +0 -0
  114. multipers/io.pyx +714 -0
  115. multipers/ml/__init__.py +0 -0
  116. multipers/ml/accuracies.py +90 -0
  117. multipers/ml/invariants_with_persistable.py +79 -0
  118. multipers/ml/kernels.py +176 -0
  119. multipers/ml/mma.py +713 -0
  120. multipers/ml/one.py +472 -0
  121. multipers/ml/point_clouds.py +352 -0
  122. multipers/ml/signed_measures.py +1589 -0
  123. multipers/ml/sliced_wasserstein.py +461 -0
  124. multipers/ml/tools.py +113 -0
  125. multipers/mma_structures.cpython-313-darwin.so +0 -0
  126. multipers/mma_structures.pxd +127 -0
  127. multipers/mma_structures.pyx +2742 -0
  128. multipers/mma_structures.pyx.tp +1083 -0
  129. multipers/multi_parameter_rank_invariant/diff_helpers.h +84 -0
  130. multipers/multi_parameter_rank_invariant/euler_characteristic.h +97 -0
  131. multipers/multi_parameter_rank_invariant/function_rips.h +322 -0
  132. multipers/multi_parameter_rank_invariant/hilbert_function.h +769 -0
  133. multipers/multi_parameter_rank_invariant/persistence_slices.h +148 -0
  134. multipers/multi_parameter_rank_invariant/rank_invariant.h +369 -0
  135. multipers/multiparameter_edge_collapse.py +41 -0
  136. multipers/multiparameter_module_approximation/approximation.h +2298 -0
  137. multipers/multiparameter_module_approximation/combinatory.h +129 -0
  138. multipers/multiparameter_module_approximation/debug.h +107 -0
  139. multipers/multiparameter_module_approximation/euler_curves.h +0 -0
  140. multipers/multiparameter_module_approximation/format_python-cpp.h +286 -0
  141. multipers/multiparameter_module_approximation/heap_column.h +238 -0
  142. multipers/multiparameter_module_approximation/images.h +79 -0
  143. multipers/multiparameter_module_approximation/list_column.h +174 -0
  144. multipers/multiparameter_module_approximation/list_column_2.h +232 -0
  145. multipers/multiparameter_module_approximation/ru_matrix.h +347 -0
  146. multipers/multiparameter_module_approximation/set_column.h +135 -0
  147. multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +36 -0
  148. multipers/multiparameter_module_approximation/unordered_set_column.h +166 -0
  149. multipers/multiparameter_module_approximation/utilities.h +403 -0
  150. multipers/multiparameter_module_approximation/vector_column.h +223 -0
  151. multipers/multiparameter_module_approximation/vector_matrix.h +331 -0
  152. multipers/multiparameter_module_approximation/vineyards.h +464 -0
  153. multipers/multiparameter_module_approximation/vineyards_trajectories.h +649 -0
  154. multipers/multiparameter_module_approximation.cpython-313-darwin.so +0 -0
  155. multipers/multiparameter_module_approximation.pyx +218 -0
  156. multipers/pickle.py +90 -0
  157. multipers/plots.py +342 -0
  158. multipers/point_measure.cpython-313-darwin.so +0 -0
  159. multipers/point_measure.pyx +322 -0
  160. multipers/simplex_tree_multi.cpython-313-darwin.so +0 -0
  161. multipers/simplex_tree_multi.pxd +133 -0
  162. multipers/simplex_tree_multi.pyx +10402 -0
  163. multipers/simplex_tree_multi.pyx.tp +1947 -0
  164. multipers/slicer.cpython-313-darwin.so +0 -0
  165. multipers/slicer.pxd +2552 -0
  166. multipers/slicer.pxd.tp +218 -0
  167. multipers/slicer.pyx +16530 -0
  168. multipers/slicer.pyx.tp +931 -0
  169. multipers/tensor/tensor.h +672 -0
  170. multipers/tensor.pxd +13 -0
  171. multipers/test.pyx +44 -0
  172. multipers/tests/__init__.py +57 -0
  173. multipers/torch/__init__.py +1 -0
  174. multipers/torch/diff_grids.py +217 -0
  175. multipers/torch/rips_density.py +310 -0
  176. multipers-2.3.1.dist-info/LICENSE +21 -0
  177. multipers-2.3.1.dist-info/METADATA +144 -0
  178. multipers-2.3.1.dist-info/RECORD +180 -0
  179. multipers-2.3.1.dist-info/WHEEL +6 -0
  180. multipers-2.3.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,218 @@
1
+ {{py:
2
+ """
3
+ Vine and non-vine slicers.
4
+ both type have the same interface, defined the slicer.pyx file
5
+ """
6
+
7
+ ## generation with another file as Tempita is slightly bugged for python <3.12
8
+ import pickle
9
+ with open("build/tmp/_slicer_names.pkl", "rb") as f:
10
+ slicers = pickle.load(f)
11
+
12
+ # TODO: FIXME. This is not possible as the import is hardcoded as f32 and f64.
13
+ # float_value_types = set([(D['C_VALUE_TYPE'],D['PY_VALUE_TYPE'],D['SHORT_VALUE_TYPE']) for D in slicers if D['IS_FLOAT']])
14
+
15
+ float_value_types = set((("float", "np.float32", "f32"), ("double", "np.float64", "f64")) )
16
+
17
+
18
+ }}
19
+
20
+ cimport numpy as cnp
21
+
22
+ # SequentialDataset and its two concrete subclasses are (optionally randomized)
23
+ # iterators over the rows of a matrix X and corresponding target values y.
24
+
25
+ from libcpp.utility cimport pair
26
+ from libcpp cimport bool, int, float
27
+ from libcpp.vector cimport vector
28
+
29
+
30
+ from libc.stdint cimport intptr_t, uint16_t, uint32_t, int32_t, uint64_t, int64_t
31
+ from cython cimport uint
32
+
33
+ import numpy as np
34
+ python_value_type=np.float32
35
+ from libcpp.string cimport string
36
+
37
+ cdef extern from "Simplex_tree_multi_interface.h" namespace "Gudhi::multiparameter::python_interface":
38
+ cdef cppclass Simplex_tree_multi_interface[F=*, value_type=*]:
39
+ pass
40
+
41
+ from multipers.filtrations cimport *
42
+ ctypedef vector[uint] cycle_type ## its the cycle type of matrix
43
+
44
+
45
+ {{for D in slicers}}
46
+
47
+ #------------------------------------------------------------------------------
48
+ cdef extern from "Persistence_slices_interface.h":
49
+ cdef cppclass {{D['C_TEMPLATE_TYPE']}} "{{D['TRUC_TYPE']}}":
50
+ ctypedef {{D['C_VALUE_TYPE']}} value_type
51
+
52
+ {{D['C_TEMPLATE_TYPE']}}()
53
+
54
+ {{if D['IS_SIMPLICIAL']}}
55
+ {{D['C_TEMPLATE_TYPE']}}(Simplex_tree_multi_interface[{{D['FILTRATION_TYPE']}}, {{D['C_VALUE_TYPE']}}]*)
56
+ {{else}}
57
+ {{D['C_TEMPLATE_TYPE']}}(const vector[vector[unsigned int]]&, const vector[int]&, const vector[{{D['FILTRATION_TYPE']}}]&)
58
+ {{endif}}
59
+
60
+ {{D['C_TEMPLATE_TYPE']}}& operator=(const {{D['C_TEMPLATE_TYPE']}}&)
61
+
62
+ {{D['C_TEMPLATE_TYPE']}} colexical_rearange() except + nogil
63
+
64
+ vector[vector[pair[{{D['C_VALUE_TYPE']}}, {{D['C_VALUE_TYPE']}}]]] get_barcode() nogil
65
+ void push_to(const Line[{{D['C_VALUE_TYPE']}}]&) nogil
66
+ void set_one_filtration(const vector[{{D['C_VALUE_TYPE']}}]&) nogil
67
+ int prune_above_dimension(int) except + nogil
68
+
69
+ vector[{{D['C_VALUE_TYPE']}}] get_one_filtration()
70
+ # void compute_persistence(vector[bool]) except+ nogil
71
+ void compute_persistence(bool) except+ nogil # ignore_inf
72
+ void compute_persistence() except+ nogil # ignore_inf
73
+ uint32_t num_generators() nogil
74
+ uint32_t num_parameters() nogil
75
+ string to_str() nogil
76
+ pair[One_critical_filtration[{{D['C_VALUE_TYPE']}}], One_critical_filtration[{{D['C_VALUE_TYPE']}}]] get_bounding_box() except + nogil
77
+ vector[One_critical_filtration[{{D['C_VALUE_TYPE']}}]] get_filtration_values() nogil
78
+ vector[int] get_dimensions() nogil
79
+ vector[vector[uint]] get_boundaries() nogil
80
+ void coarsen_on_grid_inplace(vector[vector[{{D['C_VALUE_TYPE']}}]], bool) nogil
81
+ vector[{{D['FILTRATION_TYPE']}}]& get_filtrations() nogil
82
+ {{if D['COLUMN_TYPE'] is not None}}
83
+ {{D['C_TEMPLATE_TYPE'][:-3]+"i32"}} coarsen_on_grid(vector[vector[{{D['C_VALUE_TYPE']}}]]) nogil
84
+ {{endif}}
85
+ {{if D['IS_VINE']}}
86
+ void vineyard_update() nogil
87
+ vector[vector[vector[vector[unsigned int]]]] get_representative_cycles(bool, bool) nogil
88
+ vector[uint32_t] get_current_order() nogil
89
+ {{endif}}
90
+
91
+ {{if D['IS_KCRITICAL']}}
92
+ void add_generator(const One_critical_filtration[{{D['C_VALUE_TYPE']}}] &) nogil
93
+ {{endif}}
94
+
95
+ void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
96
+ {{if not D['IS_KCRITICAL']}}
97
+ void build_from_scc_file(const string&, bool, bool, int) except + nogil
98
+ {{endif}}
99
+
100
+
101
+ vector[vector[vector[pair[{{D['C_VALUE_TYPE']}}, {{D['C_VALUE_TYPE']}}]]]] persistence_on_lines(vector[vector[{{D['C_VALUE_TYPE']}}]], bool) nogil
102
+ vector[vector[vector[pair[{{D['C_VALUE_TYPE']}}, {{D['C_VALUE_TYPE']}}]]]] persistence_on_lines(vector[pair[vector[{{D['C_VALUE_TYPE']}}],vector[{{D['C_VALUE_TYPE']}}]]],bool) nogil
103
+ {{endfor}}
104
+
105
+
106
+
107
+ #### MMA Stuff
108
+
109
+ from multipers.mma_structures cimport Module
110
+ cdef extern from "multiparameter_module_approximation/approximation.h" namespace "Gudhi::multiparameter::mma":
111
+ {{for D in slicers}}
112
+ {{if D['IS_VINE'] and D['IS_FLOAT']}}
113
+ Module[{{D['C_VALUE_TYPE']}}] multiparameter_module_approximation({{D['C_TEMPLATE_TYPE']}}&, One_critical_filtration[{{D['C_VALUE_TYPE']}}]&, {{D['C_VALUE_TYPE']}}, Box[{{D['C_VALUE_TYPE']}}]&, bool, bool, bool) except + nogil
114
+ {{endif}}
115
+ {{endfor}}
116
+ pass
117
+
118
+
119
+
120
+
121
+ import multipers.slicer as mps
122
+ from cython.operator cimport dereference
123
+ {{for C_VALUE_TYPE,PYTHON_VALUE_TYPE,SHORT_VALUE_TYPE in float_value_types}}
124
+ cdef inline Module[{{C_VALUE_TYPE}}] _multiparameter_module_approximation_{{SHORT_VALUE_TYPE}}(object slicer, One_critical_filtration[{{C_VALUE_TYPE}}] direction, {{C_VALUE_TYPE}} max_error, Box[{{C_VALUE_TYPE}}] box, bool threshold, bool complete, bool verbose):
125
+ import multipers.slicer as mps
126
+ cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
127
+ cdef Module[{{C_VALUE_TYPE}}] mod
128
+ if False:
129
+ pass
130
+ {{for D in slicers}}
131
+ {{if D['IS_VINE'] and D['SHORT_VALUE_TYPE'] == SHORT_VALUE_TYPE}}
132
+ elif isinstance(slicer, mps.{{D['PYTHON_TYPE']}}):
133
+ with nogil:
134
+ mod = multiparameter_module_approximation(dereference(<{{D['C_TEMPLATE_TYPE']}}*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
135
+ return mod
136
+ {{endif}}
137
+ {{endfor}}
138
+ else:
139
+ raise ValueError(f"Unsupported slicer type {type(slicer)}")
140
+ {{endfor}}
141
+
142
+ ###### RANK INVARIANT
143
+ from libc.stdint cimport intptr_t, uint16_t, uint32_t, int32_t, int16_t, int8_t
144
+ ctypedef int32_t tensor_dtype
145
+ ctypedef int32_t indices_type
146
+ python_indices_type=np.int32
147
+ python_tensor_dtype = np.int32
148
+
149
+
150
+
151
+ ctypedef pair[vector[vector[indices_type]], vector[tensor_dtype]] signed_measure_type
152
+
153
+
154
+
155
+ cdef extern from "multi_parameter_rank_invariant/rank_invariant.h" namespace "Gudhi::multiparameter::rank_invariant":
156
+ ## from slicers
157
+ {{for D in slicers}}
158
+ void compute_rank_invariant_python({{D['C_TEMPLATE_TYPE']}}&, tensor_dtype* , const vector[indices_type], const vector[indices_type], indices_type, bool ignore_inf) except + nogil
159
+ signed_measure_type compute_rank_signed_measure({{D['C_TEMPLATE_TYPE']}}&, tensor_dtype* , const vector[indices_type], const vector[indices_type], indices_type, bool verbose, bool ignore_inf) except + nogil
160
+ {{endfor}}
161
+
162
+
163
+
164
+
165
+
166
+ cdef inline void _compute_rank_invariant(object slicer, tensor_dtype* container_ptr, vector[indices_type] c_grid_shape, vector[indices_type] degrees, int n_jobs, bool ignore_inf):
167
+ import multipers.slicer as mps
168
+ cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
169
+ {{for D in slicers}}
170
+ if isinstance(slicer, mps.{{D['PYTHON_TYPE']}}):
171
+ with nogil:
172
+ compute_rank_invariant_python(dereference(<{{D['C_TEMPLATE_TYPE']}}*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, n_jobs,ignore_inf)
173
+ return
174
+ {{endfor}}
175
+ raise ValueError(f"Unsupported slicer type {type(slicer)}")
176
+
177
+
178
+
179
+ cdef inline _compute_rank_sm(object slicer, tensor_dtype* container_ptr, vector[indices_type] c_grid_shape, vector[indices_type] degrees, int n_jobs, bool verbose, bool ignore_inf):
180
+ import multipers.slicer as mps
181
+ cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
182
+ cdef signed_measure_type sm
183
+ cdef cnp.ndarray[indices_type, ndim=2] pts
184
+ cdef cnp.ndarray[tensor_dtype, ndim=1] weights
185
+ {{for D in slicers}}
186
+ if isinstance(slicer, mps.{{D['PYTHON_TYPE']}}):
187
+ with nogil:
188
+ sm = compute_rank_signed_measure(dereference(<{{D['C_TEMPLATE_TYPE']}}*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, n_jobs, verbose, ignore_inf)
189
+ pts = np.asarray(sm.first,dtype=python_indices_type)
190
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
191
+ return (pts,weights)
192
+ {{endfor}}
193
+ raise ValueError(f"Unsupported slicer type {type(slicer)}")
194
+
195
+
196
+
197
+ #### Hilbert Function
198
+
199
+ cdef extern from "multi_parameter_rank_invariant/hilbert_function.h" namespace "Gudhi::multiparameter::hilbert_function":
200
+ ## from slicers
201
+ {{for D in slicers}}
202
+ signed_measure_type get_hilbert_signed_measure({{D['C_TEMPLATE_TYPE']}}&, tensor_dtype* , const vector[indices_type], const vector[indices_type], bool zero_pad,indices_type n_jobs, bool verbose, bool ignore_inf) except + nogil
203
+ {{endfor}}
204
+ cdef inline _compute_hilbert_sm(object slicer, tensor_dtype* container_ptr, vector[indices_type] c_grid_shape, vector[indices_type] degrees, int n_jobs, bool verbose,bool zero_pad, bool ignore_inf):
205
+ import multipers.slicer as mps
206
+ cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
207
+ cdef signed_measure_type sm
208
+ cdef cnp.ndarray[indices_type, ndim=2] pts
209
+ cdef cnp.ndarray[tensor_dtype, ndim=1] weights
210
+ {{for D in slicers}}
211
+ if isinstance(slicer, mps.{{D['PYTHON_TYPE']}}):
212
+ with nogil:
213
+ sm = get_hilbert_signed_measure(dereference(<{{D['C_TEMPLATE_TYPE']}}*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
214
+ pts = np.asarray(sm.first,dtype=python_indices_type)
215
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
216
+ return (pts,weights)
217
+ {{endfor}}
218
+ raise ValueError(f"Unsupported slicer type {type(slicer)}")