monai-weekly 1.7.dev2626__tar.gz → 1.7.dev2627__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 (449) hide show
  1. {monai_weekly-1.7.dev2626/monai_weekly.egg-info → monai_weekly-1.7.dev2627}/PKG-INFO +1 -1
  2. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/__init__.py +1 -1
  3. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_version.py +3 -3
  4. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nnunet/nnunetv2_runner.py +6 -2
  5. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nnunet/utils.py +1 -9
  6. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/vista3d/transforms.py +0 -2
  7. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/auto3dseg/utils.py +1 -1
  8. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/dataset.py +19 -25
  9. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/image_reader.py +4 -4
  10. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/utils.py +4 -15
  11. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/inferers/merger.py +0 -3
  12. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/deform.py +66 -17
  13. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/image_dissimilarity.py +0 -1
  14. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/nacl_loss.py +1 -1
  15. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/__init__.py +1 -0
  16. monai_weekly-1.7.dev2627/monai/metrics/absolute_volume_difference.py +180 -0
  17. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/froc.py +7 -5
  18. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/generalized_dice.py +0 -1
  19. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/utils.py +24 -1
  20. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/text_embedding.py +0 -1
  21. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/filtering.py +0 -3
  22. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/simplelayers.py +0 -1
  23. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/basic_unet.py +0 -1
  24. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/basic_unetplusplus.py +0 -1
  25. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/croppad/array.py +1 -0
  26. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/croppad/dictionary.py +5 -1
  27. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/spatial/array.py +19 -1
  28. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/spatial/dictionary.py +11 -1
  29. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/spatial/functional.py +7 -2
  30. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utils.py +65 -26
  31. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/profiling.py +0 -2
  32. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627/monai_weekly.egg-info}/PKG-INFO +1 -1
  33. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai_weekly.egg-info/SOURCES.txt +1 -0
  34. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/LICENSE +0 -0
  35. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/MANIFEST.in +0 -0
  36. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/README.md +0 -0
  37. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/__init__.py +0 -0
  38. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/gmm/gmm.cpp +0 -0
  39. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/gmm/gmm.h +0 -0
  40. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
  41. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
  42. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
  43. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/_extensions/loader.py +0 -0
  44. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/__init__.py +0 -0
  45. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/__init__.py +0 -0
  46. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/__main__.py +0 -0
  47. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/auto_runner.py +0 -0
  48. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/bundle_gen.py +0 -0
  49. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/data_analyzer.py +0 -0
  50. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
  51. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/hpo_gen.py +0 -0
  52. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/transforms.py +0 -0
  53. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/auto3dseg/utils.py +0 -0
  54. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/datasets.py +0 -0
  55. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepedit/__init__.py +0 -0
  56. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepedit/interaction.py +0 -0
  57. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepedit/transforms.py +0 -0
  58. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepgrow/__init__.py +0 -0
  59. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepgrow/dataset.py +0 -0
  60. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepgrow/interaction.py +0 -0
  61. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/deepgrow/transforms.py +0 -0
  62. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/__init__.py +0 -0
  63. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/metrics/__init__.py +0 -0
  64. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/metrics/coco.py +0 -0
  65. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/metrics/matching.py +0 -0
  66. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/networks/__init__.py +0 -0
  67. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/networks/retinanet_detector.py +0 -0
  68. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/networks/retinanet_network.py +0 -0
  69. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/transforms/__init__.py +0 -0
  70. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/transforms/array.py +0 -0
  71. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/transforms/box_ops.py +0 -0
  72. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/transforms/dictionary.py +0 -0
  73. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
  74. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/__init__.py +0 -0
  75. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/anchor_utils.py +0 -0
  76. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/box_coder.py +0 -0
  77. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/box_selector.py +0 -0
  78. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/detector_utils.py +0 -0
  79. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
  80. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/detection/utils/predict_utils.py +0 -0
  81. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/generation/__init__.py +0 -0
  82. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/generation/maisi/__init__.py +0 -0
  83. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/generation/maisi/networks/__init__.py +0 -0
  84. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
  85. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
  86. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
  87. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/mmars/__init__.py +0 -0
  88. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/mmars/mmars.py +0 -0
  89. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/mmars/model_desc.py +0 -0
  90. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nnunet/__init__.py +0 -0
  91. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nnunet/__main__.py +0 -0
  92. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nnunet/nnunet_bundle.py +0 -0
  93. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nuclick/__init__.py +0 -0
  94. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/nuclick/transforms.py +0 -0
  95. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/__init__.py +0 -0
  96. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/engines/__init__.py +0 -0
  97. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/engines/utils.py +0 -0
  98. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/handlers/__init__.py +0 -0
  99. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/handlers/utils.py +0 -0
  100. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/inferers/__init__.py +0 -0
  101. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/inferers/inferer.py +0 -0
  102. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/losses/__init__.py +0 -0
  103. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
  104. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/metrics/__init__.py +0 -0
  105. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
  106. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/__init__.py +0 -0
  107. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/post/__init__.py +0 -0
  108. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/post/array.py +0 -0
  109. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
  110. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
  111. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/stain/array.py +0 -0
  112. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
  113. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/pathology/utils.py +0 -0
  114. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/__init__.py +0 -0
  115. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/complex_utils.py +0 -0
  116. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/fastmri_reader.py +0 -0
  117. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/mri_utils.py +0 -0
  118. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/__init__.py +0 -0
  119. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
  120. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
  121. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
  122. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
  123. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
  124. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
  125. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
  126. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/transforms/__init__.py +0 -0
  127. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/transforms/array.py +0 -0
  128. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
  129. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/tcia/__init__.py +0 -0
  130. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/tcia/label_desc.py +0 -0
  131. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/tcia/utils.py +0 -0
  132. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/utils.py +0 -0
  133. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/vista3d/__init__.py +0 -0
  134. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/vista3d/inferer.py +0 -0
  135. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/apps/vista3d/sampler.py +0 -0
  136. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/auto3dseg/__init__.py +0 -0
  137. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/auto3dseg/algo_gen.py +0 -0
  138. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/auto3dseg/analyzer.py +0 -0
  139. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/auto3dseg/operations.py +0 -0
  140. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/auto3dseg/seg_summarizer.py +0 -0
  141. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/__init__.py +0 -0
  142. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/__main__.py +0 -0
  143. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/config_item.py +0 -0
  144. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/config_parser.py +0 -0
  145. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/properties.py +0 -0
  146. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/reference_resolver.py +0 -0
  147. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/scripts.py +0 -0
  148. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/utils.py +0 -0
  149. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/bundle/workflows.py +0 -0
  150. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/config/__init__.py +0 -0
  151. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/config/deviceconfig.py +0 -0
  152. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/config/type_definitions.py +0 -0
  153. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/__init__.py +0 -0
  154. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/box_utils.py +0 -0
  155. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/csv_saver.py +0 -0
  156. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/dataloader.py +0 -0
  157. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/dataset_summary.py +0 -0
  158. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/decathlon_datalist.py +0 -0
  159. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/fft_utils.py +0 -0
  160. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/folder_layout.py +0 -0
  161. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/grid_dataset.py +0 -0
  162. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/image_dataset.py +0 -0
  163. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/image_writer.py +0 -0
  164. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/iterable_dataset.py +0 -0
  165. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/itk_torch_bridge.py +0 -0
  166. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/meta_obj.py +0 -0
  167. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/meta_tensor.py +0 -0
  168. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/samplers.py +0 -0
  169. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/synthetic.py +0 -0
  170. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/test_time_augmentation.py +0 -0
  171. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/thread_buffer.py +0 -0
  172. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/torchscript_utils.py +0 -0
  173. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/ultrasound_confidence_map.py +0 -0
  174. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/video_dataset.py +0 -0
  175. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/wsi_datasets.py +0 -0
  176. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/data/wsi_reader.py +0 -0
  177. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/engines/__init__.py +0 -0
  178. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/engines/evaluator.py +0 -0
  179. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/engines/trainer.py +0 -0
  180. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/engines/utils.py +0 -0
  181. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/engines/workflow.py +0 -0
  182. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/__init__.py +0 -0
  183. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/client/__init__.py +0 -0
  184. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/client/client_algo.py +0 -0
  185. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/client/monai_algo.py +0 -0
  186. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/utils/__init__.py +0 -0
  187. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/utils/constants.py +0 -0
  188. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/utils/exchange_object.py +0 -0
  189. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/fl/utils/filters.py +0 -0
  190. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/__init__.py +0 -0
  191. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/average_precision.py +0 -0
  192. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/calibration.py +0 -0
  193. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/checkpoint_loader.py +0 -0
  194. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/checkpoint_saver.py +0 -0
  195. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/classification_saver.py +0 -0
  196. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/clearml_handlers.py +0 -0
  197. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/confusion_matrix.py +0 -0
  198. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/decollate_batch.py +0 -0
  199. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/earlystop_handler.py +0 -0
  200. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/garbage_collector.py +0 -0
  201. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/hausdorff_distance.py +0 -0
  202. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/ignite_metric.py +0 -0
  203. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/logfile_handler.py +0 -0
  204. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/lr_schedule_handler.py +0 -0
  205. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/mean_dice.py +0 -0
  206. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/mean_iou.py +0 -0
  207. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/metric_logger.py +0 -0
  208. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/metrics_reloaded_handler.py +0 -0
  209. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/metrics_saver.py +0 -0
  210. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/mlflow_handler.py +0 -0
  211. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/nvtx_handlers.py +0 -0
  212. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/panoptic_quality.py +0 -0
  213. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/parameter_scheduler.py +0 -0
  214. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/postprocessing.py +0 -0
  215. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/probability_maps.py +0 -0
  216. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/regression_metrics.py +0 -0
  217. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/roc_auc.py +0 -0
  218. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/smartcache_handler.py +0 -0
  219. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/stats_handler.py +0 -0
  220. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/surface_distance.py +0 -0
  221. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/tensorboard_handlers.py +0 -0
  222. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/trt_handler.py +0 -0
  223. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/utils.py +0 -0
  224. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/handlers/validation_handler.py +0 -0
  225. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/inferers/__init__.py +0 -0
  226. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/inferers/inferer.py +0 -0
  227. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/inferers/splitter.py +0 -0
  228. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/inferers/utils.py +0 -0
  229. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/__init__.py +0 -0
  230. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/adversarial_loss.py +0 -0
  231. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/aucm_loss.py +0 -0
  232. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/barlow_twins.py +0 -0
  233. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/cldice.py +0 -0
  234. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/contrastive.py +0 -0
  235. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/dice.py +0 -0
  236. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/ds_loss.py +0 -0
  237. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/focal_loss.py +0 -0
  238. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/giou_loss.py +0 -0
  239. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/hausdorff_loss.py +0 -0
  240. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/mcc_loss.py +0 -0
  241. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/multi_scale.py +0 -0
  242. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/perceptual.py +0 -0
  243. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/spatial_mask.py +0 -0
  244. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/spectral_loss.py +0 -0
  245. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/ssim_loss.py +0 -0
  246. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/sure_loss.py +0 -0
  247. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/tversky.py +0 -0
  248. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/unified_focal_loss.py +0 -0
  249. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/losses/utils.py +0 -0
  250. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/active_learning_metrics.py +0 -0
  251. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/average_precision.py +0 -0
  252. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/calibration.py +0 -0
  253. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/confusion_matrix.py +0 -0
  254. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/cumulative_average.py +0 -0
  255. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/embedding_collapse.py +0 -0
  256. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/f_beta_score.py +0 -0
  257. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/fid.py +0 -0
  258. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/hausdorff_distance.py +0 -0
  259. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/loss_metric.py +0 -0
  260. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/meandice.py +0 -0
  261. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/meaniou.py +0 -0
  262. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/metric.py +0 -0
  263. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/mmd.py +0 -0
  264. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/panoptic_quality.py +0 -0
  265. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/regression.py +0 -0
  266. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/rocauc.py +0 -0
  267. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/surface_dice.py +0 -0
  268. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/surface_distance.py +0 -0
  269. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/metrics/wrapper.py +0 -0
  270. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/__init__.py +0 -0
  271. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/__init__.py +0 -0
  272. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/acti_norm.py +0 -0
  273. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/activation.py +0 -0
  274. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/activation_checkpointing.py +0 -0
  275. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/aspp.py +0 -0
  276. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/attention_utils.py +0 -0
  277. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
  278. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/cablock.py +0 -0
  279. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/convolutions.py +0 -0
  280. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/crf.py +0 -0
  281. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/crossattention.py +0 -0
  282. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/denseblock.py +0 -0
  283. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/dints_block.py +0 -0
  284. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/downsample.py +0 -0
  285. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/dynunet_block.py +0 -0
  286. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/encoder.py +0 -0
  287. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/fcn.py +0 -0
  288. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/feature_pyramid_network.py +0 -0
  289. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/fft_utils_t.py +0 -0
  290. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/localnet_block.py +0 -0
  291. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/mednext_block.py +0 -0
  292. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/mlp.py +0 -0
  293. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/patchembedding.py +0 -0
  294. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/pos_embed_utils.py +0 -0
  295. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/regunet_block.py +0 -0
  296. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/rel_pos_embedding.py +0 -0
  297. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/segresnet_block.py +0 -0
  298. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/selfattention.py +0 -0
  299. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/spade_norm.py +0 -0
  300. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/spatialattention.py +0 -0
  301. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
  302. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/transformerblock.py +0 -0
  303. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/unetr_block.py +0 -0
  304. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/upsample.py +0 -0
  305. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/blocks/warp.py +0 -0
  306. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/__init__.py +0 -0
  307. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/conjugate_gradient.py +0 -0
  308. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/convutils.py +0 -0
  309. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/drop_path.py +0 -0
  310. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/factories.py +0 -0
  311. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/gmm.py +0 -0
  312. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/spatial_transforms.py +0 -0
  313. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/utils.py +0 -0
  314. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/vector_quantizer.py +0 -0
  315. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/layers/weight_init.py +0 -0
  316. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/__init__.py +0 -0
  317. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/ahnet.py +0 -0
  318. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/attentionunet.py +0 -0
  319. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/autoencoder.py +0 -0
  320. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/autoencoderkl.py +0 -0
  321. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/cell_sam_wrapper.py +0 -0
  322. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/classifier.py +0 -0
  323. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/controlnet.py +0 -0
  324. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/daf3d.py +0 -0
  325. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/densenet.py +0 -0
  326. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/diffusion_model_unet.py +0 -0
  327. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/dints.py +0 -0
  328. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/dynunet.py +0 -0
  329. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/efficientnet.py +0 -0
  330. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/flexible_unet.py +0 -0
  331. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/fullyconnectednet.py +0 -0
  332. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/generator.py +0 -0
  333. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/highresnet.py +0 -0
  334. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/hovernet.py +0 -0
  335. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
  336. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/mednext.py +0 -0
  337. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/milmodel.py +0 -0
  338. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/netadapter.py +0 -0
  339. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/patchgan_discriminator.py +0 -0
  340. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/quicknat.py +0 -0
  341. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/regressor.py +0 -0
  342. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/regunet.py +0 -0
  343. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/resnet.py +0 -0
  344. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/restormer.py +0 -0
  345. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/segresnet.py +0 -0
  346. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/segresnet_ds.py +0 -0
  347. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/senet.py +0 -0
  348. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/spade_autoencoderkl.py +0 -0
  349. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
  350. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/spade_network.py +0 -0
  351. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/swin_unetr.py +0 -0
  352. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/torchvision_fc.py +0 -0
  353. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/transchex.py +0 -0
  354. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/transformer.py +0 -0
  355. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/unet.py +0 -0
  356. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/unetr.py +0 -0
  357. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/varautoencoder.py +0 -0
  358. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/vista3d.py +0 -0
  359. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/vit.py +0 -0
  360. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/vitautoenc.py +0 -0
  361. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/vnet.py +0 -0
  362. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/voxelmorph.py +0 -0
  363. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/nets/vqvae.py +0 -0
  364. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/schedulers/__init__.py +0 -0
  365. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/schedulers/ddim.py +0 -0
  366. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/schedulers/ddpm.py +0 -0
  367. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/schedulers/pndm.py +0 -0
  368. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/schedulers/rectified_flow.py +0 -0
  369. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/schedulers/scheduler.py +0 -0
  370. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/trt_compiler.py +0 -0
  371. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/networks/utils.py +0 -0
  372. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/optimizers/__init__.py +0 -0
  373. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/optimizers/lr_finder.py +0 -0
  374. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/optimizers/lr_scheduler.py +0 -0
  375. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/optimizers/novograd.py +0 -0
  376. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/optimizers/utils.py +0 -0
  377. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/py.typed +0 -0
  378. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/__init__.py +0 -0
  379. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/adaptors.py +0 -0
  380. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/compose.py +0 -0
  381. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/croppad/__init__.py +0 -0
  382. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/croppad/batch.py +0 -0
  383. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/croppad/functional.py +0 -0
  384. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/intensity/__init__.py +0 -0
  385. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/intensity/array.py +0 -0
  386. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/intensity/dictionary.py +0 -0
  387. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/inverse.py +0 -0
  388. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/inverse_batch_transform.py +0 -0
  389. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/io/__init__.py +0 -0
  390. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/io/array.py +0 -0
  391. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/io/dictionary.py +0 -0
  392. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/lazy/__init__.py +0 -0
  393. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/lazy/array.py +0 -0
  394. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/lazy/dictionary.py +0 -0
  395. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/lazy/functional.py +0 -0
  396. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/lazy/utils.py +0 -0
  397. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/meta_utility/__init__.py +0 -0
  398. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/meta_utility/dictionary.py +0 -0
  399. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/nvtx.py +0 -0
  400. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/post/__init__.py +0 -0
  401. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/post/array.py +0 -0
  402. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/post/dictionary.py +0 -0
  403. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/regularization/__init__.py +0 -0
  404. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/regularization/array.py +0 -0
  405. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/regularization/dictionary.py +0 -0
  406. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/signal/__init__.py +0 -0
  407. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/signal/array.py +0 -0
  408. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/signal/dictionary.py +0 -0
  409. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/smooth_field/__init__.py +0 -0
  410. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/smooth_field/array.py +0 -0
  411. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/smooth_field/dictionary.py +0 -0
  412. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/spatial/__init__.py +0 -0
  413. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/traits.py +0 -0
  414. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/transform.py +0 -0
  415. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utility/__init__.py +0 -0
  416. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utility/array.py +0 -0
  417. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utility/dictionary.py +0 -0
  418. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utils_create_transform_ims.py +0 -0
  419. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utils_morphological_ops.py +0 -0
  420. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
  421. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/__init__.py +0 -0
  422. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/component_store.py +0 -0
  423. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/decorators.py +0 -0
  424. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/deprecate_utils.py +0 -0
  425. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/dist.py +0 -0
  426. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/enums.py +0 -0
  427. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/jupyter_utils.py +0 -0
  428. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/misc.py +0 -0
  429. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/module.py +0 -0
  430. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/nvtx.py +0 -0
  431. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/ordering.py +0 -0
  432. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/state_cacher.py +0 -0
  433. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/tf32.py +0 -0
  434. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/utils/type_conversion.py +0 -0
  435. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/__init__.py +0 -0
  436. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/class_activation_maps.py +0 -0
  437. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/gradient_based.py +0 -0
  438. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/img2tensorboard.py +0 -0
  439. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/occlusion_sensitivity.py +0 -0
  440. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/utils.py +0 -0
  441. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai/visualize/visualizer.py +0 -0
  442. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai_weekly.egg-info/dependency_links.txt +0 -0
  443. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai_weekly.egg-info/not-zip-safe +0 -0
  444. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai_weekly.egg-info/requires.txt +0 -0
  445. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/monai_weekly.egg-info/top_level.txt +0 -0
  446. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/pyproject.toml +0 -0
  447. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/setup.cfg +0 -0
  448. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/setup.py +0 -0
  449. {monai_weekly-1.7.dev2626 → monai_weekly-1.7.dev2627}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2626
3
+ Version: 1.7.dev2627
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Home-page: https://project-monai.github.io/
6
6
  Author: MONAI Consortium
@@ -136,4 +136,4 @@ except Exception:
136
136
 
137
137
  if MONAIEnvVars.debug():
138
138
  raise
139
- __commit_id__ = "4ba89bd818a44395842f11f3316b5aaad48353a6"
139
+ __commit_id__ = "eb74488c5be06e97d8ee5d6bdec2488ac3903a1c"
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-06-28T03:10:43+0000",
11
+ "date": "2026-07-05T03:07:50+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "859efd3e7cdbbdf09355d0e91258b5d9c15e2547",
15
- "version": "1.7.dev2626"
14
+ "full-revisionid": "9c37af81ef49b616038685d338f97726a0266440",
15
+ "version": "1.7.dev2627"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -598,7 +598,11 @@ class nnUNetV2Runner: # noqa: N801
598
598
 
599
599
  for _key, _value in kwargs.items():
600
600
  prefix = "-" if _key in {"p", "pretrained_weights"} else "--"
601
- cmd += [f"{prefix}{_key}", str(_value)]
601
+ if isinstance(_value, bool):
602
+ if _value:
603
+ cmd.append(f"{prefix}{_key}")
604
+ else:
605
+ cmd += [f"{prefix}{_key}", str(_value)]
602
606
 
603
607
  cmd_str: list[str] = [str(c) for c in cmd]
604
608
 
@@ -758,7 +762,7 @@ class nnUNetV2Runner: # noqa: N801
758
762
  kwargs: this optional parameter allows you to specify additional arguments defined in the
759
763
  ``train_single_model`` method.
760
764
  """
761
- self.train_single_model(config=config, fold=fold, only_run_validation=True, **kwargs)
765
+ self.train_single_model(config=config, fold=fold, val=True, **kwargs)
762
766
 
763
767
  def validate(
764
768
  self, configs: tuple = (M.N_3D_FULLRES, M.N_2D, M.N_3D_LOWRES, M.N_3D_CASCADE_FULLRES), **kwargs: Any
@@ -149,7 +149,6 @@ def create_new_dataset_json(
149
149
  """
150
150
  new_json_data: dict = {}
151
151
 
152
- # modality = self.input_info.pop("modality")
153
152
  modality = ensure_tuple(modality) # type: ignore
154
153
 
155
154
  new_json_data["channel_names"] = {}
@@ -161,18 +160,11 @@ def create_new_dataset_json(
161
160
  for _j in range(num_foreground_classes):
162
161
  new_json_data["labels"][f"class{_j + 1}"] = _j + 1
163
162
 
164
- # new_json_data["numTraining"] = len(datalist_json["training"])
165
163
  new_json_data["numTraining"] = num_training_data
166
164
  new_json_data["file_ending"] = ".nii.gz"
167
165
 
168
166
  ConfigParser.export_config_file(
169
- config=new_json_data,
170
- # filepath=os.path.join(raw_data_foldername, "dataset.json"),
171
- filepath=output_filepath,
172
- fmt="json",
173
- sort_keys=True,
174
- indent=4,
175
- ensure_ascii=False,
167
+ config=new_json_data, filepath=output_filepath, fmt="json", sort_keys=True, indent=4, ensure_ascii=False
176
168
  )
177
169
 
178
170
  return
@@ -160,8 +160,6 @@ class VistaPostTransformd(MapTransform):
160
160
  pred = pred.argmax(0).unsqueeze(0).float() + 1.0
161
161
  pred[is_bk] = 0.0
162
162
  else:
163
- # AsDiscrete will remove NaN
164
- # pred = monai.transforms.AsDiscrete(threshold=0.5)(pred)
165
163
  pred[pred > 0] = 1.0
166
164
  if "label_prompt" in data and data["label_prompt"] is not None:
167
165
  pred += 0.5 # inplace mapping to avoid cloning pred
@@ -284,7 +284,7 @@ def verify_report_format(report: dict, report_format: dict) -> bool:
284
284
 
285
285
  if isinstance(v_fmt, list) and isinstance(v, list):
286
286
  if len(v_fmt) != 1:
287
- raise UserWarning("list length in report_format is not 1")
287
+ warnings.warn("list length in report_format is not 1", stacklevel=2)
288
288
  if len(v_fmt) > 0 and len(v) > 0:
289
289
  return verify_report_format(v[0], v_fmt[0])
290
290
  else:
@@ -210,8 +210,12 @@ class PersistentDataset(Dataset):
210
210
 
211
211
  Cached data is expected to be tensors, primitives, or dictionaries keying to these values. Numpy arrays will
212
212
  be converted to tensors, however any other object type returned by transforms will not be loadable since
213
- `torch.load` will be used with `weights_only=True` to prevent loading of potentially malicious objects.
214
- Legacy cache files may not be loadable and may need to be recomputed.
213
+ `torch.load` will be used with `weights_only=True` by default to prevent loading of potentially malicious
214
+ objects. Legacy cache files may not be loadable and may need to be recomputed. MetaTensor objects can be saved
215
+ and loaded with their metadata preserved if `track_meta` is True, however the objects stored in the metadata
216
+ must be acceptable as serialisable by `torch.load` by default or if they have been white-listed with
217
+ `torch.serialization.add_safe_globals`. Any other object type may be stored but will fail to load and force
218
+ a cache recompute.
215
219
 
216
220
  Lazy Resampling:
217
221
  If you make use of the lazy resampling feature of `monai.transforms.Compose`, please refer to
@@ -245,8 +249,8 @@ class PersistentDataset(Dataset):
245
249
  may share a common cache dir provided that the transforms pre-processing is consistent.
246
250
  If `cache_dir` doesn't exist, will automatically create it.
247
251
  If `cache_dir` is `None`, there is effectively no caching.
248
- hash_func: a callable to compute hash from data items to be cached.
249
- defaults to `monai.data.utils.pickle_hashing`.
252
+ hash_func: a callable to compute hash from data items to be cached, defaults to
253
+ `monai.data.utils.pickle_hashing` which uses sha256 (previously md5 so old caches will not work).
250
254
  pickle_module: string representing the module used for pickling metadata and objects,
251
255
  default to `"pickle"`. due to the pickle limitation in multi-processing of Dataloader,
252
256
  we can't use `pickle` as arg directly, so here we use a string name instead.
@@ -266,17 +270,12 @@ class PersistentDataset(Dataset):
266
270
  When this is enabled, the traced transform instance IDs will be removed from the cached MetaTensors.
267
271
  This is useful for skipping the transform instance checks when inverting applied operations
268
272
  using the cached content and with re-created transform instances.
269
- track_meta: whether to track the meta information, if `True`, will convert to `MetaTensor`.
270
- default to `False`. Cannot be used with `weights_only=True`.
273
+ track_meta: whether to track the meta information, defaults to False. If `True`, converts to `MetaTensor`.
271
274
  weights_only: keyword argument passed to `torch.load` when reading cached files.
272
- default to `True`. When set to `True`, `torch.load` restricts loading to tensors and
273
- other safe objects. Setting this to `False` is required for loading `MetaTensor`
274
- objects saved with `track_meta=True`, however this creates the possibility of remote
275
- code execution through `torch.load` so be aware of the security implications of doing so.
276
-
277
- Raises:
278
- ValueError: When both `track_meta=True` and `weights_only=True`, since this combination
279
- prevents cached MetaTensors from being reloaded and causes perpetual cache regeneration.
275
+ default to `True`. When `True`, `torch.load` restricts loading to tensors and other safe objects.
276
+ Setting to `False` should only be done if it's absolutely necessary to load unsafe pickled data,
277
+ eg. MetaTensor objects with unsafe objects in their metadata. Users must verify the safety of the data
278
+ they intend to load before doing so.
280
279
  """
281
280
  super().__init__(data=data, transform=transform)
282
281
  self.cache_dir = Path(cache_dir) if cache_dir is not None else None
@@ -292,11 +291,6 @@ class PersistentDataset(Dataset):
292
291
  if hash_transform is not None:
293
292
  self.set_transform_hash(hash_transform)
294
293
  self.reset_ops_id = reset_ops_id
295
- if track_meta and weights_only:
296
- raise ValueError(
297
- "Invalid argument combination: `track_meta=True` cannot be used with `weights_only=True`. "
298
- "To cache and reload MetaTensors, set `track_meta=True` and `weights_only=False`."
299
- )
300
294
  self.track_meta = track_meta
301
295
  self.weights_only = weights_only
302
296
 
@@ -390,9 +384,9 @@ class PersistentDataset(Dataset):
390
384
  """
391
385
  hashfile = None
392
386
  if self.cache_dir is not None:
393
- data_item_md5 = self.hash_func(item_transformed).decode("utf-8")
394
- data_item_md5 += self.transform_hash
395
- hashfile = self.cache_dir / f"{data_item_md5}.pt"
387
+ data_item_hash = self.hash_func(item_transformed).decode("utf-8")
388
+ data_item_hash += self.transform_hash
389
+ hashfile = self.cache_dir / f"{data_item_hash}.pt"
396
390
 
397
391
  if hashfile is not None and hashfile.is_file(): # cache hit
398
392
  try:
@@ -1624,9 +1618,9 @@ class GDSDataset(PersistentDataset):
1624
1618
  hashfile = None
1625
1619
  # compute a cache id
1626
1620
  if self.cache_dir is not None:
1627
- data_item_md5 = self.hash_func(item_transformed).decode("utf-8")
1628
- data_item_md5 += self.transform_hash
1629
- hashfile = self.cache_dir / f"{data_item_md5}.pt"
1621
+ data_item_hash = self.hash_func(item_transformed).decode("utf-8")
1622
+ data_item_hash += self.transform_hash
1623
+ hashfile = self.cache_dir / f"{data_item_hash}.pt"
1630
1624
 
1631
1625
  if hashfile is not None and hashfile.is_file(): # cache hit
1632
1626
  with cp.cuda.Device(self.device):
@@ -761,10 +761,10 @@ class PydicomReader(ImageReader):
761
761
  if "lastImagePositionPatient" in metadata:
762
762
  t1n, t2n, t3n = metadata["lastImagePositionPatient"]
763
763
  n = metadata[MetaKeys.SPATIAL_SHAPE][-1]
764
- k1, k2, k3 = (t1n - sx) / (n - 1), (t2n - sy) / (n - 1), (t3n - sz) / (n - 1)
765
- affine[0, 2] = k1
766
- affine[1, 2] = k2
767
- affine[2, 2] = k3
764
+ if n > 1:
765
+ affine[0, 2] = (t1n - sx) / (n - 1)
766
+ affine[1, 2] = (t2n - sy) / (n - 1)
767
+ affine[2, 2] = (t3n - sz) / (n - 1)
768
768
 
769
769
  if lps_to_ras:
770
770
  affine = orientation_ras_lps(affine)
@@ -17,7 +17,6 @@ import logging
17
17
  import math
18
18
  import os
19
19
  import pickle
20
- import sys
21
20
  from collections import abc, defaultdict
22
21
  from collections.abc import Generator, Iterable, Mapping, Sequence, Sized
23
22
  from copy import deepcopy
@@ -1370,13 +1369,8 @@ def json_hashing(item) -> bytes:
1370
1369
 
1371
1370
  """
1372
1371
  # TODO: Find way to hash transforms content as part of the cache
1373
- cache_key = ""
1374
- if sys.version_info.minor < 9:
1375
- cache_key = hashlib.md5(json.dumps(item, sort_keys=True).encode("utf-8")).hexdigest()
1376
- else:
1377
- cache_key = hashlib.md5(
1378
- json.dumps(item, sort_keys=True).encode("utf-8"), usedforsecurity=False # type: ignore
1379
- ).hexdigest()
1372
+ dump = json.dumps(item, sort_keys=True).encode("utf-8")
1373
+ cache_key = hashlib.sha256(dump, usedforsecurity=False).hexdigest() # type: ignore
1380
1374
  return f"{cache_key}".encode()
1381
1375
 
1382
1376
 
@@ -1391,13 +1385,8 @@ def pickle_hashing(item, protocol=pickle.HIGHEST_PROTOCOL) -> bytes:
1391
1385
  Returns: the corresponding hash key
1392
1386
 
1393
1387
  """
1394
- cache_key = ""
1395
- if sys.version_info.minor < 9:
1396
- cache_key = hashlib.md5(pickle.dumps(sorted_dict(item), protocol=protocol)).hexdigest()
1397
- else:
1398
- cache_key = hashlib.md5(
1399
- pickle.dumps(sorted_dict(item), protocol=protocol), usedforsecurity=False # type: ignore
1400
- ).hexdigest()
1388
+ dump = pickle.dumps(sorted_dict(item), protocol=protocol)
1389
+ cache_key = hashlib.sha256(dump, usedforsecurity=False).hexdigest() # type: ignore
1401
1390
  return f"{cache_key}".encode()
1402
1391
 
1403
1392
 
@@ -309,9 +309,6 @@ class ZarrAvgMerger(Merger):
309
309
 
310
310
  self.chunks = chunks
311
311
 
312
- # Handle compressor/codecs based on zarr version
313
- is_zarr_v3 = version_geq(get_package_version("zarr"), "3.0.0")
314
-
315
312
  # Initialize codecs/compressor attributes with proper types
316
313
  self.codecs: list | None = None
317
314
  self.value_codecs: list | None = None
@@ -44,9 +44,58 @@ def spatial_gradient(x: torch.Tensor, dim: int) -> torch.Tensor:
44
44
  return (x[slicing_s] - x[slicing_e]) / 2.0
45
45
 
46
46
 
47
+ def spatial_gradient_squared(x: torch.Tensor, dim_1: int, dim_2: int) -> torch.Tensor:
48
+ """
49
+ Calculate the second-order partial derivative of ``x`` with respect to spatial dims
50
+ ``dim_1`` and ``dim_2`` using compact central finite differences.
51
+
52
+ For ``dim_1 == dim_2`` the pure second derivative uses the ``[1, -2, 1]`` stencil:
53
+ ``d2x[i] = x[i+1] - 2 * x[i] + x[i-1]``.
54
+
55
+ For ``dim_1 != dim_2`` the mixed partial uses the compact 4-point stencil:
56
+ ``d2x[i, j] = (x[i+1, j+1] - x[i+1, j-1] - x[i-1, j+1] + x[i-1, j-1]) / 4``.
57
+
58
+ Every spatial dimension is sliced to ``[1:-1]`` so the output shape is independent of
59
+ ``(dim_1, dim_2)``; this lets terms be summed together. Requires ``x.shape[d] > 2``
60
+ for every spatial dim ``d``.
61
+
62
+ Args:
63
+ x: the shape should be BCH(WD).
64
+ dim_1: first spatial dimension index.
65
+ dim_2: second spatial dimension index.
66
+
67
+ Returns:
68
+ Tensor with batch and channel axes preserved and every spatial axis sliced to
69
+ ``[1:-1]``.
70
+ """
71
+ slice_inner = slice(1, -1)
72
+ slice_plus = slice(2, None)
73
+ slice_minus = slice(None, -2)
74
+ slice_all = slice(None)
75
+
76
+ def _idx(overrides: dict) -> list:
77
+ out: list = [slice_all, slice_all]
78
+ for d in range(2, x.ndim):
79
+ out.append(overrides.get(d, slice_inner))
80
+ return out
81
+
82
+ if dim_1 == dim_2:
83
+ return x[_idx({dim_1: slice_plus})] - 2 * x[_idx({})] + x[_idx({dim_1: slice_minus})]
84
+ return (
85
+ x[_idx({dim_1: slice_plus, dim_2: slice_plus})]
86
+ - x[_idx({dim_1: slice_plus, dim_2: slice_minus})]
87
+ - x[_idx({dim_1: slice_minus, dim_2: slice_plus})]
88
+ + x[_idx({dim_1: slice_minus, dim_2: slice_minus})]
89
+ ) / 4.0
90
+
91
+
47
92
  class BendingEnergyLoss(_Loss):
48
93
  """
49
- Calculate the bending energy based on second-order differentiation of ``pred`` using central finite difference.
94
+ Calculate the bending energy based on second-order differentiation of ``pred``.
95
+
96
+ Pure second derivatives use the compact ``[1, -2, 1]`` stencil; mixed partials use a
97
+ compact 4-point central scheme. Both span three voxels per axis, so each spatial
98
+ dimension of ``pred`` only needs to be greater than 2.
50
99
 
51
100
  For more information,
52
101
  see https://github.com/Project-MONAI/tutorials/blob/main/modules/bending_energy_diffusion_loss_notes.ipynb.
@@ -79,41 +128,41 @@ class BendingEnergyLoss(_Loss):
79
128
  Raises:
80
129
  ValueError: When ``self.reduction`` is not one of ["mean", "sum", "none"].
81
130
  ValueError: When ``pred`` is not 3-d, 4-d or 5-d.
82
- ValueError: When any spatial dimension of ``pred`` has size less than or equal to 4.
131
+ ValueError: When any spatial dimension of ``pred`` has size less than or equal to 2.
83
132
  ValueError: When the number of channels of ``pred`` does not match the number of spatial dimensions.
84
133
 
85
134
  """
86
135
  if pred.ndim not in [3, 4, 5]:
87
136
  raise ValueError(f"Expecting 3-d, 4-d or 5-d pred, instead got pred of shape {pred.shape}")
88
137
  for i in range(pred.ndim - 2):
89
- if pred.shape[-i - 1] <= 4:
90
- raise ValueError(f"All spatial dimensions must be > 4, got spatial dimensions {pred.shape[2:]}")
138
+ if pred.shape[-i - 1] <= 2:
139
+ raise ValueError(f"All spatial dimensions must be > 2, got spatial dimensions {pred.shape[2:]}")
91
140
  if pred.shape[1] != pred.ndim - 2:
92
141
  raise ValueError(
93
142
  f"Number of vector components, i.e. number of channels of the input DDF, {pred.shape[1]}, "
94
143
  f"does not match number of spatial dimensions, {pred.ndim - 2}"
95
144
  )
96
145
 
97
- # first order gradient
98
- first_order_gradient = [spatial_gradient(pred, dim) for dim in range(2, pred.ndim)]
99
-
100
146
  # spatial dimensions in a shape suited for broadcasting below
101
147
  if self.normalize:
102
148
  spatial_dims = torch.tensor(pred.shape, device=pred.device)[2:].reshape((1, -1) + (pred.ndim - 2) * (1,))
103
149
 
104
- energy = torch.tensor(0)
105
- for dim_1, g in enumerate(first_order_gradient):
106
- dim_1 += 2
150
+ # Initialize on pred.device so a GPU `pred` does not get added to a CPU
151
+ # accumulator, and as a float so an integer-dtype `pred` still produces a
152
+ # floating-point energy (the compact pure-derivative stencil has no
153
+ # division, so a Long input would otherwise propagate as Long and fail
154
+ # `torch.mean` at the reduction step).
155
+ energy = torch.tensor(0.0, device=pred.device)
156
+ for dim_1 in range(2, pred.ndim):
157
+ d2 = spatial_gradient_squared(pred, dim_1, dim_1)
107
158
  if self.normalize:
108
- g *= pred.shape[dim_1] / spatial_dims
109
- energy = energy + (spatial_gradient(g, dim_1) * pred.shape[dim_1]) ** 2
110
- else:
111
- energy = energy + spatial_gradient(g, dim_1) ** 2
159
+ d2 = d2 * (pred.shape[dim_1] ** 2 / spatial_dims)
160
+ energy = energy + d2**2
112
161
  for dim_2 in range(dim_1 + 1, pred.ndim):
162
+ d2_mixed = spatial_gradient_squared(pred, dim_1, dim_2)
113
163
  if self.normalize:
114
- energy = energy + 2 * (spatial_gradient(g, dim_2) * pred.shape[dim_2]) ** 2
115
- else:
116
- energy = energy + 2 * spatial_gradient(g, dim_2) ** 2
164
+ d2_mixed = d2_mixed * (pred.shape[dim_1] * pred.shape[dim_2] / spatial_dims)
165
+ energy = energy + 2 * d2_mixed**2
117
166
 
118
167
  if self.reduction == LossReduction.MEAN.value:
119
168
  energy = torch.mean(energy) # the batch and channel average
@@ -232,7 +232,6 @@ class GlobalMutualInformationLoss(_Loss):
232
232
  sigma = torch.mean(bin_centers[1:] - bin_centers[:-1]) * sigma_ratio
233
233
  self.kernel_type = look_up_option(kernel_type, ["gaussian", "b-spline"])
234
234
  self.num_bins = num_bins
235
- self.kernel_type = kernel_type
236
235
  # declared as buffers so they move with the module (e.g. ``.to(device)``); only populated for the
237
236
  # gaussian kernel, hence the ``Tensor`` annotation reflects the type at the use sites in that path.
238
237
  self.preterm: torch.Tensor | None
@@ -138,7 +138,7 @@ class NACLLoss(_Loss):
138
138
  if self.distance_type == "l1":
139
139
  loss_conf = utargets.sub(inputs).abs_().mean()
140
140
  elif self.distance_type == "l2":
141
- loss_conf = utargets.sub(inputs).pow_(2).abs_().mean()
141
+ loss_conf = utargets.sub(inputs).pow_(2).mean()
142
142
 
143
143
  loss: torch.Tensor = loss_ce + self.alpha * loss_conf
144
144
 
@@ -11,6 +11,7 @@
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
+ from .absolute_volume_difference import AbsoluteVolumeDifferenceMetric, compute_absolute_volume_difference
14
15
  from .active_learning_metrics import LabelQualityScore, VarianceMetric, compute_variance, label_quality_score
15
16
  from .average_precision import AveragePrecisionMetric, compute_average_precision
16
17
  from .calibration import CalibrationErrorMetric, CalibrationReduction, calibration_binning
@@ -0,0 +1,180 @@
1
+ # Copyright (c) MONAI Consortium
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ from __future__ import annotations
13
+
14
+ import torch
15
+
16
+ from monai.metrics.utils import do_metric_reduction, ignore_background
17
+ from monai.utils import MetricReduction
18
+
19
+ from .metric import CumulativeIterationMetric
20
+
21
+ __all__ = ["AbsoluteVolumeDifferenceMetric", "compute_absolute_volume_difference"]
22
+
23
+
24
+ class AbsoluteVolumeDifferenceMetric(CumulativeIterationMetric):
25
+ """
26
+ Compute the Absolute Volume Difference (AVD) between predicted and ground-truth
27
+ segmentation masks.
28
+
29
+ AVD measures the absolute difference in the number of foreground voxels between
30
+ prediction and ground truth, per class. It is particularly useful for small-object
31
+ segmentation (e.g. retinal fluid in OCT volumes) where Dice score is known to be
32
+ overly sensitive to volume size and does not directly reflect volume discrepancies.
33
+
34
+ .. note::
35
+ For 2D inputs this computes the difference in foreground **areas** rather than
36
+ volumes. In all cases the returned values are raw voxel/pixel counts and are
37
+ **not** scaled by the voxel/pixel spacing, so they are not expressed in the
38
+ physical units of the original image.
39
+
40
+ Reference:
41
+ Bogunovic et al. (2019). RETOUCH: The Retinal OCT Fluid Detection and
42
+ Segmentation Benchmark and Challenge.
43
+ IEEE Transactions on Medical Imaging, 38(8), 1858-1874.
44
+ https://ieeexplore.ieee.org/document/8653407
45
+
46
+ The inputs ``y_pred`` and ``y`` are expected to be binarized one-hot tensors with
47
+ shape BCHW[D]. If they contain continuous values (e.g. sigmoid outputs), binarize
48
+ them first with a suitable threshold transform.
49
+
50
+ The typical execution steps of this metric class follow
51
+ :py:class:`monai.metrics.metric.Cumulative`.
52
+
53
+ Example:
54
+
55
+ .. code-block:: python
56
+
57
+ import torch
58
+ from monai.metrics import AbsoluteVolumeDifferenceMetric
59
+
60
+ batch_size, n_classes = 4, 3
61
+ y_pred = torch.randint(0, 2, (batch_size, n_classes, 64, 64, 32)).float()
62
+ y = torch.randint(0, 2, (batch_size, n_classes, 64, 64, 32)).float()
63
+
64
+ metric = AbsoluteVolumeDifferenceMetric(include_background=False)
65
+ metric(y_pred, y) # accumulate
66
+ result = metric.aggregate() # shape: (n_classes - 1,) after mean reduction
67
+ metric.reset()
68
+
69
+ Args:
70
+ include_background: whether to include AVD computation on the first channel
71
+ (index 0), which is by convention assumed to be background. Defaults to
72
+ ``True``. Set to ``False`` when the background class dominates and you only
73
+ care about foreground classes (e.g. fluid sub-types in OCT).
74
+ reduction: defines how to aggregate per-batch-per-class results. Available
75
+ modes are enumerated in :py:class:`monai.utils.enums.MetricReduction`.
76
+ Defaults to ``"mean"``.
77
+ get_not_nans: if ``True``, :meth:`aggregate` returns ``(metric, not_nans)``
78
+ where ``not_nans`` counts the number of valid (non-NaN) values.
79
+ Defaults to ``False``.
80
+ ignore_empty: if ``True``, cases where the ground-truth channel is entirely
81
+ empty (zero voxels) are excluded from aggregation by setting their value
82
+ to ``NaN``. If ``False``, the raw absolute difference (equal to the
83
+ predicted volume for that class) is returned. Defaults to ``True``.
84
+ """
85
+
86
+ def __init__(
87
+ self,
88
+ include_background: bool = True,
89
+ reduction: MetricReduction | str = MetricReduction.MEAN,
90
+ get_not_nans: bool = False,
91
+ ignore_empty: bool = True,
92
+ ) -> None:
93
+ super().__init__()
94
+ self.include_background = include_background
95
+ self.reduction = reduction
96
+ self.get_not_nans = get_not_nans
97
+ self.ignore_empty = ignore_empty
98
+
99
+ def _compute_tensor(self, y_pred: torch.Tensor, y: torch.Tensor) -> torch.Tensor: # type: ignore[override]
100
+ """
101
+ Args:
102
+ y_pred: binarized prediction tensor, shape BCHW[D].
103
+ y: binarized ground-truth tensor, shape BCHW[D].
104
+
105
+ Raises:
106
+ ValueError: when ``y_pred`` has fewer than three dimensions.
107
+ """
108
+ if y_pred.ndimension() < 3:
109
+ raise ValueError(
110
+ f"y_pred should have at least 3 dimensions (batch, channel, spatial), got {y_pred.ndimension()}."
111
+ )
112
+ return compute_absolute_volume_difference(
113
+ y_pred=y_pred, y=y, include_background=self.include_background, ignore_empty=self.ignore_empty
114
+ )
115
+
116
+ def aggregate(
117
+ self, reduction: MetricReduction | str | None = None
118
+ ) -> torch.Tensor | tuple[torch.Tensor, torch.Tensor]:
119
+ """
120
+ Execute reduction logic for the accumulated AVD values.
121
+
122
+ Args:
123
+ reduction: optional override for the reduction mode set at construction.
124
+ """
125
+ data = self.get_buffer()
126
+ if not isinstance(data, torch.Tensor):
127
+ raise ValueError("the data to aggregate must be a PyTorch Tensor.")
128
+
129
+ f, not_nans = do_metric_reduction(data, reduction or self.reduction)
130
+ return (f, not_nans) if self.get_not_nans else f
131
+
132
+
133
+ def compute_absolute_volume_difference(
134
+ y_pred: torch.Tensor, y: torch.Tensor, include_background: bool = True, ignore_empty: bool = True
135
+ ) -> torch.Tensor:
136
+ """
137
+ Compute the Absolute Volume Difference (AVD) for a batch of segmentation predictions.
138
+
139
+ AVD is defined per class as::
140
+
141
+ AVD_c = | sum_{spatial}(y_pred_c) - sum_{spatial}(y_c) |
142
+
143
+ where the sum counts the number of foreground voxels in each channel.
144
+
145
+ Args:
146
+ y_pred: binarized prediction tensor with shape BCHW[D].
147
+ y: binarized ground-truth tensor with shape BCHW[D].
148
+ include_background: whether to include the first channel (background).
149
+ Defaults to ``True``.
150
+ ignore_empty: if ``True``, entries where the ground-truth channel contains no
151
+ foreground voxels are set to ``NaN`` so they are excluded during reduction.
152
+ Defaults to ``True``.
153
+
154
+ Returns:
155
+ AVD per batch item and per class, shape ``[batch_size, num_classes]``.
156
+
157
+ Raises:
158
+ ValueError: when ``y_pred`` and ``y`` have different shapes.
159
+ """
160
+ if y_pred.ndim < 3:
161
+ raise ValueError(f"y_pred should have at least 3 dimensions (batch, channel, spatial), got {y_pred.ndim}.")
162
+
163
+ if not include_background:
164
+ y_pred, y = ignore_background(y_pred=y_pred, y=y)
165
+
166
+ if y_pred.shape != y.shape:
167
+ raise ValueError(f"y_pred and y should have the same shape, got {y_pred.shape} and {y.shape}.")
168
+
169
+ # sum over all spatial dimensions; keep batch (dim 0) and channel (dim 1)
170
+ reduce_axis = list(range(2, y_pred.ndim))
171
+ vol_pred = torch.sum(y_pred, dim=reduce_axis) # [B, C]
172
+ vol_true = torch.sum(y, dim=reduce_axis) # [B, C]
173
+
174
+ avd = torch.abs(vol_pred - vol_true) # [B, C]
175
+
176
+ if ignore_empty:
177
+ # mark cases with no ground-truth foreground as NaN
178
+ avd = torch.where(vol_true > 0, avd, torch.tensor(float("nan"), device=avd.device))
179
+
180
+ return avd
@@ -11,7 +11,7 @@
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
- from typing import Any, cast
14
+ from typing import Any
15
15
 
16
16
  import numpy as np
17
17
  import torch
@@ -67,12 +67,14 @@ def compute_fp_tp_probs_nd(
67
67
 
68
68
  hittedlabel = evaluation_mask[tuple(coords.T)]
69
69
  fp_probs = probs[np.where(hittedlabel == 0)]
70
+ num_targets = 0
70
71
  for i in range(1, max_label + 1):
71
- if i not in labels_to_exclude and i in hittedlabel:
72
- tp_probs[i - 1] = probs[np.where(hittedlabel == i)].max()
72
+ if i not in labels_to_exclude:
73
+ num_targets += 1
74
+ if i in hittedlabel:
75
+ tp_probs[i - 1] = probs[np.where(hittedlabel == i)].max()
73
76
 
74
- num_targets = max_label - len(labels_to_exclude)
75
- return fp_probs, tp_probs, cast(int, num_targets)
77
+ return fp_probs, tp_probs, num_targets
76
78
 
77
79
 
78
80
  def compute_fp_tp_probs(
@@ -181,7 +181,6 @@ def compute_generalized_dice(
181
181
  else:
182
182
  numer = 2.0 * (intersection * w)
183
183
  denom = denominator * w
184
- y_pred_o = y_pred_o
185
184
 
186
185
  # Compute the score
187
186
  generalized_dice_score = numer / denom