multipers 2.3.3b2__cp313-cp313-win_amd64.whl → 2.3.3b3__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.

Binary file
Binary file
Binary file
@@ -758,6 +758,8 @@ class SignedMeasureFormatter(BaseEstimator, TransformerMixin):
758
758
  ) = self._get_filtration_bounds(X, axis=ax)
759
759
  self._filtrations_bounds.append(filtration_bounds)
760
760
  self._normalization_factors.append(normalization_factors)
761
+ self._filtrations_bounds = self._backend.astensor(self._filtrations_bounds)
762
+ self._normalization_factors = self._backend.astensor(self._normalization_factors)
761
763
  # else:
762
764
  # (
763
765
  # self._filtrations_bounds,
@@ -782,9 +784,9 @@ class SignedMeasureFormatter(BaseEstimator, TransformerMixin):
782
784
  ]
783
785
  # axis, filtration_values
784
786
  filtration_values = [
785
- compute_grid(
787
+ self._backend.astensor(compute_grid(
786
788
  f_ax.T, resolution=self.resolution, strategy=self.grid_strategy
787
- )
789
+ ))
788
790
  for f_ax in filtration_values
789
791
  ]
790
792
  self._infered_grids = filtration_values
multipers/plots.py CHANGED
@@ -1,11 +1,11 @@
1
1
  from typing import Optional
2
+ from warnings import warn
2
3
 
3
4
  import matplotlib.pyplot as plt
4
5
  import numpy as np
5
6
  from numpy.typing import ArrayLike
6
- from warnings import warn
7
- from multipers.array_api import to_numpy
8
7
 
8
+ from multipers.array_api import to_numpy
9
9
 
10
10
 
11
11
  def _plot_rectangle(rectangle: np.ndarray, weight, **plt_kwargs):
@@ -206,9 +206,9 @@ def plot_surface(
206
206
 
207
207
  def plot_surfaces(HF, size=4, **plt_args):
208
208
  grid, hf = HF
209
- assert hf.ndim == 3, (
210
- f"Found hf.shape = {hf.shape}, expected ndim = 3 : degree, 2-parameter surface."
211
- )
209
+ assert (
210
+ hf.ndim == 3
211
+ ), f"Found hf.shape = {hf.shape}, expected ndim = 3 : degree, 2-parameter surface."
212
212
  num_degrees = hf.shape[0]
213
213
  fig, axes = plt.subplots(
214
214
  nrows=1, ncols=num_degrees, figsize=(num_degrees * size, size)
@@ -388,7 +388,19 @@ def plot_simplicial_complex(
388
388
  return out
389
389
 
390
390
 
391
- def plot_point_cloud(pts, function, x, y, mma=None, degree=None):
391
+ def plot_point_cloud(
392
+ pts,
393
+ function,
394
+ x,
395
+ y,
396
+ mma=None,
397
+ degree=None,
398
+ ball_alpha=0.3,
399
+ point_cmap="viridis",
400
+ color_bias=1,
401
+ ball_color=None,
402
+ point_size=20,
403
+ ):
392
404
  if mma is not None:
393
405
  fig, (a, b) = plt.subplots(ncols=2, figsize=(15, 5))
394
406
  plt.sca(a)
@@ -403,22 +415,23 @@ def plot_point_cloud(pts, function, x, y, mma=None, degree=None):
403
415
  plt.scatter([x], [y], c="r", zorder=10)
404
416
  plt.text(x + 0.01 * (b - a), y + 0.01 * (d - c), f"({x},{y})")
405
417
  return
406
- values = 1 - function
418
+ values = -function
407
419
  qs = np.quantile(values, np.linspace(0, 1, 100))
408
420
 
409
421
  def color_idx(d):
410
- return np.searchsorted(qs, d) / 100
422
+ return np.searchsorted(qs, d * color_bias) / 100
411
423
 
412
- from matplotlib.pyplot import get_cmap
413
424
  from matplotlib.collections import PatchCollection
425
+ from matplotlib.pyplot import get_cmap
414
426
 
415
427
  def color(d):
416
- return get_cmap("viridis")([0, color_idx(d), 1])[1]
428
+ return get_cmap(point_cmap)([0, color_idx(d), 1])[1]
417
429
 
430
+ _colors = np.array([color(v) for v in values])
418
431
  ax = plt.gca()
419
432
  idx = function <= y
420
- circles = [plt.Circle(pt, x, color=color(c)) for pt, c in zip(pts[idx], function)]
421
- pc = PatchCollection(circles, alpha=0.3)
433
+ circles = [plt.Circle(pt, x) for pt, c in zip(pts[idx], function)]
434
+ pc = PatchCollection(circles, alpha=ball_alpha, color=ball_color)
422
435
  ax.add_collection(pc)
423
- plt.scatter(*pts.T, c=-function, s=20)
436
+ plt.scatter(*pts.T, c=_colors, s=point_size)
424
437
  ax.set_aspect(1)
Binary file
Binary file
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_bitmapf32(image, **slicer_kwargs):
19879
+ def _from_bitmapf64(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_bitmapf32(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.float32) - _Slicer._inf_value()
19898
- cdef float[:,:] F = filtration_values
19899
- cdef float[:,:] c_img = image.reshape(-1,num_parameters)
19897
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float64) - _Slicer._inf_value()
19898
+ cdef double[:,:] F = filtration_values
19899
+ cdef double[:,:] c_img = image.reshape(-1,num_parameters)
19900
19900
  with nogil:
19901
19901
  for i in range(num_gens):
19902
19902
  # with gil:
@@ -19914,7 +19914,7 @@ def _from_bitmapf32(image, **slicer_kwargs):
19914
19914
  # print(f"F = {np.asarray(F[i])}")
19915
19915
  slicer = _Slicer(gen_maps, gen_dims, filtration_values)
19916
19916
  return slicer
19917
- def _from_bitmapf64(image, **slicer_kwargs):
19917
+ def _from_bitmapf32(image, **slicer_kwargs):
19918
19918
  from multipers import Slicer
19919
19919
  dtype = slicer_kwargs.get("dtype", image.dtype)
19920
19920
  slicer_kwargs["dtype"] = dtype
@@ -19932,9 +19932,9 @@ def _from_bitmapf64(image, **slicer_kwargs):
19932
19932
  cdef cset[unsigned int] vertices
19933
19933
 
19934
19934
  cdef unsigned int num_gens = gen_dims.size()
19935
- filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float64) - _Slicer._inf_value()
19936
- cdef double[:,:] F = filtration_values
19937
- cdef double[:,:] c_img = image.reshape(-1,num_parameters)
19935
+ filtration_values = np.zeros(shape=(num_gens, num_parameters), dtype = np.float32) - _Slicer._inf_value()
19936
+ cdef float[:,:] F = filtration_values
19937
+ cdef float[:,:] c_img = image.reshape(-1,num_parameters)
19938
19938
  with nogil:
19939
19939
  for i in range(num_gens):
19940
19940
  # with gil:
@@ -20031,10 +20031,10 @@ def _from_bitmapi64(image, **slicer_kwargs):
20031
20031
 
20032
20032
  def from_bitmap(img, **kwargs):
20033
20033
  img = np.asarray(img)
20034
- if img.dtype == np.float32:
20035
- return _from_bitmapf32(img, **kwargs)
20036
20034
  if img.dtype == np.float64:
20037
20035
  return _from_bitmapf64(img, **kwargs)
20036
+ if img.dtype == np.float32:
20037
+ return _from_bitmapf32(img, **kwargs)
20038
20038
  if img.dtype == np.int32:
20039
20039
  return _from_bitmapi32(img, **kwargs)
20040
20040
  if img.dtype == np.int64:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multipers
3
- Version: 2.3.3b2
3
+ Version: 2.3.3b3
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>
@@ -62,6 +62,11 @@ or
62
62
  ```sh
63
63
  conda install multipers -c conda-forge
64
64
  ```
65
+ Pre-releases are available via
66
+ ```sh
67
+ pip install --pre multipers
68
+ ```
69
+ These release usually contain small bugfixes or unstable new features.
65
70
 
66
71
  Windows support is experimental, and some core dependencies are not available on Windows.
67
72
  We hence recommend Windows user to use [WSL](https://learn.microsoft.com/en-us/windows/wsl/).
@@ -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.cp313-win_amd64.pyd,sha256=AWLBM3j-WLvRT2AonHXJ3UpKED96sSSXyGX15S-_zCY,332288
8
+ multipers/function_rips.cp313-win_amd64.pyd,sha256=BjzvftXnqrGN9Hfb0wxqSw7J8saVvvi8f4onqZea2qw,332288
9
9
  multipers/function_rips.pyx,sha256=j5NjbK3YrAv_2s8YHB1JB0k6m9NC7RQCSFlJe-w_kgE,5252
10
- multipers/grids.cp313-win_amd64.pyd,sha256=zDaWATjzru-ssOvDNDjLEig19nnMtDK8nwh0OuJZfOY,479744
10
+ multipers/grids.cp313-win_amd64.pyd,sha256=smEAJQizN6-i17it9Q_QKPNEquC-QwMfeBsKGwZmGVo,479744
11
11
  multipers/grids.pyx,sha256=ONN_RKkuxqwb9IaS9gd42FUGaiBLc8QWcd3L-ubZjKE,16575
12
- multipers/io.cp313-win_amd64.pyd,sha256=tB_dihFQQ-rH2Jteo2lu13bwEhQrCatRfv4DqCtwO5c,220160
12
+ multipers/io.cp313-win_amd64.pyd,sha256=nsR1uxz8RxxEjBIEomx85uLZamYJQIHtmBL96xMcYcE,220160
13
13
  multipers/io.pyx,sha256=pQBH_rSqaCZqDSxTLnhlyECP3fLbX2tR_RKJHydHm_0,22210
14
- multipers/mma_structures.cp313-win_amd64.pyd,sha256=tKLN0N-1JEKpcu27ydz7Iw0tF11SLOpNPCgGDowYPPA,1280000
14
+ multipers/mma_structures.cp313-win_amd64.pyd,sha256=ydSlPIUR9lQioHjX92WxEJ_wMBcECaFjqFXSHb3omA4,1280000
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.cp313-win_amd64.pyd,sha256=0xD3CHgNT5sJBELk3ONbpbWc32q097sqTXWM2aWjb-Q,451072
19
+ multipers/multiparameter_module_approximation.cp313-win_amd64.pyd,sha256=yKB0jdGml3d7zODkwLUEnWGn6TwmZj7od5d0fNfPbk8,451072
20
20
  multipers/multiparameter_module_approximation.pyx,sha256=wp7la7Z9wBngnfw6WOVddf93mPyXf4HfNT6dKW2Z0r0,9030
21
21
  multipers/pickle.py,sha256=YYVt4iHiD16E1x5Yn_4mX6P5P8rKi56pNGjJo5IzPhc,2579
22
- multipers/plots.py,sha256=UrVWFQvc7csmRIhTbY-3J1VQh78EjpaduCk76dbt-x0,14229
23
- multipers/point_measure.cp313-win_amd64.pyd,sha256=-f6QCm1pYOwbxaXEY43DXXMQ0R7lLl0D4wRhDeZoUXc,581120
22
+ multipers/plots.py,sha256=hvnm3xESdsQoo4dppf4x0pJUwvPwwGKYL93X56t7l5E,14437
23
+ multipers/point_measure.cp313-win_amd64.pyd,sha256=5ui0BcJjuq0pNiScV3uMt9S_5GKPfWbmef1S75n323s,581120
24
24
  multipers/point_measure.pyx,sha256=DVhal6HgCCuALSJMcHHKOW16CwDQCVTc2PpK8cGCqx8,12109
25
- multipers/simplex_tree_multi.cp313-win_amd64.pyd,sha256=DFGYgPHVXdqKIi3Y-F5LMO3usVpVRdaev8_tASzuCak,3611136
25
+ multipers/simplex_tree_multi.cp313-win_amd64.pyd,sha256=LnIh3Up7nO8Rn_hf7OpfXJNwRJw7kwb5z1ZkMOk9HY4,3611136
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.cp313-win_amd64.pyd,sha256=vLMl-nktPZsNwlO5WcOUZ9av2ht-n-5J-u8Q07s7H_0,11667968
29
+ multipers/slicer.cp313-win_amd64.pyd,sha256=m5czykJkxRoOBCj9JN-MsMuGRQTGTTipbExH1e67CkA,11667456
30
30
  multipers/slicer.pxd,sha256=fzA-lL_QWyUMf9rRSpcKG35QNS9UXEmVC9r7kR0geho,185230
31
31
  multipers/slicer.pxd.tp,sha256=fLOUPtPGqiY9o1fPDyc_whBrgKLh_6HVfvl7OtE-34Y,10243
32
- multipers/slicer.pyx,sha256=SeG0uXmtVFloCXLG2R4qkJ_QtKBeqky3EcEAGsiW01o,894041
32
+ multipers/slicer.pyx,sha256=X9rPbMEGhcabYNVFEhBgl7kSw2hOGSu-LuT1UUR6p-c,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=MGxteZRNFvOPuNxCeJEp3iFKLLqHgfOk9EVeqM1OqIU,58131
149
+ multipers/ml/signed_measures.py,sha256=46O1jQs6qsT5Qbu5dgVt_f8VENWQVZt5_0aybQYAGRo,58337
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.3b2.dist-info/licenses/LICENSE,sha256=UsQRnvlo_9wpQS9DNt52GEraERHwK2GIRwuqr2Yv5JI,1071
182
- multipers-2.3.3b2.dist-info/METADATA,sha256=dzqMyVIOk45QhWOjmyZRVi4oT6P6ogNxcGZ9hoSfemw,9672
183
- multipers-2.3.3b2.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
184
- multipers-2.3.3b2.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
185
- multipers-2.3.3b2.dist-info/RECORD,,
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=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
184
+ multipers-2.3.3b3.dist-info/top_level.txt,sha256=L9e0AGmhRzrNw9FpuUx-zlqi5NcBOmrI9wYY8kYWr8A,10
185
+ multipers-2.3.3b3.dist-info/RECORD,,