monai-weekly 1.4.dev2426__py3-none-any.whl → 1.4.dev2427__py3-none-any.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.
@@ -0,0 +1,170 @@
1
+ # Copyright (c) MONAI Consortium
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ from __future__ import annotations
13
+
14
+ from typing import Sequence
15
+
16
+ import torch
17
+ import torch.nn.functional as F
18
+ from torch import Tensor
19
+
20
+ from monai.config import NdarrayOrTensor
21
+ from monai.utils import convert_data_type, convert_to_dst_type, ensure_tuple_rep
22
+
23
+
24
+ def erode(mask: NdarrayOrTensor, filter_size: int | Sequence[int] = 3, pad_value: float = 1.0) -> NdarrayOrTensor:
25
+ """
26
+ Erode 2D/3D binary mask.
27
+
28
+ Args:
29
+ mask: input 2D/3D binary mask, [N,C,M,N] or [N,C,M,N,P] torch tensor or ndarray.
30
+ filter_size: erosion filter size, has to be odd numbers, default to be 3.
31
+ pad_value: the filled value for padding. We need to pad the input before filtering
32
+ to keep the output with the same size as input. Usually use default value
33
+ and not changed.
34
+
35
+ Return:
36
+ eroded mask, same shape and data type as input.
37
+
38
+ Example:
39
+
40
+ .. code-block:: python
41
+
42
+ # define a naive mask
43
+ mask = torch.zeros(3,2,3,3,3)
44
+ mask[:,:,1,1,1] = 1.0
45
+ filter_size = 3
46
+ erode_result = erode(mask, filter_size) # expect torch.zeros(3,2,3,3,3)
47
+ dilate_result = dilate(mask, filter_size) # expect torch.ones(3,2,3,3,3)
48
+ """
49
+ mask_t, *_ = convert_data_type(mask, torch.Tensor)
50
+ res_mask_t = erode_t(mask_t, filter_size=filter_size, pad_value=pad_value)
51
+ res_mask: NdarrayOrTensor
52
+ res_mask, *_ = convert_to_dst_type(src=res_mask_t, dst=mask)
53
+ return res_mask
54
+
55
+
56
+ def dilate(mask: NdarrayOrTensor, filter_size: int | Sequence[int] = 3, pad_value: float = 0.0) -> NdarrayOrTensor:
57
+ """
58
+ Dilate 2D/3D binary mask.
59
+
60
+ Args:
61
+ mask: input 2D/3D binary mask, [N,C,M,N] or [N,C,M,N,P] torch tensor or ndarray.
62
+ filter_size: dilation filter size, has to be odd numbers, default to be 3.
63
+ pad_value: the filled value for padding. We need to pad the input before filtering
64
+ to keep the output with the same size as input. Usually use default value
65
+ and not changed.
66
+
67
+ Return:
68
+ dilated mask, same shape and data type as input.
69
+
70
+ Example:
71
+
72
+ .. code-block:: python
73
+
74
+ # define a naive mask
75
+ mask = torch.zeros(3,2,3,3,3)
76
+ mask[:,:,1,1,1] = 1.0
77
+ filter_size = 3
78
+ erode_result = erode(mask,filter_size) # expect torch.zeros(3,2,3,3,3)
79
+ dilate_result = dilate(mask,filter_size) # expect torch.ones(3,2,3,3,3)
80
+ """
81
+ mask_t, *_ = convert_data_type(mask, torch.Tensor)
82
+ res_mask_t = dilate_t(mask_t, filter_size=filter_size, pad_value=pad_value)
83
+ res_mask: NdarrayOrTensor
84
+ res_mask, *_ = convert_to_dst_type(src=res_mask_t, dst=mask)
85
+ return res_mask
86
+
87
+
88
+ def get_morphological_filter_result_t(mask_t: Tensor, filter_size: int | Sequence[int], pad_value: float) -> Tensor:
89
+ """
90
+ Apply a morphological filter to a 2D/3D binary mask tensor.
91
+
92
+ Args:
93
+ mask_t: input 2D/3D binary mask, [N,C,M,N] or [N,C,M,N,P] torch tensor.
94
+ filter_size: morphological filter size, has to be odd numbers.
95
+ pad_value: the filled value for padding. We need to pad the input before filtering
96
+ to keep the output with the same size as input.
97
+
98
+ Return:
99
+ Tensor: Morphological filter result mask, same shape as input.
100
+ """
101
+ spatial_dims = len(mask_t.shape) - 2
102
+ if spatial_dims not in [2, 3]:
103
+ raise ValueError(
104
+ f"spatial_dims must be either 2 or 3, "
105
+ f"got spatial_dims={spatial_dims} for mask tensor with shape of {mask_t.shape}."
106
+ )
107
+
108
+ # Define the structuring element
109
+ filter_size = ensure_tuple_rep(filter_size, spatial_dims)
110
+ if any(size % 2 == 0 for size in filter_size):
111
+ raise ValueError(f"All dimensions in filter_size must be odd numbers, got {filter_size}.")
112
+
113
+ structuring_element = torch.ones((mask_t.shape[1], mask_t.shape[1]) + filter_size).to(mask_t.device)
114
+
115
+ # Pad the input tensor to handle border pixels
116
+ # Calculate padding size
117
+ pad_size = [size // 2 for size in filter_size for _ in range(2)]
118
+
119
+ input_padded = F.pad(mask_t.float(), pad_size, mode="constant", value=pad_value)
120
+
121
+ # Apply filter operation
122
+ conv_fn = F.conv2d if spatial_dims == 2 else F.conv3d
123
+ output = conv_fn(input_padded, structuring_element, padding=0) / torch.sum(structuring_element[0, ...])
124
+
125
+ return output
126
+
127
+
128
+ def erode_t(mask_t: Tensor, filter_size: int | Sequence[int] = 3, pad_value: float = 1.0) -> Tensor:
129
+ """
130
+ Erode 2D/3D binary mask with data type as torch tensor.
131
+
132
+ Args:
133
+ mask_t: input 2D/3D binary mask, [N,C,M,N] or [N,C,M,N,P] torch tensor.
134
+ filter_size: erosion filter size, has to be odd numbers, default to be 3.
135
+ pad_value: the filled value for padding. We need to pad the input before filtering
136
+ to keep the output with the same size as input. Usually use default value
137
+ and not changed.
138
+
139
+ Return:
140
+ Tensor: eroded mask, same shape as input.
141
+ """
142
+
143
+ output = get_morphological_filter_result_t(mask_t, filter_size, pad_value)
144
+
145
+ # Set output values based on the minimum value within the structuring element
146
+ output = torch.where(torch.abs(output - 1.0) < 1e-7, 1.0, 0.0)
147
+
148
+ return output
149
+
150
+
151
+ def dilate_t(mask_t: Tensor, filter_size: int | Sequence[int] = 3, pad_value: float = 0.0) -> Tensor:
152
+ """
153
+ Dilate 2D/3D binary mask with data type as torch tensor.
154
+
155
+ Args:
156
+ mask_t: input 2D/3D binary mask, [N,C,M,N] or [N,C,M,N,P] torch tensor.
157
+ filter_size: dilation filter size, has to be odd numbers, default to be 3.
158
+ pad_value: the filled value for padding. We need to pad the input before filtering
159
+ to keep the output with the same size as input. Usually use default value
160
+ and not changed.
161
+
162
+ Return:
163
+ Tensor: dilated mask, same shape as input.
164
+ """
165
+ output = get_morphological_filter_result_t(mask_t, filter_size, pad_value)
166
+
167
+ # Set output values based on the minimum value within the structuring element
168
+ output = torch.where(output > 0, 1.0, 0.0)
169
+
170
+ return output
@@ -116,7 +116,7 @@ def load_net_with_metadata(
116
116
  Returns:
117
117
  Triple containing loaded object, metadata dict, and extra files dict containing other file data if present
118
118
  """
119
- extra_files = {f: "" for f in more_extra_files}
119
+ extra_files = dict.fromkeys(more_extra_files, "")
120
120
  extra_files[METADATA_FILENAME] = ""
121
121
 
122
122
  jit_obj = torch.jit.load(filename_prefix_or_stream, map_location, extra_files)
@@ -19,10 +19,10 @@ from monai.utils import min_version, optional_import
19
19
  __all__ = ["UltrasoundConfidenceMap"]
20
20
 
21
21
  cv2, _ = optional_import("cv2")
22
- csc_matrix, _ = optional_import("scipy.sparse", "1.7.1", min_version, "csc_matrix")
23
- spsolve, _ = optional_import("scipy.sparse.linalg", "1.7.1", min_version, "spsolve")
24
- cg, _ = optional_import("scipy.sparse.linalg", "1.7.1", min_version, "cg")
25
- hilbert, _ = optional_import("scipy.signal", "1.7.1", min_version, "hilbert")
22
+ csc_matrix, _ = optional_import("scipy.sparse", "1.12.0", min_version, "csc_matrix")
23
+ spsolve, _ = optional_import("scipy.sparse.linalg", "1.12.0", min_version, "spsolve")
24
+ cg, _ = optional_import("scipy.sparse.linalg", "1.12.0", min_version, "cg")
25
+ hilbert, _ = optional_import("scipy.signal", "1.12.0", min_version, "hilbert")
26
26
  ruge_stuben_solver, _ = optional_import("pyamg", "5.0.0", min_version, "ruge_stuben_solver")
27
27
 
28
28
 
@@ -285,7 +285,7 @@ class UltrasoundConfidenceMap:
285
285
  lap_sparse = lap.tocsr()
286
286
  ml = ruge_stuben_solver(lap_sparse, coarse_solver="pinv")
287
287
  m = ml.aspreconditioner(cycle="V")
288
- x, _ = cg(lap, rhs, tol=self.cg_tol, maxiter=self.cg_maxiter, M=m)
288
+ x, _ = cg(lap, rhs, rtol=self.cg_tol, maxiter=self.cg_maxiter, M=m)
289
289
  else:
290
290
  x = spsolve(lap, rhs)
291
291
 
@@ -524,7 +524,7 @@ class LearningRateFinder:
524
524
  # Plot the LR with steepest gradient
525
525
  if steepest_lr:
526
526
  lr_at_steepest_grad, loss_at_steepest_grad = self.get_steepest_gradient(skip_start, skip_end)
527
- if lr_at_steepest_grad is not None:
527
+ if lr_at_steepest_grad is not None and loss_at_steepest_grad is not None:
528
528
  ax.scatter(
529
529
  lr_at_steepest_grad,
530
530
  loss_at_steepest_grad,
monai/utils/misc.py CHANGED
@@ -24,7 +24,6 @@ import types
24
24
  import warnings
25
25
  from ast import literal_eval
26
26
  from collections.abc import Callable, Iterable, Sequence
27
- from distutils.util import strtobool
28
27
  from math import log10
29
28
  from pathlib import Path
30
29
  from typing import TYPE_CHECKING, Any, TypeVar, cast, overload
@@ -78,6 +77,25 @@ __all__ = [
78
77
  "run_cmd",
79
78
  ]
80
79
 
80
+
81
+ def _strtobool(val: str) -> bool:
82
+ """
83
+ Replaces deprecated (pre python 3.12)
84
+ distutils strtobool function.
85
+
86
+ True values are y, yes, t, true, on and 1;
87
+ False values are n, no, f, false, off and 0.
88
+ Raises ValueError if val is anything else.
89
+ """
90
+ val = val.lower()
91
+ if val in ("y", "yes", "t", "true", "on", "1"):
92
+ return True
93
+ elif val in ("n", "no", "f", "false", "off", "0"):
94
+ return False
95
+ else:
96
+ raise ValueError(f"invalid truth value {val}")
97
+
98
+
81
99
  _seed = None
82
100
  _flag_deterministic = torch.backends.cudnn.deterministic
83
101
  _flag_cudnn_benchmark = torch.backends.cudnn.benchmark
@@ -400,7 +418,7 @@ def list_to_dict(items):
400
418
  d[key] = literal_eval(value)
401
419
  except ValueError:
402
420
  try:
403
- d[key] = bool(strtobool(str(value)))
421
+ d[key] = bool(_strtobool(str(value)))
404
422
  except ValueError:
405
423
  d[key] = value
406
424
  return d
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: monai-weekly
3
- Version: 1.4.dev2426
3
+ Version: 1.4.dev2427
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Home-page: https://monai.io/
6
6
  Author: MONAI Consortium
@@ -35,7 +35,6 @@ Provides-Extra: all
35
35
  Requires-Dist: nibabel ; extra == 'all'
36
36
  Requires-Dist: ninja ; extra == 'all'
37
37
  Requires-Dist: scikit-image >=0.14.2 ; extra == 'all'
38
- Requires-Dist: scipy >=1.7.1 ; extra == 'all'
39
38
  Requires-Dist: pillow ; extra == 'all'
40
39
  Requires-Dist: tensorboard ; extra == 'all'
41
40
  Requires-Dist: gdown >=4.7.3 ; extra == 'all'
@@ -70,6 +69,7 @@ Requires-Dist: huggingface-hub ; extra == 'all'
70
69
  Requires-Dist: pyamg >=5.0.0 ; extra == 'all'
71
70
  Requires-Dist: transformers <4.41.0,>=4.36.0 ; (python_version <= "3.10") and extra == 'all'
72
71
  Requires-Dist: onnxruntime ; (python_version <= "3.10") and extra == 'all'
72
+ Requires-Dist: scipy >=1.12.0 ; (python_version >= "3.9") and extra == 'all'
73
73
  Requires-Dist: cucim-cu12 ; (python_version >= "3.9" and python_version <= "3.10") and extra == 'all'
74
74
  Provides-Extra: clearml
75
75
  Requires-Dist: clearml ; extra == 'clearml'
@@ -131,7 +131,7 @@ Requires-Dist: nvidia-ml-py ; extra == 'pynvml'
131
131
  Provides-Extra: pyyaml
132
132
  Requires-Dist: pyyaml ; extra == 'pyyaml'
133
133
  Provides-Extra: scipy
134
- Requires-Dist: scipy >=1.7.1 ; extra == 'scipy'
134
+ Requires-Dist: scipy >=1.12.0 ; (python_version >= "3.9") and extra == 'scipy'
135
135
  Provides-Extra: skimage
136
136
  Requires-Dist: scikit-image >=0.14.2 ; extra == 'skimage'
137
137
  Provides-Extra: tensorboard
@@ -1,5 +1,5 @@
1
- monai/__init__.py,sha256=ImQNW_ROu1w5VUIP1j9o-vv9jfMvOCSuTsyZm6eHluE,2722
2
- monai/_version.py,sha256=fknoI1rCBz7kKd3KcjzyJ-QgcWxoZW6hO4Vxvn5iVxE,503
1
+ monai/__init__.py,sha256=eoyjvFJSEfWDlE4q_HInTk09cmQ9viq3hhYZW5SyZEk,2722
2
+ monai/_version.py,sha256=bhGlwE1LiuJLSjwhd1Em13cuIoeS-w6hRghkMeyBm6k,503
3
3
  monai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  monai/_extensions/__init__.py,sha256=NEBPreRhQ8H9gVvgrLr_y52_TmqB96u_u4VQmeNT93I,642
5
5
  monai/_extensions/loader.py,sha256=7SiKw36q-nOzH8CRbBurFrz7GM40GCu7rc93Tm8XpnI,3643
@@ -46,6 +46,14 @@ monai/apps/detection/utils/box_selector.py,sha256=uXI0YrhugYR68xYshRs5JpPTT1nL3Q
46
46
  monai/apps/detection/utils/detector_utils.py,sha256=pU7bOzH-ay9Lnzu1aHCrIwlaGVf5xj13E7Somx_vFnk,10306
47
47
  monai/apps/detection/utils/hard_negative_sampler.py,sha256=PywdXkFIAdudmp3W8JWM_CcLC3BKWQh5x1y0tuuokcg,13890
48
48
  monai/apps/detection/utils/predict_utils.py,sha256=6j7U-7pLtbmgE6SXKR_MVImc67-M8WtzQkT89cCVsK8,5818
49
+ monai/apps/generation/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
50
+ monai/apps/generation/maisi/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
51
+ monai/apps/generation/maisi/networks/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
52
+ monai/apps/generation/maisi/networks/autoencoderkl_maisi.py,sha256=U6vShAKr9BR3Mvc5h4CcspL8iO9sl3tHSmTcPN-A64Q,35481
53
+ monai/apps/generation/maisi/networks/controlnet_maisi.py,sha256=2z5ycY_3899C2TQQNUALRW1Wf2OQVlfAmZSv5dycT2I,7734
54
+ monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py,sha256=oJvP7jKLW_3vOC_HMufI0AY__c8TUd6r_E9bklzMOVE,19237
55
+ monai/apps/generation/maisi/utils/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
56
+ monai/apps/generation/maisi/utils/morphological_ops.py,sha256=o1zAHg1EBXmWTZUblWfPDDNAIcdiFsRjvB28Lp_NL5Q,6727
49
57
  monai/apps/mmars/__init__.py,sha256=BolpgEi9jNBgrOQd3Kwp-9QQLeWQwQtlN_MJkK1eu5s,726
50
58
  monai/apps/mmars/mmars.py,sha256=AYsx5FDmJ0dT0hAkWGYhM470aPIG23PYloHihDZfOKE,13115
51
59
  monai/apps/mmars/model_desc.py,sha256=k7WSMRuyQN8xPax8aUmGKiTNZmcVatdqPYCgxDih-x4,9996
@@ -131,8 +139,8 @@ monai/data/samplers.py,sha256=LUCAHy38ddGm67oJJp3W6ITBsDRqyGCrKtYn-pjrWc4,5102
131
139
  monai/data/synthetic.py,sha256=H0MaQq2nnYxXEMlvOW1-XoWJWY_VKsgZ75tWLO1aCXg,7375
132
140
  monai/data/test_time_augmentation.py,sha256=H1yUph4SkJ-bmKRXS-SRZfNKtWkihR7o4PTUWKuHxOw,9780
133
141
  monai/data/thread_buffer.py,sha256=FtJlRwLHQzU9sf3XJk4G7b_-uKXaRQHAOMauc-zWN2Q,8840
134
- monai/data/torchscript_utils.py,sha256=auz2GtrklxY6PMzvd-i9Kk73uIv0qydpOtzdSfZxrhE,5500
135
- monai/data/ultrasound_confidence_map.py,sha256=rO63odFjgEju0EkwQWWpb2Oau3Txy7gwWGQuTus32uM,14459
142
+ monai/data/torchscript_utils.py,sha256=KoJinpJiNepP6i-1DDy3-8m1Qg1bPfAZTScmXr0LT6g,5502
143
+ monai/data/ultrasound_confidence_map.py,sha256=pEAp4lr-s00_T9d4IEYSJ5B9VQwf_T7BS9GBx8jw_Sg,14464
136
144
  monai/data/utils.py,sha256=WeIcBk7SUy-IOZiPuAp6dFZl9tktJvViDG3wMHaa9dU,66686
137
145
  monai/data/video_dataset.py,sha256=mMTZCkgAx_BBoF4HHWcmEuT9zoNoUVPFtPeYYt76t-A,9075
138
146
  monai/data/wsi_datasets.py,sha256=Ga5VnOdOXU_tlhdub0ueD4VtWhkQG4IrueXX-abE3bA,18619
@@ -306,7 +314,7 @@ monai/networks/nets/vitautoenc.py,sha256=tTX-JHNl2H4y9e5Wk9rrtR6i_ebJHq90O61DnbB
306
314
  monai/networks/nets/vnet.py,sha256=zaJi5kSiTLAuFHThSZfhJvHP6zKh3oBWsTWG-328O_g,10820
307
315
  monai/networks/nets/voxelmorph.py,sha256=M6jzGn09wmTd54NeacHLWElug-Iu0ajPS_HtUaLyzDY,20811
308
316
  monai/optimizers/__init__.py,sha256=XUL7o9vSL7bZImpxVZqcc1c8MwUMrOZL4nJ-mjAA7yM,796
309
- monai/optimizers/lr_finder.py,sha256=BooUZ29_w2fzOH6xAKOe6req1VQ78Kf7CrpJZv2fYq8,21954
317
+ monai/optimizers/lr_finder.py,sha256=tbVi6qd-LLI6pENM9cDUv-Hh1HqziO3Wb9aI6JoaPng,21992
310
318
  monai/optimizers/lr_scheduler.py,sha256=YPY5MWgCTmExuIOBsVJrgfErkCT1ELBekcH0XeRP6Kk,4082
311
319
  monai/optimizers/novograd.py,sha256=dgjyM-WGqrEHsSKNdI3Lw1wJ2YNG3oKCYotfPsDBE80,5677
312
320
  monai/optimizers/utils.py,sha256=GVsJsZWO2aAP9IzwhXgca_9gUNHFClup6qG4ZFs42z4,4133
@@ -366,7 +374,7 @@ monai/utils/deprecate_utils.py,sha256=gKeEV4MsI51qeQ5gci2me_C-0e-tDwa3VZzd3XPQqL
366
374
  monai/utils/dist.py,sha256=mVaKlBTQJdWAG910sh5pGLEbb_KhRAXV5cPz7amH88Y,8639
367
375
  monai/utils/enums.py,sha256=Gdo9WBrFODIYz5zt6c00hGz0bqjUQbhCWsfGSgKlnAU,19674
368
376
  monai/utils/jupyter_utils.py,sha256=QqcKhJxzEf6YwM8Ik_HvfVDr7gNfrfzCXdzd2urEH8M,15651
369
- monai/utils/misc.py,sha256=Mn_sIkTG49yW9wi2MQrnmoxWnvcbonHCxQLG4yWWYDY,30908
377
+ monai/utils/misc.py,sha256=o1eYmYIFRPB71PNvFM4f-3ZhoEmpL2qhl7xneKcDhbY,31380
370
378
  monai/utils/module.py,sha256=Uu45ec-NHtccrA1Kv_QL-uxESLcgHLavCg9XelIa6lE,25148
371
379
  monai/utils/nvtx.py,sha256=i9JBxR1uhW1ZCgLPLlTx8b907QlXkFzJyTBLMlFjhtU,6876
372
380
  monai/utils/profiling.py,sha256=V2_cSHgrcmVF48_G3nUi2-O6fnXsS89nSlb8jj58YLo,15937
@@ -380,8 +388,8 @@ monai/visualize/img2tensorboard.py,sha256=_p5olAefUs6t-y17z0TK32fKxNnUNXVkb0Op1S
380
388
  monai/visualize/occlusion_sensitivity.py,sha256=OQHEJLyIhB8zWqQsfKaX-1kvCjWFVYtLfS4dFC0nKFI,18160
381
389
  monai/visualize/utils.py,sha256=B-MhTVs7sQbIqYS3yPnpBwPw2K82rE2PBtGIfpwZtWM,9894
382
390
  monai/visualize/visualizer.py,sha256=qckyaMZCbezYUwE20k5yc-Pb7UozVavMDbrmyQwfYHY,1377
383
- monai_weekly-1.4.dev2426.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
384
- monai_weekly-1.4.dev2426.dist-info/METADATA,sha256=gaJQgO7GfMPD8kqn4uW3INqCCBSG6KqvWrStKMDcTOw,10890
385
- monai_weekly-1.4.dev2426.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
386
- monai_weekly-1.4.dev2426.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
387
- monai_weekly-1.4.dev2426.dist-info/RECORD,,
391
+ monai_weekly-1.4.dev2427.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
392
+ monai_weekly-1.4.dev2427.dist-info/METADATA,sha256=a2kPS0TMUt6-axaEsC2VPu79XUqU5ke6YWRuSW2mwuM,10952
393
+ monai_weekly-1.4.dev2427.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
394
+ monai_weekly-1.4.dev2427.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
395
+ monai_weekly-1.4.dev2427.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.1)
2
+ Generator: setuptools (70.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5