multipers 2.4.0b1__cp312-cp312-macosx_11_0_arm64.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.
Files changed (184) hide show
  1. multipers/.dylibs/libboost_timer.dylib +0 -0
  2. multipers/.dylibs/libc++.1.0.dylib +0 -0
  3. multipers/.dylibs/libtbb.12.17.dylib +0 -0
  4. multipers/__init__.py +33 -0
  5. multipers/_signed_measure_meta.py +426 -0
  6. multipers/_slicer_meta.py +231 -0
  7. multipers/array_api/__init__.py +62 -0
  8. multipers/array_api/numpy.py +124 -0
  9. multipers/array_api/torch.py +133 -0
  10. multipers/data/MOL2.py +458 -0
  11. multipers/data/UCR.py +18 -0
  12. multipers/data/__init__.py +1 -0
  13. multipers/data/graphs.py +466 -0
  14. multipers/data/immuno_regions.py +27 -0
  15. multipers/data/minimal_presentation_to_st_bf.py +0 -0
  16. multipers/data/pytorch2simplextree.py +91 -0
  17. multipers/data/shape3d.py +101 -0
  18. multipers/data/synthetic.py +113 -0
  19. multipers/distances.py +202 -0
  20. multipers/filtration_conversions.pxd +736 -0
  21. multipers/filtration_conversions.pxd.tp +226 -0
  22. multipers/filtrations/__init__.py +21 -0
  23. multipers/filtrations/density.py +529 -0
  24. multipers/filtrations/filtrations.py +480 -0
  25. multipers/filtrations.pxd +534 -0
  26. multipers/filtrations.pxd.tp +332 -0
  27. multipers/function_rips.cpython-312-darwin.so +0 -0
  28. multipers/function_rips.pyx +104 -0
  29. multipers/grids.cpython-312-darwin.so +0 -0
  30. multipers/grids.pyx +538 -0
  31. multipers/gudhi/Persistence_slices_interface.h +213 -0
  32. multipers/gudhi/Simplex_tree_interface.h +274 -0
  33. multipers/gudhi/Simplex_tree_multi_interface.h +648 -0
  34. multipers/gudhi/gudhi/Bitmap_cubical_complex.h +450 -0
  35. multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +1070 -0
  36. multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +579 -0
  37. multipers/gudhi/gudhi/Debug_utils.h +52 -0
  38. multipers/gudhi/gudhi/Degree_rips_bifiltration.h +2307 -0
  39. multipers/gudhi/gudhi/Dynamic_multi_parameter_filtration.h +2524 -0
  40. multipers/gudhi/gudhi/Fields/Multi_field.h +453 -0
  41. multipers/gudhi/gudhi/Fields/Multi_field_operators.h +460 -0
  42. multipers/gudhi/gudhi/Fields/Multi_field_shared.h +444 -0
  43. multipers/gudhi/gudhi/Fields/Multi_field_small.h +584 -0
  44. multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +490 -0
  45. multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +580 -0
  46. multipers/gudhi/gudhi/Fields/Z2_field.h +391 -0
  47. multipers/gudhi/gudhi/Fields/Z2_field_operators.h +389 -0
  48. multipers/gudhi/gudhi/Fields/Zp_field.h +493 -0
  49. multipers/gudhi/gudhi/Fields/Zp_field_operators.h +384 -0
  50. multipers/gudhi/gudhi/Fields/Zp_field_shared.h +492 -0
  51. multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +337 -0
  52. multipers/gudhi/gudhi/Matrix.h +2200 -0
  53. multipers/gudhi/gudhi/Multi_filtration/Multi_parameter_generator.h +1712 -0
  54. multipers/gudhi/gudhi/Multi_filtration/multi_filtration_conversions.h +237 -0
  55. multipers/gudhi/gudhi/Multi_filtration/multi_filtration_utils.h +225 -0
  56. multipers/gudhi/gudhi/Multi_parameter_filtered_complex.h +485 -0
  57. multipers/gudhi/gudhi/Multi_parameter_filtration.h +2643 -0
  58. multipers/gudhi/gudhi/Multi_persistence/Box.h +233 -0
  59. multipers/gudhi/gudhi/Multi_persistence/Line.h +309 -0
  60. multipers/gudhi/gudhi/Multi_persistence/Multi_parameter_filtered_complex_pcoh_interface.h +268 -0
  61. multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_cohomology.h +159 -0
  62. multipers/gudhi/gudhi/Multi_persistence/Persistence_interface_matrix.h +463 -0
  63. multipers/gudhi/gudhi/Multi_persistence/Point.h +853 -0
  64. multipers/gudhi/gudhi/Off_reader.h +173 -0
  65. multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +834 -0
  66. multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +838 -0
  67. multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +833 -0
  68. multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +1367 -0
  69. multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +1157 -0
  70. multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +869 -0
  71. multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +905 -0
  72. multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +122 -0
  73. multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +260 -0
  74. multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +288 -0
  75. multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +170 -0
  76. multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +247 -0
  77. multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +571 -0
  78. multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +182 -0
  79. multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +130 -0
  80. multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +235 -0
  81. multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +312 -0
  82. multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +1092 -0
  83. multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +923 -0
  84. multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +914 -0
  85. multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +930 -0
  86. multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +1071 -0
  87. multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +203 -0
  88. multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +886 -0
  89. multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +984 -0
  90. multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +1213 -0
  91. multipers/gudhi/gudhi/Persistence_matrix/index_mapper.h +58 -0
  92. multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +227 -0
  93. multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +200 -0
  94. multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +166 -0
  95. multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +319 -0
  96. multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +562 -0
  97. multipers/gudhi/gudhi/Persistence_on_a_line.h +152 -0
  98. multipers/gudhi/gudhi/Persistence_on_rectangle.h +617 -0
  99. multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +118 -0
  100. multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +173 -0
  101. multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +128 -0
  102. multipers/gudhi/gudhi/Persistent_cohomology.h +769 -0
  103. multipers/gudhi/gudhi/Points_off_io.h +171 -0
  104. multipers/gudhi/gudhi/Projective_cover_kernel.h +379 -0
  105. multipers/gudhi/gudhi/Simple_object_pool.h +69 -0
  106. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +559 -0
  107. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +83 -0
  108. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +121 -0
  109. multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +277 -0
  110. multipers/gudhi/gudhi/Simplex_tree/filtration_value_utils.h +155 -0
  111. multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +62 -0
  112. multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +27 -0
  113. multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +60 -0
  114. multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +105 -0
  115. multipers/gudhi/gudhi/Simplex_tree.h +3170 -0
  116. multipers/gudhi/gudhi/Slicer.h +848 -0
  117. multipers/gudhi/gudhi/Thread_safe_slicer.h +393 -0
  118. multipers/gudhi/gudhi/distance_functions.h +62 -0
  119. multipers/gudhi/gudhi/graph_simplicial_complex.h +104 -0
  120. multipers/gudhi/gudhi/multi_simplex_tree_helpers.h +147 -0
  121. multipers/gudhi/gudhi/persistence_interval.h +263 -0
  122. multipers/gudhi/gudhi/persistence_matrix_options.h +188 -0
  123. multipers/gudhi/gudhi/reader_utils.h +367 -0
  124. multipers/gudhi/gudhi/simple_mdspan.h +484 -0
  125. multipers/gudhi/gudhi/slicer_helpers.h +779 -0
  126. multipers/gudhi/tmp_h0_pers/mma_interface_h0.h +223 -0
  127. multipers/gudhi/tmp_h0_pers/naive_merge_tree.h +536 -0
  128. multipers/io.cpython-312-darwin.so +0 -0
  129. multipers/io.pyx +472 -0
  130. multipers/ml/__init__.py +0 -0
  131. multipers/ml/accuracies.py +90 -0
  132. multipers/ml/invariants_with_persistable.py +79 -0
  133. multipers/ml/kernels.py +176 -0
  134. multipers/ml/mma.py +713 -0
  135. multipers/ml/one.py +472 -0
  136. multipers/ml/point_clouds.py +352 -0
  137. multipers/ml/signed_measures.py +1667 -0
  138. multipers/ml/sliced_wasserstein.py +461 -0
  139. multipers/ml/tools.py +113 -0
  140. multipers/mma_structures.cpython-312-darwin.so +0 -0
  141. multipers/mma_structures.pxd +134 -0
  142. multipers/mma_structures.pyx +1483 -0
  143. multipers/mma_structures.pyx.tp +1126 -0
  144. multipers/multi_parameter_rank_invariant/diff_helpers.h +85 -0
  145. multipers/multi_parameter_rank_invariant/euler_characteristic.h +95 -0
  146. multipers/multi_parameter_rank_invariant/function_rips.h +317 -0
  147. multipers/multi_parameter_rank_invariant/hilbert_function.h +761 -0
  148. multipers/multi_parameter_rank_invariant/persistence_slices.h +149 -0
  149. multipers/multi_parameter_rank_invariant/rank_invariant.h +350 -0
  150. multipers/multiparameter_edge_collapse.py +41 -0
  151. multipers/multiparameter_module_approximation/approximation.h +2541 -0
  152. multipers/multiparameter_module_approximation/debug.h +107 -0
  153. multipers/multiparameter_module_approximation/format_python-cpp.h +292 -0
  154. multipers/multiparameter_module_approximation/utilities.h +428 -0
  155. multipers/multiparameter_module_approximation.cpython-312-darwin.so +0 -0
  156. multipers/multiparameter_module_approximation.pyx +286 -0
  157. multipers/ops.cpython-312-darwin.so +0 -0
  158. multipers/ops.pyx +231 -0
  159. multipers/pickle.py +89 -0
  160. multipers/plots.py +550 -0
  161. multipers/point_measure.cpython-312-darwin.so +0 -0
  162. multipers/point_measure.pyx +409 -0
  163. multipers/simplex_tree_multi.cpython-312-darwin.so +0 -0
  164. multipers/simplex_tree_multi.pxd +136 -0
  165. multipers/simplex_tree_multi.pyx +11719 -0
  166. multipers/simplex_tree_multi.pyx.tp +2102 -0
  167. multipers/slicer.cpython-312-darwin.so +0 -0
  168. multipers/slicer.pxd +2097 -0
  169. multipers/slicer.pxd.tp +263 -0
  170. multipers/slicer.pyx +13042 -0
  171. multipers/slicer.pyx.tp +1259 -0
  172. multipers/tensor/tensor.h +672 -0
  173. multipers/tensor.pxd +13 -0
  174. multipers/test.pyx +44 -0
  175. multipers/tests/__init__.py +70 -0
  176. multipers/torch/__init__.py +1 -0
  177. multipers/torch/diff_grids.py +240 -0
  178. multipers/torch/rips_density.py +310 -0
  179. multipers/vector_interface.pxd +46 -0
  180. multipers-2.4.0b1.dist-info/METADATA +131 -0
  181. multipers-2.4.0b1.dist-info/RECORD +184 -0
  182. multipers-2.4.0b1.dist-info/WHEEL +6 -0
  183. multipers-2.4.0b1.dist-info/licenses/LICENSE +21 -0
  184. multipers-2.4.0b1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,226 @@
1
+ {{py:
2
+
3
+ """
4
+ Filtrations conversions between python and C++
5
+ """
6
+
7
+ ## Value types : CTYPE, PYTHON_TYPE, short
8
+ value_types = [
9
+ ("int32_t", "np.int32", "i32"),
10
+ ("int64_t", "np.int64", "i64"),
11
+ ("float", "np.float32", "f32"),
12
+ ("double", "np.float64", "f64"),
13
+ ]
14
+
15
+
16
+ import pickle
17
+ with open("build/tmp/_filtration_names.pkl", "rb") as f:
18
+ Filtrations=pickle.load(f)
19
+
20
+ }}
21
+
22
+ # Python to C++ conversions
23
+ from multipers.filtrations cimport *
24
+ from libcpp.vector cimport vector
25
+ from libcpp cimport bool
26
+ cimport numpy as cnp
27
+ import numpy as np
28
+ from libc.stdint cimport int32_t, int64_t
29
+ from cython.operator cimport dereference
30
+
31
+
32
+
33
+
34
+
35
+
36
+ {{for CTYPE, PYTYPE, SHORT in value_types}}
37
+ ###### ------------------- PY TO CPP
38
+ #### ----------
39
+
40
+ cdef inline vector[{{CTYPE}}] _py2p_{{SHORT}}({{CTYPE}}[:] filtration) noexcept nogil:
41
+ # TODO: Is there no directer way to convert a T[:] into a vector[T]?
42
+ # A memcpy would be much quicker than a python/cython for loop...
43
+ # With a continuous memory use, we could also pass the pointers as iterators if we have access to it?
44
+ cdef vector[{{CTYPE}}] f = vector[{{CTYPE}}](len(filtration))
45
+ for i in range(len(filtration)):
46
+ f[i] = filtration[i]
47
+ return f
48
+
49
+ cdef inline vector[{{CTYPE}}] _py2p2_{{SHORT}}({{CTYPE}}[:,:] filtrations) noexcept nogil:
50
+ cdef vector[{{CTYPE}}] f = vector[{{CTYPE}}](filtrations.shape[0] * filtrations.shape[1])
51
+ k = 0
52
+ for i in range(filtrations.shape[0]):
53
+ for j in range(filtrations.shape[1]):
54
+ f[k] = filtrations[i,j]
55
+ k = k + 1
56
+ return f
57
+
58
+ cdef inline vector[Point[{{CTYPE}}]] _py2vp_{{SHORT}}({{CTYPE}}[:,:] filtrations) noexcept nogil:
59
+ cdef vector[Point[{{CTYPE}}]] out
60
+ cdef Point[{{CTYPE}}] f = Point[{{CTYPE}}](filtrations.shape[1])
61
+ out.reserve(filtrations.shape[0])
62
+ for i in range(filtrations.shape[0]):
63
+ for j in range(filtrations.shape[1]):
64
+ f[j] = filtrations[i,j]
65
+ out.emplace_back(f)
66
+ return out
67
+
68
+ cdef inline Multi_critical_filtration[{{CTYPE}}] _py2kc_{{SHORT}}({{CTYPE}}[:,:] filtrations) noexcept nogil:
69
+ # cdef {{CTYPE}}[:,:] filtrations = np.asarray(filtrations_, dtype={{PYTYPE}})
70
+ cdef vector[{{CTYPE}}] f = vector[{{CTYPE}}](filtrations.shape[0] * filtrations.shape[1])
71
+ cdef int k = 0;
72
+ for i in range(filtrations.shape[0]):
73
+ for j in range(filtrations.shape[1]):
74
+ f[k] = filtrations[i,j]
75
+ k = k + 1
76
+ cdef Multi_critical_filtration[{{CTYPE}}] out = Multi_critical_filtration[{{CTYPE}}](f.begin(), f.end(), filtrations.shape[1])
77
+ out.simplify()
78
+ return out
79
+
80
+ cdef inline One_critical_filtration[{{CTYPE}}] _py21c_{{SHORT}}({{CTYPE}}[:] filtration) noexcept nogil:
81
+ cdef One_critical_filtration[{{CTYPE}}] out = _py2p_{{SHORT}}(filtration)
82
+ return out
83
+
84
+
85
+ cdef inline vector[One_critical_filtration[{{CTYPE}}]] _py2v1c_{{SHORT}}({{CTYPE}}[:,:] filtrations) noexcept nogil:
86
+ # cdef {{CTYPE}}[:,:] filtrations = np.asarray(filtrations_, dtype={{PYTYPE}})
87
+ cdef vector[One_critical_filtration[{{CTYPE}}]] out
88
+ cdef vector[{{CTYPE}}] f = vector[{{CTYPE}}](filtrations.shape[1])
89
+ out.reserve(filtrations.shape[0])
90
+ for i in range(filtrations.shape[0]):
91
+ for j in range(filtrations.shape[1]):
92
+ f[j] = filtrations[i,j]
93
+ out.emplace_back(f)
94
+ return out
95
+
96
+ cdef inline vector[Multi_critical_filtration[{{CTYPE}}]] _py2vkc_{{SHORT}}({{CTYPE}}[:,:] filtrations) noexcept nogil:
97
+ # cdef {{CTYPE}}[:,:] filtrations = np.asarray(filtrations_, dtype={{PYTYPE}})
98
+ cdef vector[Multi_critical_filtration[{{CTYPE}}]] out
99
+ cdef vector[{{CTYPE}}] f = vector[{{CTYPE}}](filtrations.shape[1])
100
+ out.reserve(filtrations.shape[0])
101
+ for i in range(filtrations.shape[0]):
102
+ for j in range(filtrations.shape[1]):
103
+ f[j] = filtrations[i,j]
104
+ out.emplace_back(f)
105
+ return out
106
+
107
+ ###### ------------------- CPP to PY
108
+
109
+ ## tailored for Dynamic_multi_parameter_filtration
110
+ ## testing finite or not is not necessary for Multi_parameter_filtration
111
+ ## won't work for Degree_rips_filtration
112
+
113
+ ## CYTHON BUG: using tuples here will cause some weird issues.
114
+ cdef inline _ff21cview_{{SHORT}}(One_critical_filtration[{{CTYPE}}]* x, bool copy=False):
115
+ cdef Py_ssize_t num_parameters = dereference(x).num_parameters()
116
+ if not dereference(x).is_finite():
117
+ return np.full(shape=num_parameters, fill_value=dereference(x)(0,0))
118
+ cdef {{CTYPE}}[:] x_view = <{{CTYPE}}[:num_parameters]>(&(dereference(x)(0,0)))
119
+ return np.array(x_view) if copy else np.asarray(x_view)
120
+
121
+ cdef inline _ff21cview2_{{SHORT}}({{CTYPE}}* x, Py_ssize_t num_parameters, int duplicate, bool copy=False):
122
+ if duplicate:
123
+ return np.full(shape=duplicate, fill_value=dereference(x))
124
+ cdef {{CTYPE}}[:] x_view = <{{CTYPE}}[:num_parameters]>(x)
125
+ return np.array(x_view) if copy else np.asarray(x_view)
126
+
127
+ cdef inline _ff2kcview_{{SHORT}}(Multi_critical_filtration[{{CTYPE}}]* x, bool copy=False):
128
+ cdef Py_ssize_t k = dereference(x).num_generators()
129
+ cdef Py_ssize_t p = dereference(x).num_parameters()
130
+ if dereference(x).is_finite():
131
+ duplicate = 0
132
+ else:
133
+ duplicate = p
134
+ return [_ff21cview2_{{SHORT}}(&(dereference(x)(i,0)), p, duplicate, copy=copy) for i in range(k)]
135
+
136
+
137
+ cdef inline _vff21cview_{{SHORT}}(vector[One_critical_filtration[{{CTYPE}}]]& x, bool copy = False):
138
+ cdef Py_ssize_t num_stuff = x.size()
139
+ return [_ff21cview_{{SHORT}}(&(x[i]), copy=copy) for i in range(num_stuff)]
140
+
141
+ cdef inline _vff2kcview_{{SHORT}}(vector[Multi_critical_filtration[{{CTYPE}}]]& x, bool copy = False):
142
+ cdef Py_ssize_t num_stuff = x.size()
143
+ return [_ff2kcview_{{SHORT}}(&(x[i]), copy=copy) for i in range(num_stuff)]
144
+
145
+ {{endfor}}
146
+
147
+
148
+ {{for f in Filtrations}}
149
+
150
+ {{if f["multicritical"] or f["container"] == "Degree_rips_bifiltration"}}
151
+ cdef inline {{f['python']}}_2_python({{f['python']}}* x, bool copy=False, bool raw=False):
152
+ cdef Py_ssize_t k = dereference(x).num_generators()
153
+
154
+ {{if f["container"] == "Degree_rips_bifiltration"}}
155
+
156
+ cdef int num_parameters = 2
157
+
158
+ cdef {{f["c_value_type"]}}[:] data_view = <{{f["c_value_type"]}}[:k]>(&(dereference(x)(0,0)))
159
+ numpy_view = np.asarray(data_view, dtype={{f["py_value_type"]}})
160
+ if raw:
161
+ return numpy_view
162
+ return np.concatenate([numpy_view[:,None], np.arange(k, dtype={{f["py_value_type"]}})[:,None]], axis=1)
163
+
164
+ {{else}}
165
+
166
+ cdef Py_ssize_t p = dereference(x).num_parameters()
167
+ if dereference(x).is_finite():
168
+ duplicate = 0
169
+ else:
170
+ duplicate = p
171
+ # TODO : make it contiguous
172
+ return [_ff21cview2_{{f['short_value_type']}}(&(dereference(x)(i,0)), p, duplicate, copy=copy) for i in range(k)]
173
+
174
+ {{endif}}
175
+
176
+ {{else}}
177
+ # Assumes it's contiguous
178
+ cdef inline {{f['python']}}_2_python({{f['python']}}* x, bool copy=False, bool raw=False):
179
+ cdef Py_ssize_t num_parameters = dereference(x).num_parameters()
180
+ if not dereference(x).is_finite():
181
+ return np.full(shape=num_parameters, fill_value=dereference(x)(0,0))
182
+ cdef {{f['c_value_type']}}[:] x_view = <{{f['c_value_type']}}[:num_parameters]>(&(dereference(x)(0,0)))
183
+ return np.array(x_view) if copy else np.asarray(x_view)
184
+ {{endif}}
185
+
186
+ cdef inline vect_{{f['python']}}_2_python(vector[{{f['python']}}]& x, bool copy = False, bool raw=False):
187
+ cdef Py_ssize_t num_stuff = x.size()
188
+ return [{{f['python']}}_2_python(&(x[i]), copy=copy, raw=raw) for i in range(num_stuff)]
189
+
190
+
191
+ {{if f["multicritical"]}}
192
+ cdef inline {{f['python']}} python_2_{{f['python']}}({{f["c_value_type"]}}[:,:] filtrations) noexcept nogil:
193
+ cdef vector[{{CTYPE}}] f = vector[{{CTYPE}}](filtrations.shape[0] * filtrations.shape[1])
194
+ cdef int k = 0;
195
+ for i in range(filtrations.shape[0]):
196
+ for j in range(filtrations.shape[1]):
197
+ f[k] = filtrations[i,j]
198
+ k = k + 1
199
+ cdef {{f['python']}} out = {{f['python']}}(f.begin(), f.end(), filtrations.shape[1])
200
+ out.simplify()
201
+ return out
202
+ {{else}}
203
+
204
+
205
+ cdef inline {{f['python']}} python_2_{{f['python']}}({{f["c_value_type"]}}[:] filtration) noexcept nogil:
206
+ cdef int num_parameters = filtration.shape[0]
207
+ cdef {{f["python"]}} out = {{f['python']}}(num_parameters)
208
+ cdef {{f['c_value_type']}}* x
209
+ for i in range(num_parameters):
210
+ x = &out(0,i)
211
+ x[0] = filtration[i]
212
+ return out
213
+ {{endif}}
214
+
215
+ cdef inline vector[{{f['python']}}] python_2_vect_{{f['python']}}({{f["c_value_type"]}}[:,:] filtrations) noexcept nogil:
216
+ # cdef {{CTYPE}}[:,:] filtrations = np.asarray(filtrations_, dtype={{PYTYPE}})
217
+ cdef vector[{{f['python']}}] out
218
+ cdef vector[{{f["c_value_type"]}}] f = vector[{{f["c_value_type"]}}](filtrations.shape[1])
219
+ out.reserve(filtrations.shape[0])
220
+ for i in range(filtrations.shape[0]):
221
+ for j in range(filtrations.shape[1]):
222
+ f[j] = filtrations[i,j]
223
+ out.emplace_back(f)
224
+ return out
225
+
226
+ {{endfor}}
@@ -0,0 +1,21 @@
1
+ from .filtrations import (
2
+ CoreDelaunay,
3
+ Cubical,
4
+ DegreeRips,
5
+ DelaunayCodensity,
6
+ DelaunayLowerstar,
7
+ RipsCodensity,
8
+ RipsLowerstar,
9
+ RhomboidBifiltration,
10
+ )
11
+
12
+ __all__ = [
13
+ "CoreDelaunay",
14
+ "Cubical",
15
+ "DegreeRips",
16
+ "DelaunayCodensity",
17
+ "DelaunayLowerstar",
18
+ "RipsCodensity",
19
+ "RipsLowerstar",
20
+ "RhomboidBifiltration",
21
+ ]