monai-weekly 1.7.dev2640__tar.gz → 1.7.dev2642__tar.gz

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.
Files changed (460) hide show
  1. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/PKG-INFO +1 -1
  2. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/__init__.py +1 -1
  3. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/loader.py +3 -1
  4. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_version.py +3 -3
  5. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/utils.py +41 -6
  6. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/grid_dataset.py +10 -7
  7. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/synthetic.py +40 -9
  8. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/utils.py +17 -5
  9. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/calibration.py +2 -2
  10. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/mlflow_handler.py +119 -0
  11. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/merger.py +7 -1
  12. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/__init__.py +1 -0
  13. monai_weekly-1.7.dev2642/monai/losses/calibration.py +379 -0
  14. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/image_dissimilarity.py +25 -6
  15. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/calibration.py +4 -4
  16. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/embedding_collapse.py +14 -4
  17. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/fid.py +1 -1
  18. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/hausdorff_distance.py +47 -3
  19. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/meaniou.py +4 -10
  20. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/utils.py +1 -1
  21. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/warp.py +17 -2
  22. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/dints.py +49 -7
  23. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/regunet.py +12 -1
  24. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/__init__.py +4 -0
  25. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/array.py +135 -9
  26. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/dictionary.py +24 -2
  27. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/post/array.py +89 -1
  28. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/post/dictionary.py +58 -0
  29. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/dictionary.py +8 -2
  30. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils.py +84 -0
  31. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/deprecate_utils.py +2 -2
  32. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/PKG-INFO +1 -1
  33. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/SOURCES.txt +1 -0
  34. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/setup.py +5 -1
  35. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/LICENSE +0 -0
  36. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/MANIFEST.in +0 -0
  37. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/README.md +0 -0
  38. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/__init__.py +0 -0
  39. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm.cpp +0 -0
  40. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm.h +0 -0
  41. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
  42. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
  43. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
  44. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/__init__.py +0 -0
  45. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/__init__.py +0 -0
  46. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/__main__.py +0 -0
  47. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/auto_runner.py +0 -0
  48. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/bundle_gen.py +0 -0
  49. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/data_analyzer.py +0 -0
  50. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
  51. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/hpo_gen.py +0 -0
  52. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/transforms.py +0 -0
  53. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/utils.py +0 -0
  54. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/datasets.py +0 -0
  55. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/__init__.py +0 -0
  56. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/interaction.py +0 -0
  57. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/transforms.py +0 -0
  58. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/__init__.py +0 -0
  59. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/dataset.py +0 -0
  60. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/interaction.py +0 -0
  61. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/transforms.py +0 -0
  62. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/__init__.py +0 -0
  63. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/__init__.py +0 -0
  64. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/coco.py +0 -0
  65. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/matching.py +0 -0
  66. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/__init__.py +0 -0
  67. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/retinanet_detector.py +0 -0
  68. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/retinanet_network.py +0 -0
  69. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/__init__.py +0 -0
  70. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/array.py +0 -0
  71. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/box_ops.py +0 -0
  72. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/dictionary.py +0 -0
  73. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
  74. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/__init__.py +0 -0
  75. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/anchor_utils.py +0 -0
  76. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/box_coder.py +0 -0
  77. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/box_selector.py +0 -0
  78. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/detector_utils.py +0 -0
  79. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
  80. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/predict_utils.py +0 -0
  81. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/__init__.py +0 -0
  82. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/__init__.py +0 -0
  83. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/__init__.py +0 -0
  84. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
  85. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
  86. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
  87. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/mmars/__init__.py +0 -0
  88. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/mmars/mmars.py +0 -0
  89. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/mmars/model_desc.py +0 -0
  90. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/__init__.py +0 -0
  91. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/__main__.py +0 -0
  92. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/nnunet_bundle.py +0 -0
  93. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
  94. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/utils.py +0 -0
  95. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nuclick/__init__.py +0 -0
  96. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nuclick/transforms.py +0 -0
  97. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/__init__.py +0 -0
  98. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/engines/__init__.py +0 -0
  99. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/engines/utils.py +0 -0
  100. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/handlers/__init__.py +0 -0
  101. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/handlers/utils.py +0 -0
  102. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/inferers/__init__.py +0 -0
  103. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/inferers/inferer.py +0 -0
  104. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/losses/__init__.py +0 -0
  105. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
  106. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/metrics/__init__.py +0 -0
  107. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
  108. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/__init__.py +0 -0
  109. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/__init__.py +0 -0
  110. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/array.py +0 -0
  111. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
  112. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
  113. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/array.py +0 -0
  114. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
  115. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/utils.py +0 -0
  116. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/__init__.py +0 -0
  117. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/complex_utils.py +0 -0
  118. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/fastmri_reader.py +0 -0
  119. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/mri_utils.py +0 -0
  120. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/__init__.py +0 -0
  121. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
  122. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
  123. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
  124. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
  125. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
  126. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
  127. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
  128. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/__init__.py +0 -0
  129. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/array.py +0 -0
  130. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
  131. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/tcia/__init__.py +0 -0
  132. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/tcia/label_desc.py +0 -0
  133. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/tcia/utils.py +0 -0
  134. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/__init__.py +0 -0
  135. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/inferer.py +0 -0
  136. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/sampler.py +0 -0
  137. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/transforms.py +0 -0
  138. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/__init__.py +0 -0
  139. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/algo_gen.py +0 -0
  140. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/analyzer.py +0 -0
  141. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/operations.py +0 -0
  142. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/seg_summarizer.py +0 -0
  143. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/utils.py +0 -0
  144. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/__init__.py +0 -0
  145. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/__main__.py +0 -0
  146. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/config_item.py +0 -0
  147. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/config_parser.py +0 -0
  148. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/properties.py +0 -0
  149. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/reference_resolver.py +0 -0
  150. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/scripts.py +0 -0
  151. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/utils.py +0 -0
  152. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/workflows.py +0 -0
  153. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/__init__.py +0 -0
  154. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/__main__.py +0 -0
  155. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/check_env.py +0 -0
  156. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/deviceconfig.py +0 -0
  157. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/print_dependencies.py +0 -0
  158. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/type_definitions.py +0 -0
  159. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/__init__.py +0 -0
  160. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/box_utils.py +0 -0
  161. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/csv_saver.py +0 -0
  162. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/dataloader.py +0 -0
  163. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/dataset.py +0 -0
  164. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/dataset_summary.py +0 -0
  165. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/decathlon_datalist.py +0 -0
  166. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/fft_utils.py +0 -0
  167. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/folder_layout.py +0 -0
  168. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/image_dataset.py +0 -0
  169. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/image_reader.py +0 -0
  170. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/image_writer.py +0 -0
  171. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/iterable_dataset.py +0 -0
  172. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/itk_torch_bridge.py +0 -0
  173. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/meta_obj.py +0 -0
  174. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/meta_tensor.py +0 -0
  175. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/nvimgcodec_pydicom_plugin.py +0 -0
  176. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/samplers.py +0 -0
  177. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/test_time_augmentation.py +0 -0
  178. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/thread_buffer.py +0 -0
  179. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/torchscript_utils.py +0 -0
  180. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/ultrasound_confidence_map.py +0 -0
  181. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/video_dataset.py +0 -0
  182. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/wsi_datasets.py +0 -0
  183. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/wsi_reader.py +0 -0
  184. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/__init__.py +0 -0
  185. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/evaluator.py +0 -0
  186. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/trainer.py +0 -0
  187. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/utils.py +0 -0
  188. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/workflow.py +0 -0
  189. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/__init__.py +0 -0
  190. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/client/__init__.py +0 -0
  191. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/client/client_algo.py +0 -0
  192. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/client/monai_algo.py +0 -0
  193. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/__init__.py +0 -0
  194. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/constants.py +0 -0
  195. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/exchange_object.py +0 -0
  196. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/filters.py +0 -0
  197. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/__init__.py +0 -0
  198. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/average_precision.py +0 -0
  199. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/checkpoint_loader.py +0 -0
  200. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/checkpoint_saver.py +0 -0
  201. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/classification_saver.py +0 -0
  202. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/clearml_handlers.py +0 -0
  203. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/confusion_matrix.py +0 -0
  204. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/decollate_batch.py +0 -0
  205. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/earlystop_handler.py +0 -0
  206. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/garbage_collector.py +0 -0
  207. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/hausdorff_distance.py +0 -0
  208. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/ignite_metric.py +0 -0
  209. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/logfile_handler.py +0 -0
  210. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/lr_schedule_handler.py +0 -0
  211. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/mean_dice.py +0 -0
  212. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/mean_iou.py +0 -0
  213. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/metric_logger.py +0 -0
  214. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/metrics_reloaded_handler.py +0 -0
  215. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/metrics_saver.py +0 -0
  216. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/nvtx_handlers.py +0 -0
  217. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/panoptic_quality.py +0 -0
  218. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/parameter_scheduler.py +0 -0
  219. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/postprocessing.py +0 -0
  220. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/probability_maps.py +0 -0
  221. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/regression_metrics.py +0 -0
  222. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/roc_auc.py +0 -0
  223. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/smartcache_handler.py +0 -0
  224. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/stats_handler.py +0 -0
  225. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/surface_distance.py +0 -0
  226. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/tensorboard_handlers.py +0 -0
  227. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/trt_handler.py +0 -0
  228. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/utils.py +0 -0
  229. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/validation_handler.py +0 -0
  230. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/__init__.py +0 -0
  231. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/inferer.py +0 -0
  232. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/splitter.py +0 -0
  233. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/utils.py +0 -0
  234. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/adversarial_loss.py +0 -0
  235. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/aucm_loss.py +0 -0
  236. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/barlow_twins.py +0 -0
  237. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/boundary_loss.py +0 -0
  238. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/cldice.py +0 -0
  239. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/contrastive.py +0 -0
  240. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/deform.py +0 -0
  241. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/dice.py +0 -0
  242. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/ds_loss.py +0 -0
  243. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/focal_loss.py +0 -0
  244. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/giou_loss.py +0 -0
  245. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/hausdorff_loss.py +0 -0
  246. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/mcc_loss.py +0 -0
  247. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/multi_scale.py +0 -0
  248. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/nacl_loss.py +0 -0
  249. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/perceptual.py +0 -0
  250. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/spatial_mask.py +0 -0
  251. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/spectral_loss.py +0 -0
  252. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/ssim_loss.py +0 -0
  253. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/sure_loss.py +0 -0
  254. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/tversky.py +0 -0
  255. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/unified_focal_loss.py +0 -0
  256. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/utils.py +0 -0
  257. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/__init__.py +0 -0
  258. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/absolute_volume_difference.py +0 -0
  259. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/active_learning_metrics.py +0 -0
  260. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/average_precision.py +0 -0
  261. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/confusion_matrix.py +0 -0
  262. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/cumulative_average.py +0 -0
  263. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/f_beta_score.py +0 -0
  264. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/froc.py +0 -0
  265. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/generalized_dice.py +0 -0
  266. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/loss_metric.py +0 -0
  267. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/meandice.py +0 -0
  268. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/metric.py +0 -0
  269. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/mmd.py +0 -0
  270. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/panoptic_quality.py +0 -0
  271. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/regression.py +0 -0
  272. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/rocauc.py +0 -0
  273. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/surface_dice.py +0 -0
  274. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/surface_distance.py +0 -0
  275. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/wrapper.py +0 -0
  276. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/__init__.py +0 -0
  277. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/__init__.py +0 -0
  278. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/acti_norm.py +0 -0
  279. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/activation.py +0 -0
  280. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/activation_checkpointing.py +0 -0
  281. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/aspp.py +0 -0
  282. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/attention_utils.py +0 -0
  283. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
  284. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/cablock.py +0 -0
  285. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/convolutions.py +0 -0
  286. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/crf.py +0 -0
  287. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/crossattention.py +0 -0
  288. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/denseblock.py +0 -0
  289. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/dints_block.py +0 -0
  290. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/downsample.py +0 -0
  291. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/dynunet_block.py +0 -0
  292. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/encoder.py +0 -0
  293. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/fcn.py +0 -0
  294. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/feature_pyramid_network.py +0 -0
  295. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/fft_utils_t.py +0 -0
  296. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/hyena.py +0 -0
  297. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/localnet_block.py +0 -0
  298. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/mednext_block.py +0 -0
  299. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/mlp.py +0 -0
  300. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/patchembedding.py +0 -0
  301. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/pos_embed_utils.py +0 -0
  302. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/regunet_block.py +0 -0
  303. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/rel_pos_embedding.py +0 -0
  304. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/segresnet_block.py +0 -0
  305. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/selfattention.py +0 -0
  306. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/spade_norm.py +0 -0
  307. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/spatialattention.py +0 -0
  308. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
  309. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/text_embedding.py +0 -0
  310. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/transformerblock.py +0 -0
  311. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/unetr_block.py +0 -0
  312. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/upsample.py +0 -0
  313. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/__init__.py +0 -0
  314. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/conjugate_gradient.py +0 -0
  315. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/convutils.py +0 -0
  316. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/drop_path.py +0 -0
  317. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/factories.py +0 -0
  318. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/filtering.py +0 -0
  319. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/gmm.py +0 -0
  320. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/simplelayers.py +0 -0
  321. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/spatial_transforms.py +0 -0
  322. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/utils.py +0 -0
  323. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/vector_quantizer.py +0 -0
  324. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/weight_init.py +0 -0
  325. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/__init__.py +0 -0
  326. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/ahnet.py +0 -0
  327. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/attentionunet.py +0 -0
  328. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/autoencoder.py +0 -0
  329. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/autoencoderkl.py +0 -0
  330. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/basic_unet.py +0 -0
  331. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/basic_unetplusplus.py +0 -0
  332. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/cell_sam_wrapper.py +0 -0
  333. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/classifier.py +0 -0
  334. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/controlnet.py +0 -0
  335. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/daf3d.py +0 -0
  336. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/densenet.py +0 -0
  337. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/diffusion_model_unet.py +0 -0
  338. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/dynunet.py +0 -0
  339. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/efficientnet.py +0 -0
  340. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/flexible_unet.py +0 -0
  341. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/fullyconnectednet.py +0 -0
  342. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/generator.py +0 -0
  343. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/highresnet.py +0 -0
  344. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/hovernet.py +0 -0
  345. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/hyena_nd_unetr.py +0 -0
  346. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
  347. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/mednext.py +0 -0
  348. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/milmodel.py +0 -0
  349. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/navit.py +0 -0
  350. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/netadapter.py +0 -0
  351. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/patchgan_discriminator.py +0 -0
  352. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/quicknat.py +0 -0
  353. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/regressor.py +0 -0
  354. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/resnet.py +0 -0
  355. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/restormer.py +0 -0
  356. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/segresnet.py +0 -0
  357. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/segresnet_ds.py +0 -0
  358. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/senet.py +0 -0
  359. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_autoencoderkl.py +0 -0
  360. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
  361. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_network.py +0 -0
  362. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/swin_unetr.py +0 -0
  363. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/torchvision_fc.py +0 -0
  364. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/transchex.py +0 -0
  365. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/transformer.py +0 -0
  366. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/unet.py +0 -0
  367. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/unetr.py +0 -0
  368. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/varautoencoder.py +0 -0
  369. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vista3d.py +0 -0
  370. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vit.py +0 -0
  371. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vitautoenc.py +0 -0
  372. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vnet.py +0 -0
  373. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/voxelmorph.py +0 -0
  374. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vqvae.py +0 -0
  375. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/__init__.py +0 -0
  376. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/ddim.py +0 -0
  377. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/ddpm.py +0 -0
  378. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/pndm.py +0 -0
  379. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/rectified_flow.py +0 -0
  380. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/scheduler.py +0 -0
  381. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/trt_compiler.py +0 -0
  382. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/utils.py +0 -0
  383. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/__init__.py +0 -0
  384. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/lr_finder.py +0 -0
  385. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/lr_scheduler.py +0 -0
  386. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/novograd.py +0 -0
  387. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/utils.py +0 -0
  388. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/py.typed +0 -0
  389. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/adaptors.py +0 -0
  390. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/compose.py +0 -0
  391. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/__init__.py +0 -0
  392. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/array.py +0 -0
  393. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/batch.py +0 -0
  394. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/dictionary.py +0 -0
  395. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/functional.py +0 -0
  396. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/__init__.py +0 -0
  397. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/inverse.py +0 -0
  398. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/inverse_batch_transform.py +0 -0
  399. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/io/__init__.py +0 -0
  400. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/io/array.py +0 -0
  401. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/io/dictionary.py +0 -0
  402. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/__init__.py +0 -0
  403. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/array.py +0 -0
  404. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/dictionary.py +0 -0
  405. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/functional.py +0 -0
  406. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/utils.py +0 -0
  407. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/meta_utility/__init__.py +0 -0
  408. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/meta_utility/dictionary.py +0 -0
  409. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/nvtx.py +0 -0
  410. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/post/__init__.py +0 -0
  411. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/__init__.py +0 -0
  412. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/array.py +0 -0
  413. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/dictionary.py +0 -0
  414. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/signal/__init__.py +0 -0
  415. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/signal/array.py +0 -0
  416. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/signal/dictionary.py +0 -0
  417. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/__init__.py +0 -0
  418. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/array.py +0 -0
  419. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/dictionary.py +0 -0
  420. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/__init__.py +0 -0
  421. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/array.py +0 -0
  422. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/functional.py +0 -0
  423. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/traits.py +0 -0
  424. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/transform.py +0 -0
  425. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utility/__init__.py +0 -0
  426. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utility/array.py +0 -0
  427. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utility/dictionary.py +0 -0
  428. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils_create_transform_ims.py +0 -0
  429. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils_morphological_ops.py +0 -0
  430. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
  431. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/__init__.py +0 -0
  432. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/compare_sources.py +0 -0
  433. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/component_store.py +0 -0
  434. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/decorators.py +0 -0
  435. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/dist.py +0 -0
  436. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/enums.py +0 -0
  437. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/jupyter_utils.py +0 -0
  438. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/misc.py +0 -0
  439. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/module.py +0 -0
  440. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/nvtx.py +0 -0
  441. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/ordering.py +0 -0
  442. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/profiling.py +0 -0
  443. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/safeeval.py +0 -0
  444. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/state_cacher.py +0 -0
  445. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/tf32.py +0 -0
  446. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/type_conversion.py +0 -0
  447. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/__init__.py +0 -0
  448. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/class_activation_maps.py +0 -0
  449. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/gradient_based.py +0 -0
  450. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/img2tensorboard.py +0 -0
  451. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/occlusion_sensitivity.py +0 -0
  452. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/utils.py +0 -0
  453. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/visualizer.py +0 -0
  454. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/dependency_links.txt +0 -0
  455. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/not-zip-safe +0 -0
  456. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/requires.txt +0 -0
  457. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/top_level.txt +0 -0
  458. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/pyproject.toml +0 -0
  459. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/setup.cfg +0 -0
  460. {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2640
3
+ Version: 1.7.dev2642
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Author-email: MONAI Consortium <monai.contact@gmail.com>
6
6
  License: Apache License 2.0
@@ -136,4 +136,4 @@ except Exception:
136
136
 
137
137
  if MONAIEnvVars.debug():
138
138
  raise
139
- __commit_id__ = "b229330ff12ea9a60b52f6ebfed256331aec71e0"
139
+ __commit_id__ = "8de81226c971dd27b5826d4bd60849d46aae9ff2"
@@ -75,7 +75,9 @@ def load_module(
75
75
  source = glob(path.join(module_dir, "**", "*.cpp"), recursive=True)
76
76
  if torch.cuda.is_available():
77
77
  source += glob(path.join(module_dir, "**", "*.cu"), recursive=True)
78
- platform_str += f"_{torch.version.cuda}"
78
+ # `torch.version.cuda` is None on a ROCm build, which would make every ROCm
79
+ # toolkit version share a single cache entry. Key on whichever is populated.
80
+ platform_str += f"_{torch.version.cuda or f'hip{torch.version.hip}'}"
79
81
 
80
82
  # Constructing compilation argument list.
81
83
  define_args = [] if not defines else [f"-D {key}={defines[key]}" for key in defines]
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-10-04T02:49:09+0000",
11
+ "date": "2026-10-18T02:14:29+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "e06f55fca00aba1d14a62c329e1f16d77b871297",
15
- "version": "1.7.dev2640"
14
+ "full-revisionid": "4835c649a66849125f1e656543264f5fa7d261c0",
15
+ "version": "1.7.dev2642"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -30,6 +30,7 @@ from urllib.request import urlopen, urlretrieve
30
30
 
31
31
  from monai.config.type_definitions import PathLike
32
32
  from monai.utils import look_up_option, min_version, optional_import
33
+ from monai.utils.deprecate_utils import warn_deprecated
33
34
 
34
35
  requests, has_requests = optional_import("requests")
35
36
  gdown, has_gdown = optional_import("gdown", "4.7.3")
@@ -177,6 +178,9 @@ def check_hash(filepath: PathLike, val: str | None = None, hash_type: str = "sha
177
178
  The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
178
179
  See also: :py:data:`monai.apps.utils.SUPPORTED_HASH_TYPES`.
179
180
 
181
+ .. versionchanged:: 1.7
182
+ The default `hash_type` changed from "md5" to "sha256" for stronger integrity verification.
183
+ Pass `hash_type="md5"` explicitly to verify against MD5 hashes.
180
184
  """
181
185
  if val is None:
182
186
  warnings.warn(f"No hash value provided for {filepath}; file integrity is NOT verified.", stacklevel=2)
@@ -204,7 +208,7 @@ def download_url(
204
208
  url: str,
205
209
  filepath: PathLike = "",
206
210
  hash_val: str | None = None,
207
- hash_type: str = "sha256",
211
+ hash_type: str | None = None,
208
212
  progress: bool = True,
209
213
  **gdown_kwargs: Any,
210
214
  ) -> None:
@@ -217,7 +221,7 @@ def download_url(
217
221
  If undefined, `os.path.basename(url)` will be used.
218
222
  hash_val: expected hash value to validate the downloaded file.
219
223
  if None, skip hash validation.
220
- hash_type: type of hash algorithm to use, default is `"sha256"`.
224
+ hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
221
225
  The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
222
226
  progress: whether to display a progress bar.
223
227
  gdown_kwargs: other args for `gdown` except for the `url`, `output` and `quiet`.
@@ -234,7 +238,23 @@ def download_url(
234
238
  ContentTooShortError: See urllib.request.urlretrieve.
235
239
  IOError: See urllib.request.urlretrieve.
236
240
  HashCheckError: When the hash validation of the ``url`` downloaded file fails.
241
+
242
+ .. versionchanged:: 1.7
243
+ The default `hash_type` changed from "md5" to None for stronger integrity verification. If this is left None
244
+ when a `hash_val` value is provided, this will warn to explicitly set `hash_type` then choose sha256 hashing.
245
+ Pass `hash_type="md5"` explicitly to verify against MD5 hashes and suppress the warning. In MONAI 1.8 the
246
+ default will be set to "sha256".
237
247
  """
248
+ if hash_val is not None and hash_type is None:
249
+ warn_deprecated(
250
+ "monai.apps.utils.download_url",
251
+ 'Default `hash_type` value changed to `None` from "md5" in MONAI 1.7, '
252
+ "set to explicit value to suppress this warning. Defaulting to sha256 checking. In MONAI 1.8 the "
253
+ 'default will be set to "sha256".',
254
+ stacklevel=3,
255
+ )
256
+ hash_type = "sha256"
257
+
238
258
  if not filepath:
239
259
  filepath = Path(".", _basename(url)).resolve()
240
260
  logger.info(f"Default downloading to '{filepath}'")
@@ -316,7 +336,7 @@ def extractall(
316
336
  filepath: PathLike,
317
337
  output_dir: PathLike = ".",
318
338
  hash_val: str | None = None,
319
- hash_type: str = "sha256",
339
+ hash_type: str | None = None,
320
340
  file_type: str = "",
321
341
  has_base: bool = True,
322
342
  ) -> None:
@@ -329,7 +349,7 @@ def extractall(
329
349
  output_dir: target directory to save extracted files.
330
350
  hash_val: expected hash value to validate the compressed file.
331
351
  if None, skip hash validation.
332
- hash_type: type of hash algorithm to use, default is `"sha256"`.
352
+ hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
333
353
  file_type: string of file type for decompressing. Leave it empty to infer the type from the filepath basename.
334
354
  has_base: whether the extracted files have a base folder. This flag is used when checking if the existing
335
355
  folder is a result of `extractall`, if it is, the extraction is skipped. For example, if A.zip is unzipped
@@ -340,7 +360,22 @@ def extractall(
340
360
  HashCheckError: When the hash validation of the ``filepath`` compressed file fails.
341
361
  NotImplementedError: When the ``filepath`` file extension is not one of [zip", "tar.gz", "tar"].
342
362
 
363
+ .. versionchanged:: 1.6.1
364
+ The default `hash_type` changed from "md5" to None for stronger integrity verification. If this is left None
365
+ when a `hash_val` value is provided, this will warn to explicitly set `hash_type` then choose sha256 hashing.
366
+ Pass `hash_type="md5"` explicitly to verify against MD5 hashes and suppress the warning. In MONAI 1.8 the
367
+ default will be set to "sha256".
343
368
  """
369
+ if hash_val is not None and hash_type is None:
370
+ warn_deprecated(
371
+ "monai.apps.utils.extractall",
372
+ 'Default `hash_type` value changed to `None` from "md5" in MONAI 1.7, '
373
+ "set to an explicit value to suppress this warning. Defaulting to sha256 checking. In MONAI 1.8 the "
374
+ 'default will be set to "sha256".',
375
+ stacklevel=3,
376
+ )
377
+ hash_type = "sha256"
378
+
344
379
  filepath = Path(filepath)
345
380
  if hash_val and not check_hash(filepath, hash_val, hash_type):
346
381
  raise HashCheckError(
@@ -395,7 +430,7 @@ def download_and_extract(
395
430
  filepath: PathLike = "",
396
431
  output_dir: PathLike = ".",
397
432
  hash_val: str | None = None,
398
- hash_type: str = "sha256",
433
+ hash_type: str | None = None,
399
434
  file_type: str = "",
400
435
  has_base: bool = True,
401
436
  progress: bool = True,
@@ -411,7 +446,7 @@ def download_and_extract(
411
446
  default is the current directory.
412
447
  hash_val: expected hash value to validate the downloaded file.
413
448
  if None, skip hash validation.
414
- hash_type: type of hash algorithm to use, default is `"sha256"`.
449
+ hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
415
450
  file_type: string of file type for decompressing. Leave it empty to infer the type from url's base file name.
416
451
  has_base: whether the extracted files have a base folder. This flag is used when checking if the existing
417
452
  folder is a result of `extractall`, if it is, the extraction is skipped. For example, if A.zip is unzipped
@@ -257,6 +257,8 @@ class GridPatchDataset(IterableDataset):
257
257
  self.first_random = self.patch_transform.get_index_of_first(
258
258
  lambda t: isinstance(t, RandomizableTrait) or not isinstance(t, Transform)
259
259
  )
260
+ if self.first_random is None:
261
+ self.first_random = len(self.patch_transform.transforms)
260
262
 
261
263
  if self.cache:
262
264
  if isinstance(data, Iterator):
@@ -279,7 +281,11 @@ class GridPatchDataset(IterableDataset):
279
281
  self.cache_num = min(int(self.set_num), int(len(mapping) * self.set_rate), len(mapping))
280
282
  self._hash_keys = list(mapping)[: self.cache_num]
281
283
  indices = list(mapping.values())[: self.cache_num]
282
- self._cache, self._cache_other = zip(*self._fill_cache(indices)) # type: ignore
284
+ cache_items = self._fill_cache(indices)
285
+ if cache_items:
286
+ self._cache, self._cache_other = zip(*cache_items) # type: ignore
287
+ else:
288
+ self._cache, self._cache_other = [], []
283
289
 
284
290
  def _fill_cache(self, indices=None) -> list:
285
291
  """
@@ -339,12 +345,9 @@ class GridPatchDataset(IterableDataset):
339
345
 
340
346
  def __iter__(self):
341
347
  if self.cache:
342
- cache_index = None
343
348
  for image in super().__iter__():
344
349
  key = self.hash_func(image)
345
- if key in self._hash_keys:
346
- # if existing in cache, try to get the index in cache
347
- cache_index = self._hash_keys.index(key)
350
+ cache_index = self._hash_keys.index(key) if key in self._hash_keys else None
348
351
  if cache_index is None:
349
352
  # no cache for this index, execute all the transforms directly
350
353
  yield from self._generate_patches(self.patch_iter(image))
@@ -354,11 +357,11 @@ class GridPatchDataset(IterableDataset):
354
357
  "Cache buffer is not initialized, please call `set_data()` before epoch begins."
355
358
  )
356
359
  data = self._cache[cache_index]
357
- other = self._cache_other[cache_index]
358
360
 
359
361
  # load data from cache and execute from the first random transform
360
362
  data = deepcopy(data) if self.copy_cache else data
361
- yield from self._generate_patches(zip(data, other), start=self.first_random)
363
+ cached_patches = zip(data, self._cache_other[cache_index]) if self.with_coordinates else zip(data)
364
+ yield from self._generate_patches(cached_patches, start=self.first_random)
362
365
  else:
363
366
  for image in super().__iter__():
364
367
  yield from self._generate_patches(self.patch_iter(image))
@@ -28,7 +28,8 @@ def create_test_image_2d(
28
28
  num_seg_classes: int = 5,
29
29
  channel_dim: int | None = None,
30
30
  random_state: np.random.RandomState | None = None,
31
- ) -> tuple[np.ndarray, np.ndarray]:
31
+ return_instance_id: bool = False,
32
+ ) -> tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]:
32
33
  """
33
34
  Return a noisy 2D image with `num_objs` circles and a 2D mask image. The maximum and minimum radii of the circles
34
35
  are given as `rad_max` and `rad_min`. The mask will have `num_seg_classes` number of classes for segmentations labeled
@@ -48,9 +49,13 @@ def create_test_image_2d(
48
49
  channel_dim: if None, create an image without channel dimension, otherwise create
49
50
  an image with channel dimension as first dim or last dim. Defaults to `None`.
50
51
  random_state: the random generator to use. Defaults to `np.random`.
52
+ return_instance_id: if True, also return an instance ID mask where every generated
53
+ object is assigned a unique positive integer. Later objects overwrite earlier IDs
54
+ where they overlap, so fully covered objects may not appear in the mask. Defaults to `False`.
51
55
 
52
56
  Returns:
53
- Randomised Numpy array with shape (`height`, `width`)
57
+ A tuple of image and segmentation label arrays. If `return_instance_id=True`, also returns
58
+ an instance ID array as the third element.
54
59
  """
55
60
 
56
61
  if rad_max <= rad_min:
@@ -62,9 +67,10 @@ def create_test_image_2d(
62
67
  raise ValueError(f"the minimal size {min_size} of the image should be larger than `2 * rad_max` 2x{rad_max}.")
63
68
 
64
69
  image = np.zeros((height, width))
70
+ instance_ids = np.zeros((height, width), dtype=np.int32) if return_instance_id else None
65
71
  rs: np.random.RandomState = np.random.random.__self__ if random_state is None else random_state # type: ignore
66
72
 
67
- for _ in range(num_objs):
73
+ for obj_id in range(1, num_objs + 1):
68
74
  x = rs.randint(rad_max, height - rad_max)
69
75
  y = rs.randint(rad_max, width - rad_max)
70
76
  rad = rs.randint(rad_min, rad_max)
@@ -75,6 +81,8 @@ def create_test_image_2d(
75
81
  image[circle] = np.ceil(rs.random() * num_seg_classes)
76
82
  else:
77
83
  image[circle] = rs.random() * 0.5 + 0.5
84
+ if instance_ids is not None:
85
+ instance_ids[circle] = obj_id
78
86
 
79
87
  labels = np.ceil(image).astype(np.int32, copy=False)
80
88
 
@@ -87,10 +95,16 @@ def create_test_image_2d(
87
95
  if channel_dim == 0:
88
96
  noisyimage = noisyimage[None]
89
97
  labels = labels[None]
98
+ if instance_ids is not None:
99
+ instance_ids = instance_ids[None]
90
100
  else:
91
101
  noisyimage = noisyimage[..., None]
92
102
  labels = labels[..., None]
103
+ if instance_ids is not None:
104
+ instance_ids = instance_ids[..., None]
93
105
 
106
+ if instance_ids is not None:
107
+ return noisyimage, labels, instance_ids
94
108
  return noisyimage, labels
95
109
 
96
110
 
@@ -105,7 +119,8 @@ def create_test_image_3d(
105
119
  num_seg_classes: int = 5,
106
120
  channel_dim: int | None = None,
107
121
  random_state: np.random.RandomState | None = None,
108
- ) -> tuple[np.ndarray, np.ndarray]:
122
+ return_instance_id: bool = False,
123
+ ) -> tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]:
109
124
  """
110
125
  Return a noisy 3D image and segmentation.
111
126
 
@@ -122,9 +137,13 @@ def create_test_image_3d(
122
137
  channel_dim: if None, create an image without channel dimension, otherwise create
123
138
  an image with channel dimension as first dim or last dim. Defaults to `None`.
124
139
  random_state: the random generator to use. Defaults to `np.random`.
140
+ return_instance_id: if True, also return an instance ID mask where every generated
141
+ object is assigned a unique positive integer. Later objects overwrite earlier IDs
142
+ where they overlap, so fully covered objects may not appear in the mask. Defaults to `False`.
125
143
 
126
144
  Returns:
127
- Randomised Numpy array with shape (`height`, `width`, `depth`)
145
+ A tuple of image and segmentation label arrays. If `return_instance_id=True`, also returns
146
+ an instance ID array as the third element.
128
147
 
129
148
  See also:
130
149
  :py:meth:`~create_test_image_2d`
@@ -139,9 +158,10 @@ def create_test_image_3d(
139
158
  raise ValueError(f"the minimal size {min_size} of the image should be larger than `2 * rad_max` 2x{rad_max}.")
140
159
 
141
160
  image = np.zeros((height, width, depth))
161
+ instance_ids = np.zeros((height, width, depth), dtype=np.int32) if return_instance_id else None
142
162
  rs: np.random.RandomState = np.random.random.__self__ if random_state is None else random_state # type: ignore
143
163
 
144
- for _ in range(num_objs):
164
+ for obj_id in range(1, num_objs + 1):
145
165
  x = rs.randint(rad_max, height - rad_max)
146
166
  y = rs.randint(rad_max, width - rad_max)
147
167
  z = rs.randint(rad_max, depth - rad_max)
@@ -153,6 +173,8 @@ def create_test_image_3d(
153
173
  image[circle] = np.ceil(rs.random() * num_seg_classes)
154
174
  else:
155
175
  image[circle] = rs.random() * 0.5 + 0.5
176
+ if instance_ids is not None:
177
+ instance_ids[circle] = obj_id
156
178
 
157
179
  labels = np.ceil(image).astype(np.int32, copy=False)
158
180
 
@@ -162,8 +184,17 @@ def create_test_image_3d(
162
184
  if channel_dim is not None:
163
185
  if not (isinstance(channel_dim, int) and channel_dim in (-1, 0, 3)):
164
186
  raise AssertionError("invalid channel dim.")
165
- noisyimage, labels = (
166
- (noisyimage[None], labels[None]) if channel_dim == 0 else (noisyimage[..., None], labels[..., None])
167
- )
187
+ if channel_dim == 0:
188
+ noisyimage = noisyimage[None]
189
+ labels = labels[None]
190
+ if instance_ids is not None:
191
+ instance_ids = instance_ids[None]
192
+ else:
193
+ noisyimage = noisyimage[..., None]
194
+ labels = labels[..., None]
195
+ if instance_ids is not None:
196
+ instance_ids = instance_ids[..., None]
168
197
 
198
+ if instance_ids is not None:
199
+ return noisyimage, labels, instance_ids
169
200
  return noisyimage, labels
@@ -686,28 +686,40 @@ def worker_init_fn(worker_id: int) -> None:
686
686
  set_rnd(worker_info.dataset, seed=worker_info.seed) # type: ignore[union-attr]
687
687
 
688
688
 
689
- def set_rnd(obj, seed: int) -> int:
689
+ def set_rnd(obj, seed: int, _seen: set[int] | None = None) -> int:
690
690
  """
691
691
  Set seed or random state for all randomizable properties of obj.
692
692
 
693
693
  Args:
694
694
  obj: object to set seed or random state for.
695
695
  seed: set the random state with an integer seed.
696
+ _seen: internal set of already-visited object ids, used to guard against
697
+ infinite recursion on cyclic object graphs (e.g. OmegaConf/Hydra
698
+ configs whose child nodes back-reference their parent, see issue #8087).
696
699
  """
700
+ if _seen is None:
701
+ _seen = set()
697
702
  if isinstance(obj, (tuple, list)): # ZipDataset.data is a list
698
- _seed = seed
703
+ if id(obj) in _seen:
704
+ return seed
705
+ _seen.add(id(obj))
706
+ has_randomizable = False
699
707
  for item in obj:
700
- _seed = set_rnd(item, seed=seed)
701
- return seed if _seed == seed else seed + 1 # return a different seed if there are randomizable items
708
+ item_seed = set_rnd(item, seed=seed, _seen=_seen)
709
+ has_randomizable = has_randomizable or item_seed != seed
710
+ return seed + 1 if has_randomizable else seed
702
711
  if not hasattr(obj, "__dict__"):
703
712
  return seed # no attribute
713
+ if id(obj) in _seen:
714
+ return seed # already visited: avoid infinite recursion on cyclic references
715
+ _seen.add(id(obj))
704
716
  if hasattr(obj, "set_random_state"):
705
717
  obj.set_random_state(seed=seed % MAX_SEED)
706
718
  return seed + 1 # a different seed for the next component
707
719
  for key in obj.__dict__:
708
720
  if key.startswith("__"): # skip the private methods
709
721
  continue
710
- seed = set_rnd(obj.__dict__[key], seed=seed)
722
+ seed = set_rnd(obj.__dict__[key], seed=seed, _seen=_seen)
711
723
  return seed
712
724
 
713
725
 
@@ -59,8 +59,8 @@ class CalibrationError(IgniteMetricHandler):
59
59
  - Guo, C., et al. "On Calibration of Modern Neural Networks." ICML 2017.
60
60
  https://proceedings.mlr.press/v70/guo17a.html
61
61
  - Barfoot, T., et al. "Average Calibration Losses for Reliable Uncertainty in
62
- Medical Image Segmentation." arXiv:2506.03942v3, 2025.
63
- https://arxiv.org/abs/2506.03942v3
62
+ Medical Image Segmentation." IEEE Transactions on Medical Imaging, 2026.
63
+ https://doi.org/10.1109/TMI.2026.3673118
64
64
 
65
65
  See Also:
66
66
  - :py:class:`~monai.metrics.CalibrationErrorMetric`: The underlying metric class.
@@ -12,6 +12,7 @@
12
12
  from __future__ import annotations
13
13
 
14
14
  import os
15
+ import threading
15
16
  import time
16
17
  import warnings
17
18
  from collections.abc import Callable, Mapping, Sequence
@@ -43,6 +44,9 @@ MlflowException, _ = optional_import(
43
44
  )
44
45
  pandas, _ = optional_import("pandas", descriptor="Please install pandas for recording the dataset.")
45
46
  tqdm, _ = optional_import("tqdm", "4.47.0", min_version, "tqdm")
47
+ SystemMetricsMonitor, has_system_metrics = optional_import(
48
+ "mlflow.system_metrics.system_metrics_monitor", name="SystemMetricsMonitor"
49
+ )
46
50
 
47
51
  if TYPE_CHECKING:
48
52
  from ignite.engine import Engine
@@ -136,6 +140,19 @@ class MLFlowHandler:
136
140
  or the ``MLFLOW_TRACKING_URI`` environment variable), it defaults to an ``mlruns`` directory
137
141
  next to the database file; for other backends ``None`` lets MLflow decide based on the
138
142
  ``tracking_uri``. Has no effect if the experiment already exists.
143
+ log_system_metrics: whether to record system resource usage (CPU, memory, disk, network and GPU)
144
+ while the workflow runs, default to False. The metrics are sampled in a background thread by
145
+ MLflow itself and stored in the same run as the workflow metrics, under the `system/` prefix.
146
+ Requires `psutil`, and `pynvml` in addition for the GPU metrics. Note that MLflow reads the
147
+ run through the global tracking URI to sample it, so this points the global tracking URI
148
+ (and with it `MLFLOW_TRACKING_URI`, which later handlers read in preference to their own
149
+ argument) at `tracking_uri` while the run is sampled, and puts the previous value back
150
+ when sampling stops.
151
+ system_metrics_sampling_interval: seconds between two samples of the system metrics, default to
152
+ `None`, which keeps the MLflow default (10 seconds). Only used if `log_system_metrics` is True.
153
+ system_metrics_samples_before_logging: number of samples to aggregate before they are logged,
154
+ default to `None`, which keeps the MLflow default (1 sample). Only used if `log_system_metrics`
155
+ is True.
139
156
 
140
157
  For more details of MLFlow usage, please refer to: https://mlflow.org/docs/latest/index.html.
141
158
 
@@ -144,6 +161,10 @@ class MLFlowHandler:
144
161
  # parameters that are logged at the start of training
145
162
  default_tracking_params = ["max_epochs", "epoch_length"]
146
163
 
164
+ # runs whose system metrics are being sampled, so that handlers sharing a run sample it once
165
+ _monitored_run_ids: set[str] = set()
166
+ _system_metrics_lock = threading.Lock()
167
+
147
168
  def __init__(
148
169
  self,
149
170
  tracking_uri: str | None = None,
@@ -165,6 +186,9 @@ class MLFlowHandler:
165
186
  optimizer_param_names: str | Sequence[str] = "lr",
166
187
  close_on_complete: bool = False,
167
188
  artifact_location: str | None = None,
189
+ log_system_metrics: bool = False,
190
+ system_metrics_sampling_interval: int | None = None,
191
+ system_metrics_samples_before_logging: int | None = None,
168
192
  ) -> None:
169
193
  self.iteration_log = iteration_log
170
194
  self.epoch_log = epoch_log
@@ -210,11 +234,27 @@ class MLFlowHandler:
210
234
  f"tracking_uri={effective_tracking_uri!r}. Use a SQLite URI "
211
235
  "(sqlite:///<path>/mlruns.db) or a remote tracking URI instead."
212
236
  )
237
+ # The system metrics monitor reads the run through the global tracking uri,
238
+ # so remember the uri that was actually settled on rather than the argument.
239
+ self.tracking_uri = effective_tracking_uri
213
240
  # Only the argument is passed to the client; when `MLFLOW_TRACKING_URI` took priority it
214
241
  # is left None so MLflow resolves the environment variable itself.
215
242
  self.client = mlflow.MlflowClient(tracking_uri=None if env_tracking_uri else tracking_uri)
216
243
  self.run_finish_status = mlflow.entities.RunStatus.to_string(mlflow.entities.RunStatus.FINISHED)
217
244
  self.close_on_complete = close_on_complete
245
+ self.log_system_metrics = log_system_metrics
246
+ for name, value in (
247
+ ("system_metrics_sampling_interval", system_metrics_sampling_interval),
248
+ ("system_metrics_samples_before_logging", system_metrics_samples_before_logging),
249
+ ):
250
+ if value is not None and value <= 0:
251
+ raise ValueError(f"`{name}` must be a positive number, got {value}.")
252
+ self.system_metrics_sampling_interval = system_metrics_sampling_interval
253
+ self.system_metrics_samples_before_logging = system_metrics_samples_before_logging
254
+ self.system_metrics_monitor = None
255
+ self._monitored_run_id: str | None = None
256
+ self._previous_tracking_uri: str | None = None
257
+ self._tracking_uri_overridden = False
218
258
  self.experiment = None
219
259
  self.cur_run = None
220
260
  self.dataset_dict = dataset_dict
@@ -295,6 +335,81 @@ class MLFlowHandler:
295
335
  else:
296
336
  self._default_dataset_log(self.dataset_dict)
297
337
 
338
+ if self.log_system_metrics:
339
+ self._start_system_metrics_monitor()
340
+
341
+ def _start_system_metrics_monitor(self) -> None:
342
+ """
343
+ Start sampling the system resource usage of the current run, if it is not sampled yet.
344
+
345
+ A workflow attaches one handler per engine, and those handlers share a run, so the run is
346
+ sampled by the first handler that starts and left alone by the other ones.
347
+ """
348
+ if self.system_metrics_monitor is not None or self.cur_run is None:
349
+ return
350
+
351
+ if not has_system_metrics:
352
+ warnings.warn("Please install mlflow>=2.8.0 to record the system metrics.")
353
+ return
354
+
355
+ run_id = self.cur_run.info.run_id
356
+ with MLFlowHandler._system_metrics_lock:
357
+ if run_id in MLFlowHandler._monitored_run_ids:
358
+ return
359
+
360
+ kwargs = {}
361
+ if self.system_metrics_sampling_interval is not None:
362
+ kwargs["sampling_interval"] = self.system_metrics_sampling_interval
363
+ if self.system_metrics_samples_before_logging is not None:
364
+ kwargs["samples_before_logging"] = self.system_metrics_samples_before_logging
365
+
366
+ # mlflow reads the run to sample through the global tracking uri, not through
367
+ # the client, so it has to be pointed at ours for as long as we sample. Setting
368
+ # it also writes MLFLOW_TRACKING_URI, which every later handler reads in
369
+ # preference to its own argument, so the previous value is put back when
370
+ # sampling stops. `None` is a meaningful previous value, meaning it was unset,
371
+ # and passing it back to mlflow restores exactly that.
372
+ previous_tracking_uri = os.environ.get("MLFLOW_TRACKING_URI")
373
+ overridden = False
374
+ try:
375
+ if self.tracking_uri:
376
+ mlflow.set_tracking_uri(self.tracking_uri)
377
+ overridden = True
378
+ monitor = SystemMetricsMonitor(run_id, **kwargs)
379
+ monitor.start()
380
+ except Exception as e:
381
+ # a workflow should not fail because its resource usage cannot be recorded
382
+ if overridden:
383
+ mlflow.set_tracking_uri(previous_tracking_uri)
384
+ warnings.warn(f"Failed to record the system metrics: {e}")
385
+ return
386
+ self._previous_tracking_uri = previous_tracking_uri
387
+ self._tracking_uri_overridden = overridden
388
+
389
+ MLFlowHandler._monitored_run_ids.add(run_id)
390
+ self.system_metrics_monitor = monitor
391
+ self._monitored_run_id = run_id
392
+
393
+ def _stop_system_metrics_monitor(self) -> None:
394
+ """
395
+ Stop sampling the system resource usage, if this handler is the one sampling it.
396
+ """
397
+ if self.system_metrics_monitor is None:
398
+ return
399
+
400
+ with MLFlowHandler._system_metrics_lock:
401
+ try:
402
+ self.system_metrics_monitor.finish()
403
+ except Exception as e:
404
+ warnings.warn(f"Failed to stop recording the system metrics: {e}")
405
+ if self._tracking_uri_overridden:
406
+ mlflow.set_tracking_uri(self._previous_tracking_uri)
407
+ self._tracking_uri_overridden = False
408
+ self._previous_tracking_uri = None
409
+ MLFlowHandler._monitored_run_ids.discard(self._monitored_run_id)
410
+ self.system_metrics_monitor = None
411
+ self._monitored_run_id = None
412
+
298
413
  def _set_experiment(self):
299
414
  experiment = self.experiment
300
415
  if not experiment:
@@ -394,6 +509,8 @@ class MLFlowHandler:
394
509
  """
395
510
  Handler for train or validation/evaluation completed Event.
396
511
  """
512
+ self._stop_system_metrics_monitor()
513
+
397
514
  if self.artifacts and self.cur_run:
398
515
  artifact_list = self._parse_artifacts()
399
516
  for artifact in artifact_list:
@@ -430,6 +547,8 @@ class MLFlowHandler:
430
547
  Stop current running logger of MLFlow and release local SQLite resources.
431
548
 
432
549
  """
550
+ self._stop_system_metrics_monitor()
551
+
433
552
  try:
434
553
  if self.cur_run:
435
554
  self.client.set_terminated(self.cur_run.info.run_id, self.run_finish_status)
@@ -307,7 +307,13 @@ class ZarrAvgMerger(Merger):
307
307
  self.value_store = zarr.storage.TempStore() if value_store is None else value_store # type: ignore
308
308
  self.count_store = zarr.storage.TempStore() if count_store is None else count_store # type: ignore
309
309
 
310
- self.chunks = chunks
310
+ # zarr 3.3 rejects boolean chunk arguments; `None` there means auto-chunking,
311
+ # which is what `chunks=True` meant before. On zarr < 3.3 `None` instead means
312
+ # a single whole-shape chunk, so the substitution must not be applied there.
313
+ if chunks is True and version_geq(get_package_version("zarr"), "3.3.0"):
314
+ self.chunks: Sequence[int] | bool | None = None
315
+ else:
316
+ self.chunks = chunks
311
317
 
312
318
  # Initialize codecs/compressor attributes with proper types
313
319
  self.codecs: list | None = None
@@ -15,6 +15,7 @@ from .adversarial_loss import PatchAdversarialLoss
15
15
  from .aucm_loss import AUCMLoss
16
16
  from .barlow_twins import BarlowTwinsLoss
17
17
  from .boundary_loss import BoundaryLoss
18
+ from .calibration import HardL1ACELoss, SoftL1ACELoss
18
19
  from .cldice import SoftclDiceLoss, SoftDiceclDiceLoss
19
20
  from .contrastive import ContrastiveLoss
20
21
  from .deform import BendingEnergyLoss, DiffusionLoss