monai-weekly 1.5.dev2502__py3-none-any.whl → 1.5.dev2504__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.
monai/__init__.py CHANGED
@@ -136,4 +136,4 @@ except BaseException:
136
136
 
137
137
  if MONAIEnvVars.debug():
138
138
  raise
139
- __commit_id__ = "1c00ea22ead498551379cdcdbd7970ca7a6d9464"
139
+ __commit_id__ = "bc9352ed33952da6be6d4e6d6af9fe9db9faf756"
monai/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-01-12T02:29:34+0000",
11
+ "date": "2025-01-26T02:25:01+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "331a2e76a51bac82c96232765c1622fb4a545ecc",
15
- "version": "1.5.dev2502"
14
+ "full-revisionid": "5787bf9b5b634509248b453c241610d9d9ee9314",
15
+ "version": "1.5.dev2504"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
monai/bundle/scripts.py CHANGED
@@ -174,7 +174,7 @@ def _get_git_release_url(repo_owner: str, repo_name: str, tag_name: str, filenam
174
174
 
175
175
 
176
176
  def _get_ngc_bundle_url(model_name: str, version: str) -> str:
177
- return f"{NGC_BASE_URL}/{model_name.lower()}/versions/{version}/zip"
177
+ return f"{NGC_BASE_URL}/{model_name.lower()}/versions/{version}/files"
178
178
 
179
179
 
180
180
  def _get_ngc_private_base_url(repo: str) -> str:
@@ -218,6 +218,21 @@ def _remove_ngc_prefix(name: str, prefix: str = "monai_") -> str:
218
218
  return name
219
219
 
220
220
 
221
+ def _get_all_download_files(request_url: str, headers: dict | None = None) -> list[str]:
222
+ if not has_requests:
223
+ raise ValueError("requests package is required, please install it.")
224
+ headers = {} if headers is None else headers
225
+ response = requests_get(request_url, headers=headers)
226
+ response.raise_for_status()
227
+ model_info = json.loads(response.text)
228
+
229
+ if not isinstance(model_info, dict) or "modelFiles" not in model_info:
230
+ raise ValueError("The data is not a dictionary or it does not have the key 'modelFiles'.")
231
+
232
+ model_files = model_info["modelFiles"]
233
+ return [f["path"] for f in model_files]
234
+
235
+
221
236
  def _download_from_ngc(
222
237
  download_path: Path,
223
238
  filename: str,
@@ -229,12 +244,12 @@ def _download_from_ngc(
229
244
  # ensure prefix is contained
230
245
  filename = _add_ngc_prefix(filename, prefix=prefix)
231
246
  url = _get_ngc_bundle_url(model_name=filename, version=version)
232
- filepath = download_path / f"{filename}_v{version}.zip"
233
247
  if remove_prefix:
234
248
  filename = _remove_ngc_prefix(filename, prefix=remove_prefix)
235
- extract_path = download_path / f"{filename}"
236
- download_url(url=url, filepath=filepath, hash_val=None, progress=progress)
237
- extractall(filepath=filepath, output_dir=extract_path, has_base=True)
249
+ filepath = download_path / filename
250
+ filepath.mkdir(parents=True, exist_ok=True)
251
+ for file in _get_all_download_files(url):
252
+ download_url(url=f"{url}/{file}", filepath=f"{filepath}/{file}", hash_val=None, progress=progress)
238
253
 
239
254
 
240
255
  def _download_from_ngc_private(
monai/inferers/merger.py CHANGED
@@ -15,12 +15,13 @@ import threading
15
15
  from abc import ABC, abstractmethod
16
16
  from collections.abc import Sequence
17
17
  from contextlib import nullcontext
18
+ from tempfile import TemporaryDirectory
18
19
  from typing import TYPE_CHECKING, Any
19
20
 
20
21
  import numpy as np
21
22
  import torch
22
23
 
23
- from monai.utils import ensure_tuple_size, optional_import, require_pkg
24
+ from monai.utils import ensure_tuple_size, get_package_version, optional_import, require_pkg, version_geq
24
25
 
25
26
  if TYPE_CHECKING:
26
27
  import zarr
@@ -233,7 +234,7 @@ class ZarrAvgMerger(Merger):
233
234
  store: zarr.storage.Store | str = "merged.zarr",
234
235
  value_store: zarr.storage.Store | str | None = None,
235
236
  count_store: zarr.storage.Store | str | None = None,
236
- compressor: str = "default",
237
+ compressor: str | None = None,
237
238
  value_compressor: str | None = None,
238
239
  count_compressor: str | None = None,
239
240
  chunks: Sequence[int] | bool = True,
@@ -246,8 +247,22 @@ class ZarrAvgMerger(Merger):
246
247
  self.value_dtype = value_dtype
247
248
  self.count_dtype = count_dtype
248
249
  self.store = store
249
- self.value_store = zarr.storage.TempStore() if value_store is None else value_store
250
- self.count_store = zarr.storage.TempStore() if count_store is None else count_store
250
+ self.tmpdir: TemporaryDirectory | None
251
+ if version_geq(get_package_version("zarr"), "3.0.0"):
252
+ if value_store is None:
253
+ self.tmpdir = TemporaryDirectory()
254
+ self.value_store = zarr.storage.LocalStore(self.tmpdir.name)
255
+ else:
256
+ self.value_store = value_store
257
+ if count_store is None:
258
+ self.tmpdir = TemporaryDirectory()
259
+ self.count_store = zarr.storage.LocalStore(self.tmpdir.name)
260
+ else:
261
+ self.count_store = count_store
262
+ else:
263
+ self.tmpdir = None
264
+ self.value_store = zarr.storage.TempStore() if value_store is None else value_store
265
+ self.count_store = zarr.storage.TempStore() if count_store is None else count_store
251
266
  self.chunks = chunks
252
267
  self.compressor = compressor
253
268
  self.value_compressor = value_compressor
@@ -821,6 +821,7 @@ class NormalizeIntensity(Transform):
821
821
  mean and std on each channel separately.
822
822
  When `channel_wise` is True, the first dimension of `subtrahend` and `divisor` should
823
823
  be the number of image channels if they are not None.
824
+ If the input is not of floating point type, it will be converted to float32
824
825
 
825
826
  Args:
826
827
  subtrahend: the amount to subtract by (usually the mean).
@@ -907,6 +908,9 @@ class NormalizeIntensity(Transform):
907
908
  if self.divisor is not None and len(self.divisor) != len(img):
908
909
  raise ValueError(f"img has {len(img)} channels, but divisor has {len(self.divisor)} components.")
909
910
 
911
+ if not img.dtype.is_floating_point:
912
+ img, *_ = convert_data_type(img, dtype=torch.float32)
913
+
910
914
  for i, d in enumerate(img):
911
915
  img[i] = self._normalize( # type: ignore
912
916
  d,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: monai-weekly
3
- Version: 1.5.dev2502
3
+ Version: 1.5.dev2504
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Home-page: https://monai.io/
6
6
  Author: MONAI Consortium
@@ -1,5 +1,5 @@
1
- monai/__init__.py,sha256=0GTonO1FvPcYJEQoNtKBGg6KAdzASxilgAD9ae9fHLo,4095
2
- monai/_version.py,sha256=59Y8dgTWnnfgvRN_wn1EyAlmqg9XgEEE1xQYZ8vHE3w,503
1
+ monai/__init__.py,sha256=1ZrjXJq8AE-D2peo3EfOL1bXGiPicCdsApKJ9wj04Og,4095
2
+ monai/_version.py,sha256=aTWuCVub0jwYkz1lgJPEIQerYjrp6L9F2AW2iBlpF64,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
@@ -114,7 +114,7 @@ monai/bundle/config_item.py,sha256=rMjXSGkjJZdi04BwSHwCcIwzIb_TflmC3xDhC3SVJRs,1
114
114
  monai/bundle/config_parser.py,sha256=cGyEn-cqNk0rEEZ1Qiv6UydmIDvtWZcMVljyfVm5i50,23025
115
115
  monai/bundle/properties.py,sha256=iN3K4FVmN9ny1Hw9p5j7_ULcCdSD8PmrR7qXxbNz49k,11582
116
116
  monai/bundle/reference_resolver.py,sha256=GXCMK4iogxxE6VocsmAbUrcXosmC5arnjeG9zYhHKpg,16748
117
- monai/bundle/scripts.py,sha256=ZxdkNI1D1LpAJpufnJSexZt13EpihSnzFzdo5DbH3NU,89316
117
+ monai/bundle/scripts.py,sha256=D0GnyZF0FCQyHZtqjoX9jen3IiAvnUeM1mtSWa2fu4E,89935
118
118
  monai/bundle/utils.py,sha256=t-22uFvLn7Yy-dr1v1U33peNOxgAmU4TJiGAbsBrUKs,10108
119
119
  monai/bundle/workflows.py,sha256=CuhmFq1AWsN3ATiYJCSakPOxrOdGutl6vkpo9sxe8gU,34369
120
120
  monai/config/__init__.py,sha256=CN28CfTdsp301gv8YXfVvkbztCfbAqrLKrJi_C8oP9s,1048
@@ -195,7 +195,7 @@ monai/handlers/utils.py,sha256=Ib1u-PLrtIkiLqTfREnrCWpN4af1btdNzkyMZuuuYyU,10239
195
195
  monai/handlers/validation_handler.py,sha256=NZO21c6zzXbmAgJZHkkdoZQSQIHwuxh94QD3PLUldGU,3674
196
196
  monai/inferers/__init__.py,sha256=K74t_RCeUPdEZvHzIPzVAwZ9DtmouLqhb3qDEmFBWs4,1107
197
197
  monai/inferers/inferer.py,sha256=aZwCmM6WGj49SHi_jIkQeGDstMz45frvM1Lomoeqzm4,92669
198
- monai/inferers/merger.py,sha256=Ch-qoGUVTTDWN9z_LXBRxElvyuZxOmuqAcecpg1xxAg,15566
198
+ monai/inferers/merger.py,sha256=dZm-FVyXPlFb59q4DG52mbtPm8Iy4cNFWv3un0Z8k0M,16262
199
199
  monai/inferers/splitter.py,sha256=_hTnFdvDNRckkA7ZGQehVsNZw83oXoGFWyk5VXNqgJg,21149
200
200
  monai/inferers/utils.py,sha256=BWVg6j6FGX5tFgrf6QvxJgFkr4bJWTpFgVBQRjfAq5A,20432
201
201
  monai/losses/__init__.py,sha256=igy7BjoQzM3McmJPD2tmeiW2ljSXfB2HBdc4YiDzYEg,1778
@@ -367,7 +367,7 @@ monai/transforms/croppad/batch.py,sha256=5ukcYk3VCDpk62AL5Q_jTqpXmSNTlw0UCUhDeAB
367
367
  monai/transforms/croppad/dictionary.py,sha256=WOzj_PjmoB3zLEmtQlafb9-PWgXd-s5K7Z5Doc8Adns,60746
368
368
  monai/transforms/croppad/functional.py,sha256=iroD0XBaMG1Mox6-EotIh2nAUxJPrpIyUrHopc83Sug,12640
369
369
  monai/transforms/intensity/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
370
- monai/transforms/intensity/array.py,sha256=SpG3u9LPuQxDk77lEvPC4-tH1tiOtacDDfcyQydIhkI,121592
370
+ monai/transforms/intensity/array.py,sha256=CF3lVbcI4D-YmhifxGj1Mf32TwW4alK1WYBzFiejWbo,121791
371
371
  monai/transforms/intensity/dictionary.py,sha256=MEeMKQckn6X-cEk51Z2YTGjt89RohBzFfO_jU3D06wk,85086
372
372
  monai/transforms/io/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
373
373
  monai/transforms/io/array.py,sha256=QxB19z8aBhaSNlSkrubyoM0swHqTcDatWT0GrzmOOwM,27481
@@ -420,8 +420,8 @@ monai/visualize/img2tensorboard.py,sha256=NnMcyfIFqX-jD7TBO3Rn02zt5uug79d_7pIIaV
420
420
  monai/visualize/occlusion_sensitivity.py,sha256=OQHEJLyIhB8zWqQsfKaX-1kvCjWFVYtLfS4dFC0nKFI,18160
421
421
  monai/visualize/utils.py,sha256=B-MhTVs7sQbIqYS3yPnpBwPw2K82rE2PBtGIfpwZtWM,9894
422
422
  monai/visualize/visualizer.py,sha256=qckyaMZCbezYUwE20k5yc-Pb7UozVavMDbrmyQwfYHY,1377
423
- monai_weekly-1.5.dev2502.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
424
- monai_weekly-1.5.dev2502.dist-info/METADATA,sha256=HhFCmcmkPasmIjPtRpFCnIxTr-UTsANY2S4bIt35tyc,11876
425
- monai_weekly-1.5.dev2502.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
426
- monai_weekly-1.5.dev2502.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
427
- monai_weekly-1.5.dev2502.dist-info/RECORD,,
423
+ monai_weekly-1.5.dev2504.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
424
+ monai_weekly-1.5.dev2504.dist-info/METADATA,sha256=0iYHqlPgquVgUPaJpVH4tuTMg7rNrAg_CDJmreLfNDg,11876
425
+ monai_weekly-1.5.dev2504.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
426
+ monai_weekly-1.5.dev2504.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
427
+ monai_weekly-1.5.dev2504.dist-info/RECORD,,