monai-weekly 1.5.dev2503__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 +1 -1
- monai/_version.py +3 -3
- monai/bundle/scripts.py +20 -5
- monai/inferers/merger.py +19 -4
- monai/transforms/intensity/array.py +4 -0
- {monai_weekly-1.5.dev2503.dist-info → monai_weekly-1.5.dev2504.dist-info}/METADATA +1 -1
- {monai_weekly-1.5.dev2503.dist-info → monai_weekly-1.5.dev2504.dist-info}/RECORD +10 -10
- {monai_weekly-1.5.dev2503.dist-info → monai_weekly-1.5.dev2504.dist-info}/LICENSE +0 -0
- {monai_weekly-1.5.dev2503.dist-info → monai_weekly-1.5.dev2504.dist-info}/WHEEL +0 -0
- {monai_weekly-1.5.dev2503.dist-info → monai_weekly-1.5.dev2504.dist-info}/top_level.txt +0 -0
monai/__init__.py
CHANGED
monai/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-01-
|
11
|
+
"date": "2025-01-26T02:25:01+0000",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "1.5.
|
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}/
|
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
|
-
|
236
|
-
|
237
|
-
|
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 =
|
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.
|
250
|
-
|
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,5 +1,5 @@
|
|
1
|
-
monai/__init__.py,sha256=
|
2
|
-
monai/_version.py,sha256=
|
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=
|
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=
|
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=
|
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.
|
424
|
-
monai_weekly-1.5.
|
425
|
-
monai_weekly-1.5.
|
426
|
-
monai_weekly-1.5.
|
427
|
-
monai_weekly-1.5.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|