multipers 2.3.5b1__cp312-cp312-win_amd64.whl → 2.3.5b2__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.

@@ -22,6 +22,13 @@ unique = _np.unique
22
22
  inf = _np.inf
23
23
  searchsorted = _np.searchsorted
24
24
  LazyTensor = None
25
+ abs = _np.abs
26
+ exp = _np.exp
27
+
28
+
29
+ def relu(x):
30
+ return _np.where(x >= 0, x, 0)
31
+
25
32
 
26
33
  # Test keops
27
34
  _is_keops_available = None
@@ -20,6 +20,9 @@ cartesian_product = _t.cartesian_prod
20
20
  inf = _t.inf
21
21
  searchsorted = _t.searchsorted
22
22
  LazyTensor = None
23
+ relu = _t.relu
24
+ abs = _t.abs
25
+ exp = _t.exp
23
26
 
24
27
 
25
28
  _is_keops_available = None
Binary file
Binary file
multipers/grids.pyx CHANGED
@@ -493,3 +493,27 @@ def _push_pts_to_lines(pts, basepoints, directions=None, api=None):
493
493
  return out
494
494
 
495
495
 
496
+ def evaluate_mod_in_grid(mod, grid, box=None):
497
+ """Given an MMA module, pushes it into the specified grid.
498
+ Useful for e.g., make it differentiable.
499
+
500
+ Input
501
+ -----
502
+ - mod: PyModule
503
+ - grid: Iterable of 1d array, for num_parameters
504
+ Ouput
505
+ -----
506
+ torch-compatible module in the format:
507
+ (num_degrees) x (num_interval of degree) x ((num_birth, num_parameter), (num_death, num_parameters))
508
+
509
+ """
510
+ (birth_sizes, death_sizes), births, deaths = mod.to_flat_idx(grid)
511
+ births = evaluate_in_grid(births, grid)
512
+ deaths = evaluate_in_grid(deaths, grid)
513
+ diff_mod = tuple(
514
+ zip(
515
+ births.split_with_sizes(birth_sizes.tolist()),
516
+ deaths.split_with_sizes(death_sizes.tolist()),
517
+ )
518
+ )
519
+ return diff_mod
Binary file
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
@@ -20777,7 +20777,7 @@ cdef extern from "gudhi/cubical_to_boundary.h" namespace "":
20777
20777
  void _to_boundary(const vector[unsigned int]&, vector[vector[unsigned int]]&, vector[int]&) except + nogil
20778
20778
  void get_vertices(unsigned int, cset[unsigned int]&, const vector[vector[unsigned int]]&) nogil
20779
20779
 
20780
- def _from_bitmapf32(image, **slicer_kwargs):
20780
+ def _from_bitmapi64(image, **slicer_kwargs):
20781
20781
  from multipers import Slicer
20782
20782
  dtype = slicer_kwargs.get("dtype", image.dtype)
20783
20783
  slicer_kwargs["dtype"] = dtype
@@ -20795,9 +20795,9 @@ def _from_bitmapf32(image, **slicer_kwargs):
20795
20795
  cdef cset[unsigned int] vertices
20796
20796
 
20797
20797
  cdef unsigned int num_gens = gen_dims.size()
20798
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float32) - _Slicer._inf_value()
20799
- cdef float[:,:] F = filtration_values
20800
- cdef float[:,:] c_img = image.reshape(-1,num_parameters)
20798
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int64) - _Slicer._inf_value()
20799
+ cdef int64_t[:,:] F = filtration_values
20800
+ cdef int64_t[:,:] c_img = image.reshape(-1,num_parameters)
20801
20801
  with nogil:
20802
20802
  for i in range(num_gens):
20803
20803
  # with gil:
@@ -20815,7 +20815,7 @@ def _from_bitmapf32(image, **slicer_kwargs):
20815
20815
  # print(f"F = {np.asarray(F[i])}")
20816
20816
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
20817
20817
  return slicer
20818
- def _from_bitmapf64(image, **slicer_kwargs):
20818
+ def _from_bitmapf32(image, **slicer_kwargs):
20819
20819
  from multipers import Slicer
20820
20820
  dtype = slicer_kwargs.get("dtype", image.dtype)
20821
20821
  slicer_kwargs["dtype"] = dtype
@@ -20833,9 +20833,9 @@ def _from_bitmapf64(image, **slicer_kwargs):
20833
20833
  cdef cset[unsigned int] vertices
20834
20834
 
20835
20835
  cdef unsigned int num_gens = gen_dims.size()
20836
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float64) - _Slicer._inf_value()
20837
- cdef double[:,:] F = filtration_values
20838
- cdef double[:,:] c_img = image.reshape(-1,num_parameters)
20836
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float32) - _Slicer._inf_value()
20837
+ cdef float[:,:] F = filtration_values
20838
+ cdef float[:,:] c_img = image.reshape(-1,num_parameters)
20839
20839
  with nogil:
20840
20840
  for i in range(num_gens):
20841
20841
  # with gil:
@@ -20853,7 +20853,7 @@ def _from_bitmapf64(image, **slicer_kwargs):
20853
20853
  # print(f"F = {np.asarray(F[i])}")
20854
20854
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
20855
20855
  return slicer
20856
- def _from_bitmapi64(image, **slicer_kwargs):
20856
+ def _from_bitmapi32(image, **slicer_kwargs):
20857
20857
  from multipers import Slicer
20858
20858
  dtype = slicer_kwargs.get("dtype", image.dtype)
20859
20859
  slicer_kwargs["dtype"] = dtype
@@ -20871,9 +20871,9 @@ def _from_bitmapi64(image, **slicer_kwargs):
20871
20871
  cdef cset[unsigned int] vertices
20872
20872
 
20873
20873
  cdef unsigned int num_gens = gen_dims.size()
20874
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int64) - _Slicer._inf_value()
20875
- cdef int64_t[:,:] F = filtration_values
20876
- cdef int64_t[:,:] c_img = image.reshape(-1,num_parameters)
20874
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int32) - _Slicer._inf_value()
20875
+ cdef int32_t[:,:] F = filtration_values
20876
+ cdef int32_t[:,:] c_img = image.reshape(-1,num_parameters)
20877
20877
  with nogil:
20878
20878
  for i in range(num_gens):
20879
20879
  # with gil:
@@ -20891,7 +20891,7 @@ def _from_bitmapi64(image, **slicer_kwargs):
20891
20891
  # print(f"F = {np.asarray(F[i])}")
20892
20892
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
20893
20893
  return slicer
20894
- def _from_bitmapi32(image, **slicer_kwargs):
20894
+ def _from_bitmapf64(image, **slicer_kwargs):
20895
20895
  from multipers import Slicer
20896
20896
  dtype = slicer_kwargs.get("dtype", image.dtype)
20897
20897
  slicer_kwargs["dtype"] = dtype
@@ -20909,9 +20909,9 @@ def _from_bitmapi32(image, **slicer_kwargs):
20909
20909
  cdef cset[unsigned int] vertices
20910
20910
 
20911
20911
  cdef unsigned int num_gens = gen_dims.size()
20912
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.int32) - _Slicer._inf_value()
20913
- cdef int32_t[:,:] F = filtration_values
20914
- cdef int32_t[:,:] c_img = image.reshape(-1,num_parameters)
20912
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float64) - _Slicer._inf_value()
20913
+ cdef double[:,:] F = filtration_values
20914
+ cdef double[:,:] c_img = image.reshape(-1,num_parameters)
20915
20915
  with nogil:
20916
20916
  for i in range(num_gens):
20917
20917
  # with gil:
@@ -20932,14 +20932,14 @@ def _from_bitmapi32(image, **slicer_kwargs):
20932
20932
 
20933
20933
  def from_bitmap(img, **kwargs):
20934
20934
  img = np.asarray(img)
20935
- if img.dtype == np.float32:
20936
- return _from_bitmapf32(img, **kwargs)
20937
- if img.dtype == np.float64:
20938
- return _from_bitmapf64(img, **kwargs)
20939
20935
  if img.dtype == np.int64:
20940
20936
  return _from_bitmapi64(img, **kwargs)
20937
+ if img.dtype == np.float32:
20938
+ return _from_bitmapf32(img, **kwargs)
20941
20939
  if img.dtype == np.int32:
20942
20940
  return _from_bitmapi32(img, **kwargs)
20941
+ if img.dtype == np.float64:
20942
+ return _from_bitmapf64(img, **kwargs)
20943
20943
  raise ValueError(f"Invalid dtype. Got {img.dtype=}, was expecting {available_dtype=}.")
20944
20944
 
20945
20945
  def from_function_delaunay(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multipers
3
- Version: 2.3.5b1
3
+ Version: 2.3.5b2
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=cJCzIC2kO-AT0k1KT4AAPwNOFW7QKT5j3XihvDhwCS0,333312
8
+ multipers/function_rips.cp312-win_amd64.pyd,sha256=B3_LMWNbLoSoxG18OQryCBd_7rwoKQPtI15xYgVN0Mo,333312
9
9
  multipers/function_rips.pyx,sha256=j5NjbK3YrAv_2s8YHB1JB0k6m9NC7RQCSFlJe-w_kgE,5252
10
- multipers/grids.cp312-win_amd64.pyd,sha256=KcpN55xbHDh-1E4ccwosbwS1UyP56rgH-kv9Ba1EQdg,478208
11
- multipers/grids.pyx,sha256=jZQta9UUEam5841CFo_LFxfGVA2ICiu22nZqRKnFtyo,18745
12
- multipers/io.cp312-win_amd64.pyd,sha256=91RonC2rkMQjFYruTUd9uUWp9hP8gzKt6t25xecMXhA,220160
10
+ multipers/grids.cp312-win_amd64.pyd,sha256=9Q1Ay_IAMY8LXEsH3h_NpKvX8QFjvm0C-E6lLdAbWDs,482816
11
+ multipers/grids.pyx,sha256=8iHLcwm5f4PXJkt6DS81RgiXgyNp5VF4KayF1vBRV4k,19521
12
+ multipers/io.cp312-win_amd64.pyd,sha256=nivmPeYtt27TAKlJfNDPTsBr8KdWI8tm6eupA-79fso,220160
13
13
  multipers/io.pyx,sha256=pQBH_rSqaCZqDSxTLnhlyECP3fLbX2tR_RKJHydHm_0,22210
14
- multipers/mma_structures.cp312-win_amd64.pyd,sha256=Ti9lCGWd-now2SOjMLoFKIbbzXy_h-qMLFP30S-Ocys,1279488
14
+ multipers/mma_structures.cp312-win_amd64.pyd,sha256=R1D-39JRgQ59bVlwn7YtR6ryugxTRSQVrEgaD6Gw-7M,1279488
15
15
  multipers/mma_structures.pxd,sha256=jh1QnQRidt_VK0CK7losQi6rAl_1qG5DNuR23J42pUA,6595
16
16
  multipers/mma_structures.pyx,sha256=1FQ_sqkpHHkCyCLLKkR9lUgZKDZFt-YgjnDd8NGmw6Q,109526
17
17
  multipers/mma_structures.pyx.tp,sha256=QLo4ZZDnFuWNot771jYkYHc9ZQq6CJIpkRkeRwGi7XA,42297
18
18
  multipers/multiparameter_edge_collapse.py,sha256=MFt0eKQQSv2354omeIqOmzASYTKIMsYdxZHFZauQr8g,1229
19
- multipers/multiparameter_module_approximation.cp312-win_amd64.pyd,sha256=T6IVvD0NGD0XtXQLtHI5D8zdDVAAM7-JrSY0RTMZfsQ,451584
19
+ multipers/multiparameter_module_approximation.cp312-win_amd64.pyd,sha256=SB4ChJPRL6ePU4bvk0Ba25Em8iQ0Ga79H2V-USTCX-A,451584
20
20
  multipers/multiparameter_module_approximation.pyx,sha256=wp7la7Z9wBngnfw6WOVddf93mPyXf4HfNT6dKW2Z0r0,9030
21
21
  multipers/pickle.py,sha256=YYVt4iHiD16E1x5Yn_4mX6P5P8rKi56pNGjJo5IzPhc,2579
22
22
  multipers/plots.py,sha256=jXENhITNIbLcLpIKibn5MXzxaeq8DEr1WLAoEU3fmTQ,15436
23
- multipers/point_measure.cp312-win_amd64.pyd,sha256=7rLwL9GDRJN3u2kiniqkrPUNYd8dgosZ__dS_rauJMQ,588288
23
+ multipers/point_measure.cp312-win_amd64.pyd,sha256=nIqHPkRfDcrb_Ttanu_c4DYFNEfh2aD7xYg7qI-j6ko,588288
24
24
  multipers/point_measure.pyx,sha256=AzlAz1C0TW6jxPllbhMxG38ISlSE7h4U-y0mT7Uzndc,14084
25
- multipers/simplex_tree_multi.cp312-win_amd64.pyd,sha256=UIB7oiFHxDieJqUikNeu42xw2ufostk-dRy-lZUQlHc,3670528
25
+ multipers/simplex_tree_multi.cp312-win_amd64.pyd,sha256=RPpUV3hgDhueCzFRleS1Qm69D8I-NAlxZbNYb3_7-D0,3670528
26
26
  multipers/simplex_tree_multi.pxd,sha256=KBX_vcNgtBjNHThUUOXp0r4HWj3EX1DGa6cX9mDi6aI,6649
27
27
  multipers/simplex_tree_multi.pyx,sha256=lzxlJnkgv43N6gZsYthIuoYKT45jaah9ogUdO1nvWBk,506429
28
28
  multipers/simplex_tree_multi.pyx.tp,sha256=_UCL4n9P0gdqccJPx05dC6lwZFlP64M4WVX0uu6gTlA,90051
29
- multipers/slicer.cp312-win_amd64.pyd,sha256=aKki_X1r9VspavlE02Um5ylynxAzV24rX-Rxp5iY9-Q,11928064
30
- multipers/slicer.pxd,sha256=RB0W089T2sFVJGdD1N9C274_GqLPqPH0Hb2nEj2WEwM,185510
29
+ multipers/slicer.cp312-win_amd64.pyd,sha256=ZK6MqRez_YeJ0PN2mNJvBW3i_hDMuwnfBVURxRmL-cA,11928064
30
+ multipers/slicer.pxd,sha256=9O6kNUijKV1GQZJVLMch39_q6JLAFzWtSeiocauZR9Q,185510
31
31
  multipers/slicer.pxd.tp,sha256=z-fdpEJWiDncVCFcwVh5Gr_MtRjIV8ln8xOPmd1B1-s,10250
32
- multipers/slicer.pyx,sha256=VpNcSM0cudBbliAUPDGjVwn2z1cgShfPzq2JVffswsc,947463
32
+ multipers/slicer.pyx,sha256=0RfFis5KVJltTXV3ffjMV2hegDDa_vFgmVRiYRXwyOM,947463
33
33
  multipers/slicer.pyx.tp,sha256=9qgb4CYhZ-hEEF42mLgfbRNbfr5CconsimVnXInDWRQ,47254
34
34
  multipers/tbb12.dll,sha256=M6QIBW4AdNhi0lTMy6FcxTPR_BaOYLcQquMZ5YZ6MD8,344576
35
35
  multipers/tbbbind_2_5.dll,sha256=Mys6mt1_Yc4-n0XrKLY4BTPD6QwsqSpbiQHrg5Yk0Bo,23552
@@ -38,8 +38,8 @@ multipers/tbbmalloc_proxy.dll,sha256=n_GlUK8IfYnRz0Piuw2mN4HmPHtyBtqDsrqoFkKyCb4
38
38
  multipers/tensor.pxd,sha256=MSmaMU0sOP9CHLmg4dym7nOGaI1S4cOdM01TQ9flI54,417
39
39
  multipers/test.pyx,sha256=-g7WU-jKrZK8H0c-6eAPsfrApjvTKrUoswVYFu8LoV4,1798
40
40
  multipers/array_api/__init__.py,sha256=jyvi7Gzd7Si_imgaodz80fcA-68MikAGk8g79_vj6yo,1545
41
- multipers/array_api/numpy.py,sha256=5XfqM4_ykFtCsn0Rel0qPceEXyzhu-6ekkbsM_94kM8,2439
42
- multipers/array_api/torch.py,sha256=Q-KiYRpBenbbqgc6NJMCCSDA7oBCrhlkgNHOt26K5co,2572
41
+ multipers/array_api/numpy.py,sha256=0Ln_jY891Jei_HQlWY9S_1-lLPYYOzXRyZknPO5ZYTc,2518
42
+ multipers/array_api/torch.py,sha256=B5ukw4m2OeHLTLaHSytTKDqdcJ4BwV8nKK3JREJAjuQ,2613
43
43
  multipers/data/MOL2.py,sha256=nLZHy2OSFN9Z2uJKsbqWOEG2R7G-uH6dCLHG48UjvR4,15428
44
44
  multipers/data/UCR.py,sha256=PuT8l3i26y0goBzIESwdgJAe6YFCyDiWSoxECcP5rhs,798
45
45
  multipers/data/__init__.py,sha256=w7uUe4LOHbdbKU4R8MNs7em65wZJN0v5ukoG1otFanQ,24
@@ -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.5b1.dist-info/licenses/LICENSE,sha256=UsQRnvlo_9wpQS9DNt52GEraERHwK2GIRwuqr2Yv5JI,1071
182
- multipers-2.3.5b1.dist-info/METADATA,sha256=N55aFbElfgLwOlIfHIzzFlflMkUYg4CcKNP4PMRekHk,9825
183
- multipers-2.3.5b1.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
184
- multipers-2.3.5b1.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
185
- multipers-2.3.5b1.dist-info/RECORD,,
181
+ multipers-2.3.5b2.dist-info/licenses/LICENSE,sha256=UsQRnvlo_9wpQS9DNt52GEraERHwK2GIRwuqr2Yv5JI,1071
182
+ multipers-2.3.5b2.dist-info/METADATA,sha256=KHctITvlAapkwilssVT9VkgDMeuatKEzPNZOU62f5Ik,9825
183
+ multipers-2.3.5b2.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
184
+ multipers-2.3.5b2.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
185
+ multipers-2.3.5b2.dist-info/RECORD,,