monai-weekly 1.7.dev2642__tar.gz → 1.7.dev2644__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 (462) hide show
  1. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/PKG-INFO +1 -1
  2. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/__init__.py +2 -1
  3. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_version.py +3 -3
  4. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/auto_runner.py +2 -2
  5. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/bundle_gen.py +60 -2
  6. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/hpo_gen.py +81 -1
  7. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/dictionary.py +0 -2
  8. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/mmars/mmars.py +62 -116
  9. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/mmars/model_desc.py +13 -1
  10. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/__init__.py +1 -0
  11. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/nnunet_bundle.py +87 -3
  12. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/post/dictionary.py +0 -2
  13. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/utils.py +13 -12
  14. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/image_reader.py +27 -5
  15. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/nvimgcodec_pydicom_plugin.py +1 -1
  16. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/merger.py +23 -16
  17. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/active_learning_metrics.py +0 -2
  18. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/confusion_matrix.py +49 -8
  19. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/hausdorff_distance.py +14 -9
  20. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/meandice.py +16 -2
  21. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/surface_distance.py +88 -18
  22. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/__init__.py +1 -0
  23. monai_weekly-1.7.dev2644/monai/networks/layers/layer_norm_nd.py +58 -0
  24. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/__init__.py +19 -0
  25. monai_weekly-1.7.dev2644/monai/networks/nets/convnext.py +354 -0
  26. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/dynunet.py +24 -3
  27. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/segresnet_ds.py +10 -0
  28. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/intensity/array.py +9 -8
  29. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/functional.py +5 -2
  30. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utility/array.py +16 -1
  31. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/PKG-INFO +1 -1
  32. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/SOURCES.txt +2 -0
  33. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/LICENSE +0 -0
  34. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/MANIFEST.in +0 -0
  35. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/README.md +0 -0
  36. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/__init__.py +0 -0
  37. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm.cpp +0 -0
  38. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm.h +0 -0
  39. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
  40. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
  41. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
  42. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/loader.py +0 -0
  43. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/__init__.py +0 -0
  44. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/__init__.py +0 -0
  45. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/__main__.py +0 -0
  46. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/data_analyzer.py +0 -0
  47. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
  48. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/transforms.py +0 -0
  49. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/utils.py +0 -0
  50. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/datasets.py +0 -0
  51. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepedit/__init__.py +0 -0
  52. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepedit/interaction.py +0 -0
  53. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepedit/transforms.py +0 -0
  54. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/__init__.py +0 -0
  55. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/dataset.py +0 -0
  56. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/interaction.py +0 -0
  57. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/transforms.py +0 -0
  58. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/__init__.py +0 -0
  59. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/metrics/__init__.py +0 -0
  60. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/metrics/coco.py +0 -0
  61. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/metrics/matching.py +0 -0
  62. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/networks/__init__.py +0 -0
  63. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/networks/retinanet_detector.py +0 -0
  64. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/networks/retinanet_network.py +0 -0
  65. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/__init__.py +0 -0
  66. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/array.py +0 -0
  67. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/box_ops.py +0 -0
  68. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
  69. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/__init__.py +0 -0
  70. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/anchor_utils.py +0 -0
  71. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/box_coder.py +0 -0
  72. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/box_selector.py +0 -0
  73. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/detector_utils.py +0 -0
  74. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
  75. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/predict_utils.py +0 -0
  76. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/__init__.py +0 -0
  77. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/__init__.py +0 -0
  78. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/__init__.py +0 -0
  79. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
  80. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
  81. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
  82. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/mmars/__init__.py +0 -0
  83. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/__main__.py +0 -0
  84. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
  85. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/utils.py +0 -0
  86. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nuclick/__init__.py +0 -0
  87. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nuclick/transforms.py +0 -0
  88. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/__init__.py +0 -0
  89. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/engines/__init__.py +0 -0
  90. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/engines/utils.py +0 -0
  91. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/handlers/__init__.py +0 -0
  92. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/handlers/utils.py +0 -0
  93. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/inferers/__init__.py +0 -0
  94. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/inferers/inferer.py +0 -0
  95. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/losses/__init__.py +0 -0
  96. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
  97. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/metrics/__init__.py +0 -0
  98. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
  99. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/__init__.py +0 -0
  100. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/post/__init__.py +0 -0
  101. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/post/array.py +0 -0
  102. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
  103. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/stain/array.py +0 -0
  104. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
  105. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/utils.py +0 -0
  106. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/__init__.py +0 -0
  107. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/complex_utils.py +0 -0
  108. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/fastmri_reader.py +0 -0
  109. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/mri_utils.py +0 -0
  110. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/__init__.py +0 -0
  111. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
  112. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
  113. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
  114. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
  115. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
  116. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
  117. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
  118. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/transforms/__init__.py +0 -0
  119. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/transforms/array.py +0 -0
  120. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
  121. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/tcia/__init__.py +0 -0
  122. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/tcia/label_desc.py +0 -0
  123. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/tcia/utils.py +0 -0
  124. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/utils.py +0 -0
  125. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/__init__.py +0 -0
  126. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/inferer.py +0 -0
  127. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/sampler.py +0 -0
  128. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/transforms.py +0 -0
  129. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/__init__.py +0 -0
  130. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/algo_gen.py +0 -0
  131. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/analyzer.py +0 -0
  132. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/operations.py +0 -0
  133. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/seg_summarizer.py +0 -0
  134. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/__init__.py +0 -0
  135. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/__main__.py +0 -0
  136. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/config_item.py +0 -0
  137. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/config_parser.py +0 -0
  138. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/properties.py +0 -0
  139. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/reference_resolver.py +0 -0
  140. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/scripts.py +0 -0
  141. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/utils.py +0 -0
  142. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/workflows.py +0 -0
  143. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/__init__.py +0 -0
  144. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/__main__.py +0 -0
  145. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/check_env.py +0 -0
  146. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/deviceconfig.py +0 -0
  147. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/print_dependencies.py +0 -0
  148. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/type_definitions.py +0 -0
  149. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/__init__.py +0 -0
  150. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/box_utils.py +0 -0
  151. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/csv_saver.py +0 -0
  152. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/dataloader.py +0 -0
  153. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/dataset.py +0 -0
  154. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/dataset_summary.py +0 -0
  155. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/decathlon_datalist.py +0 -0
  156. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/fft_utils.py +0 -0
  157. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/folder_layout.py +0 -0
  158. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/grid_dataset.py +0 -0
  159. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/image_dataset.py +0 -0
  160. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/image_writer.py +0 -0
  161. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/iterable_dataset.py +0 -0
  162. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/itk_torch_bridge.py +0 -0
  163. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/meta_obj.py +0 -0
  164. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/meta_tensor.py +0 -0
  165. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/samplers.py +0 -0
  166. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/synthetic.py +0 -0
  167. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/test_time_augmentation.py +0 -0
  168. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/thread_buffer.py +0 -0
  169. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/torchscript_utils.py +0 -0
  170. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/ultrasound_confidence_map.py +0 -0
  171. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/utils.py +0 -0
  172. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/video_dataset.py +0 -0
  173. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/wsi_datasets.py +0 -0
  174. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/wsi_reader.py +0 -0
  175. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/__init__.py +0 -0
  176. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/evaluator.py +0 -0
  177. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/trainer.py +0 -0
  178. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/utils.py +0 -0
  179. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/workflow.py +0 -0
  180. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/__init__.py +0 -0
  181. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/client/__init__.py +0 -0
  182. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/client/client_algo.py +0 -0
  183. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/client/monai_algo.py +0 -0
  184. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/__init__.py +0 -0
  185. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/constants.py +0 -0
  186. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/exchange_object.py +0 -0
  187. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/filters.py +0 -0
  188. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/__init__.py +0 -0
  189. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/average_precision.py +0 -0
  190. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/calibration.py +0 -0
  191. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/checkpoint_loader.py +0 -0
  192. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/checkpoint_saver.py +0 -0
  193. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/classification_saver.py +0 -0
  194. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/clearml_handlers.py +0 -0
  195. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/confusion_matrix.py +0 -0
  196. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/decollate_batch.py +0 -0
  197. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/earlystop_handler.py +0 -0
  198. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/garbage_collector.py +0 -0
  199. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/hausdorff_distance.py +0 -0
  200. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/ignite_metric.py +0 -0
  201. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/logfile_handler.py +0 -0
  202. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/lr_schedule_handler.py +0 -0
  203. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/mean_dice.py +0 -0
  204. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/mean_iou.py +0 -0
  205. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/metric_logger.py +0 -0
  206. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/metrics_reloaded_handler.py +0 -0
  207. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/metrics_saver.py +0 -0
  208. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/mlflow_handler.py +0 -0
  209. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/nvtx_handlers.py +0 -0
  210. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/panoptic_quality.py +0 -0
  211. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/parameter_scheduler.py +0 -0
  212. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/postprocessing.py +0 -0
  213. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/probability_maps.py +0 -0
  214. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/regression_metrics.py +0 -0
  215. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/roc_auc.py +0 -0
  216. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/smartcache_handler.py +0 -0
  217. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/stats_handler.py +0 -0
  218. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/surface_distance.py +0 -0
  219. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/tensorboard_handlers.py +0 -0
  220. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/trt_handler.py +0 -0
  221. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/utils.py +0 -0
  222. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/validation_handler.py +0 -0
  223. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/__init__.py +0 -0
  224. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/inferer.py +0 -0
  225. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/splitter.py +0 -0
  226. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/utils.py +0 -0
  227. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/__init__.py +0 -0
  228. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/adversarial_loss.py +0 -0
  229. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/aucm_loss.py +0 -0
  230. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/barlow_twins.py +0 -0
  231. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/boundary_loss.py +0 -0
  232. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/calibration.py +0 -0
  233. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/cldice.py +0 -0
  234. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/contrastive.py +0 -0
  235. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/deform.py +0 -0
  236. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/dice.py +0 -0
  237. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/ds_loss.py +0 -0
  238. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/focal_loss.py +0 -0
  239. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/giou_loss.py +0 -0
  240. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/hausdorff_loss.py +0 -0
  241. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/image_dissimilarity.py +0 -0
  242. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/mcc_loss.py +0 -0
  243. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/multi_scale.py +0 -0
  244. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/nacl_loss.py +0 -0
  245. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/perceptual.py +0 -0
  246. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/spatial_mask.py +0 -0
  247. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/spectral_loss.py +0 -0
  248. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/ssim_loss.py +0 -0
  249. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/sure_loss.py +0 -0
  250. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/tversky.py +0 -0
  251. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/unified_focal_loss.py +0 -0
  252. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/utils.py +0 -0
  253. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/__init__.py +0 -0
  254. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/absolute_volume_difference.py +0 -0
  255. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/average_precision.py +0 -0
  256. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/calibration.py +0 -0
  257. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/cumulative_average.py +0 -0
  258. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/embedding_collapse.py +0 -0
  259. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/f_beta_score.py +0 -0
  260. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/fid.py +0 -0
  261. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/froc.py +0 -0
  262. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/generalized_dice.py +0 -0
  263. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/loss_metric.py +0 -0
  264. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/meaniou.py +0 -0
  265. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/metric.py +0 -0
  266. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/mmd.py +0 -0
  267. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/panoptic_quality.py +0 -0
  268. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/regression.py +0 -0
  269. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/rocauc.py +0 -0
  270. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/surface_dice.py +0 -0
  271. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/utils.py +0 -0
  272. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/wrapper.py +0 -0
  273. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/__init__.py +0 -0
  274. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/__init__.py +0 -0
  275. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/acti_norm.py +0 -0
  276. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/activation.py +0 -0
  277. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/activation_checkpointing.py +0 -0
  278. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/aspp.py +0 -0
  279. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/attention_utils.py +0 -0
  280. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
  281. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/cablock.py +0 -0
  282. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/convolutions.py +0 -0
  283. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/crf.py +0 -0
  284. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/crossattention.py +0 -0
  285. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/denseblock.py +0 -0
  286. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/dints_block.py +0 -0
  287. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/downsample.py +0 -0
  288. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/dynunet_block.py +0 -0
  289. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/encoder.py +0 -0
  290. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/fcn.py +0 -0
  291. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/feature_pyramid_network.py +0 -0
  292. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/fft_utils_t.py +0 -0
  293. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/hyena.py +0 -0
  294. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/localnet_block.py +0 -0
  295. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/mednext_block.py +0 -0
  296. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/mlp.py +0 -0
  297. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/patchembedding.py +0 -0
  298. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/pos_embed_utils.py +0 -0
  299. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/regunet_block.py +0 -0
  300. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/rel_pos_embedding.py +0 -0
  301. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/segresnet_block.py +0 -0
  302. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/selfattention.py +0 -0
  303. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/spade_norm.py +0 -0
  304. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/spatialattention.py +0 -0
  305. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
  306. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/text_embedding.py +0 -0
  307. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/transformerblock.py +0 -0
  308. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/unetr_block.py +0 -0
  309. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/upsample.py +0 -0
  310. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/warp.py +0 -0
  311. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/conjugate_gradient.py +0 -0
  312. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/convutils.py +0 -0
  313. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/drop_path.py +0 -0
  314. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/factories.py +0 -0
  315. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/filtering.py +0 -0
  316. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/gmm.py +0 -0
  317. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/simplelayers.py +0 -0
  318. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/spatial_transforms.py +0 -0
  319. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/utils.py +0 -0
  320. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/vector_quantizer.py +0 -0
  321. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/weight_init.py +0 -0
  322. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/ahnet.py +0 -0
  323. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/attentionunet.py +0 -0
  324. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/autoencoder.py +0 -0
  325. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/autoencoderkl.py +0 -0
  326. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/basic_unet.py +0 -0
  327. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/basic_unetplusplus.py +0 -0
  328. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/cell_sam_wrapper.py +0 -0
  329. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/classifier.py +0 -0
  330. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/controlnet.py +0 -0
  331. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/daf3d.py +0 -0
  332. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/densenet.py +0 -0
  333. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/diffusion_model_unet.py +0 -0
  334. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/dints.py +0 -0
  335. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/efficientnet.py +0 -0
  336. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/flexible_unet.py +0 -0
  337. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/fullyconnectednet.py +0 -0
  338. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/generator.py +0 -0
  339. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/highresnet.py +0 -0
  340. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/hovernet.py +0 -0
  341. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/hyena_nd_unetr.py +0 -0
  342. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
  343. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/mednext.py +0 -0
  344. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/milmodel.py +0 -0
  345. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/navit.py +0 -0
  346. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/netadapter.py +0 -0
  347. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/patchgan_discriminator.py +0 -0
  348. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/quicknat.py +0 -0
  349. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/regressor.py +0 -0
  350. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/regunet.py +0 -0
  351. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/resnet.py +0 -0
  352. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/restormer.py +0 -0
  353. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/segresnet.py +0 -0
  354. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/senet.py +0 -0
  355. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/spade_autoencoderkl.py +0 -0
  356. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
  357. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/spade_network.py +0 -0
  358. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/swin_unetr.py +0 -0
  359. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/torchvision_fc.py +0 -0
  360. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/transchex.py +0 -0
  361. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/transformer.py +0 -0
  362. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/unet.py +0 -0
  363. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/unetr.py +0 -0
  364. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/varautoencoder.py +0 -0
  365. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vista3d.py +0 -0
  366. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vit.py +0 -0
  367. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vitautoenc.py +0 -0
  368. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vnet.py +0 -0
  369. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/voxelmorph.py +0 -0
  370. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vqvae.py +0 -0
  371. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/__init__.py +0 -0
  372. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/ddim.py +0 -0
  373. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/ddpm.py +0 -0
  374. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/pndm.py +0 -0
  375. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/rectified_flow.py +0 -0
  376. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/scheduler.py +0 -0
  377. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/trt_compiler.py +0 -0
  378. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/utils.py +0 -0
  379. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/__init__.py +0 -0
  380. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/lr_finder.py +0 -0
  381. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/lr_scheduler.py +0 -0
  382. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/novograd.py +0 -0
  383. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/utils.py +0 -0
  384. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/py.typed +0 -0
  385. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/__init__.py +0 -0
  386. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/adaptors.py +0 -0
  387. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/compose.py +0 -0
  388. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/__init__.py +0 -0
  389. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/array.py +0 -0
  390. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/batch.py +0 -0
  391. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/dictionary.py +0 -0
  392. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/functional.py +0 -0
  393. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/intensity/__init__.py +0 -0
  394. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/intensity/dictionary.py +0 -0
  395. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/inverse.py +0 -0
  396. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/inverse_batch_transform.py +0 -0
  397. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/io/__init__.py +0 -0
  398. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/io/array.py +0 -0
  399. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/io/dictionary.py +0 -0
  400. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/__init__.py +0 -0
  401. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/array.py +0 -0
  402. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/dictionary.py +0 -0
  403. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/functional.py +0 -0
  404. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/utils.py +0 -0
  405. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/meta_utility/__init__.py +0 -0
  406. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/meta_utility/dictionary.py +0 -0
  407. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/nvtx.py +0 -0
  408. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/post/__init__.py +0 -0
  409. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/post/array.py +0 -0
  410. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/post/dictionary.py +0 -0
  411. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/regularization/__init__.py +0 -0
  412. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/regularization/array.py +0 -0
  413. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/regularization/dictionary.py +0 -0
  414. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/signal/__init__.py +0 -0
  415. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/signal/array.py +0 -0
  416. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/signal/dictionary.py +0 -0
  417. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/smooth_field/__init__.py +0 -0
  418. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/smooth_field/array.py +0 -0
  419. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/smooth_field/dictionary.py +0 -0
  420. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/__init__.py +0 -0
  421. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/array.py +0 -0
  422. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/dictionary.py +0 -0
  423. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/traits.py +0 -0
  424. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/transform.py +0 -0
  425. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utility/__init__.py +0 -0
  426. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utility/dictionary.py +0 -0
  427. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils.py +0 -0
  428. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils_create_transform_ims.py +0 -0
  429. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils_morphological_ops.py +0 -0
  430. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
  431. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/__init__.py +0 -0
  432. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/compare_sources.py +0 -0
  433. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/component_store.py +0 -0
  434. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/decorators.py +0 -0
  435. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/deprecate_utils.py +0 -0
  436. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/dist.py +0 -0
  437. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/enums.py +0 -0
  438. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/jupyter_utils.py +0 -0
  439. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/misc.py +0 -0
  440. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/module.py +0 -0
  441. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/nvtx.py +0 -0
  442. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/ordering.py +0 -0
  443. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/profiling.py +0 -0
  444. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/safeeval.py +0 -0
  445. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/state_cacher.py +0 -0
  446. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/tf32.py +0 -0
  447. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/type_conversion.py +0 -0
  448. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/__init__.py +0 -0
  449. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/class_activation_maps.py +0 -0
  450. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/gradient_based.py +0 -0
  451. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/img2tensorboard.py +0 -0
  452. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/occlusion_sensitivity.py +0 -0
  453. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/utils.py +0 -0
  454. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/visualizer.py +0 -0
  455. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/dependency_links.txt +0 -0
  456. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/not-zip-safe +0 -0
  457. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/requires.txt +0 -0
  458. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/top_level.txt +0 -0
  459. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/pyproject.toml +0 -0
  460. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/setup.cfg +0 -0
  461. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/setup.py +0 -0
  462. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2642
3
+ Version: 1.7.dev2644
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
@@ -86,6 +86,7 @@ from .utils.module import load_submodules # noqa: E402
86
86
  # *.so files and folder "_C" may not exist when the cpp extensions are not compiled
87
87
  excludes = "|".join(
88
88
  [
89
+ "(.*(nvimgcodec_pydicom_plugin)$)",
89
90
  "(^(monai.handlers))",
90
91
  "(^(monai.bundle))",
91
92
  "(^(monai.fl))",
@@ -136,4 +137,4 @@ except Exception:
136
137
 
137
138
  if MONAIEnvVars.debug():
138
139
  raise
139
- __commit_id__ = "8de81226c971dd27b5826d4bd60849d46aae9ff2"
140
+ __commit_id__ = "827fa24fef4f474f70ead141412a2a0675990684"
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-10-18T02:14:29+0000",
11
+ "date": "2026-11-01T02:09:43+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "4835c649a66849125f1e656543264f5fa7d261c0",
15
- "version": "1.7.dev2642"
14
+ "full-revisionid": "47589b4b36aee36f5956dc5d440c445c3a7b1e2a",
15
+ "version": "1.7.dev2644"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -23,7 +23,7 @@ import torch
23
23
  from monai.apps.auto3dseg.bundle_gen import BundleGen
24
24
  from monai.apps.auto3dseg.data_analyzer import DataAnalyzer
25
25
  from monai.apps.auto3dseg.ensemble_builder import EnsembleRunner
26
- from monai.apps.auto3dseg.hpo_gen import NNIGen
26
+ from monai.apps.auto3dseg.hpo_gen import NNIGen, _nni_trial_command
27
27
  from monai.apps.auto3dseg.utils import export_bundle_algo_history, import_bundle_algo_history
28
28
  from monai.apps.utils import get_logger
29
29
  from monai.auto3dseg.utils import algo_to_json
@@ -797,7 +797,7 @@ class AutoRunner:
797
797
  nni_config[key] = self.hpo_params[key]
798
798
  nni_config.update({"experimentName": name})
799
799
  nni_config.update({"search_space": self.search_space})
800
- trial_cmd = "python -m monai.apps.auto3dseg NNIGen run_algo " + obj_filename + " " + self.work_dir
800
+ trial_cmd = _nni_trial_command(obj_filename, self.work_dir)
801
801
  nni_config.update({"trialCommand": trial_cmd})
802
802
  nni_config_filename = os.path.abspath(os.path.join(self.work_dir, f"{name}_nni_config.yaml"))
803
803
  ConfigParser.export_config_file(nni_config, nni_config_filename, fmt="yaml", default_flow_style=None)
@@ -12,6 +12,7 @@
12
12
  from __future__ import annotations
13
13
 
14
14
  import importlib
15
+ import ntpath
15
16
  import os
16
17
  import re
17
18
  import shutil
@@ -50,6 +51,52 @@ ALGO_HASH = MONAIEnvVars.algo_hash()
50
51
  __all__ = ["BundleAlgo", "BundleGen"]
51
52
 
52
53
 
54
+ def _check_single_path_component(value: Any, what: str) -> None:
55
+ """
56
+ Require ``value`` to be one non-empty directory name with no path separators, drive or NUL character.
57
+
58
+ Args:
59
+ value: the name to check.
60
+ what: a description of the value, used in the error message.
61
+
62
+ Raises:
63
+ ValueError: if ``value`` is not a plain directory name.
64
+ """
65
+ name = str(value)
66
+ separators = {os.sep, "/"} | ({os.altsep} if os.altsep else set())
67
+ if (
68
+ not name
69
+ or name in (".", "..")
70
+ or "\x00" in name
71
+ or any(sep in name for sep in separators)
72
+ or os.path.isabs(name)
73
+ or ntpath.splitdrive(name)[0]
74
+ ):
75
+ raise ValueError(f"Invalid {what} {value!r}: expected a single directory name without path separators.")
76
+
77
+
78
+ def _confined_join(root: str, name: str) -> str:
79
+ """
80
+ Join ``name`` to ``root`` and check that the resolved result stays inside ``root``.
81
+
82
+ Args:
83
+ root: the parent directory.
84
+ name: the child directory name.
85
+
86
+ Returns:
87
+ the joined path.
88
+
89
+ Raises:
90
+ ValueError: if the resolved path is not inside ``root``.
91
+ """
92
+ path = os.path.join(root, name)
93
+ real_root = os.path.realpath(root)
94
+ real_path = os.path.realpath(path)
95
+ if real_path == real_root or os.path.commonpath([real_root, real_path]) != real_root:
96
+ raise ValueError(f"Invalid path: {path!r} is not inside {root!r}.")
97
+ return path
98
+
99
+
53
100
  class BundleAlgo(Algo):
54
101
  """
55
102
  An algorithm represented by a set of bundle configurations and scripts.
@@ -176,18 +223,29 @@ class BundleAlgo(Algo):
176
223
  Args:
177
224
  output_path: Path to export the 'scripts' and 'configs' directories.
178
225
  algo_name: the identifier of the algorithm (usually contains the name and extra info like fold ID).
226
+ It must be a single directory name: path separators, ``.`` and ``..`` are rejected.
179
227
  kwargs: other parameters, including: "copy_dirs=True/False" means whether to copy the template as output
180
228
  instead of inplace operation, "fill_template=True/False" means whether to fill the placeholders
181
229
  in the template. other parameters are for `fill_template_config` function.
182
230
 
231
+
232
+ Raises:
233
+ ValueError: if ``algo_name`` or the Algo ``name`` is not a single directory name, or the destination
234
+ does not resolve inside ``output_path``.
183
235
  """
184
236
  if kwargs.pop("copy_dirs", True):
185
- self.output_path = os.path.join(output_path, algo_name)
237
+ _check_single_path_component(algo_name, "algo_name")
238
+ if self.name: # an empty name copies the whole template_path
239
+ _check_single_path_component(self.name, "the Algo name")
240
+ source = os.path.join(str(self.template_path), self.name)
241
+ if not os.path.isdir(source):
242
+ raise ValueError(f"Algo template folder {source!r} does not exist.")
243
+ self.output_path = _confined_join(output_path, algo_name)
186
244
  os.makedirs(self.output_path, exist_ok=True)
187
245
  if os.path.isdir(self.output_path):
188
246
  shutil.rmtree(self.output_path)
189
247
  # copy algorithm_templates/<Algo> to the working directory output_path
190
- shutil.copytree(os.path.join(str(self.template_path), self.name), self.output_path)
248
+ shutil.copytree(source, self.output_path)
191
249
  else:
192
250
  self.output_path = str(self.template_path)
193
251
  if kwargs.pop("fill_template", True):
@@ -12,6 +12,8 @@
12
12
  from __future__ import annotations
13
13
 
14
14
  import os
15
+ import shlex
16
+ import sys
15
17
  from abc import abstractmethod
16
18
  from copy import deepcopy
17
19
  from typing import Any, cast
@@ -32,6 +34,84 @@ logger = get_logger(module_name=__name__)
32
34
  __all__ = ["HPOGen", "NNIGen", "OptunaGen"]
33
35
 
34
36
 
37
+ # cmd.exe expands or ends a quoted argument at these characters even inside double quotes
38
+ _CMD_UNSAFE_CHARS = frozenset('"%!\r\n\x00')
39
+
40
+
41
+ def _quote_trial_arg(arg: Any, windows: bool | None = None) -> str:
42
+ """
43
+ Quote one argument of an NNI ``trialCommand`` as a literal for the shell NNI uses.
44
+
45
+ NNI's local training service runs ``trialCommand`` with bash on Linux and macOS and with ``cmd.exe`` on
46
+ Windows. For ``cmd.exe`` the argument is wrapped in double quotes, which make ``&``, ``|``, ``<``, ``>``,
47
+ ``^`` and parentheses literal, and backslashes before the closing quote are doubled so the program receives
48
+ the argument unchanged. Characters that ``cmd.exe`` interprets even inside double quotes are rejected.
49
+
50
+ Args:
51
+ arg: the argument value.
52
+ windows: quote for ``cmd.exe`` instead of a POSIX shell. Defaults to ``sys.platform == "win32"``.
53
+
54
+ Returns:
55
+ the quoted argument.
56
+
57
+ Raises:
58
+ ValueError: on Windows, if the argument contains ``"``, ``%``, ``!`` or a line break or NUL character.
59
+ """
60
+ text = str(arg)
61
+ if sys.platform == "win32" if windows is None else windows:
62
+ unsafe = sorted(_CMD_UNSAFE_CHARS.intersection(text))
63
+ if unsafe:
64
+ raise ValueError(f"Cannot pass {text!r} to an NNI trial on Windows: it contains {unsafe}.")
65
+ trailing = len(text) - len(text.rstrip("\\"))
66
+ return '"' + text + "\\" * trailing + '"'
67
+ return shlex.quote(text)
68
+
69
+
70
+ def _nni_trial_command(obj_filename: Any, work_dir: Any, windows: bool | None = None) -> str:
71
+ """
72
+ Build the NNI ``trialCommand`` that runs one algo trial.
73
+
74
+ The fixed part of the command is plain text; the two paths are quoted with ``_quote_trial_arg`` so they
75
+ are passed to ``NNIGen run_algo`` unchanged. On a POSIX shell any path is accepted; ``cmd.exe`` cannot
76
+ carry a few characters even inside double quotes, see ``_quote_trial_arg``.
77
+
78
+ Args:
79
+ obj_filename: the serialized algo object file.
80
+ work_dir: the Auto3DSeg working directory.
81
+ windows: quote for ``cmd.exe`` instead of a POSIX shell. Defaults to ``sys.platform == "win32"``.
82
+
83
+ Returns:
84
+ the command string to store as ``trialCommand``.
85
+
86
+ Raises:
87
+ ValueError: on Windows, if ``obj_filename`` or ``work_dir`` contains ``"``, ``%``, ``!``, a line
88
+ break or a NUL character.
89
+ """
90
+ paths = " ".join(_quote_trial_arg(p, windows) for p in (obj_filename, work_dir))
91
+ return f"python -m monai.apps.auto3dseg NNIGen run_algo {paths}"
92
+
93
+
94
+ def _quote_or_raw(arg: Any, windows: bool | None = None) -> str:
95
+ """
96
+ Quote one argument of the printed trialCommand instruction, falling back to the unquoted text.
97
+
98
+ ``print_bundle_algo_instruction`` only reports how to write the command, so a path its shell cannot
99
+ quote must not stop the instructions from printing: warn and print the path as it is.
100
+
101
+ Args:
102
+ arg: the argument value.
103
+ windows: quote for ``cmd.exe`` instead of a POSIX shell. Defaults to ``sys.platform == "win32"``.
104
+
105
+ Returns:
106
+ the quoted argument, or ``str(arg)`` if the shell cannot quote it.
107
+ """
108
+ try:
109
+ return _quote_trial_arg(arg, windows)
110
+ except ValueError as error:
111
+ logger.warning(f"Leaving {str(arg)!r} unquoted in the printed trialCommand: {error}")
112
+ return str(arg)
113
+
114
+
35
115
  class HPOGen(AlgoGen):
36
116
  """
37
117
  The base class for hyperparameter optimization (HPO) interfaces to generate algos in the Auto3Dseg pipeline.
@@ -143,7 +223,7 @@ class NNIGen(HPOGen):
143
223
  logger.info("=" * 140)
144
224
  logger.info("If NNI will run in your local env: ")
145
225
  logger.info("1. Add the following line to the trialCommand in your NNI config: ")
146
- logger.info(f"{hint} {self.obj_filename} {{result_dir}}")
226
+ logger.info(f"{hint} {_quote_or_raw(self.obj_filename)} {{result_dir}}")
147
227
  logger.info("-" * 140)
148
228
  logger.info("If NNI will run in a remote env: ")
149
229
  logger.info(
@@ -258,7 +258,6 @@ class AffineBoxToImageCoordinated(MapTransform, InvertibleTransform):
258
258
  Args:
259
259
  box_keys: Keys to pick box data for transformation. The box mode is assumed to be ``StandardMode``.
260
260
  box_ref_image_keys: The single key that represents the reference image to which ``box_keys`` are attached.
261
- remove_empty: whether to remove the boxes that are actually empty
262
261
  allow_missing_keys: don't raise exception if key is missing.
263
262
  image_meta_key: explicitly indicate the key of the corresponding metadata dictionary.
264
263
  for example, for data with key `image`, the metadata by default is in `image_meta_dict`.
@@ -347,7 +346,6 @@ class AffineBoxToWorldCoordinated(AffineBoxToImageCoordinated):
347
346
  Args:
348
347
  box_keys: Keys to pick box data for transformation. The box mode is assumed to be ``StandardMode``.
349
348
  box_ref_image_keys: The single key that represents the reference image to which ``box_keys`` are attached.
350
- remove_empty: whether to remove the boxes that are actually empty
351
349
  allow_missing_keys: don't raise exception if key is missing.
352
350
  image_meta_key: explicitly indicate the key of the corresponding metadata dictionary.
353
351
  for example, for data with key `image`, the metadata by default is in `image_meta_dict`.
@@ -9,7 +9,7 @@
9
9
  # See the License for the specific language governing permissions and
10
10
  # limitations under the License.
11
11
  """
12
- Utilities for accessing Nvidia MMARs
12
+ Deprecated utilities for accessing Nvidia MMARs. Use MONAI Bundles instead.
13
13
 
14
14
  See Also:
15
15
  - https://docs.nvidia.com/clara/clara-train-sdk/pt/mmar.html
@@ -18,18 +18,13 @@ See Also:
18
18
  from __future__ import annotations
19
19
 
20
20
  import json
21
- import os
22
- import warnings
23
21
  from collections.abc import Mapping
24
22
  from pathlib import Path
25
23
  from typing import Any
26
24
 
27
- import torch
28
-
29
- import monai.networks.nets as monai_nets
30
- from monai.apps.utils import download_and_extract, logger
25
+ from monai.apps.utils import download_and_extract
31
26
  from monai.config.type_definitions import PathLike
32
- from monai.networks.utils import copy_model_state
27
+ from monai.utils.deprecate_utils import DeprecatedError, deprecated
33
28
  from monai.utils.module import optional_import
34
29
 
35
30
  from .model_desc import MODEL_DESC
@@ -38,8 +33,21 @@ from .model_desc import RemoteMMARKeys as Keys
38
33
  __all__ = ["get_model_spec", "download_mmar", "load_from_mmar"]
39
34
 
40
35
 
41
- def get_model_spec(idx: int | str) -> dict | Any:
42
- """get model specification by `idx`. `idx` could be index of the constant tuple of dict or the actual model ID."""
36
+ def _get_model_spec(idx: int | str) -> dict | Any:
37
+ """
38
+ Look up a model specification without emitting a deprecation warning.
39
+
40
+ Args:
41
+ idx: An index into ``MODEL_DESC`` or a model ID. Negative indices count from the end.
42
+ Model IDs ignore case and leading or trailing whitespace.
43
+
44
+ Returns:
45
+ The matching model specification. Unknown IDs and inputs other than integers or strings
46
+ are returned unchanged.
47
+
48
+ Raises:
49
+ IndexError: If an integer index is outside the range of ``MODEL_DESC``.
50
+ """
43
51
  if isinstance(idx, int):
44
52
  return MODEL_DESC[idx]
45
53
  if isinstance(idx, str):
@@ -50,6 +58,21 @@ def get_model_spec(idx: int | str) -> dict | Any:
50
58
  return idx
51
59
 
52
60
 
61
+ @deprecated(
62
+ since="1.7.0",
63
+ removed="1.9.0",
64
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
65
+ )
66
+ def get_model_spec(idx: int | str) -> dict | Any:
67
+ """
68
+ Get a model specification by index or model ID.
69
+
70
+ .. deprecated:: 1.7.0
71
+ NVIDIA Clara MMAR support will be removed in version 1.9.0. Use MONAI Bundles instead.
72
+ """
73
+ return _get_model_spec(idx)
74
+
75
+
53
76
  def _get_all_ngc_models(pattern, page_index=0, page_size=50):
54
77
  url = "https://api.ngc.nvidia.com/v2/search/catalog/resources/MODEL"
55
78
  query_dict = {
@@ -99,16 +122,20 @@ def _get_ngc_url(model_name: str, version: str, model_prefix: str = "") -> str:
99
122
  return f"https://api.ngc.nvidia.com/v2/models/{model_prefix}{model_name}/versions/{version}/zip"
100
123
 
101
124
 
102
- def _get_ngc_doc_url(model_name: str, model_prefix: str = "") -> str:
103
- return f"https://ngc.nvidia.com/catalog/models/{model_prefix}{model_name}"
104
-
105
-
125
+ @deprecated(
126
+ since="1.7.0",
127
+ removed="1.9.0",
128
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
129
+ )
106
130
  def download_mmar(
107
131
  item: str | Mapping, mmar_dir: PathLike | None = None, progress: bool = True, api: bool = True, version: int = -1
108
132
  ) -> Path:
109
133
  """
110
134
  Download and extract Medical Model Archive (MMAR) from Nvidia Clara Train.
111
135
 
136
+ .. deprecated:: 1.7.0
137
+ NVIDIA Clara MMAR support will be removed in version 1.9.0. Use MONAI Bundles instead.
138
+
112
139
  See Also:
113
140
  - https://docs.nvidia.com/clara/
114
141
  - Nvidia NGC Registry CLI
@@ -165,7 +192,7 @@ def download_mmar(
165
192
  return model_dir_list[0]
166
193
 
167
194
  if not isinstance(item, Mapping):
168
- item = get_model_spec(item)
195
+ item = _get_model_spec(item)
169
196
  ver = item.get(Keys.VERSION, 1)
170
197
  if version > 0:
171
198
  ver = str(version)
@@ -185,6 +212,11 @@ def download_mmar(
185
212
  return model_dir
186
213
 
187
214
 
215
+ @deprecated(
216
+ since="1.7.0",
217
+ removed="1.9.0",
218
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
219
+ )
188
220
  def load_from_mmar(
189
221
  item: Mapping | str | int,
190
222
  mmar_dir: PathLike | None = None,
@@ -198,117 +230,31 @@ def load_from_mmar(
198
230
  model_file: PathLike | None = None,
199
231
  ) -> Any:
200
232
  """
201
- Download and extract Medical Model Archive (MMAR) model weights from Nvidia Clara Train.
233
+ Disabled loader for NVIDIA Clara Medical Model Archive (MMAR) models.
234
+
235
+ .. deprecated:: 1.7.0
236
+ Loading MMAR models is disabled for security reasons. This function will be removed
237
+ in version 1.9.0. Use MONAI Bundles instead.
238
+
239
+ Every call raises :class:`monai.utils.DeprecatedError` before downloading or
240
+ loading a model. The arguments are kept for compatibility and are ignored.
241
+ Their former meanings are listed below.
202
242
 
203
243
  Args:
204
244
  item: the corresponding model item from `MODEL_DESC`.
205
- mmar_dir: : target directory to store the MMAR, default is mmars subfolder under `torch.hub get_dir()`.
245
+ mmar_dir: target directory to store the MMAR, default is mmars subfolder under `torch.hub get_dir()`.
206
246
  progress: whether to display a progress bar when downloading the content.
207
247
  version: version number of the MMAR. Set it to `-1` to use `item[Keys.VERSION]`.
208
248
  map_location: pytorch API parameter for `torch.load` or `torch.jit.load`.
209
249
  pretrained: whether to load the pretrained weights after initializing a network module.
210
250
  weights_only: whether to load only the weights instead of initializing the network module and assign weights.
211
251
  model_key: a key to search in the model file or config file for the model dictionary.
212
- Currently this function assumes that the model dictionary has
252
+ The model dictionary was expected to have
213
253
  `{"[name|path]": "test.module", "args": {'kw': 'test'}}`.
214
- api: whether to query NGC API to get model infomation.
254
+ api: whether to query NGC API to get model information.
215
255
  model_file: the relative path to the model file within an MMAR.
216
256
 
217
- Examples::
218
- >>> from monai.apps import load_from_mmar
219
- >>> unet_model = load_from_mmar("clara_pt_prostate_mri_segmentation_1", mmar_dir=".", map_location="cpu")
220
- >>> print(unet_model)
221
-
222
- See Also:
223
- https://docs.nvidia.com/clara/
224
- """
225
- if api:
226
- item = {Keys.NAME: get_model_spec(item)[Keys.NAME] if isinstance(item, int) else f"{item}"}
227
- if not isinstance(item, Mapping):
228
- item = get_model_spec(item)
229
- model_dir = download_mmar(item=item, mmar_dir=mmar_dir, progress=progress, version=version, api=api)
230
- if model_file is None:
231
- model_file = os.path.join("models", "model.pt")
232
- _model_file = model_dir / item.get(Keys.MODEL_FILE, model_file)
233
- logger.info(f'\n*** "{item.get(Keys.NAME)}" available at {model_dir}.')
234
-
235
- # loading with `torch.jit.load`
236
- if _model_file.name.endswith(".ts"):
237
- if not pretrained:
238
- warnings.warn("Loading a ScriptModule, 'pretrained' option ignored.")
239
- if weights_only:
240
- warnings.warn("Loading a ScriptModule, 'weights_only' option ignored.")
241
- return torch.jit.load(_model_file, map_location=map_location)
242
-
243
- # loading with `torch.load`
244
- model_dict = torch.load(_model_file, map_location=map_location, weights_only=True)
245
- if weights_only:
246
- return model_dict.get(model_key, model_dict) # model_dict[model_key] or model_dict directly
247
-
248
- # 1. search `model_dict['train_config]` for model config spec.
249
- model_config = _get_val(dict(model_dict).get("train_conf", {}), key=model_key, default={})
250
- if not model_config or not isinstance(model_config, Mapping):
251
- # 2. search json CONFIG_FILE for model config spec.
252
- json_path = model_dir / item.get(Keys.CONFIG_FILE, os.path.join("config", "config_train.json"))
253
- with open(json_path) as f:
254
- conf_dict = json.load(f)
255
- conf_dict = dict(conf_dict)
256
- model_config = _get_val(conf_dict, key=model_key, default={})
257
- if not model_config:
258
- # 3. search `model_dict` for model config spec.
259
- model_config = _get_val(dict(model_dict), key=model_key, default={})
260
-
261
- if not (model_config and isinstance(model_config, Mapping)):
262
- raise ValueError(
263
- f"Could not load model config dictionary from config: {item.get(Keys.CONFIG_FILE)}, "
264
- f"or from model file: {item.get(Keys.MODEL_FILE)}."
265
- )
266
-
267
- # parse `model_config` for model class and model parameters
268
- if model_config.get("name"): # model config section is a "name"
269
- model_name = model_config["name"]
270
- model_cls = monai_nets.__dict__[model_name]
271
- elif model_config.get("path"): # model config section is a "path"
272
- # https://docs.nvidia.com/clara/clara-train-sdk/pt/byom.html
273
- model_module, model_name = model_config.get("path", ".").rsplit(".", 1)
274
- model_cls, has_cls = optional_import(module=model_module, name=model_name)
275
- if not has_cls:
276
- raise ValueError(
277
- f"Could not load MMAR model config {model_config.get('path', '')}, "
278
- f"Please make sure MMAR's sub-folders in '{model_dir}' is on the PYTHONPATH."
279
- "See also: https://docs.nvidia.com/clara/clara-train-sdk/pt/byom.html"
280
- )
281
- else:
282
- raise ValueError(f"Could not load model config {model_config}.")
283
-
284
- logger.info(f"*** Model: {model_cls}")
285
- model_kwargs = model_config.get("args", None)
286
- if model_kwargs:
287
- model_inst = model_cls(**model_kwargs)
288
- logger.info(f"*** Model params: {model_kwargs}")
289
- else:
290
- model_inst = model_cls()
291
- if pretrained:
292
- _, changed, unchanged = copy_model_state(model_inst, model_dict.get(model_key, model_dict), inplace=True)
293
- if not (changed and not unchanged): # not all model_inst variables are changed
294
- logger.warning(f"*** Loading model state -- unchanged: {len(unchanged)}, changed: {len(changed)}.")
295
- logger.info("\n---")
296
- doc_url = item.get(Keys.DOC) or _get_ngc_doc_url(item[Keys.NAME], model_prefix="nvidia:med:")
297
- logger.info(f"For more information, please visit {doc_url}\n")
298
- return model_inst
299
-
300
-
301
- def _get_val(input_dict: Mapping, key: str = "model", default: Any | None = None) -> Any | None:
302
- """
303
- Search for the item with `key` in `config_dict`.
304
- Returns: the first occurrence of `key` in a breadth first search.
257
+ Raises:
258
+ DeprecatedError: always, because MMAR loading is disabled for security reasons.
305
259
  """
306
- if key in input_dict:
307
- return input_dict[key]
308
- for sub_dict in input_dict:
309
- val = input_dict[sub_dict]
310
- if isinstance(val, Mapping):
311
- found_val = _get_val(val, key=key, default=None)
312
- if found_val is not None:
313
- return found_val
314
- return default
260
+ raise DeprecatedError("load_from_mmar is disabled for security reasons. Please use MONAI Bundles instead.")
@@ -20,19 +20,31 @@ from __future__ import annotations
20
20
  import os
21
21
  from typing import Any
22
22
 
23
+ from monai.utils.deprecate_utils import deprecated
24
+
23
25
  __all__ = ["MODEL_DESC", "RemoteMMARKeys"]
24
26
 
25
27
 
28
+ @deprecated(
29
+ since="1.7.0",
30
+ removed="1.9.0",
31
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
32
+ )
26
33
  class RemoteMMARKeys:
27
34
  """
28
35
  Data keys used for loading MMAR.
29
36
  ID must uniquely define an MMAR.
37
+
38
+ .. deprecated:: 1.7.0
39
+ NVIDIA Clara MMAR support will be removed in version 1.9.0. Use MONAI Bundles instead.
40
+ Reading these constants or ``MODEL_DESC`` does not emit a warning; both will be removed
41
+ with the MMAR module in version 1.9.0.
30
42
  """
31
43
 
32
44
  ID = "id" # unique MMAR
33
45
  NAME = "name" # MMAR name for readability
34
46
  URL = "url" # remote location of the MMAR, see also: `monai.apps.mmars.mmars._get_ngc_url`
35
- DOC = "doc" # documentation page of the remote model, see also: `monai.apps.mmars.mmars._get_ngc_doc_url`
47
+ DOC = "doc" # documentation page of the remote model
36
48
  FILE_TYPE = "file_type" # type of the compressed MMAR
37
49
  HASH_TYPE = "hash_type" # hashing method for the compressed MMAR
38
50
  HASH_VAL = "hash_val" # hashing value for the compressed MMAR
@@ -12,6 +12,7 @@
12
12
  from __future__ import annotations
13
13
 
14
14
  from .nnunet_bundle import (
15
+ DEFAULT_NNUNET_NETWORK_MODULES,
15
16
  ModelnnUNetWrapper,
16
17
  convert_monai_bundle_to_nnunet,
17
18
  convert_nnunet_to_monai_bundle,