monai-weekly 1.5.dev2443__py3-none-any.whl → 1.5.dev2444__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__ = "82298adb01c27a6cbf0bf10a9916b09b41966bb0"
139
+ __commit_id__ = "c1ceea3d4cbb0781eae4e209b80fe651a776fed2"
monai/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-10-27T02:29:25+0000",
11
+ "date": "2024-11-03T02:29:11+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "d508ba780862a6459326c812e09188838c25bdc5",
15
- "version": "1.5.dev2443"
14
+ "full-revisionid": "c70fbd8ff919cabaacfabcbdbf28aa435ae622f9",
15
+ "version": "1.5.dev2444"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -22,7 +22,7 @@ import torch
22
22
  from torch.utils.data import Dataset
23
23
 
24
24
  from monai.apps.utils import get_logger
25
- from monai.utils import CommonKeys, IgniteInfo, ensure_tuple, min_version, optional_import
25
+ from monai.utils import CommonKeys, IgniteInfo, ensure_tuple, flatten_dict, min_version, optional_import
26
26
 
27
27
  Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
28
28
  mlflow, _ = optional_import("mlflow", descriptor="Please install mlflow before using MLFlowHandler.")
@@ -303,7 +303,9 @@ class MLFlowHandler:
303
303
 
304
304
  run_id = self.cur_run.info.run_id
305
305
  timestamp = int(time.time() * 1000)
306
- metrics_arr = [mlflow.entities.Metric(key, value, timestamp, step or 0) for key, value in metrics.items()]
306
+ metrics_arr = [
307
+ mlflow.entities.Metric(key, value, timestamp, step or 0) for key, value in flatten_dict(metrics).items()
308
+ ]
307
309
  self.client.log_batch(run_id=run_id, metrics=metrics_arr, params=[], tags=[])
308
310
 
309
311
  def _parse_artifacts(self):
@@ -19,7 +19,7 @@ from typing import TYPE_CHECKING, Any
19
19
  import torch
20
20
 
21
21
  from monai.apps import get_logger
22
- from monai.utils import IgniteInfo, is_scalar, min_version, optional_import
22
+ from monai.utils import IgniteInfo, flatten_dict, is_scalar, min_version, optional_import
23
23
 
24
24
  Events, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Events")
25
25
  if TYPE_CHECKING:
@@ -211,8 +211,7 @@ class StatsHandler:
211
211
 
212
212
  """
213
213
  current_epoch = self.global_epoch_transform(engine.state.epoch)
214
-
215
- prints_dict = engine.state.metrics
214
+ prints_dict = flatten_dict(engine.state.metrics)
216
215
  if prints_dict is not None and len(prints_dict) > 0:
217
216
  out_str = f"Epoch[{current_epoch}] Metrics -- "
218
217
  for name in sorted(prints_dict):
monai/networks/utils.py CHANGED
@@ -16,6 +16,7 @@ from __future__ import annotations
16
16
 
17
17
  import io
18
18
  import re
19
+ import tempfile
19
20
  import warnings
20
21
  from collections import OrderedDict
21
22
  from collections.abc import Callable, Mapping, Sequence
@@ -688,16 +689,17 @@ def convert_to_onnx(
688
689
  onnx_inputs = (inputs,)
689
690
  else:
690
691
  onnx_inputs = tuple(inputs)
691
-
692
+ temp_file = None
692
693
  if filename is None:
693
- f = io.BytesIO()
694
+ temp_file = tempfile.NamedTemporaryFile()
695
+ f = temp_file.name
694
696
  else:
695
697
  f = filename
696
698
 
697
699
  torch.onnx.export(
698
700
  mode_to_export,
699
701
  onnx_inputs,
700
- f=f, # type: ignore[arg-type]
702
+ f=f,
701
703
  input_names=input_names,
702
704
  output_names=output_names,
703
705
  dynamic_axes=dynamic_axes,
@@ -705,10 +707,7 @@ def convert_to_onnx(
705
707
  do_constant_folding=do_constant_folding,
706
708
  **torch_versioned_kwargs,
707
709
  )
708
- if filename is None:
709
- onnx_model = onnx.load_model_from_string(f.getvalue())
710
- else:
711
- onnx_model = onnx.load(filename)
710
+ onnx_model = onnx.load(f)
712
711
 
713
712
  if do_constant_folding and polygraphy_imported:
714
713
  from polygraphy.backend.onnx.loader import fold_constants
monai/utils/__init__.py CHANGED
@@ -78,6 +78,7 @@ from .misc import (
78
78
  ensure_tuple_size,
79
79
  fall_back_tuple,
80
80
  first,
81
+ flatten_dict,
81
82
  get_seed,
82
83
  has_option,
83
84
  is_immutable,
monai/utils/misc.py CHANGED
@@ -916,3 +916,16 @@ def unsqueeze_right(arr: NT, ndim: int) -> NT:
916
916
  def unsqueeze_left(arr: NT, ndim: int) -> NT:
917
917
  """Prepend 1-sized dimensions to `arr` to create a result with `ndim` dimensions."""
918
918
  return arr[(None,) * (ndim - arr.ndim)]
919
+
920
+
921
+ def flatten_dict(metrics: dict[str, Any]) -> dict[str, Any]:
922
+ """
923
+ Flatten the nested dictionary to a flat dictionary.
924
+ """
925
+ result = {}
926
+ for key, value in metrics.items():
927
+ if isinstance(value, dict):
928
+ result.update(flatten_dict(value))
929
+ else:
930
+ result[key] = value
931
+ return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: monai-weekly
3
- Version: 1.5.dev2443
3
+ Version: 1.5.dev2444
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=l-ygnQYJ-v9fguNr-NlVVPQkvYgqiLXASv66iGVI63U,4095
2
- monai/_version.py,sha256=LMEgD6dN1IlvOc82zT6FpC4n6yv2dEV8OSXQaCghNH8,503
1
+ monai/__init__.py,sha256=ysop022HrpjMOa3OOXOxu9wMEzBaWZ-pmyPSSp1xhGA,4095
2
+ monai/_version.py,sha256=HNl2ruiDvEKUYXx2U5fo82JGZpufk97ds-8BJeV011g,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
@@ -178,7 +178,7 @@ monai/handlers/mean_iou.py,sha256=-4vDqYx-Zd77PcR2-Wg6X-M35n13sMV5VysGiDCvjbQ,28
178
178
  monai/handlers/metric_logger.py,sha256=Zk55yO5PlwM7WhHPelHPfv3WLuJycxLrtQMwjEJ_7FQ,5453
179
179
  monai/handlers/metrics_reloaded_handler.py,sha256=9JtfWeDvjrdKNMKpRJQBu0k6XGxg8hfOm6224sB4A6E,6195
180
180
  monai/handlers/metrics_saver.py,sha256=ltXaaj3C4Vzv3VEWT4O7wlmuYs7JHi7qCkXXfVBgPb8,8559
181
- monai/handlers/mlflow_handler.py,sha256=rq8qu3UPb4tMGTek146n2xmZ6b7LhI2SLRYxft8JNeA,23209
181
+ monai/handlers/mlflow_handler.py,sha256=AhPtZtuV06jt8EaMvM3et6MMJoSqYBBAYV3uipdalG4,23259
182
182
  monai/handlers/nvtx_handlers.py,sha256=cD-nYVaJ7fUEUmr5zLU9-s867SqUwP64R3i4Rui5MGU,6795
183
183
  monai/handlers/panoptic_quality.py,sha256=Dr_cMANJne1Cvc_pnI33QAUMAVKbkO4NBfTFjedGZOE,3651
184
184
  monai/handlers/parameter_scheduler.py,sha256=JMVMEWnF0sUejynB_J_2fL9OKJT_s-ZbaYEucTeb1Hk,7095
@@ -187,7 +187,7 @@ monai/handlers/probability_maps.py,sha256=ggvgebTlx-r5BmcpiYu5MTF00AMtSMghRA8Orw
187
187
  monai/handlers/regression_metrics.py,sha256=PaL8AXLhl7Aw5C1_VSPIAt2C8H781ek_sPD_xFZgWPA,8457
188
188
  monai/handlers/roc_auc.py,sha256=0A_Y1bvRpkBY0l5HyTRKopUUupq0cMGubnqgflHXA2g,2744
189
189
  monai/handlers/smartcache_handler.py,sha256=PwWmLYKBWFTkOdcQXlML18AESWtQnPJl9Ici9djvdTE,3027
190
- monai/handlers/stats_handler.py,sha256=aOKDXL7PUSFSSdqwR2sTLxV_pf2YaecA28TiRcoffec,14117
190
+ monai/handlers/stats_handler.py,sha256=8sOWdi-8-OllSYPRd6yYLqn5hv00wvYeajHRPij3MSs,14144
191
191
  monai/handlers/surface_distance.py,sha256=HKQrRGy08uWNr9X-mJ1IhMwV_ndZOijEJS7TYL9KQsg,3327
192
192
  monai/handlers/tensorboard_handlers.py,sha256=3nju_xEJeOpCtObrIfuWc1u8dSRwjs-26tyh06FP8wg,22591
193
193
  monai/handlers/trt_handler.py,sha256=uWFdgC8QKRkcNwWfKIbQMdK6-MX_1ON0mKabeIn1ltI,2329
@@ -242,7 +242,7 @@ monai/metrics/utils.py,sha256=eQ9QGGvuNmYFrgtVFNiA44pBhaHLCkmpyeK2FcK_2Pc,46941
242
242
  monai/metrics/wrapper.py,sha256=c1zg-xcypQyZ840TEuhhLgr4sClYMWTxlv1OieJTtvE,11781
243
243
  monai/networks/__init__.py,sha256=ZzU2Qo8gDXNiRBF0JapIo3xlecZHjXsJuarF0IKVKKY,1086
244
244
  monai/networks/trt_compiler.py,sha256=Du9lmYQAQgY31fydNZ7yUz712ZCODqMDhTjt0kxP0Bc,22728
245
- monai/networks/utils.py,sha256=UpwwbFyGXIVBl9axgX-ch--h3n0qDF63N-fT44E6zjE,56886
245
+ monai/networks/utils.py,sha256=PKnqerrzBknEqzWFlYRzf6JVv0uz30say03GMqY4unY,56835
246
246
  monai/networks/blocks/__init__.py,sha256=-LMGPMN-eHzwsjkb88H66kImpr4v2hYATZ2y-mRm_K0,2264
247
247
  monai/networks/blocks/acti_norm.py,sha256=bVGXbTZ_ssRvmED5R7LOQ7jj4V6WbVFl8JMO-4iZ2Dk,4275
248
248
  monai/networks/blocks/activation.py,sha256=S5k3zcP2PsHBkeIxgWgNg8ppW80tTResVP2j9ZsvTFw,5839
@@ -394,14 +394,14 @@ monai/transforms/spatial/functional.py,sha256=IwS0witCqbGkyuxzu_R4Ztp90S0pg9hY1i
394
394
  monai/transforms/utility/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
395
395
  monai/transforms/utility/array.py,sha256=MCkoccxLStPX2e0bJv6WZzDsGE3Wwf1DaxU1MZwDp08,78086
396
396
  monai/transforms/utility/dictionary.py,sha256=N6E230-g2zupG63oCsAXWgkdfZmF---TZbvk7p5FQU8,78079
397
- monai/utils/__init__.py,sha256=9E59iRxectI0rD5_Loj-fnt24BnaDvPlPplu5jRFcFM,3743
397
+ monai/utils/__init__.py,sha256=yccUiicRQmjXTTEplVMZt_hoA3GFfTF_MYoUakZA73k,3761
398
398
  monai/utils/component_store.py,sha256=Fe9jbHgwwBBAeJAw0nI02Ae13v17wlwF6N9uUue8tJg,4525
399
399
  monai/utils/decorators.py,sha256=qhhdmJMjMfZIUM6x_VGUGF7kaq2cBUAam8WymAU_mhw,3156
400
400
  monai/utils/deprecate_utils.py,sha256=gKeEV4MsI51qeQ5gci2me_C-0e-tDwa3VZzd3XPQqLk,14759
401
401
  monai/utils/dist.py,sha256=7brB42CvdS8Jvr8Y7hfqov1uk6NNnYea9dYfgMYy0BY,8578
402
402
  monai/utils/enums.py,sha256=orCV7SGDajYtl3DhTTjbLDbayr6WxkMSw_bZ6yeGGTY,19513
403
403
  monai/utils/jupyter_utils.py,sha256=kQqfLTLAre3TLzXTt091X_XeWy5K0QKAcTuYlJ8BOag,15650
404
- monai/utils/misc.py,sha256=-0CCrUGB1-OPhKjTXKMnTdohPiBWke4MiEJN0A2wd8A,31422
404
+ monai/utils/misc.py,sha256=R-sCS5u7SA8hX6e7x6WSc8FgLcNpqKFRRDMWxUd2wCo,31759
405
405
  monai/utils/module.py,sha256=qmnsEGMg3kvNmVeFqeH8CZ3BAZxnATrwxrSBgdJyBG4,24319
406
406
  monai/utils/nvtx.py,sha256=i9JBxR1uhW1ZCgLPLlTx8b907QlXkFzJyTBLMlFjhtU,6876
407
407
  monai/utils/ordering.py,sha256=0nlA5b5QpVCHbtiCbTC-YsqjTmjm0bub0IeJhGFBOes,8270
@@ -416,8 +416,8 @@ monai/visualize/img2tensorboard.py,sha256=NnMcyfIFqX-jD7TBO3Rn02zt5uug79d_7pIIaV
416
416
  monai/visualize/occlusion_sensitivity.py,sha256=OQHEJLyIhB8zWqQsfKaX-1kvCjWFVYtLfS4dFC0nKFI,18160
417
417
  monai/visualize/utils.py,sha256=B-MhTVs7sQbIqYS3yPnpBwPw2K82rE2PBtGIfpwZtWM,9894
418
418
  monai/visualize/visualizer.py,sha256=qckyaMZCbezYUwE20k5yc-Pb7UozVavMDbrmyQwfYHY,1377
419
- monai_weekly-1.5.dev2443.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
420
- monai_weekly-1.5.dev2443.dist-info/METADATA,sha256=i0SWwSmKZrbBZUFcBMgq0sM_WA0OwSx-ofv2ztwJskI,11187
421
- monai_weekly-1.5.dev2443.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
422
- monai_weekly-1.5.dev2443.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
423
- monai_weekly-1.5.dev2443.dist-info/RECORD,,
419
+ monai_weekly-1.5.dev2444.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
420
+ monai_weekly-1.5.dev2444.dist-info/METADATA,sha256=UKkqg6jOWMKDCIMTI1GY6Di4GUlQwONJBARo04lFseY,11187
421
+ monai_weekly-1.5.dev2444.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
422
+ monai_weekly-1.5.dev2444.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
423
+ monai_weekly-1.5.dev2444.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5