multipers 2.3.1__cp313-cp313-win_amd64.whl → 2.3.2b1__cp313-cp313-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 (49) hide show
  1. multipers/_signed_measure_meta.py +71 -65
  2. multipers/array_api/__init__.py +39 -0
  3. multipers/array_api/numpy.py +34 -0
  4. multipers/array_api/torch.py +35 -0
  5. multipers/distances.py +6 -2
  6. multipers/filtrations/density.py +23 -12
  7. multipers/filtrations/filtrations.py +74 -15
  8. multipers/function_rips.cp313-win_amd64.pyd +0 -0
  9. multipers/grids.cp313-win_amd64.pyd +0 -0
  10. multipers/grids.pyx +144 -61
  11. multipers/gudhi/Simplex_tree_multi_interface.h +35 -0
  12. multipers/gudhi/gudhi/Multi_persistence/Box.h +3 -0
  13. multipers/gudhi/gudhi/One_critical_filtration.h +17 -9
  14. multipers/gudhi/mma_interface_matrix.h +5 -3
  15. multipers/gudhi/truc.h +488 -42
  16. multipers/io.cp313-win_amd64.pyd +0 -0
  17. multipers/io.pyx +16 -86
  18. multipers/ml/mma.py +3 -3
  19. multipers/ml/signed_measures.py +60 -62
  20. multipers/mma_structures.cp313-win_amd64.pyd +0 -0
  21. multipers/mma_structures.pxd +2 -1
  22. multipers/mma_structures.pyx +56 -12
  23. multipers/mma_structures.pyx.tp +14 -3
  24. multipers/multiparameter_module_approximation/approximation.h +45 -13
  25. multipers/multiparameter_module_approximation.cp313-win_amd64.pyd +0 -0
  26. multipers/multiparameter_module_approximation.pyx +22 -6
  27. multipers/plots.py +1 -0
  28. multipers/point_measure.cp313-win_amd64.pyd +0 -0
  29. multipers/point_measure.pyx +6 -2
  30. multipers/simplex_tree_multi.cp313-win_amd64.pyd +0 -0
  31. multipers/simplex_tree_multi.pxd +1 -0
  32. multipers/simplex_tree_multi.pyx +487 -109
  33. multipers/simplex_tree_multi.pyx.tp +67 -18
  34. multipers/slicer.cp313-win_amd64.pyd +0 -0
  35. multipers/slicer.pxd +719 -237
  36. multipers/slicer.pxd.tp +22 -6
  37. multipers/slicer.pyx +5311 -1364
  38. multipers/slicer.pyx.tp +199 -46
  39. multipers/tbb12.dll +0 -0
  40. multipers/tbbbind_2_5.dll +0 -0
  41. multipers/tbbmalloc.dll +0 -0
  42. multipers/tbbmalloc_proxy.dll +0 -0
  43. multipers/tests/__init__.py +9 -4
  44. multipers/torch/diff_grids.py +30 -7
  45. {multipers-2.3.1.dist-info → multipers-2.3.2b1.dist-info}/METADATA +4 -25
  46. {multipers-2.3.1.dist-info → multipers-2.3.2b1.dist-info}/RECORD +49 -46
  47. {multipers-2.3.1.dist-info → multipers-2.3.2b1.dist-info}/WHEEL +1 -1
  48. {multipers-2.3.1.dist-info → multipers-2.3.2b1.dist-info/licenses}/LICENSE +0 -0
  49. {multipers-2.3.1.dist-info → multipers-2.3.2b1.dist-info}/top_level.txt +0 -0
multipers/slicer.pxd CHANGED
@@ -35,9 +35,13 @@ cdef extern from "Persistence_slices_interface.h":
35
35
 
36
36
  C_KSlicer_Matrix0_vine_i32& operator=(const C_KSlicer_Matrix0_vine_i32&)
37
37
 
38
- C_KSlicer_Matrix0_vine_i32 colexical_rearange() except + nogil
38
+ pair[C_KSlicer_Matrix0_vine_i32, vector[unsigned int]] colexical_rearange() except + nogil
39
+ C_KSlicer_Matrix0_vine_i32 permute(const vector[unsigned int]&) except + nogil
39
40
 
40
41
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
42
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
43
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
44
+
41
45
  void push_to(const Line[int32_t]&) nogil
42
46
  void set_one_filtration(const vector[int32_t]&) nogil
43
47
  int prune_above_dimension(int) except + nogil
@@ -52,6 +56,7 @@ cdef extern from "Persistence_slices_interface.h":
52
56
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
53
57
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
54
58
  vector[int] get_dimensions() nogil
59
+ int get_dimension(int i) nogil
55
60
  vector[vector[uint]] get_boundaries() nogil
56
61
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
57
62
  vector[Multi_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -64,12 +69,15 @@ cdef extern from "Persistence_slices_interface.h":
64
69
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
65
70
 
66
71
 
67
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
68
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
72
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
73
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
74
+
75
+
76
+ C_KSlicer_Matrix0_vine_i32 projective_cover_kernel(int dim) except + nogil
69
77
 
70
78
  #------------------------------------------------------------------------------
71
79
  cdef extern from "Persistence_slices_interface.h":
72
- cdef cppclass C_KSlicer_Matrix1_vine_i32 "TrucPythonInterface<BackendsEnum::Matrix,true,true,int32_t,Available_columns::SMALL_VECTOR>":
80
+ cdef cppclass C_KSlicer_Matrix1_vine_i32 "TrucPythonInterface<BackendsEnum::Matrix,true,true,int32_t,Available_columns::NAIVE_VECTOR>":
73
81
  ctypedef int32_t value_type
74
82
 
75
83
  C_KSlicer_Matrix1_vine_i32()
@@ -78,9 +86,13 @@ cdef extern from "Persistence_slices_interface.h":
78
86
 
79
87
  C_KSlicer_Matrix1_vine_i32& operator=(const C_KSlicer_Matrix1_vine_i32&)
80
88
 
81
- C_KSlicer_Matrix1_vine_i32 colexical_rearange() except + nogil
89
+ pair[C_KSlicer_Matrix1_vine_i32, vector[unsigned int]] colexical_rearange() except + nogil
90
+ C_KSlicer_Matrix1_vine_i32 permute(const vector[unsigned int]&) except + nogil
82
91
 
83
92
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
93
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
94
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
95
+
84
96
  void push_to(const Line[int32_t]&) nogil
85
97
  void set_one_filtration(const vector[int32_t]&) nogil
86
98
  int prune_above_dimension(int) except + nogil
@@ -95,6 +107,7 @@ cdef extern from "Persistence_slices_interface.h":
95
107
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
96
108
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
97
109
  vector[int] get_dimensions() nogil
110
+ int get_dimension(int i) nogil
98
111
  vector[vector[uint]] get_boundaries() nogil
99
112
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
100
113
  vector[Multi_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -107,8 +120,11 @@ cdef extern from "Persistence_slices_interface.h":
107
120
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
108
121
 
109
122
 
110
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
111
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
123
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
124
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
125
+
126
+
127
+ C_KSlicer_Matrix1_vine_i32 projective_cover_kernel(int dim) except + nogil
112
128
 
113
129
  #------------------------------------------------------------------------------
114
130
  cdef extern from "Persistence_slices_interface.h":
@@ -121,9 +137,13 @@ cdef extern from "Persistence_slices_interface.h":
121
137
 
122
138
  C_KSlicer_Matrix0_vine_i64& operator=(const C_KSlicer_Matrix0_vine_i64&)
123
139
 
124
- C_KSlicer_Matrix0_vine_i64 colexical_rearange() except + nogil
140
+ pair[C_KSlicer_Matrix0_vine_i64, vector[unsigned int]] colexical_rearange() except + nogil
141
+ C_KSlicer_Matrix0_vine_i64 permute(const vector[unsigned int]&) except + nogil
125
142
 
126
143
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
144
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
145
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
146
+
127
147
  void push_to(const Line[int64_t]&) nogil
128
148
  void set_one_filtration(const vector[int64_t]&) nogil
129
149
  int prune_above_dimension(int) except + nogil
@@ -138,6 +158,7 @@ cdef extern from "Persistence_slices_interface.h":
138
158
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
139
159
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
140
160
  vector[int] get_dimensions() nogil
161
+ int get_dimension(int i) nogil
141
162
  vector[vector[uint]] get_boundaries() nogil
142
163
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
143
164
  vector[Multi_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -150,12 +171,15 @@ cdef extern from "Persistence_slices_interface.h":
150
171
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
151
172
 
152
173
 
153
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
154
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
174
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
175
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
176
+
177
+
178
+ C_KSlicer_Matrix0_vine_i64 projective_cover_kernel(int dim) except + nogil
155
179
 
156
180
  #------------------------------------------------------------------------------
157
181
  cdef extern from "Persistence_slices_interface.h":
158
- cdef cppclass C_KSlicer_Matrix1_vine_i64 "TrucPythonInterface<BackendsEnum::Matrix,true,true,int64_t,Available_columns::SMALL_VECTOR>":
182
+ cdef cppclass C_KSlicer_Matrix1_vine_i64 "TrucPythonInterface<BackendsEnum::Matrix,true,true,int64_t,Available_columns::NAIVE_VECTOR>":
159
183
  ctypedef int64_t value_type
160
184
 
161
185
  C_KSlicer_Matrix1_vine_i64()
@@ -164,9 +188,13 @@ cdef extern from "Persistence_slices_interface.h":
164
188
 
165
189
  C_KSlicer_Matrix1_vine_i64& operator=(const C_KSlicer_Matrix1_vine_i64&)
166
190
 
167
- C_KSlicer_Matrix1_vine_i64 colexical_rearange() except + nogil
191
+ pair[C_KSlicer_Matrix1_vine_i64, vector[unsigned int]] colexical_rearange() except + nogil
192
+ C_KSlicer_Matrix1_vine_i64 permute(const vector[unsigned int]&) except + nogil
168
193
 
169
194
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
195
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
196
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
197
+
170
198
  void push_to(const Line[int64_t]&) nogil
171
199
  void set_one_filtration(const vector[int64_t]&) nogil
172
200
  int prune_above_dimension(int) except + nogil
@@ -181,6 +209,7 @@ cdef extern from "Persistence_slices_interface.h":
181
209
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
182
210
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
183
211
  vector[int] get_dimensions() nogil
212
+ int get_dimension(int i) nogil
184
213
  vector[vector[uint]] get_boundaries() nogil
185
214
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
186
215
  vector[Multi_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -193,8 +222,11 @@ cdef extern from "Persistence_slices_interface.h":
193
222
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
194
223
 
195
224
 
196
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
197
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
225
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
226
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
227
+
228
+
229
+ C_KSlicer_Matrix1_vine_i64 projective_cover_kernel(int dim) except + nogil
198
230
 
199
231
  #------------------------------------------------------------------------------
200
232
  cdef extern from "Persistence_slices_interface.h":
@@ -207,9 +239,13 @@ cdef extern from "Persistence_slices_interface.h":
207
239
 
208
240
  C_KSlicer_Matrix0_vine_f32& operator=(const C_KSlicer_Matrix0_vine_f32&)
209
241
 
210
- C_KSlicer_Matrix0_vine_f32 colexical_rearange() except + nogil
242
+ pair[C_KSlicer_Matrix0_vine_f32, vector[unsigned int]] colexical_rearange() except + nogil
243
+ C_KSlicer_Matrix0_vine_f32 permute(const vector[unsigned int]&) except + nogil
211
244
 
212
245
  vector[vector[pair[float, float]]] get_barcode() nogil
246
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
247
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
248
+
213
249
  void push_to(const Line[float]&) nogil
214
250
  void set_one_filtration(const vector[float]&) nogil
215
251
  int prune_above_dimension(int) except + nogil
@@ -224,6 +260,7 @@ cdef extern from "Persistence_slices_interface.h":
224
260
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
225
261
  vector[One_critical_filtration[float]] get_filtration_values() nogil
226
262
  vector[int] get_dimensions() nogil
263
+ int get_dimension(int i) nogil
227
264
  vector[vector[uint]] get_boundaries() nogil
228
265
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
229
266
  vector[Multi_critical_filtration[float]]& get_filtrations() nogil
@@ -236,12 +273,15 @@ cdef extern from "Persistence_slices_interface.h":
236
273
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
237
274
 
238
275
 
239
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
240
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
276
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
277
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
278
+
279
+
280
+ C_KSlicer_Matrix0_vine_f32 projective_cover_kernel(int dim) except + nogil
241
281
 
242
282
  #------------------------------------------------------------------------------
243
283
  cdef extern from "Persistence_slices_interface.h":
244
- cdef cppclass C_KSlicer_Matrix1_vine_f32 "TrucPythonInterface<BackendsEnum::Matrix,true,true,float,Available_columns::SMALL_VECTOR>":
284
+ cdef cppclass C_KSlicer_Matrix1_vine_f32 "TrucPythonInterface<BackendsEnum::Matrix,true,true,float,Available_columns::NAIVE_VECTOR>":
245
285
  ctypedef float value_type
246
286
 
247
287
  C_KSlicer_Matrix1_vine_f32()
@@ -250,9 +290,13 @@ cdef extern from "Persistence_slices_interface.h":
250
290
 
251
291
  C_KSlicer_Matrix1_vine_f32& operator=(const C_KSlicer_Matrix1_vine_f32&)
252
292
 
253
- C_KSlicer_Matrix1_vine_f32 colexical_rearange() except + nogil
293
+ pair[C_KSlicer_Matrix1_vine_f32, vector[unsigned int]] colexical_rearange() except + nogil
294
+ C_KSlicer_Matrix1_vine_f32 permute(const vector[unsigned int]&) except + nogil
254
295
 
255
296
  vector[vector[pair[float, float]]] get_barcode() nogil
297
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
298
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
299
+
256
300
  void push_to(const Line[float]&) nogil
257
301
  void set_one_filtration(const vector[float]&) nogil
258
302
  int prune_above_dimension(int) except + nogil
@@ -267,6 +311,7 @@ cdef extern from "Persistence_slices_interface.h":
267
311
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
268
312
  vector[One_critical_filtration[float]] get_filtration_values() nogil
269
313
  vector[int] get_dimensions() nogil
314
+ int get_dimension(int i) nogil
270
315
  vector[vector[uint]] get_boundaries() nogil
271
316
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
272
317
  vector[Multi_critical_filtration[float]]& get_filtrations() nogil
@@ -279,8 +324,11 @@ cdef extern from "Persistence_slices_interface.h":
279
324
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
280
325
 
281
326
 
282
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
283
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
327
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
328
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
329
+
330
+
331
+ C_KSlicer_Matrix1_vine_f32 projective_cover_kernel(int dim) except + nogil
284
332
 
285
333
  #------------------------------------------------------------------------------
286
334
  cdef extern from "Persistence_slices_interface.h":
@@ -293,9 +341,13 @@ cdef extern from "Persistence_slices_interface.h":
293
341
 
294
342
  C_KSlicer_Matrix0_vine_f64& operator=(const C_KSlicer_Matrix0_vine_f64&)
295
343
 
296
- C_KSlicer_Matrix0_vine_f64 colexical_rearange() except + nogil
344
+ pair[C_KSlicer_Matrix0_vine_f64, vector[unsigned int]] colexical_rearange() except + nogil
345
+ C_KSlicer_Matrix0_vine_f64 permute(const vector[unsigned int]&) except + nogil
297
346
 
298
347
  vector[vector[pair[double, double]]] get_barcode() nogil
348
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
349
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
350
+
299
351
  void push_to(const Line[double]&) nogil
300
352
  void set_one_filtration(const vector[double]&) nogil
301
353
  int prune_above_dimension(int) except + nogil
@@ -310,6 +362,7 @@ cdef extern from "Persistence_slices_interface.h":
310
362
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
311
363
  vector[One_critical_filtration[double]] get_filtration_values() nogil
312
364
  vector[int] get_dimensions() nogil
365
+ int get_dimension(int i) nogil
313
366
  vector[vector[uint]] get_boundaries() nogil
314
367
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
315
368
  vector[Multi_critical_filtration[double]]& get_filtrations() nogil
@@ -322,12 +375,15 @@ cdef extern from "Persistence_slices_interface.h":
322
375
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
323
376
 
324
377
 
325
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
326
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
378
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
379
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
380
+
381
+
382
+ C_KSlicer_Matrix0_vine_f64 projective_cover_kernel(int dim) except + nogil
327
383
 
328
384
  #------------------------------------------------------------------------------
329
385
  cdef extern from "Persistence_slices_interface.h":
330
- cdef cppclass C_KSlicer_Matrix1_vine_f64 "TrucPythonInterface<BackendsEnum::Matrix,true,true,double,Available_columns::SMALL_VECTOR>":
386
+ cdef cppclass C_KSlicer_Matrix1_vine_f64 "TrucPythonInterface<BackendsEnum::Matrix,true,true,double,Available_columns::NAIVE_VECTOR>":
331
387
  ctypedef double value_type
332
388
 
333
389
  C_KSlicer_Matrix1_vine_f64()
@@ -336,9 +392,13 @@ cdef extern from "Persistence_slices_interface.h":
336
392
 
337
393
  C_KSlicer_Matrix1_vine_f64& operator=(const C_KSlicer_Matrix1_vine_f64&)
338
394
 
339
- C_KSlicer_Matrix1_vine_f64 colexical_rearange() except + nogil
395
+ pair[C_KSlicer_Matrix1_vine_f64, vector[unsigned int]] colexical_rearange() except + nogil
396
+ C_KSlicer_Matrix1_vine_f64 permute(const vector[unsigned int]&) except + nogil
340
397
 
341
398
  vector[vector[pair[double, double]]] get_barcode() nogil
399
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
400
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
401
+
342
402
  void push_to(const Line[double]&) nogil
343
403
  void set_one_filtration(const vector[double]&) nogil
344
404
  int prune_above_dimension(int) except + nogil
@@ -353,6 +413,7 @@ cdef extern from "Persistence_slices_interface.h":
353
413
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
354
414
  vector[One_critical_filtration[double]] get_filtration_values() nogil
355
415
  vector[int] get_dimensions() nogil
416
+ int get_dimension(int i) nogil
356
417
  vector[vector[uint]] get_boundaries() nogil
357
418
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
358
419
  vector[Multi_critical_filtration[double]]& get_filtrations() nogil
@@ -365,8 +426,11 @@ cdef extern from "Persistence_slices_interface.h":
365
426
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
366
427
 
367
428
 
368
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
369
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
429
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
430
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
431
+
432
+
433
+ C_KSlicer_Matrix1_vine_f64 projective_cover_kernel(int dim) except + nogil
370
434
 
371
435
  #------------------------------------------------------------------------------
372
436
  cdef extern from "Persistence_slices_interface.h":
@@ -379,9 +443,13 @@ cdef extern from "Persistence_slices_interface.h":
379
443
 
380
444
  C_Slicer_Matrix0_vine_i32& operator=(const C_Slicer_Matrix0_vine_i32&)
381
445
 
382
- C_Slicer_Matrix0_vine_i32 colexical_rearange() except + nogil
446
+ pair[C_Slicer_Matrix0_vine_i32, vector[unsigned int]] colexical_rearange() except + nogil
447
+ C_Slicer_Matrix0_vine_i32 permute(const vector[unsigned int]&) except + nogil
383
448
 
384
449
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
450
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
451
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
452
+
385
453
  void push_to(const Line[int32_t]&) nogil
386
454
  void set_one_filtration(const vector[int32_t]&) nogil
387
455
  int prune_above_dimension(int) except + nogil
@@ -396,6 +464,7 @@ cdef extern from "Persistence_slices_interface.h":
396
464
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
397
465
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
398
466
  vector[int] get_dimensions() nogil
467
+ int get_dimension(int i) nogil
399
468
  vector[vector[uint]] get_boundaries() nogil
400
469
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
401
470
  vector[One_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -408,12 +477,15 @@ cdef extern from "Persistence_slices_interface.h":
408
477
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
409
478
 
410
479
 
411
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
412
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
480
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
481
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
482
+
483
+
484
+ C_Slicer_Matrix0_vine_i32 projective_cover_kernel(int dim) except + nogil
413
485
 
414
486
  #------------------------------------------------------------------------------
415
487
  cdef extern from "Persistence_slices_interface.h":
416
- cdef cppclass C_Slicer_Matrix1_vine_i32 "TrucPythonInterface<BackendsEnum::Matrix,true,false,int32_t,Available_columns::SMALL_VECTOR>":
488
+ cdef cppclass C_Slicer_Matrix1_vine_i32 "TrucPythonInterface<BackendsEnum::Matrix,true,false,int32_t,Available_columns::NAIVE_VECTOR>":
417
489
  ctypedef int32_t value_type
418
490
 
419
491
  C_Slicer_Matrix1_vine_i32()
@@ -422,9 +494,13 @@ cdef extern from "Persistence_slices_interface.h":
422
494
 
423
495
  C_Slicer_Matrix1_vine_i32& operator=(const C_Slicer_Matrix1_vine_i32&)
424
496
 
425
- C_Slicer_Matrix1_vine_i32 colexical_rearange() except + nogil
497
+ pair[C_Slicer_Matrix1_vine_i32, vector[unsigned int]] colexical_rearange() except + nogil
498
+ C_Slicer_Matrix1_vine_i32 permute(const vector[unsigned int]&) except + nogil
426
499
 
427
500
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
501
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
502
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
503
+
428
504
  void push_to(const Line[int32_t]&) nogil
429
505
  void set_one_filtration(const vector[int32_t]&) nogil
430
506
  int prune_above_dimension(int) except + nogil
@@ -439,6 +515,7 @@ cdef extern from "Persistence_slices_interface.h":
439
515
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
440
516
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
441
517
  vector[int] get_dimensions() nogil
518
+ int get_dimension(int i) nogil
442
519
  vector[vector[uint]] get_boundaries() nogil
443
520
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
444
521
  vector[One_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -451,8 +528,11 @@ cdef extern from "Persistence_slices_interface.h":
451
528
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
452
529
 
453
530
 
454
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
455
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
531
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
532
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
533
+
534
+
535
+ C_Slicer_Matrix1_vine_i32 projective_cover_kernel(int dim) except + nogil
456
536
 
457
537
  #------------------------------------------------------------------------------
458
538
  cdef extern from "Persistence_slices_interface.h":
@@ -465,9 +545,13 @@ cdef extern from "Persistence_slices_interface.h":
465
545
 
466
546
  C_Slicer_Matrix0_vine_i64& operator=(const C_Slicer_Matrix0_vine_i64&)
467
547
 
468
- C_Slicer_Matrix0_vine_i64 colexical_rearange() except + nogil
548
+ pair[C_Slicer_Matrix0_vine_i64, vector[unsigned int]] colexical_rearange() except + nogil
549
+ C_Slicer_Matrix0_vine_i64 permute(const vector[unsigned int]&) except + nogil
469
550
 
470
551
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
552
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
553
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
554
+
471
555
  void push_to(const Line[int64_t]&) nogil
472
556
  void set_one_filtration(const vector[int64_t]&) nogil
473
557
  int prune_above_dimension(int) except + nogil
@@ -482,6 +566,7 @@ cdef extern from "Persistence_slices_interface.h":
482
566
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
483
567
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
484
568
  vector[int] get_dimensions() nogil
569
+ int get_dimension(int i) nogil
485
570
  vector[vector[uint]] get_boundaries() nogil
486
571
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
487
572
  vector[One_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -494,12 +579,15 @@ cdef extern from "Persistence_slices_interface.h":
494
579
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
495
580
 
496
581
 
497
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
498
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
582
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
583
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
584
+
585
+
586
+ C_Slicer_Matrix0_vine_i64 projective_cover_kernel(int dim) except + nogil
499
587
 
500
588
  #------------------------------------------------------------------------------
501
589
  cdef extern from "Persistence_slices_interface.h":
502
- cdef cppclass C_Slicer_Matrix1_vine_i64 "TrucPythonInterface<BackendsEnum::Matrix,true,false,int64_t,Available_columns::SMALL_VECTOR>":
590
+ cdef cppclass C_Slicer_Matrix1_vine_i64 "TrucPythonInterface<BackendsEnum::Matrix,true,false,int64_t,Available_columns::NAIVE_VECTOR>":
503
591
  ctypedef int64_t value_type
504
592
 
505
593
  C_Slicer_Matrix1_vine_i64()
@@ -508,9 +596,13 @@ cdef extern from "Persistence_slices_interface.h":
508
596
 
509
597
  C_Slicer_Matrix1_vine_i64& operator=(const C_Slicer_Matrix1_vine_i64&)
510
598
 
511
- C_Slicer_Matrix1_vine_i64 colexical_rearange() except + nogil
599
+ pair[C_Slicer_Matrix1_vine_i64, vector[unsigned int]] colexical_rearange() except + nogil
600
+ C_Slicer_Matrix1_vine_i64 permute(const vector[unsigned int]&) except + nogil
512
601
 
513
602
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
603
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
604
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
605
+
514
606
  void push_to(const Line[int64_t]&) nogil
515
607
  void set_one_filtration(const vector[int64_t]&) nogil
516
608
  int prune_above_dimension(int) except + nogil
@@ -525,6 +617,7 @@ cdef extern from "Persistence_slices_interface.h":
525
617
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
526
618
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
527
619
  vector[int] get_dimensions() nogil
620
+ int get_dimension(int i) nogil
528
621
  vector[vector[uint]] get_boundaries() nogil
529
622
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
530
623
  vector[One_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -537,8 +630,11 @@ cdef extern from "Persistence_slices_interface.h":
537
630
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
538
631
 
539
632
 
540
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
541
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
633
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
634
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
635
+
636
+
637
+ C_Slicer_Matrix1_vine_i64 projective_cover_kernel(int dim) except + nogil
542
638
 
543
639
  #------------------------------------------------------------------------------
544
640
  cdef extern from "Persistence_slices_interface.h":
@@ -551,9 +647,13 @@ cdef extern from "Persistence_slices_interface.h":
551
647
 
552
648
  C_Slicer_Matrix0_vine_f32& operator=(const C_Slicer_Matrix0_vine_f32&)
553
649
 
554
- C_Slicer_Matrix0_vine_f32 colexical_rearange() except + nogil
650
+ pair[C_Slicer_Matrix0_vine_f32, vector[unsigned int]] colexical_rearange() except + nogil
651
+ C_Slicer_Matrix0_vine_f32 permute(const vector[unsigned int]&) except + nogil
555
652
 
556
653
  vector[vector[pair[float, float]]] get_barcode() nogil
654
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
655
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
656
+
557
657
  void push_to(const Line[float]&) nogil
558
658
  void set_one_filtration(const vector[float]&) nogil
559
659
  int prune_above_dimension(int) except + nogil
@@ -568,6 +668,7 @@ cdef extern from "Persistence_slices_interface.h":
568
668
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
569
669
  vector[One_critical_filtration[float]] get_filtration_values() nogil
570
670
  vector[int] get_dimensions() nogil
671
+ int get_dimension(int i) nogil
571
672
  vector[vector[uint]] get_boundaries() nogil
572
673
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
573
674
  vector[One_critical_filtration[float]]& get_filtrations() nogil
@@ -580,12 +681,15 @@ cdef extern from "Persistence_slices_interface.h":
580
681
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
581
682
 
582
683
 
583
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
584
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
684
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
685
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
686
+
687
+
688
+ C_Slicer_Matrix0_vine_f32 projective_cover_kernel(int dim) except + nogil
585
689
 
586
690
  #------------------------------------------------------------------------------
587
691
  cdef extern from "Persistence_slices_interface.h":
588
- cdef cppclass C_Slicer_Matrix1_vine_f32 "TrucPythonInterface<BackendsEnum::Matrix,true,false,float,Available_columns::SMALL_VECTOR>":
692
+ cdef cppclass C_Slicer_Matrix1_vine_f32 "TrucPythonInterface<BackendsEnum::Matrix,true,false,float,Available_columns::NAIVE_VECTOR>":
589
693
  ctypedef float value_type
590
694
 
591
695
  C_Slicer_Matrix1_vine_f32()
@@ -594,9 +698,13 @@ cdef extern from "Persistence_slices_interface.h":
594
698
 
595
699
  C_Slicer_Matrix1_vine_f32& operator=(const C_Slicer_Matrix1_vine_f32&)
596
700
 
597
- C_Slicer_Matrix1_vine_f32 colexical_rearange() except + nogil
701
+ pair[C_Slicer_Matrix1_vine_f32, vector[unsigned int]] colexical_rearange() except + nogil
702
+ C_Slicer_Matrix1_vine_f32 permute(const vector[unsigned int]&) except + nogil
598
703
 
599
704
  vector[vector[pair[float, float]]] get_barcode() nogil
705
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
706
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
707
+
600
708
  void push_to(const Line[float]&) nogil
601
709
  void set_one_filtration(const vector[float]&) nogil
602
710
  int prune_above_dimension(int) except + nogil
@@ -611,6 +719,7 @@ cdef extern from "Persistence_slices_interface.h":
611
719
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
612
720
  vector[One_critical_filtration[float]] get_filtration_values() nogil
613
721
  vector[int] get_dimensions() nogil
722
+ int get_dimension(int i) nogil
614
723
  vector[vector[uint]] get_boundaries() nogil
615
724
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
616
725
  vector[One_critical_filtration[float]]& get_filtrations() nogil
@@ -623,8 +732,11 @@ cdef extern from "Persistence_slices_interface.h":
623
732
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
624
733
 
625
734
 
626
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
627
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
735
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
736
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
737
+
738
+
739
+ C_Slicer_Matrix1_vine_f32 projective_cover_kernel(int dim) except + nogil
628
740
 
629
741
  #------------------------------------------------------------------------------
630
742
  cdef extern from "Persistence_slices_interface.h":
@@ -637,9 +749,13 @@ cdef extern from "Persistence_slices_interface.h":
637
749
 
638
750
  C_Slicer_Matrix0_vine_f64& operator=(const C_Slicer_Matrix0_vine_f64&)
639
751
 
640
- C_Slicer_Matrix0_vine_f64 colexical_rearange() except + nogil
752
+ pair[C_Slicer_Matrix0_vine_f64, vector[unsigned int]] colexical_rearange() except + nogil
753
+ C_Slicer_Matrix0_vine_f64 permute(const vector[unsigned int]&) except + nogil
641
754
 
642
755
  vector[vector[pair[double, double]]] get_barcode() nogil
756
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
757
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
758
+
643
759
  void push_to(const Line[double]&) nogil
644
760
  void set_one_filtration(const vector[double]&) nogil
645
761
  int prune_above_dimension(int) except + nogil
@@ -654,6 +770,7 @@ cdef extern from "Persistence_slices_interface.h":
654
770
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
655
771
  vector[One_critical_filtration[double]] get_filtration_values() nogil
656
772
  vector[int] get_dimensions() nogil
773
+ int get_dimension(int i) nogil
657
774
  vector[vector[uint]] get_boundaries() nogil
658
775
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
659
776
  vector[One_critical_filtration[double]]& get_filtrations() nogil
@@ -666,12 +783,15 @@ cdef extern from "Persistence_slices_interface.h":
666
783
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
667
784
 
668
785
 
669
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
670
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
786
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
787
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
788
+
789
+
790
+ C_Slicer_Matrix0_vine_f64 projective_cover_kernel(int dim) except + nogil
671
791
 
672
792
  #------------------------------------------------------------------------------
673
793
  cdef extern from "Persistence_slices_interface.h":
674
- cdef cppclass C_Slicer_Matrix1_vine_f64 "TrucPythonInterface<BackendsEnum::Matrix,true,false,double,Available_columns::SMALL_VECTOR>":
794
+ cdef cppclass C_Slicer_Matrix1_vine_f64 "TrucPythonInterface<BackendsEnum::Matrix,true,false,double,Available_columns::NAIVE_VECTOR>":
675
795
  ctypedef double value_type
676
796
 
677
797
  C_Slicer_Matrix1_vine_f64()
@@ -680,9 +800,13 @@ cdef extern from "Persistence_slices_interface.h":
680
800
 
681
801
  C_Slicer_Matrix1_vine_f64& operator=(const C_Slicer_Matrix1_vine_f64&)
682
802
 
683
- C_Slicer_Matrix1_vine_f64 colexical_rearange() except + nogil
803
+ pair[C_Slicer_Matrix1_vine_f64, vector[unsigned int]] colexical_rearange() except + nogil
804
+ C_Slicer_Matrix1_vine_f64 permute(const vector[unsigned int]&) except + nogil
684
805
 
685
806
  vector[vector[pair[double, double]]] get_barcode() nogil
807
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
808
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
809
+
686
810
  void push_to(const Line[double]&) nogil
687
811
  void set_one_filtration(const vector[double]&) nogil
688
812
  int prune_above_dimension(int) except + nogil
@@ -697,6 +821,7 @@ cdef extern from "Persistence_slices_interface.h":
697
821
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
698
822
  vector[One_critical_filtration[double]] get_filtration_values() nogil
699
823
  vector[int] get_dimensions() nogil
824
+ int get_dimension(int i) nogil
700
825
  vector[vector[uint]] get_boundaries() nogil
701
826
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
702
827
  vector[One_critical_filtration[double]]& get_filtrations() nogil
@@ -709,8 +834,11 @@ cdef extern from "Persistence_slices_interface.h":
709
834
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
710
835
 
711
836
 
712
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
713
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
837
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
838
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
839
+
840
+
841
+ C_Slicer_Matrix1_vine_f64 projective_cover_kernel(int dim) except + nogil
714
842
 
715
843
  #------------------------------------------------------------------------------
716
844
  cdef extern from "Persistence_slices_interface.h":
@@ -723,9 +851,13 @@ cdef extern from "Persistence_slices_interface.h":
723
851
 
724
852
  C_KSlicer_Matrix0_i32& operator=(const C_KSlicer_Matrix0_i32&)
725
853
 
726
- C_KSlicer_Matrix0_i32 colexical_rearange() except + nogil
854
+ pair[C_KSlicer_Matrix0_i32, vector[unsigned int]] colexical_rearange() except + nogil
855
+ C_KSlicer_Matrix0_i32 permute(const vector[unsigned int]&) except + nogil
727
856
 
728
857
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
858
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
859
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
860
+
729
861
  void push_to(const Line[int32_t]&) nogil
730
862
  void set_one_filtration(const vector[int32_t]&) nogil
731
863
  int prune_above_dimension(int) except + nogil
@@ -740,6 +872,7 @@ cdef extern from "Persistence_slices_interface.h":
740
872
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
741
873
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
742
874
  vector[int] get_dimensions() nogil
875
+ int get_dimension(int i) nogil
743
876
  vector[vector[uint]] get_boundaries() nogil
744
877
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
745
878
  vector[Multi_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -749,12 +882,15 @@ cdef extern from "Persistence_slices_interface.h":
749
882
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
750
883
 
751
884
 
752
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
753
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
885
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
886
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
887
+
888
+
889
+ C_KSlicer_Matrix0_i32 projective_cover_kernel(int dim) except + nogil
754
890
 
755
891
  #------------------------------------------------------------------------------
756
892
  cdef extern from "Persistence_slices_interface.h":
757
- cdef cppclass C_KSlicer_Matrix1_i32 "TrucPythonInterface<BackendsEnum::Matrix,false,true,int32_t,Available_columns::SMALL_VECTOR>":
893
+ cdef cppclass C_KSlicer_Matrix1_i32 "TrucPythonInterface<BackendsEnum::Matrix,false,true,int32_t,Available_columns::NAIVE_VECTOR>":
758
894
  ctypedef int32_t value_type
759
895
 
760
896
  C_KSlicer_Matrix1_i32()
@@ -763,9 +899,13 @@ cdef extern from "Persistence_slices_interface.h":
763
899
 
764
900
  C_KSlicer_Matrix1_i32& operator=(const C_KSlicer_Matrix1_i32&)
765
901
 
766
- C_KSlicer_Matrix1_i32 colexical_rearange() except + nogil
902
+ pair[C_KSlicer_Matrix1_i32, vector[unsigned int]] colexical_rearange() except + nogil
903
+ C_KSlicer_Matrix1_i32 permute(const vector[unsigned int]&) except + nogil
767
904
 
768
905
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
906
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
907
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
908
+
769
909
  void push_to(const Line[int32_t]&) nogil
770
910
  void set_one_filtration(const vector[int32_t]&) nogil
771
911
  int prune_above_dimension(int) except + nogil
@@ -780,6 +920,7 @@ cdef extern from "Persistence_slices_interface.h":
780
920
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
781
921
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
782
922
  vector[int] get_dimensions() nogil
923
+ int get_dimension(int i) nogil
783
924
  vector[vector[uint]] get_boundaries() nogil
784
925
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
785
926
  vector[Multi_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -789,8 +930,11 @@ cdef extern from "Persistence_slices_interface.h":
789
930
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
790
931
 
791
932
 
792
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
793
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
933
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
934
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
935
+
936
+
937
+ C_KSlicer_Matrix1_i32 projective_cover_kernel(int dim) except + nogil
794
938
 
795
939
  #------------------------------------------------------------------------------
796
940
  cdef extern from "Persistence_slices_interface.h":
@@ -803,9 +947,13 @@ cdef extern from "Persistence_slices_interface.h":
803
947
 
804
948
  C_KSlicer_Matrix0_i64& operator=(const C_KSlicer_Matrix0_i64&)
805
949
 
806
- C_KSlicer_Matrix0_i64 colexical_rearange() except + nogil
950
+ pair[C_KSlicer_Matrix0_i64, vector[unsigned int]] colexical_rearange() except + nogil
951
+ C_KSlicer_Matrix0_i64 permute(const vector[unsigned int]&) except + nogil
807
952
 
808
953
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
954
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
955
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
956
+
809
957
  void push_to(const Line[int64_t]&) nogil
810
958
  void set_one_filtration(const vector[int64_t]&) nogil
811
959
  int prune_above_dimension(int) except + nogil
@@ -820,6 +968,7 @@ cdef extern from "Persistence_slices_interface.h":
820
968
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
821
969
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
822
970
  vector[int] get_dimensions() nogil
971
+ int get_dimension(int i) nogil
823
972
  vector[vector[uint]] get_boundaries() nogil
824
973
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
825
974
  vector[Multi_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -829,12 +978,15 @@ cdef extern from "Persistence_slices_interface.h":
829
978
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
830
979
 
831
980
 
832
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
833
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
981
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
982
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
983
+
984
+
985
+ C_KSlicer_Matrix0_i64 projective_cover_kernel(int dim) except + nogil
834
986
 
835
987
  #------------------------------------------------------------------------------
836
988
  cdef extern from "Persistence_slices_interface.h":
837
- cdef cppclass C_KSlicer_Matrix1_i64 "TrucPythonInterface<BackendsEnum::Matrix,false,true,int64_t,Available_columns::SMALL_VECTOR>":
989
+ cdef cppclass C_KSlicer_Matrix1_i64 "TrucPythonInterface<BackendsEnum::Matrix,false,true,int64_t,Available_columns::NAIVE_VECTOR>":
838
990
  ctypedef int64_t value_type
839
991
 
840
992
  C_KSlicer_Matrix1_i64()
@@ -843,9 +995,13 @@ cdef extern from "Persistence_slices_interface.h":
843
995
 
844
996
  C_KSlicer_Matrix1_i64& operator=(const C_KSlicer_Matrix1_i64&)
845
997
 
846
- C_KSlicer_Matrix1_i64 colexical_rearange() except + nogil
998
+ pair[C_KSlicer_Matrix1_i64, vector[unsigned int]] colexical_rearange() except + nogil
999
+ C_KSlicer_Matrix1_i64 permute(const vector[unsigned int]&) except + nogil
847
1000
 
848
1001
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
1002
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1003
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
1004
+
849
1005
  void push_to(const Line[int64_t]&) nogil
850
1006
  void set_one_filtration(const vector[int64_t]&) nogil
851
1007
  int prune_above_dimension(int) except + nogil
@@ -860,6 +1016,7 @@ cdef extern from "Persistence_slices_interface.h":
860
1016
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
861
1017
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
862
1018
  vector[int] get_dimensions() nogil
1019
+ int get_dimension(int i) nogil
863
1020
  vector[vector[uint]] get_boundaries() nogil
864
1021
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
865
1022
  vector[Multi_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -869,8 +1026,11 @@ cdef extern from "Persistence_slices_interface.h":
869
1026
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
870
1027
 
871
1028
 
872
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
873
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
1029
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
1030
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
1031
+
1032
+
1033
+ C_KSlicer_Matrix1_i64 projective_cover_kernel(int dim) except + nogil
874
1034
 
875
1035
  #------------------------------------------------------------------------------
876
1036
  cdef extern from "Persistence_slices_interface.h":
@@ -883,9 +1043,13 @@ cdef extern from "Persistence_slices_interface.h":
883
1043
 
884
1044
  C_KSlicer_Matrix0_f32& operator=(const C_KSlicer_Matrix0_f32&)
885
1045
 
886
- C_KSlicer_Matrix0_f32 colexical_rearange() except + nogil
1046
+ pair[C_KSlicer_Matrix0_f32, vector[unsigned int]] colexical_rearange() except + nogil
1047
+ C_KSlicer_Matrix0_f32 permute(const vector[unsigned int]&) except + nogil
887
1048
 
888
1049
  vector[vector[pair[float, float]]] get_barcode() nogil
1050
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1051
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
1052
+
889
1053
  void push_to(const Line[float]&) nogil
890
1054
  void set_one_filtration(const vector[float]&) nogil
891
1055
  int prune_above_dimension(int) except + nogil
@@ -900,6 +1064,7 @@ cdef extern from "Persistence_slices_interface.h":
900
1064
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
901
1065
  vector[One_critical_filtration[float]] get_filtration_values() nogil
902
1066
  vector[int] get_dimensions() nogil
1067
+ int get_dimension(int i) nogil
903
1068
  vector[vector[uint]] get_boundaries() nogil
904
1069
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
905
1070
  vector[Multi_critical_filtration[float]]& get_filtrations() nogil
@@ -909,12 +1074,15 @@ cdef extern from "Persistence_slices_interface.h":
909
1074
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
910
1075
 
911
1076
 
912
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
913
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
1077
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
1078
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
1079
+
1080
+
1081
+ C_KSlicer_Matrix0_f32 projective_cover_kernel(int dim) except + nogil
914
1082
 
915
1083
  #------------------------------------------------------------------------------
916
1084
  cdef extern from "Persistence_slices_interface.h":
917
- cdef cppclass C_KSlicer_Matrix1_f32 "TrucPythonInterface<BackendsEnum::Matrix,false,true,float,Available_columns::SMALL_VECTOR>":
1085
+ cdef cppclass C_KSlicer_Matrix1_f32 "TrucPythonInterface<BackendsEnum::Matrix,false,true,float,Available_columns::NAIVE_VECTOR>":
918
1086
  ctypedef float value_type
919
1087
 
920
1088
  C_KSlicer_Matrix1_f32()
@@ -923,9 +1091,13 @@ cdef extern from "Persistence_slices_interface.h":
923
1091
 
924
1092
  C_KSlicer_Matrix1_f32& operator=(const C_KSlicer_Matrix1_f32&)
925
1093
 
926
- C_KSlicer_Matrix1_f32 colexical_rearange() except + nogil
1094
+ pair[C_KSlicer_Matrix1_f32, vector[unsigned int]] colexical_rearange() except + nogil
1095
+ C_KSlicer_Matrix1_f32 permute(const vector[unsigned int]&) except + nogil
927
1096
 
928
1097
  vector[vector[pair[float, float]]] get_barcode() nogil
1098
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1099
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
1100
+
929
1101
  void push_to(const Line[float]&) nogil
930
1102
  void set_one_filtration(const vector[float]&) nogil
931
1103
  int prune_above_dimension(int) except + nogil
@@ -940,6 +1112,7 @@ cdef extern from "Persistence_slices_interface.h":
940
1112
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
941
1113
  vector[One_critical_filtration[float]] get_filtration_values() nogil
942
1114
  vector[int] get_dimensions() nogil
1115
+ int get_dimension(int i) nogil
943
1116
  vector[vector[uint]] get_boundaries() nogil
944
1117
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
945
1118
  vector[Multi_critical_filtration[float]]& get_filtrations() nogil
@@ -949,8 +1122,11 @@ cdef extern from "Persistence_slices_interface.h":
949
1122
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
950
1123
 
951
1124
 
952
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
953
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
1125
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
1126
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
1127
+
1128
+
1129
+ C_KSlicer_Matrix1_f32 projective_cover_kernel(int dim) except + nogil
954
1130
 
955
1131
  #------------------------------------------------------------------------------
956
1132
  cdef extern from "Persistence_slices_interface.h":
@@ -963,9 +1139,13 @@ cdef extern from "Persistence_slices_interface.h":
963
1139
 
964
1140
  C_KSlicer_Matrix0_f64& operator=(const C_KSlicer_Matrix0_f64&)
965
1141
 
966
- C_KSlicer_Matrix0_f64 colexical_rearange() except + nogil
1142
+ pair[C_KSlicer_Matrix0_f64, vector[unsigned int]] colexical_rearange() except + nogil
1143
+ C_KSlicer_Matrix0_f64 permute(const vector[unsigned int]&) except + nogil
967
1144
 
968
1145
  vector[vector[pair[double, double]]] get_barcode() nogil
1146
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1147
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
1148
+
969
1149
  void push_to(const Line[double]&) nogil
970
1150
  void set_one_filtration(const vector[double]&) nogil
971
1151
  int prune_above_dimension(int) except + nogil
@@ -980,6 +1160,7 @@ cdef extern from "Persistence_slices_interface.h":
980
1160
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
981
1161
  vector[One_critical_filtration[double]] get_filtration_values() nogil
982
1162
  vector[int] get_dimensions() nogil
1163
+ int get_dimension(int i) nogil
983
1164
  vector[vector[uint]] get_boundaries() nogil
984
1165
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
985
1166
  vector[Multi_critical_filtration[double]]& get_filtrations() nogil
@@ -989,12 +1170,15 @@ cdef extern from "Persistence_slices_interface.h":
989
1170
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
990
1171
 
991
1172
 
992
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
993
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
1173
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
1174
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
1175
+
1176
+
1177
+ C_KSlicer_Matrix0_f64 projective_cover_kernel(int dim) except + nogil
994
1178
 
995
1179
  #------------------------------------------------------------------------------
996
1180
  cdef extern from "Persistence_slices_interface.h":
997
- cdef cppclass C_KSlicer_Matrix1_f64 "TrucPythonInterface<BackendsEnum::Matrix,false,true,double,Available_columns::SMALL_VECTOR>":
1181
+ cdef cppclass C_KSlicer_Matrix1_f64 "TrucPythonInterface<BackendsEnum::Matrix,false,true,double,Available_columns::NAIVE_VECTOR>":
998
1182
  ctypedef double value_type
999
1183
 
1000
1184
  C_KSlicer_Matrix1_f64()
@@ -1003,9 +1187,13 @@ cdef extern from "Persistence_slices_interface.h":
1003
1187
 
1004
1188
  C_KSlicer_Matrix1_f64& operator=(const C_KSlicer_Matrix1_f64&)
1005
1189
 
1006
- C_KSlicer_Matrix1_f64 colexical_rearange() except + nogil
1190
+ pair[C_KSlicer_Matrix1_f64, vector[unsigned int]] colexical_rearange() except + nogil
1191
+ C_KSlicer_Matrix1_f64 permute(const vector[unsigned int]&) except + nogil
1007
1192
 
1008
1193
  vector[vector[pair[double, double]]] get_barcode() nogil
1194
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1195
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
1196
+
1009
1197
  void push_to(const Line[double]&) nogil
1010
1198
  void set_one_filtration(const vector[double]&) nogil
1011
1199
  int prune_above_dimension(int) except + nogil
@@ -1020,6 +1208,7 @@ cdef extern from "Persistence_slices_interface.h":
1020
1208
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
1021
1209
  vector[One_critical_filtration[double]] get_filtration_values() nogil
1022
1210
  vector[int] get_dimensions() nogil
1211
+ int get_dimension(int i) nogil
1023
1212
  vector[vector[uint]] get_boundaries() nogil
1024
1213
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
1025
1214
  vector[Multi_critical_filtration[double]]& get_filtrations() nogil
@@ -1029,8 +1218,11 @@ cdef extern from "Persistence_slices_interface.h":
1029
1218
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
1030
1219
 
1031
1220
 
1032
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
1033
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
1221
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
1222
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
1223
+
1224
+
1225
+ C_KSlicer_Matrix1_f64 projective_cover_kernel(int dim) except + nogil
1034
1226
 
1035
1227
  #------------------------------------------------------------------------------
1036
1228
  cdef extern from "Persistence_slices_interface.h":
@@ -1043,9 +1235,13 @@ cdef extern from "Persistence_slices_interface.h":
1043
1235
 
1044
1236
  C_Slicer_Matrix0_i32& operator=(const C_Slicer_Matrix0_i32&)
1045
1237
 
1046
- C_Slicer_Matrix0_i32 colexical_rearange() except + nogil
1238
+ pair[C_Slicer_Matrix0_i32, vector[unsigned int]] colexical_rearange() except + nogil
1239
+ C_Slicer_Matrix0_i32 permute(const vector[unsigned int]&) except + nogil
1047
1240
 
1048
1241
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
1242
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1243
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
1244
+
1049
1245
  void push_to(const Line[int32_t]&) nogil
1050
1246
  void set_one_filtration(const vector[int32_t]&) nogil
1051
1247
  int prune_above_dimension(int) except + nogil
@@ -1060,6 +1256,7 @@ cdef extern from "Persistence_slices_interface.h":
1060
1256
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
1061
1257
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
1062
1258
  vector[int] get_dimensions() nogil
1259
+ int get_dimension(int i) nogil
1063
1260
  vector[vector[uint]] get_boundaries() nogil
1064
1261
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
1065
1262
  vector[One_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -1069,12 +1266,15 @@ cdef extern from "Persistence_slices_interface.h":
1069
1266
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1070
1267
 
1071
1268
 
1072
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
1073
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
1269
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
1270
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
1271
+
1272
+
1273
+ C_Slicer_Matrix0_i32 projective_cover_kernel(int dim) except + nogil
1074
1274
 
1075
1275
  #------------------------------------------------------------------------------
1076
1276
  cdef extern from "Persistence_slices_interface.h":
1077
- cdef cppclass C_Slicer_Matrix1_i32 "TrucPythonInterface<BackendsEnum::Matrix,false,false,int32_t,Available_columns::SMALL_VECTOR>":
1277
+ cdef cppclass C_Slicer_Matrix1_i32 "TrucPythonInterface<BackendsEnum::Matrix,false,false,int32_t,Available_columns::NAIVE_VECTOR>":
1078
1278
  ctypedef int32_t value_type
1079
1279
 
1080
1280
  C_Slicer_Matrix1_i32()
@@ -1083,9 +1283,13 @@ cdef extern from "Persistence_slices_interface.h":
1083
1283
 
1084
1284
  C_Slicer_Matrix1_i32& operator=(const C_Slicer_Matrix1_i32&)
1085
1285
 
1086
- C_Slicer_Matrix1_i32 colexical_rearange() except + nogil
1286
+ pair[C_Slicer_Matrix1_i32, vector[unsigned int]] colexical_rearange() except + nogil
1287
+ C_Slicer_Matrix1_i32 permute(const vector[unsigned int]&) except + nogil
1087
1288
 
1088
1289
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
1290
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1291
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
1292
+
1089
1293
  void push_to(const Line[int32_t]&) nogil
1090
1294
  void set_one_filtration(const vector[int32_t]&) nogil
1091
1295
  int prune_above_dimension(int) except + nogil
@@ -1100,6 +1304,7 @@ cdef extern from "Persistence_slices_interface.h":
1100
1304
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
1101
1305
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
1102
1306
  vector[int] get_dimensions() nogil
1307
+ int get_dimension(int i) nogil
1103
1308
  vector[vector[uint]] get_boundaries() nogil
1104
1309
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
1105
1310
  vector[One_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -1109,8 +1314,11 @@ cdef extern from "Persistence_slices_interface.h":
1109
1314
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1110
1315
 
1111
1316
 
1112
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
1113
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
1317
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
1318
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
1319
+
1320
+
1321
+ C_Slicer_Matrix1_i32 projective_cover_kernel(int dim) except + nogil
1114
1322
 
1115
1323
  #------------------------------------------------------------------------------
1116
1324
  cdef extern from "Persistence_slices_interface.h":
@@ -1123,9 +1331,13 @@ cdef extern from "Persistence_slices_interface.h":
1123
1331
 
1124
1332
  C_Slicer_Matrix0_i64& operator=(const C_Slicer_Matrix0_i64&)
1125
1333
 
1126
- C_Slicer_Matrix0_i64 colexical_rearange() except + nogil
1334
+ pair[C_Slicer_Matrix0_i64, vector[unsigned int]] colexical_rearange() except + nogil
1335
+ C_Slicer_Matrix0_i64 permute(const vector[unsigned int]&) except + nogil
1127
1336
 
1128
1337
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
1338
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1339
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
1340
+
1129
1341
  void push_to(const Line[int64_t]&) nogil
1130
1342
  void set_one_filtration(const vector[int64_t]&) nogil
1131
1343
  int prune_above_dimension(int) except + nogil
@@ -1140,6 +1352,7 @@ cdef extern from "Persistence_slices_interface.h":
1140
1352
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
1141
1353
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
1142
1354
  vector[int] get_dimensions() nogil
1355
+ int get_dimension(int i) nogil
1143
1356
  vector[vector[uint]] get_boundaries() nogil
1144
1357
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
1145
1358
  vector[One_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -1149,12 +1362,15 @@ cdef extern from "Persistence_slices_interface.h":
1149
1362
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1150
1363
 
1151
1364
 
1152
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
1153
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
1365
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
1366
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
1367
+
1368
+
1369
+ C_Slicer_Matrix0_i64 projective_cover_kernel(int dim) except + nogil
1154
1370
 
1155
1371
  #------------------------------------------------------------------------------
1156
1372
  cdef extern from "Persistence_slices_interface.h":
1157
- cdef cppclass C_Slicer_Matrix1_i64 "TrucPythonInterface<BackendsEnum::Matrix,false,false,int64_t,Available_columns::SMALL_VECTOR>":
1373
+ cdef cppclass C_Slicer_Matrix1_i64 "TrucPythonInterface<BackendsEnum::Matrix,false,false,int64_t,Available_columns::NAIVE_VECTOR>":
1158
1374
  ctypedef int64_t value_type
1159
1375
 
1160
1376
  C_Slicer_Matrix1_i64()
@@ -1163,9 +1379,13 @@ cdef extern from "Persistence_slices_interface.h":
1163
1379
 
1164
1380
  C_Slicer_Matrix1_i64& operator=(const C_Slicer_Matrix1_i64&)
1165
1381
 
1166
- C_Slicer_Matrix1_i64 colexical_rearange() except + nogil
1382
+ pair[C_Slicer_Matrix1_i64, vector[unsigned int]] colexical_rearange() except + nogil
1383
+ C_Slicer_Matrix1_i64 permute(const vector[unsigned int]&) except + nogil
1167
1384
 
1168
1385
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
1386
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1387
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
1388
+
1169
1389
  void push_to(const Line[int64_t]&) nogil
1170
1390
  void set_one_filtration(const vector[int64_t]&) nogil
1171
1391
  int prune_above_dimension(int) except + nogil
@@ -1180,6 +1400,7 @@ cdef extern from "Persistence_slices_interface.h":
1180
1400
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
1181
1401
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
1182
1402
  vector[int] get_dimensions() nogil
1403
+ int get_dimension(int i) nogil
1183
1404
  vector[vector[uint]] get_boundaries() nogil
1184
1405
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
1185
1406
  vector[One_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -1189,8 +1410,11 @@ cdef extern from "Persistence_slices_interface.h":
1189
1410
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1190
1411
 
1191
1412
 
1192
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
1193
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
1413
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
1414
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
1415
+
1416
+
1417
+ C_Slicer_Matrix1_i64 projective_cover_kernel(int dim) except + nogil
1194
1418
 
1195
1419
  #------------------------------------------------------------------------------
1196
1420
  cdef extern from "Persistence_slices_interface.h":
@@ -1203,9 +1427,13 @@ cdef extern from "Persistence_slices_interface.h":
1203
1427
 
1204
1428
  C_Slicer_Matrix0_f32& operator=(const C_Slicer_Matrix0_f32&)
1205
1429
 
1206
- C_Slicer_Matrix0_f32 colexical_rearange() except + nogil
1430
+ pair[C_Slicer_Matrix0_f32, vector[unsigned int]] colexical_rearange() except + nogil
1431
+ C_Slicer_Matrix0_f32 permute(const vector[unsigned int]&) except + nogil
1207
1432
 
1208
1433
  vector[vector[pair[float, float]]] get_barcode() nogil
1434
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1435
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
1436
+
1209
1437
  void push_to(const Line[float]&) nogil
1210
1438
  void set_one_filtration(const vector[float]&) nogil
1211
1439
  int prune_above_dimension(int) except + nogil
@@ -1220,6 +1448,7 @@ cdef extern from "Persistence_slices_interface.h":
1220
1448
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
1221
1449
  vector[One_critical_filtration[float]] get_filtration_values() nogil
1222
1450
  vector[int] get_dimensions() nogil
1451
+ int get_dimension(int i) nogil
1223
1452
  vector[vector[uint]] get_boundaries() nogil
1224
1453
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
1225
1454
  vector[One_critical_filtration[float]]& get_filtrations() nogil
@@ -1229,12 +1458,15 @@ cdef extern from "Persistence_slices_interface.h":
1229
1458
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1230
1459
 
1231
1460
 
1232
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
1233
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
1461
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
1462
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
1463
+
1464
+
1465
+ C_Slicer_Matrix0_f32 projective_cover_kernel(int dim) except + nogil
1234
1466
 
1235
1467
  #------------------------------------------------------------------------------
1236
1468
  cdef extern from "Persistence_slices_interface.h":
1237
- cdef cppclass C_Slicer_Matrix1_f32 "TrucPythonInterface<BackendsEnum::Matrix,false,false,float,Available_columns::SMALL_VECTOR>":
1469
+ cdef cppclass C_Slicer_Matrix1_f32 "TrucPythonInterface<BackendsEnum::Matrix,false,false,float,Available_columns::NAIVE_VECTOR>":
1238
1470
  ctypedef float value_type
1239
1471
 
1240
1472
  C_Slicer_Matrix1_f32()
@@ -1243,9 +1475,13 @@ cdef extern from "Persistence_slices_interface.h":
1243
1475
 
1244
1476
  C_Slicer_Matrix1_f32& operator=(const C_Slicer_Matrix1_f32&)
1245
1477
 
1246
- C_Slicer_Matrix1_f32 colexical_rearange() except + nogil
1478
+ pair[C_Slicer_Matrix1_f32, vector[unsigned int]] colexical_rearange() except + nogil
1479
+ C_Slicer_Matrix1_f32 permute(const vector[unsigned int]&) except + nogil
1247
1480
 
1248
1481
  vector[vector[pair[float, float]]] get_barcode() nogil
1482
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1483
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
1484
+
1249
1485
  void push_to(const Line[float]&) nogil
1250
1486
  void set_one_filtration(const vector[float]&) nogil
1251
1487
  int prune_above_dimension(int) except + nogil
@@ -1260,6 +1496,7 @@ cdef extern from "Persistence_slices_interface.h":
1260
1496
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
1261
1497
  vector[One_critical_filtration[float]] get_filtration_values() nogil
1262
1498
  vector[int] get_dimensions() nogil
1499
+ int get_dimension(int i) nogil
1263
1500
  vector[vector[uint]] get_boundaries() nogil
1264
1501
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
1265
1502
  vector[One_critical_filtration[float]]& get_filtrations() nogil
@@ -1269,8 +1506,11 @@ cdef extern from "Persistence_slices_interface.h":
1269
1506
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1270
1507
 
1271
1508
 
1272
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
1273
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
1509
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
1510
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
1511
+
1512
+
1513
+ C_Slicer_Matrix1_f32 projective_cover_kernel(int dim) except + nogil
1274
1514
 
1275
1515
  #------------------------------------------------------------------------------
1276
1516
  cdef extern from "Persistence_slices_interface.h":
@@ -1283,9 +1523,13 @@ cdef extern from "Persistence_slices_interface.h":
1283
1523
 
1284
1524
  C_Slicer_Matrix0_f64& operator=(const C_Slicer_Matrix0_f64&)
1285
1525
 
1286
- C_Slicer_Matrix0_f64 colexical_rearange() except + nogil
1526
+ pair[C_Slicer_Matrix0_f64, vector[unsigned int]] colexical_rearange() except + nogil
1527
+ C_Slicer_Matrix0_f64 permute(const vector[unsigned int]&) except + nogil
1287
1528
 
1288
1529
  vector[vector[pair[double, double]]] get_barcode() nogil
1530
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1531
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
1532
+
1289
1533
  void push_to(const Line[double]&) nogil
1290
1534
  void set_one_filtration(const vector[double]&) nogil
1291
1535
  int prune_above_dimension(int) except + nogil
@@ -1300,6 +1544,7 @@ cdef extern from "Persistence_slices_interface.h":
1300
1544
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
1301
1545
  vector[One_critical_filtration[double]] get_filtration_values() nogil
1302
1546
  vector[int] get_dimensions() nogil
1547
+ int get_dimension(int i) nogil
1303
1548
  vector[vector[uint]] get_boundaries() nogil
1304
1549
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
1305
1550
  vector[One_critical_filtration[double]]& get_filtrations() nogil
@@ -1309,12 +1554,15 @@ cdef extern from "Persistence_slices_interface.h":
1309
1554
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1310
1555
 
1311
1556
 
1312
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
1313
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
1557
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
1558
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
1559
+
1560
+
1561
+ C_Slicer_Matrix0_f64 projective_cover_kernel(int dim) except + nogil
1314
1562
 
1315
1563
  #------------------------------------------------------------------------------
1316
1564
  cdef extern from "Persistence_slices_interface.h":
1317
- cdef cppclass C_Slicer_Matrix1_f64 "TrucPythonInterface<BackendsEnum::Matrix,false,false,double,Available_columns::SMALL_VECTOR>":
1565
+ cdef cppclass C_Slicer_Matrix1_f64 "TrucPythonInterface<BackendsEnum::Matrix,false,false,double,Available_columns::NAIVE_VECTOR>":
1318
1566
  ctypedef double value_type
1319
1567
 
1320
1568
  C_Slicer_Matrix1_f64()
@@ -1323,9 +1571,13 @@ cdef extern from "Persistence_slices_interface.h":
1323
1571
 
1324
1572
  C_Slicer_Matrix1_f64& operator=(const C_Slicer_Matrix1_f64&)
1325
1573
 
1326
- C_Slicer_Matrix1_f64 colexical_rearange() except + nogil
1574
+ pair[C_Slicer_Matrix1_f64, vector[unsigned int]] colexical_rearange() except + nogil
1575
+ C_Slicer_Matrix1_f64 permute(const vector[unsigned int]&) except + nogil
1327
1576
 
1328
1577
  vector[vector[pair[double, double]]] get_barcode() nogil
1578
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1579
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
1580
+
1329
1581
  void push_to(const Line[double]&) nogil
1330
1582
  void set_one_filtration(const vector[double]&) nogil
1331
1583
  int prune_above_dimension(int) except + nogil
@@ -1340,6 +1592,7 @@ cdef extern from "Persistence_slices_interface.h":
1340
1592
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
1341
1593
  vector[One_critical_filtration[double]] get_filtration_values() nogil
1342
1594
  vector[int] get_dimensions() nogil
1595
+ int get_dimension(int i) nogil
1343
1596
  vector[vector[uint]] get_boundaries() nogil
1344
1597
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
1345
1598
  vector[One_critical_filtration[double]]& get_filtrations() nogil
@@ -1349,8 +1602,11 @@ cdef extern from "Persistence_slices_interface.h":
1349
1602
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1350
1603
 
1351
1604
 
1352
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
1353
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
1605
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
1606
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
1607
+
1608
+
1609
+ C_Slicer_Matrix1_f64 projective_cover_kernel(int dim) except + nogil
1354
1610
 
1355
1611
  #------------------------------------------------------------------------------
1356
1612
  cdef extern from "Persistence_slices_interface.h":
@@ -1363,9 +1619,13 @@ cdef extern from "Persistence_slices_interface.h":
1363
1619
 
1364
1620
  C_KSlicer_GudhiCohomology0_i32& operator=(const C_KSlicer_GudhiCohomology0_i32&)
1365
1621
 
1366
- C_KSlicer_GudhiCohomology0_i32 colexical_rearange() except + nogil
1622
+ pair[C_KSlicer_GudhiCohomology0_i32, vector[unsigned int]] colexical_rearange() except + nogil
1623
+ C_KSlicer_GudhiCohomology0_i32 permute(const vector[unsigned int]&) except + nogil
1367
1624
 
1368
1625
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
1626
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1627
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
1628
+
1369
1629
  void push_to(const Line[int32_t]&) nogil
1370
1630
  void set_one_filtration(const vector[int32_t]&) nogil
1371
1631
  int prune_above_dimension(int) except + nogil
@@ -1380,6 +1640,7 @@ cdef extern from "Persistence_slices_interface.h":
1380
1640
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
1381
1641
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
1382
1642
  vector[int] get_dimensions() nogil
1643
+ int get_dimension(int i) nogil
1383
1644
  vector[vector[uint]] get_boundaries() nogil
1384
1645
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
1385
1646
  vector[Multi_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -1389,8 +1650,11 @@ cdef extern from "Persistence_slices_interface.h":
1389
1650
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
1390
1651
 
1391
1652
 
1392
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
1393
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
1653
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
1654
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
1655
+
1656
+
1657
+ C_KSlicer_GudhiCohomology0_i32 projective_cover_kernel(int dim) except + nogil
1394
1658
 
1395
1659
  #------------------------------------------------------------------------------
1396
1660
  cdef extern from "Persistence_slices_interface.h":
@@ -1403,9 +1667,13 @@ cdef extern from "Persistence_slices_interface.h":
1403
1667
 
1404
1668
  C_KSlicer_GudhiCohomology0_i64& operator=(const C_KSlicer_GudhiCohomology0_i64&)
1405
1669
 
1406
- C_KSlicer_GudhiCohomology0_i64 colexical_rearange() except + nogil
1670
+ pair[C_KSlicer_GudhiCohomology0_i64, vector[unsigned int]] colexical_rearange() except + nogil
1671
+ C_KSlicer_GudhiCohomology0_i64 permute(const vector[unsigned int]&) except + nogil
1407
1672
 
1408
1673
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
1674
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1675
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
1676
+
1409
1677
  void push_to(const Line[int64_t]&) nogil
1410
1678
  void set_one_filtration(const vector[int64_t]&) nogil
1411
1679
  int prune_above_dimension(int) except + nogil
@@ -1420,6 +1688,7 @@ cdef extern from "Persistence_slices_interface.h":
1420
1688
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
1421
1689
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
1422
1690
  vector[int] get_dimensions() nogil
1691
+ int get_dimension(int i) nogil
1423
1692
  vector[vector[uint]] get_boundaries() nogil
1424
1693
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
1425
1694
  vector[Multi_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -1429,8 +1698,11 @@ cdef extern from "Persistence_slices_interface.h":
1429
1698
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
1430
1699
 
1431
1700
 
1432
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
1433
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
1701
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
1702
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
1703
+
1704
+
1705
+ C_KSlicer_GudhiCohomology0_i64 projective_cover_kernel(int dim) except + nogil
1434
1706
 
1435
1707
  #------------------------------------------------------------------------------
1436
1708
  cdef extern from "Persistence_slices_interface.h":
@@ -1443,9 +1715,13 @@ cdef extern from "Persistence_slices_interface.h":
1443
1715
 
1444
1716
  C_KSlicer_GudhiCohomology0_f32& operator=(const C_KSlicer_GudhiCohomology0_f32&)
1445
1717
 
1446
- C_KSlicer_GudhiCohomology0_f32 colexical_rearange() except + nogil
1718
+ pair[C_KSlicer_GudhiCohomology0_f32, vector[unsigned int]] colexical_rearange() except + nogil
1719
+ C_KSlicer_GudhiCohomology0_f32 permute(const vector[unsigned int]&) except + nogil
1447
1720
 
1448
1721
  vector[vector[pair[float, float]]] get_barcode() nogil
1722
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1723
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
1724
+
1449
1725
  void push_to(const Line[float]&) nogil
1450
1726
  void set_one_filtration(const vector[float]&) nogil
1451
1727
  int prune_above_dimension(int) except + nogil
@@ -1460,6 +1736,7 @@ cdef extern from "Persistence_slices_interface.h":
1460
1736
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
1461
1737
  vector[One_critical_filtration[float]] get_filtration_values() nogil
1462
1738
  vector[int] get_dimensions() nogil
1739
+ int get_dimension(int i) nogil
1463
1740
  vector[vector[uint]] get_boundaries() nogil
1464
1741
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
1465
1742
  vector[Multi_critical_filtration[float]]& get_filtrations() nogil
@@ -1469,8 +1746,11 @@ cdef extern from "Persistence_slices_interface.h":
1469
1746
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
1470
1747
 
1471
1748
 
1472
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
1473
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
1749
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
1750
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
1751
+
1752
+
1753
+ C_KSlicer_GudhiCohomology0_f32 projective_cover_kernel(int dim) except + nogil
1474
1754
 
1475
1755
  #------------------------------------------------------------------------------
1476
1756
  cdef extern from "Persistence_slices_interface.h":
@@ -1483,9 +1763,13 @@ cdef extern from "Persistence_slices_interface.h":
1483
1763
 
1484
1764
  C_KSlicer_GudhiCohomology0_f64& operator=(const C_KSlicer_GudhiCohomology0_f64&)
1485
1765
 
1486
- C_KSlicer_GudhiCohomology0_f64 colexical_rearange() except + nogil
1766
+ pair[C_KSlicer_GudhiCohomology0_f64, vector[unsigned int]] colexical_rearange() except + nogil
1767
+ C_KSlicer_GudhiCohomology0_f64 permute(const vector[unsigned int]&) except + nogil
1487
1768
 
1488
1769
  vector[vector[pair[double, double]]] get_barcode() nogil
1770
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1771
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
1772
+
1489
1773
  void push_to(const Line[double]&) nogil
1490
1774
  void set_one_filtration(const vector[double]&) nogil
1491
1775
  int prune_above_dimension(int) except + nogil
@@ -1500,6 +1784,7 @@ cdef extern from "Persistence_slices_interface.h":
1500
1784
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
1501
1785
  vector[One_critical_filtration[double]] get_filtration_values() nogil
1502
1786
  vector[int] get_dimensions() nogil
1787
+ int get_dimension(int i) nogil
1503
1788
  vector[vector[uint]] get_boundaries() nogil
1504
1789
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
1505
1790
  vector[Multi_critical_filtration[double]]& get_filtrations() nogil
@@ -1509,8 +1794,11 @@ cdef extern from "Persistence_slices_interface.h":
1509
1794
  void write_to_scc_file(const string&, int, int, bool, bool, bool, bool) nogil
1510
1795
 
1511
1796
 
1512
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
1513
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
1797
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
1798
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
1799
+
1800
+
1801
+ C_KSlicer_GudhiCohomology0_f64 projective_cover_kernel(int dim) except + nogil
1514
1802
 
1515
1803
  #------------------------------------------------------------------------------
1516
1804
  cdef extern from "Persistence_slices_interface.h":
@@ -1523,9 +1811,13 @@ cdef extern from "Persistence_slices_interface.h":
1523
1811
 
1524
1812
  C_Slicer_GudhiCohomology0_i32& operator=(const C_Slicer_GudhiCohomology0_i32&)
1525
1813
 
1526
- C_Slicer_GudhiCohomology0_i32 colexical_rearange() except + nogil
1814
+ pair[C_Slicer_GudhiCohomology0_i32, vector[unsigned int]] colexical_rearange() except + nogil
1815
+ C_Slicer_GudhiCohomology0_i32 permute(const vector[unsigned int]&) except + nogil
1527
1816
 
1528
1817
  vector[vector[pair[int32_t, int32_t]]] get_barcode() nogil
1818
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1819
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int32_t*, int size, bool ignore_inf) except + nogil
1820
+
1529
1821
  void push_to(const Line[int32_t]&) nogil
1530
1822
  void set_one_filtration(const vector[int32_t]&) nogil
1531
1823
  int prune_above_dimension(int) except + nogil
@@ -1540,6 +1832,7 @@ cdef extern from "Persistence_slices_interface.h":
1540
1832
  pair[One_critical_filtration[int32_t], One_critical_filtration[int32_t]] get_bounding_box() except + nogil
1541
1833
  vector[One_critical_filtration[int32_t]] get_filtration_values() nogil
1542
1834
  vector[int] get_dimensions() nogil
1835
+ int get_dimension(int i) nogil
1543
1836
  vector[vector[uint]] get_boundaries() nogil
1544
1837
  void coarsen_on_grid_inplace(vector[vector[int32_t]], bool) nogil
1545
1838
  vector[One_critical_filtration[int32_t]]& get_filtrations() nogil
@@ -1549,8 +1842,11 @@ cdef extern from "Persistence_slices_interface.h":
1549
1842
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1550
1843
 
1551
1844
 
1552
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) nogil
1553
- vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) nogil
1845
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[vector[int32_t]], bool) except + nogil
1846
+ vector[vector[vector[pair[int32_t, int32_t]]]] persistence_on_lines(vector[pair[vector[int32_t],vector[int32_t]]],bool) except + nogil
1847
+
1848
+
1849
+ C_Slicer_GudhiCohomology0_i32 projective_cover_kernel(int dim) except + nogil
1554
1850
 
1555
1851
  #------------------------------------------------------------------------------
1556
1852
  cdef extern from "Persistence_slices_interface.h":
@@ -1563,9 +1859,13 @@ cdef extern from "Persistence_slices_interface.h":
1563
1859
 
1564
1860
  C_Slicer_GudhiCohomology0_i64& operator=(const C_Slicer_GudhiCohomology0_i64&)
1565
1861
 
1566
- C_Slicer_GudhiCohomology0_i64 colexical_rearange() except + nogil
1862
+ pair[C_Slicer_GudhiCohomology0_i64, vector[unsigned int]] colexical_rearange() except + nogil
1863
+ C_Slicer_GudhiCohomology0_i64 permute(const vector[unsigned int]&) except + nogil
1567
1864
 
1568
1865
  vector[vector[pair[int64_t, int64_t]]] get_barcode() nogil
1866
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1867
+ vector[vector[vector[pair[int,int]]]] custom_persistences(int64_t*, int size, bool ignore_inf) except + nogil
1868
+
1569
1869
  void push_to(const Line[int64_t]&) nogil
1570
1870
  void set_one_filtration(const vector[int64_t]&) nogil
1571
1871
  int prune_above_dimension(int) except + nogil
@@ -1580,6 +1880,7 @@ cdef extern from "Persistence_slices_interface.h":
1580
1880
  pair[One_critical_filtration[int64_t], One_critical_filtration[int64_t]] get_bounding_box() except + nogil
1581
1881
  vector[One_critical_filtration[int64_t]] get_filtration_values() nogil
1582
1882
  vector[int] get_dimensions() nogil
1883
+ int get_dimension(int i) nogil
1583
1884
  vector[vector[uint]] get_boundaries() nogil
1584
1885
  void coarsen_on_grid_inplace(vector[vector[int64_t]], bool) nogil
1585
1886
  vector[One_critical_filtration[int64_t]]& get_filtrations() nogil
@@ -1589,8 +1890,11 @@ cdef extern from "Persistence_slices_interface.h":
1589
1890
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1590
1891
 
1591
1892
 
1592
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) nogil
1593
- vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) nogil
1893
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[vector[int64_t]], bool) except + nogil
1894
+ vector[vector[vector[pair[int64_t, int64_t]]]] persistence_on_lines(vector[pair[vector[int64_t],vector[int64_t]]],bool) except + nogil
1895
+
1896
+
1897
+ C_Slicer_GudhiCohomology0_i64 projective_cover_kernel(int dim) except + nogil
1594
1898
 
1595
1899
  #------------------------------------------------------------------------------
1596
1900
  cdef extern from "Persistence_slices_interface.h":
@@ -1603,9 +1907,13 @@ cdef extern from "Persistence_slices_interface.h":
1603
1907
 
1604
1908
  C_Slicer_GudhiCohomology0_f32& operator=(const C_Slicer_GudhiCohomology0_f32&)
1605
1909
 
1606
- C_Slicer_GudhiCohomology0_f32 colexical_rearange() except + nogil
1910
+ pair[C_Slicer_GudhiCohomology0_f32, vector[unsigned int]] colexical_rearange() except + nogil
1911
+ C_Slicer_GudhiCohomology0_f32 permute(const vector[unsigned int]&) except + nogil
1607
1912
 
1608
1913
  vector[vector[pair[float, float]]] get_barcode() nogil
1914
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1915
+ vector[vector[vector[pair[int,int]]]] custom_persistences(float*, int size, bool ignore_inf) except + nogil
1916
+
1609
1917
  void push_to(const Line[float]&) nogil
1610
1918
  void set_one_filtration(const vector[float]&) nogil
1611
1919
  int prune_above_dimension(int) except + nogil
@@ -1620,6 +1928,7 @@ cdef extern from "Persistence_slices_interface.h":
1620
1928
  pair[One_critical_filtration[float], One_critical_filtration[float]] get_bounding_box() except + nogil
1621
1929
  vector[One_critical_filtration[float]] get_filtration_values() nogil
1622
1930
  vector[int] get_dimensions() nogil
1931
+ int get_dimension(int i) nogil
1623
1932
  vector[vector[uint]] get_boundaries() nogil
1624
1933
  void coarsen_on_grid_inplace(vector[vector[float]], bool) nogil
1625
1934
  vector[One_critical_filtration[float]]& get_filtrations() nogil
@@ -1629,8 +1938,11 @@ cdef extern from "Persistence_slices_interface.h":
1629
1938
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1630
1939
 
1631
1940
 
1632
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) nogil
1633
- vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) nogil
1941
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[vector[float]], bool) except + nogil
1942
+ vector[vector[vector[pair[float, float]]]] persistence_on_lines(vector[pair[vector[float],vector[float]]],bool) except + nogil
1943
+
1944
+
1945
+ C_Slicer_GudhiCohomology0_f32 projective_cover_kernel(int dim) except + nogil
1634
1946
 
1635
1947
  #------------------------------------------------------------------------------
1636
1948
  cdef extern from "Persistence_slices_interface.h":
@@ -1643,9 +1955,13 @@ cdef extern from "Persistence_slices_interface.h":
1643
1955
 
1644
1956
  C_Slicer_GudhiCohomology0_f64& operator=(const C_Slicer_GudhiCohomology0_f64&)
1645
1957
 
1646
- C_Slicer_GudhiCohomology0_f64 colexical_rearange() except + nogil
1958
+ pair[C_Slicer_GudhiCohomology0_f64, vector[unsigned int]] colexical_rearange() except + nogil
1959
+ C_Slicer_GudhiCohomology0_f64 permute(const vector[unsigned int]&) except + nogil
1647
1960
 
1648
1961
  vector[vector[pair[double, double]]] get_barcode() nogil
1962
+ vector[vector[pair[int,int]]] get_barcode_idx() nogil
1963
+ vector[vector[vector[pair[int,int]]]] custom_persistences(double*, int size, bool ignore_inf) except + nogil
1964
+
1649
1965
  void push_to(const Line[double]&) nogil
1650
1966
  void set_one_filtration(const vector[double]&) nogil
1651
1967
  int prune_above_dimension(int) except + nogil
@@ -1660,6 +1976,7 @@ cdef extern from "Persistence_slices_interface.h":
1660
1976
  pair[One_critical_filtration[double], One_critical_filtration[double]] get_bounding_box() except + nogil
1661
1977
  vector[One_critical_filtration[double]] get_filtration_values() nogil
1662
1978
  vector[int] get_dimensions() nogil
1979
+ int get_dimension(int i) nogil
1663
1980
  vector[vector[uint]] get_boundaries() nogil
1664
1981
  void coarsen_on_grid_inplace(vector[vector[double]], bool) nogil
1665
1982
  vector[One_critical_filtration[double]]& get_filtrations() nogil
@@ -1669,8 +1986,11 @@ cdef extern from "Persistence_slices_interface.h":
1669
1986
  void build_from_scc_file(const string&, bool, bool, int) except + nogil
1670
1987
 
1671
1988
 
1672
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) nogil
1673
- vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) nogil
1989
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[vector[double]], bool) except + nogil
1990
+ vector[vector[vector[pair[double, double]]]] persistence_on_lines(vector[pair[vector[double],vector[double]]],bool) except + nogil
1991
+
1992
+
1993
+ C_Slicer_GudhiCohomology0_f64 projective_cover_kernel(int dim) except + nogil
1674
1994
 
1675
1995
 
1676
1996
 
@@ -1693,51 +2013,51 @@ cdef extern from "multiparameter_module_approximation/approximation.h" namespace
1693
2013
 
1694
2014
  import multipers.slicer as mps
1695
2015
  from cython.operator cimport dereference
1696
- cdef inline Module[float] _multiparameter_module_approximation_f32(object slicer, One_critical_filtration[float] direction, float max_error, Box[float] box, bool threshold, bool complete, bool verbose):
2016
+ cdef inline Module[double] _multiparameter_module_approximation_f64(object slicer, One_critical_filtration[double] direction, double max_error, Box[double] box, bool threshold, bool complete, bool verbose):
1697
2017
  import multipers.slicer as mps
1698
2018
  cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
1699
- cdef Module[float] mod
2019
+ cdef Module[double] mod
1700
2020
  if False:
1701
2021
  pass
1702
- elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f32):
2022
+ elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f64):
1703
2023
  with nogil:
1704
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2024
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1705
2025
  return mod
1706
- elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f32):
2026
+ elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f64):
1707
2027
  with nogil:
1708
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2028
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1709
2029
  return mod
1710
- elif isinstance(slicer, mps._Slicer_Matrix0_vine_f32):
2030
+ elif isinstance(slicer, mps._Slicer_Matrix0_vine_f64):
1711
2031
  with nogil:
1712
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2032
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1713
2033
  return mod
1714
- elif isinstance(slicer, mps._Slicer_Matrix1_vine_f32):
2034
+ elif isinstance(slicer, mps._Slicer_Matrix1_vine_f64):
1715
2035
  with nogil:
1716
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2036
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1717
2037
  return mod
1718
2038
  else:
1719
2039
  raise ValueError(f"Unsupported slicer type {type(slicer)}")
1720
- cdef inline Module[double] _multiparameter_module_approximation_f64(object slicer, One_critical_filtration[double] direction, double max_error, Box[double] box, bool threshold, bool complete, bool verbose):
2040
+ cdef inline Module[float] _multiparameter_module_approximation_f32(object slicer, One_critical_filtration[float] direction, float max_error, Box[float] box, bool threshold, bool complete, bool verbose):
1721
2041
  import multipers.slicer as mps
1722
2042
  cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
1723
- cdef Module[double] mod
2043
+ cdef Module[float] mod
1724
2044
  if False:
1725
2045
  pass
1726
- elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f64):
2046
+ elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f32):
1727
2047
  with nogil:
1728
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2048
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1729
2049
  return mod
1730
- elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f64):
2050
+ elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f32):
1731
2051
  with nogil:
1732
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2052
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1733
2053
  return mod
1734
- elif isinstance(slicer, mps._Slicer_Matrix0_vine_f64):
2054
+ elif isinstance(slicer, mps._Slicer_Matrix0_vine_f32):
1735
2055
  with nogil:
1736
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2056
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1737
2057
  return mod
1738
- elif isinstance(slicer, mps._Slicer_Matrix1_vine_f64):
2058
+ elif isinstance(slicer, mps._Slicer_Matrix1_vine_f32):
1739
2059
  with nogil:
1740
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2060
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
1741
2061
  return mod
1742
2062
  else:
1743
2063
  raise ValueError(f"Unsupported slicer type {type(slicer)}")
@@ -2303,8 +2623,10 @@ cdef extern from "multi_parameter_rank_invariant/hilbert_function.h" namespace "
2303
2623
  signed_measure_type get_hilbert_signed_measure(C_Slicer_GudhiCohomology0_i64&, tensor_dtype* , const vector[indices_type], const vector[indices_type], bool zero_pad,indices_type n_jobs, bool verbose, bool ignore_inf) except + nogil
2304
2624
  signed_measure_type get_hilbert_signed_measure(C_Slicer_GudhiCohomology0_f32&, tensor_dtype* , const vector[indices_type], const vector[indices_type], bool zero_pad,indices_type n_jobs, bool verbose, bool ignore_inf) except + nogil
2305
2625
  signed_measure_type get_hilbert_signed_measure(C_Slicer_GudhiCohomology0_f64&, tensor_dtype* , const vector[indices_type], const vector[indices_type], bool zero_pad,indices_type n_jobs, bool verbose, bool ignore_inf) except + nogil
2306
- 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):
2626
+ cdef inline _compute_hilbert_sm(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):
2307
2627
  import multipers.slicer as mps
2628
+ if len(slicer) == 0:
2629
+ return (np.empty(shape=(0, 1), dtype=slicer.dtype), np.empty(shape=(0), dtype=int))
2308
2630
  cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
2309
2631
  cdef signed_measure_type sm
2310
2632
  cdef cnp.ndarray[indices_type, ndim=2] pts
@@ -2312,241 +2634,401 @@ cdef inline _compute_hilbert_sm(object slicer, tensor_dtype* container_ptr, vec
2312
2634
  if isinstance(slicer, mps._KSlicer_Matrix0_vine_i32):
2313
2635
  with nogil:
2314
2636
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_vine_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2315
- pts = np.asarray(sm.first,dtype=python_indices_type)
2316
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2637
+ if len(sm.first) == 0:
2638
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2639
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2640
+ else:
2641
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2642
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2317
2643
  return (pts,weights)
2318
2644
  if isinstance(slicer, mps._KSlicer_Matrix1_vine_i32):
2319
2645
  with nogil:
2320
2646
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_vine_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2321
- pts = np.asarray(sm.first,dtype=python_indices_type)
2322
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2647
+ if len(sm.first) == 0:
2648
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2649
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2650
+ else:
2651
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2652
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2323
2653
  return (pts,weights)
2324
2654
  if isinstance(slicer, mps._KSlicer_Matrix0_vine_i64):
2325
2655
  with nogil:
2326
2656
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_vine_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2327
- pts = np.asarray(sm.first,dtype=python_indices_type)
2328
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2657
+ if len(sm.first) == 0:
2658
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2659
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2660
+ else:
2661
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2662
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2329
2663
  return (pts,weights)
2330
2664
  if isinstance(slicer, mps._KSlicer_Matrix1_vine_i64):
2331
2665
  with nogil:
2332
2666
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_vine_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2333
- pts = np.asarray(sm.first,dtype=python_indices_type)
2334
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2667
+ if len(sm.first) == 0:
2668
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2669
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2670
+ else:
2671
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2672
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2335
2673
  return (pts,weights)
2336
2674
  if isinstance(slicer, mps._KSlicer_Matrix0_vine_f32):
2337
2675
  with nogil:
2338
2676
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_vine_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2339
- pts = np.asarray(sm.first,dtype=python_indices_type)
2340
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2677
+ if len(sm.first) == 0:
2678
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2679
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2680
+ else:
2681
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2682
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2341
2683
  return (pts,weights)
2342
2684
  if isinstance(slicer, mps._KSlicer_Matrix1_vine_f32):
2343
2685
  with nogil:
2344
2686
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_vine_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2345
- pts = np.asarray(sm.first,dtype=python_indices_type)
2346
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2687
+ if len(sm.first) == 0:
2688
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2689
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2690
+ else:
2691
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2692
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2347
2693
  return (pts,weights)
2348
2694
  if isinstance(slicer, mps._KSlicer_Matrix0_vine_f64):
2349
2695
  with nogil:
2350
2696
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_vine_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2351
- pts = np.asarray(sm.first,dtype=python_indices_type)
2352
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2697
+ if len(sm.first) == 0:
2698
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2699
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2700
+ else:
2701
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2702
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2353
2703
  return (pts,weights)
2354
2704
  if isinstance(slicer, mps._KSlicer_Matrix1_vine_f64):
2355
2705
  with nogil:
2356
2706
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_vine_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2357
- pts = np.asarray(sm.first,dtype=python_indices_type)
2358
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2707
+ if len(sm.first) == 0:
2708
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2709
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2710
+ else:
2711
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2712
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2359
2713
  return (pts,weights)
2360
2714
  if isinstance(slicer, mps._Slicer_Matrix0_vine_i32):
2361
2715
  with nogil:
2362
2716
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_vine_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2363
- pts = np.asarray(sm.first,dtype=python_indices_type)
2364
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2717
+ if len(sm.first) == 0:
2718
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2719
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2720
+ else:
2721
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2722
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2365
2723
  return (pts,weights)
2366
2724
  if isinstance(slicer, mps._Slicer_Matrix1_vine_i32):
2367
2725
  with nogil:
2368
2726
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_vine_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2369
- pts = np.asarray(sm.first,dtype=python_indices_type)
2370
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2727
+ if len(sm.first) == 0:
2728
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2729
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2730
+ else:
2731
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2732
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2371
2733
  return (pts,weights)
2372
2734
  if isinstance(slicer, mps._Slicer_Matrix0_vine_i64):
2373
2735
  with nogil:
2374
2736
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_vine_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2375
- pts = np.asarray(sm.first,dtype=python_indices_type)
2376
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2737
+ if len(sm.first) == 0:
2738
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2739
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2740
+ else:
2741
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2742
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2377
2743
  return (pts,weights)
2378
2744
  if isinstance(slicer, mps._Slicer_Matrix1_vine_i64):
2379
2745
  with nogil:
2380
2746
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_vine_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2381
- pts = np.asarray(sm.first,dtype=python_indices_type)
2382
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2747
+ if len(sm.first) == 0:
2748
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2749
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2750
+ else:
2751
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2752
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2383
2753
  return (pts,weights)
2384
2754
  if isinstance(slicer, mps._Slicer_Matrix0_vine_f32):
2385
2755
  with nogil:
2386
2756
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_vine_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2387
- pts = np.asarray(sm.first,dtype=python_indices_type)
2388
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2757
+ if len(sm.first) == 0:
2758
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2759
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2760
+ else:
2761
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2762
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2389
2763
  return (pts,weights)
2390
2764
  if isinstance(slicer, mps._Slicer_Matrix1_vine_f32):
2391
2765
  with nogil:
2392
2766
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_vine_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2393
- pts = np.asarray(sm.first,dtype=python_indices_type)
2394
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2767
+ if len(sm.first) == 0:
2768
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2769
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2770
+ else:
2771
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2772
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2395
2773
  return (pts,weights)
2396
2774
  if isinstance(slicer, mps._Slicer_Matrix0_vine_f64):
2397
2775
  with nogil:
2398
2776
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_vine_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2399
- pts = np.asarray(sm.first,dtype=python_indices_type)
2400
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2777
+ if len(sm.first) == 0:
2778
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2779
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2780
+ else:
2781
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2782
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2401
2783
  return (pts,weights)
2402
2784
  if isinstance(slicer, mps._Slicer_Matrix1_vine_f64):
2403
2785
  with nogil:
2404
2786
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_vine_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2405
- pts = np.asarray(sm.first,dtype=python_indices_type)
2406
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2787
+ if len(sm.first) == 0:
2788
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2789
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2790
+ else:
2791
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2792
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2407
2793
  return (pts,weights)
2408
2794
  if isinstance(slicer, mps._KSlicer_Matrix0_i32):
2409
2795
  with nogil:
2410
2796
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2411
- pts = np.asarray(sm.first,dtype=python_indices_type)
2412
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2797
+ if len(sm.first) == 0:
2798
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2799
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2800
+ else:
2801
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2802
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2413
2803
  return (pts,weights)
2414
2804
  if isinstance(slicer, mps._KSlicer_Matrix1_i32):
2415
2805
  with nogil:
2416
2806
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2417
- pts = np.asarray(sm.first,dtype=python_indices_type)
2418
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2807
+ if len(sm.first) == 0:
2808
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2809
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2810
+ else:
2811
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2812
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2419
2813
  return (pts,weights)
2420
2814
  if isinstance(slicer, mps._KSlicer_Matrix0_i64):
2421
2815
  with nogil:
2422
2816
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2423
- pts = np.asarray(sm.first,dtype=python_indices_type)
2424
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2817
+ if len(sm.first) == 0:
2818
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2819
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2820
+ else:
2821
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2822
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2425
2823
  return (pts,weights)
2426
2824
  if isinstance(slicer, mps._KSlicer_Matrix1_i64):
2427
2825
  with nogil:
2428
2826
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2429
- pts = np.asarray(sm.first,dtype=python_indices_type)
2430
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2827
+ if len(sm.first) == 0:
2828
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2829
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2830
+ else:
2831
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2832
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2431
2833
  return (pts,weights)
2432
2834
  if isinstance(slicer, mps._KSlicer_Matrix0_f32):
2433
2835
  with nogil:
2434
2836
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2435
- pts = np.asarray(sm.first,dtype=python_indices_type)
2436
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2837
+ if len(sm.first) == 0:
2838
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2839
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2840
+ else:
2841
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2842
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2437
2843
  return (pts,weights)
2438
2844
  if isinstance(slicer, mps._KSlicer_Matrix1_f32):
2439
2845
  with nogil:
2440
2846
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2441
- pts = np.asarray(sm.first,dtype=python_indices_type)
2442
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2847
+ if len(sm.first) == 0:
2848
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2849
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2850
+ else:
2851
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2852
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2443
2853
  return (pts,weights)
2444
2854
  if isinstance(slicer, mps._KSlicer_Matrix0_f64):
2445
2855
  with nogil:
2446
2856
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix0_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2447
- pts = np.asarray(sm.first,dtype=python_indices_type)
2448
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2857
+ if len(sm.first) == 0:
2858
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2859
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2860
+ else:
2861
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2862
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2449
2863
  return (pts,weights)
2450
2864
  if isinstance(slicer, mps._KSlicer_Matrix1_f64):
2451
2865
  with nogil:
2452
2866
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_Matrix1_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2453
- pts = np.asarray(sm.first,dtype=python_indices_type)
2454
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2867
+ if len(sm.first) == 0:
2868
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2869
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2870
+ else:
2871
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2872
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2455
2873
  return (pts,weights)
2456
2874
  if isinstance(slicer, mps._Slicer_Matrix0_i32):
2457
2875
  with nogil:
2458
2876
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2459
- pts = np.asarray(sm.first,dtype=python_indices_type)
2460
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2877
+ if len(sm.first) == 0:
2878
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2879
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2880
+ else:
2881
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2882
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2461
2883
  return (pts,weights)
2462
2884
  if isinstance(slicer, mps._Slicer_Matrix1_i32):
2463
2885
  with nogil:
2464
2886
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2465
- pts = np.asarray(sm.first,dtype=python_indices_type)
2466
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2887
+ if len(sm.first) == 0:
2888
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2889
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2890
+ else:
2891
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2892
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2467
2893
  return (pts,weights)
2468
2894
  if isinstance(slicer, mps._Slicer_Matrix0_i64):
2469
2895
  with nogil:
2470
2896
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2471
- pts = np.asarray(sm.first,dtype=python_indices_type)
2472
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2897
+ if len(sm.first) == 0:
2898
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2899
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2900
+ else:
2901
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2902
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2473
2903
  return (pts,weights)
2474
2904
  if isinstance(slicer, mps._Slicer_Matrix1_i64):
2475
2905
  with nogil:
2476
2906
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2477
- pts = np.asarray(sm.first,dtype=python_indices_type)
2478
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2907
+ if len(sm.first) == 0:
2908
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2909
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2910
+ else:
2911
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2912
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2479
2913
  return (pts,weights)
2480
2914
  if isinstance(slicer, mps._Slicer_Matrix0_f32):
2481
2915
  with nogil:
2482
2916
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2483
- pts = np.asarray(sm.first,dtype=python_indices_type)
2484
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2917
+ if len(sm.first) == 0:
2918
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2919
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2920
+ else:
2921
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2922
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2485
2923
  return (pts,weights)
2486
2924
  if isinstance(slicer, mps._Slicer_Matrix1_f32):
2487
2925
  with nogil:
2488
2926
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2489
- pts = np.asarray(sm.first,dtype=python_indices_type)
2490
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2927
+ if len(sm.first) == 0:
2928
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2929
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2930
+ else:
2931
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2932
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2491
2933
  return (pts,weights)
2492
2934
  if isinstance(slicer, mps._Slicer_Matrix0_f64):
2493
2935
  with nogil:
2494
2936
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix0_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2495
- pts = np.asarray(sm.first,dtype=python_indices_type)
2496
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2937
+ if len(sm.first) == 0:
2938
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2939
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2940
+ else:
2941
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2942
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2497
2943
  return (pts,weights)
2498
2944
  if isinstance(slicer, mps._Slicer_Matrix1_f64):
2499
2945
  with nogil:
2500
2946
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_Matrix1_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2501
- pts = np.asarray(sm.first,dtype=python_indices_type)
2502
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2947
+ if len(sm.first) == 0:
2948
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2949
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2950
+ else:
2951
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2952
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2503
2953
  return (pts,weights)
2504
2954
  if isinstance(slicer, mps._KSlicer_GudhiCohomology0_i32):
2505
2955
  with nogil:
2506
2956
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_GudhiCohomology0_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2507
- pts = np.asarray(sm.first,dtype=python_indices_type)
2508
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2957
+ if len(sm.first) == 0:
2958
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2959
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2960
+ else:
2961
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2962
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2509
2963
  return (pts,weights)
2510
2964
  if isinstance(slicer, mps._KSlicer_GudhiCohomology0_i64):
2511
2965
  with nogil:
2512
2966
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_GudhiCohomology0_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2513
- pts = np.asarray(sm.first,dtype=python_indices_type)
2514
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2967
+ if len(sm.first) == 0:
2968
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2969
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2970
+ else:
2971
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2972
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2515
2973
  return (pts,weights)
2516
2974
  if isinstance(slicer, mps._KSlicer_GudhiCohomology0_f32):
2517
2975
  with nogil:
2518
2976
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_GudhiCohomology0_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2519
- pts = np.asarray(sm.first,dtype=python_indices_type)
2520
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2977
+ if len(sm.first) == 0:
2978
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2979
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2980
+ else:
2981
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2982
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2521
2983
  return (pts,weights)
2522
2984
  if isinstance(slicer, mps._KSlicer_GudhiCohomology0_f64):
2523
2985
  with nogil:
2524
2986
  sm = get_hilbert_signed_measure(dereference(<C_KSlicer_GudhiCohomology0_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2525
- pts = np.asarray(sm.first,dtype=python_indices_type)
2526
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2987
+ if len(sm.first) == 0:
2988
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2989
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
2990
+ else:
2991
+ pts = np.asarray(sm.first,dtype=python_indices_type)
2992
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2527
2993
  return (pts,weights)
2528
2994
  if isinstance(slicer, mps._Slicer_GudhiCohomology0_i32):
2529
2995
  with nogil:
2530
2996
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_GudhiCohomology0_i32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2531
- pts = np.asarray(sm.first,dtype=python_indices_type)
2532
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2997
+ if len(sm.first) == 0:
2998
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
2999
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
3000
+ else:
3001
+ pts = np.asarray(sm.first,dtype=python_indices_type)
3002
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2533
3003
  return (pts,weights)
2534
3004
  if isinstance(slicer, mps._Slicer_GudhiCohomology0_i64):
2535
3005
  with nogil:
2536
3006
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_GudhiCohomology0_i64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2537
- pts = np.asarray(sm.first,dtype=python_indices_type)
2538
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
3007
+ if len(sm.first) == 0:
3008
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
3009
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
3010
+ else:
3011
+ pts = np.asarray(sm.first,dtype=python_indices_type)
3012
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2539
3013
  return (pts,weights)
2540
3014
  if isinstance(slicer, mps._Slicer_GudhiCohomology0_f32):
2541
3015
  with nogil:
2542
3016
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_GudhiCohomology0_f32*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2543
- pts = np.asarray(sm.first,dtype=python_indices_type)
2544
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
3017
+ if len(sm.first) == 0:
3018
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
3019
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
3020
+ else:
3021
+ pts = np.asarray(sm.first,dtype=python_indices_type)
3022
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2545
3023
  return (pts,weights)
2546
3024
  if isinstance(slicer, mps._Slicer_GudhiCohomology0_f64):
2547
3025
  with nogil:
2548
3026
  sm = get_hilbert_signed_measure(dereference(<C_Slicer_GudhiCohomology0_f64*>(slicer_ptr)),container_ptr, c_grid_shape,degrees, zero_pad, n_jobs, verbose, ignore_inf)
2549
- pts = np.asarray(sm.first,dtype=python_indices_type)
2550
- weights = np.asarray(sm.second,dtype=python_tensor_dtype)
3027
+ if len(sm.first) == 0:
3028
+ pts = np.empty(shape=(0, slicer.num_parameters), dtype=python_indices_type)
3029
+ weights = np.empty(shape=(0), dtype=python_tensor_dtype)
3030
+ else:
3031
+ pts = np.asarray(sm.first,dtype=python_indices_type)
3032
+ weights = np.asarray(sm.second,dtype=python_tensor_dtype)
2551
3033
  return (pts,weights)
2552
3034
  raise ValueError(f"Unsupported slicer type {type(slicer)}")