multipers 2.3.3b3__cp312-cp312-win_amd64.whl → 2.3.3b4__cp312-cp312-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.

Binary file
Binary file
Binary file
@@ -850,7 +850,7 @@ class SignedMeasureFormatter(BaseEstimator, TransformerMixin):
850
850
 
851
851
  if self.flatten:
852
852
  out = np.concatenate(out).flatten()
853
- if self.axis == -1:
853
+ elif self.axis == -1:
854
854
  return np.asarray(out)
855
855
  else:
856
856
  return np.asarray(out)[0]
multipers/plots.py CHANGED
@@ -1,12 +1,25 @@
1
1
  from typing import Optional
2
2
  from warnings import warn
3
3
 
4
+ import matplotlib.colors as mcolors
4
5
  import matplotlib.pyplot as plt
5
6
  import numpy as np
7
+ from matplotlib.colors import ListedColormap
6
8
  from numpy.typing import ArrayLike
7
9
 
8
10
  from multipers.array_api import to_numpy
9
11
 
12
+ _custom_colors = [
13
+ "#03045e",
14
+ "#0077b6",
15
+ "#00b4d8",
16
+ "#90e0ef",
17
+ ]
18
+ _cmap = ListedColormap(_custom_colors)
19
+ _continuous_cmap = mcolors.LinearSegmentedColormap.from_list(
20
+ "continuous_cmap", _cmap.colors, N=256
21
+ )
22
+
10
23
 
11
24
  def _plot_rectangle(rectangle: np.ndarray, weight, **plt_kwargs):
12
25
  rectangle = np.asarray(rectangle)
@@ -185,7 +198,7 @@ def plot_surface(
185
198
  if discrete_surface:
186
199
  cmap = matplotlib.colormaps["gray_r"]
187
200
  else:
188
- cmap = matplotlib.colormaps["plasma"]
201
+ cmap = _cmap
189
202
  if discrete_surface:
190
203
  if has_negative_values:
191
204
  bounds = np.arange(-5, 6, 1, dtype=int)
@@ -200,7 +213,7 @@ def plot_surface(
200
213
  )
201
214
  cbar.set_ticks(ticks=bounds, labels=bounds)
202
215
  return im
203
- im = ax.pcolormesh(grid[0], grid[1], hf.T, cmap=cmap, **plt_args)
216
+ im = ax.contourf(grid[0], grid[1], hf.T, cmap=cmap, **plt_args)
204
217
  return im
205
218
 
206
219
 
Binary file
Binary file
multipers/slicer.pxd CHANGED
@@ -2013,51 +2013,51 @@ cdef extern from "multiparameter_module_approximation/approximation.h" namespace
2013
2013
 
2014
2014
  import multipers.slicer as mps
2015
2015
  from cython.operator cimport dereference
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):
2016
+ 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):
2017
2017
  import multipers.slicer as mps
2018
2018
  cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
2019
- cdef Module[double] mod
2019
+ cdef Module[float] mod
2020
2020
  if False:
2021
2021
  pass
2022
- elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f64):
2022
+ elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f32):
2023
2023
  with nogil:
2024
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2024
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2025
2025
  return mod
2026
- elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f64):
2026
+ elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f32):
2027
2027
  with nogil:
2028
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2028
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2029
2029
  return mod
2030
- elif isinstance(slicer, mps._Slicer_Matrix0_vine_f64):
2030
+ elif isinstance(slicer, mps._Slicer_Matrix0_vine_f32):
2031
2031
  with nogil:
2032
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2032
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2033
2033
  return mod
2034
- elif isinstance(slicer, mps._Slicer_Matrix1_vine_f64):
2034
+ elif isinstance(slicer, mps._Slicer_Matrix1_vine_f32):
2035
2035
  with nogil:
2036
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2036
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2037
2037
  return mod
2038
2038
  else:
2039
2039
  raise ValueError(f"Unsupported slicer type {type(slicer)}")
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):
2040
+ 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):
2041
2041
  import multipers.slicer as mps
2042
2042
  cdef intptr_t slicer_ptr = <intptr_t>(slicer.get_ptr())
2043
- cdef Module[float] mod
2043
+ cdef Module[double] mod
2044
2044
  if False:
2045
2045
  pass
2046
- elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f32):
2046
+ elif isinstance(slicer, mps._KSlicer_Matrix0_vine_f64):
2047
2047
  with nogil:
2048
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2048
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2049
2049
  return mod
2050
- elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f32):
2050
+ elif isinstance(slicer, mps._KSlicer_Matrix1_vine_f64):
2051
2051
  with nogil:
2052
- mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2052
+ mod = multiparameter_module_approximation(dereference(<C_KSlicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2053
2053
  return mod
2054
- elif isinstance(slicer, mps._Slicer_Matrix0_vine_f32):
2054
+ elif isinstance(slicer, mps._Slicer_Matrix0_vine_f64):
2055
2055
  with nogil:
2056
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2056
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix0_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2057
2057
  return mod
2058
- elif isinstance(slicer, mps._Slicer_Matrix1_vine_f32):
2058
+ elif isinstance(slicer, mps._Slicer_Matrix1_vine_f64):
2059
2059
  with nogil:
2060
- mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f32*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2060
+ mod = multiparameter_module_approximation(dereference(<C_Slicer_Matrix1_vine_f64*>(slicer_ptr)), direction, max_error, box, threshold, complete, verbose)
2061
2061
  return mod
2062
2062
  else:
2063
2063
  raise ValueError(f"Unsupported slicer type {type(slicer)}")
multipers/slicer.pyx CHANGED
@@ -19876,7 +19876,7 @@ cdef extern from "gudhi/cubical_to_boundary.h" namespace "":
19876
19876
  void _to_boundary(const vector[unsigned int]&, vector[vector[unsigned int]]&, vector[int]&) except + nogil
19877
19877
  void get_vertices(unsigned int, cset[unsigned int]&, const vector[vector[unsigned int]]&) nogil
19878
19878
 
19879
- def _from_bitmapi64(image, **slicer_kwargs):
19879
+ def _from_bitmapf32(image, **slicer_kwargs):
19880
19880
  from multipers import Slicer
19881
19881
  dtype = slicer_kwargs.get("dtype", image.dtype)
19882
19882
  slicer_kwargs["dtype"] = dtype
@@ -19894,9 +19894,9 @@ def _from_bitmapi64(image, **slicer_kwargs):
19894
19894
  cdef cset[unsigned int] vertices
19895
19895
 
19896
19896
  cdef unsigned int num_gens = gen_dims.size()
19897
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int64) - _Slicer._inf_value()
19898
- cdef int64_t[:,:] F = filtration_values
19899
- cdef int64_t[:,:] c_img = image.reshape(-1,num_parameters)
19897
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float32) - _Slicer._inf_value()
19898
+ cdef float[:,:] F = filtration_values
19899
+ cdef float[:,:] c_img = image.reshape(-1,num_parameters)
19900
19900
  with nogil:
19901
19901
  for i in range(num_gens):
19902
19902
  # with gil:
@@ -19952,7 +19952,7 @@ def _from_bitmapf64(image, **slicer_kwargs):
19952
19952
  # print(f"F = {np.asarray(F[i])}")
19953
19953
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
19954
19954
  return slicer
19955
- def _from_bitmapf32(image, **slicer_kwargs):
19955
+ def _from_bitmapi32(image, **slicer_kwargs):
19956
19956
  from multipers import Slicer
19957
19957
  dtype = slicer_kwargs.get("dtype", image.dtype)
19958
19958
  slicer_kwargs["dtype"] = dtype
@@ -19970,9 +19970,9 @@ def _from_bitmapf32(image, **slicer_kwargs):
19970
19970
  cdef cset[unsigned int] vertices
19971
19971
 
19972
19972
  cdef unsigned int num_gens = gen_dims.size()
19973
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float32) - _Slicer._inf_value()
19974
- cdef float[:,:] F = filtration_values
19975
- cdef float[:,:] c_img = image.reshape(-1,num_parameters)
19973
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int32) - _Slicer._inf_value()
19974
+ cdef int32_t[:,:] F = filtration_values
19975
+ cdef int32_t[:,:] c_img = image.reshape(-1,num_parameters)
19976
19976
  with nogil:
19977
19977
  for i in range(num_gens):
19978
19978
  # with gil:
@@ -19990,7 +19990,7 @@ def _from_bitmapf32(image, **slicer_kwargs):
19990
19990
  # print(f"F = {np.asarray(F[i])}")
19991
19991
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
19992
19992
  return slicer
19993
- def _from_bitmapi32(image, **slicer_kwargs):
19993
+ def _from_bitmapi64(image, **slicer_kwargs):
19994
19994
  from multipers import Slicer
19995
19995
  dtype = slicer_kwargs.get("dtype", image.dtype)
19996
19996
  slicer_kwargs["dtype"] = dtype
@@ -20008,9 +20008,9 @@ def _from_bitmapi32(image, **slicer_kwargs):
20008
20008
  cdef cset[unsigned int] vertices
20009
20009
 
20010
20010
  cdef unsigned int num_gens = gen_dims.size()
20011
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int32) - _Slicer._inf_value()
20012
- cdef int32_t[:,:] F = filtration_values
20013
- cdef int32_t[:,:] c_img = image.reshape(-1,num_parameters)
20011
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int64) - _Slicer._inf_value()
20012
+ cdef int64_t[:,:] F = filtration_values
20013
+ cdef int64_t[:,:] c_img = image.reshape(-1,num_parameters)
20014
20014
  with nogil:
20015
20015
  for i in range(num_gens):
20016
20016
  # with gil:
@@ -20031,14 +20031,14 @@ def _from_bitmapi32(image, **slicer_kwargs):
20031
20031
 
20032
20032
  def from_bitmap(img, **kwargs):
20033
20033
  img = np.asarray(img)
20034
- if img.dtype == np.int64:
20035
- return _from_bitmapi64(img, **kwargs)
20036
- if img.dtype == np.float64:
20037
- return _from_bitmapf64(img, **kwargs)
20038
20034
  if img.dtype == np.float32:
20039
20035
  return _from_bitmapf32(img, **kwargs)
20036
+ if img.dtype == np.float64:
20037
+ return _from_bitmapf64(img, **kwargs)
20040
20038
  if img.dtype == np.int32:
20041
20039
  return _from_bitmapi32(img, **kwargs)
20040
+ if img.dtype == np.int64:
20041
+ return _from_bitmapi64(img, **kwargs)
20042
20042
  raise ValueError(f"Invalid dtype. Got {img.dtype=}, was expecting {available_dtype=}.")
20043
20043
 
20044
20044
  def from_function_delaunay(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multipers
3
- Version: 2.3.3b3
3
+ Version: 2.3.3b4
4
4
  Summary: Multiparameter Topological Persistence for Machine Learning
5
5
  Author-email: David Loiseaux <david.lapous@proton.me>, Hannah Schreiber <hannah.schreiber@inria.fr>
6
6
  Maintainer-email: David Loiseaux <david.lapous@proton.me>
@@ -5,31 +5,31 @@ multipers/distances.py,sha256=uAZj2GtUQp50OxN2qU7sl2JqsmJ74IG9j5tZapLO2Us,6220
5
5
  multipers/filtration_conversions.pxd,sha256=Je7a3F4zS1PQn6Ul1YCXgA6p39X2FouStru-XtN-aOw,10800
6
6
  multipers/filtration_conversions.pxd.tp,sha256=_9tUvZVUA7J_RUM3q7BxY48fYgDHCUA7Xhy4nBfLLs0,3309
7
7
  multipers/filtrations.pxd,sha256=08ONkZNCjs8Nme8lcD9myPz-K662sA-EDpSwzgC2_ts,9461
8
- multipers/function_rips.cp312-win_amd64.pyd,sha256=_Qx-LIQlxIMS-RrYjU8-_MFo7LslW7ZXgQ-iZ3Uhh-A,332800
8
+ multipers/function_rips.cp312-win_amd64.pyd,sha256=vMmsB_8ArIBmqEO2PH97vQMgwcUuMiEk-l4boLFA6rw,332800
9
9
  multipers/function_rips.pyx,sha256=j5NjbK3YrAv_2s8YHB1JB0k6m9NC7RQCSFlJe-w_kgE,5252
10
- multipers/grids.cp312-win_amd64.pyd,sha256=913qTpkll40OMDGai5MpGGSKBjOyRYo9HXO76dqzTa0,479232
10
+ multipers/grids.cp312-win_amd64.pyd,sha256=P_CreKWsYECEaCNFKi8V-K_G2ACIHyyepW0kWgF-TGA,479232
11
11
  multipers/grids.pyx,sha256=ONN_RKkuxqwb9IaS9gd42FUGaiBLc8QWcd3L-ubZjKE,16575
12
- multipers/io.cp312-win_amd64.pyd,sha256=-7vO-9Qb8bGvKUKtKjBKfz0oQOCeYH7gyqvqpuJKrMA,220160
12
+ multipers/io.cp312-win_amd64.pyd,sha256=XZViksPv0mMwnWf_pDX_apJXhRV6mLgBc8SD6PVjNt4,220160
13
13
  multipers/io.pyx,sha256=pQBH_rSqaCZqDSxTLnhlyECP3fLbX2tR_RKJHydHm_0,22210
14
- multipers/mma_structures.cp312-win_amd64.pyd,sha256=cT19L3vB5fzcooFC9DY9YAgR5RWSYfaAR9EQc4LG-vA,1279488
14
+ multipers/mma_structures.cp312-win_amd64.pyd,sha256=SqWa_guCCNJvHuOW-laycyduJrztaYzz9oln158Bm1o,1279488
15
15
  multipers/mma_structures.pxd,sha256=jh1QnQRidt_VK0CK7losQi6rAl_1qG5DNuR23J42pUA,6595
16
16
  multipers/mma_structures.pyx,sha256=4zNC6ePfFKMvx0MrH-FqJVouyTMciRc49oevKDnsJhI,109530
17
17
  multipers/mma_structures.pyx.tp,sha256=hWuuk9USDFa8CbQVRHNjWSAdGgpkWKvSCNjTtVuSzwM,42299
18
18
  multipers/multiparameter_edge_collapse.py,sha256=MFt0eKQQSv2354omeIqOmzASYTKIMsYdxZHFZauQr8g,1229
19
- multipers/multiparameter_module_approximation.cp312-win_amd64.pyd,sha256=kor53XDSOq7DepMPMBlHJEoBGla7Fe1rwUM35OjoF98,451584
19
+ multipers/multiparameter_module_approximation.cp312-win_amd64.pyd,sha256=IzSXSjuUV4vk6Zg7JLlj_qfr605Lib6sEkj5lH8TtYU,451584
20
20
  multipers/multiparameter_module_approximation.pyx,sha256=wp7la7Z9wBngnfw6WOVddf93mPyXf4HfNT6dKW2Z0r0,9030
21
21
  multipers/pickle.py,sha256=YYVt4iHiD16E1x5Yn_4mX6P5P8rKi56pNGjJo5IzPhc,2579
22
- multipers/plots.py,sha256=hvnm3xESdsQoo4dppf4x0pJUwvPwwGKYL93X56t7l5E,14437
23
- multipers/point_measure.cp312-win_amd64.pyd,sha256=uBSctumMB8L1CW9pHTrigrX6vFBZnJ34yn_faNx6L3Q,573952
22
+ multipers/plots.py,sha256=aQcRpAKxwvzUiFXK2vZZLKtpZWD5eqga42BhV_FO31U,14719
23
+ multipers/point_measure.cp312-win_amd64.pyd,sha256=Y93ME2sP1eQH-LXk5mtKr7s9i94TbfS7-2jKnEImdbY,573952
24
24
  multipers/point_measure.pyx,sha256=DVhal6HgCCuALSJMcHHKOW16CwDQCVTc2PpK8cGCqx8,12109
25
- multipers/simplex_tree_multi.cp312-win_amd64.pyd,sha256=KPA0q8BDRC5TJwlKS_BgPMB-Eb9uCCt6t3FEcjEcO4A,3616256
25
+ multipers/simplex_tree_multi.cp312-win_amd64.pyd,sha256=kGJ4UBtsoaO9-CexTHf44uP1UVXOkHekHxBnKUit72g,3616256
26
26
  multipers/simplex_tree_multi.pxd,sha256=KpyDEQNPoMC2sOU9-d4LtrGXx_UVCJGxMJ1kk1AzHgU,6631
27
27
  multipers/simplex_tree_multi.pyx,sha256=reHyva5AR1lOQyiCs2_jQ2XfwHtktcQ1nmY_BNmyxhk,498156
28
28
  multipers/simplex_tree_multi.pyx.tp,sha256=fUTuIscfDlNjsImWU1YALVZ1Mf9OEkdl-IFKcRQqalI,89202
29
- multipers/slicer.cp312-win_amd64.pyd,sha256=eU9yOwMi8NSBakFu2mongAg-fxAymIPqjMmez0LICkw,11682816
30
- multipers/slicer.pxd,sha256=fzA-lL_QWyUMf9rRSpcKG35QNS9UXEmVC9r7kR0geho,185230
29
+ multipers/slicer.cp312-win_amd64.pyd,sha256=4E0J7XCInx7QAdAuYxtrZ5Vij-uDItp23of1QJ6j8No,11682816
30
+ multipers/slicer.pxd,sha256=bHcV5COzDcjhaVcL3bWSHivUYtdkSx4bdj24fVOe_DU,185230
31
31
  multipers/slicer.pxd.tp,sha256=fLOUPtPGqiY9o1fPDyc_whBrgKLh_6HVfvl7OtE-34Y,10243
32
- multipers/slicer.pyx,sha256=Ib2WvnoxnPKSetZW0WGYf4N8xMLgORTOriIf1wa8vlo,894041
32
+ multipers/slicer.pyx,sha256=SeG0uXmtVFloCXLG2R4qkJ_QtKBeqky3EcEAGsiW01o,894041
33
33
  multipers/slicer.pyx.tp,sha256=jZOdsHKMpq0nclmvlzkZUDzdjffT3_mFDVY_mnsl9Es,44523
34
34
  multipers/tbb12.dll,sha256=6AsPR4GauU53hj2xqJNM0SfLkCKCDskjy-uKeS01tCk,338944
35
35
  multipers/tbbbind_2_5.dll,sha256=8TtH7JJZlCEKF0UwfyJoiyrFt9utOI_x5AFOxpP-pGw,23040
@@ -146,7 +146,7 @@ multipers/ml/kernels.py,sha256=XWfvKY68-c9E-MpRzdNqGzGD6K24Aizx95TkiSeAtIY,6175
146
146
  multipers/ml/mma.py,sha256=mSwYqSHWGiboEiMnxArCuhHyrOExPYdML2Mbx4dTO7s,23950
147
147
  multipers/ml/one.py,sha256=np5jM8gywm65TsK1yeZ1BDWqP-Ym-7hz4brTXI_0imk,20119
148
148
  multipers/ml/point_clouds.py,sha256=nTkSjSzQy6S10-sZ0uwBp_Fs2EIWleB7yHncK2b_xLg,13770
149
- multipers/ml/signed_measures.py,sha256=46O1jQs6qsT5Qbu5dgVt_f8VENWQVZt5_0aybQYAGRo,58337
149
+ multipers/ml/signed_measures.py,sha256=LCf0gAfQ7y4q9gI7s72Y4nwgP6U8HZenwGrMDdK-azY,58339
150
150
  multipers/ml/sliced_wasserstein.py,sha256=jgq4ND3EWwwJBopqRvfJLsoOptiMHjS3zEAENBmPJDc,18644
151
151
  multipers/ml/tools.py,sha256=DOPcqmvZP2bA7M08GrwccdebwDq1HEwYdhNRGT7eZMI,3453
152
152
  multipers/multi_parameter_rank_invariant/diff_helpers.h,sha256=wMCOhAewWd6-lulLND0y8M0MZoru6zn_8J3qfXDjLds,3477
@@ -178,8 +178,8 @@ multipers/tests/__init__.py,sha256=-7Fj-zFAfBJv18trg0CPglQTmYu_ehySZGqtJzPlN8U,1
178
178
  multipers/torch/__init__.py,sha256=OLxIiZ389uCqehpUxBPUI_x1SYu531onc4tiTscAuIw,27
179
179
  multipers/torch/diff_grids.py,sha256=2YK-c351tBpj8sfzjf26fbE1l0xlWse7oVVfDHD3zwM,7492
180
180
  multipers/torch/rips_density.py,sha256=H-kmSzY8hXhmVn15Oltc71DHs1IUHg5oPRgNyWW8L4Q,11706
181
- multipers-2.3.3b3.dist-info/licenses/LICENSE,sha256=UsQRnvlo_9wpQS9DNt52GEraERHwK2GIRwuqr2Yv5JI,1071
182
- multipers-2.3.3b3.dist-info/METADATA,sha256=a2JsYZdIgYzL0FaSLFFne-amCNe6N9PWC0OOyNtTENw,9817
183
- multipers-2.3.3b3.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
184
- multipers-2.3.3b3.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
185
- multipers-2.3.3b3.dist-info/RECORD,,
181
+ multipers-2.3.3b4.dist-info/licenses/LICENSE,sha256=UsQRnvlo_9wpQS9DNt52GEraERHwK2GIRwuqr2Yv5JI,1071
182
+ multipers-2.3.3b4.dist-info/METADATA,sha256=n_srMz-MDQCYAL-DoZjzuj2Cy0vYUwG2D2HmycB0cjI,9817
183
+ multipers-2.3.3b4.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
184
+ multipers-2.3.3b4.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
185
+ multipers-2.3.3b4.dist-info/RECORD,,