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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/PKG-INFO +1 -1
  2. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/__init__.py +1 -1
  3. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_version.py +3 -3
  4. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/utils.py +41 -6
  5. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/grid_dataset.py +10 -7
  6. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/synthetic.py +40 -9
  7. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/inferers/merger.py +7 -1
  8. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/embedding_collapse.py +14 -4
  9. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/fid.py +1 -1
  10. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/meaniou.py +4 -10
  11. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/dints.py +9 -5
  12. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/regunet.py +12 -1
  13. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/__init__.py +4 -0
  14. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/post/array.py +89 -1
  15. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/post/dictionary.py +58 -0
  16. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/dictionary.py +8 -2
  17. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utils.py +84 -0
  18. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/deprecate_utils.py +2 -2
  19. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/PKG-INFO +1 -1
  20. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/LICENSE +0 -0
  21. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/MANIFEST.in +0 -0
  22. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/README.md +0 -0
  23. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/__init__.py +0 -0
  24. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm.cpp +0 -0
  25. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm.h +0 -0
  26. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
  27. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
  28. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
  29. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/_extensions/loader.py +0 -0
  30. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/__init__.py +0 -0
  31. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/__init__.py +0 -0
  32. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/__main__.py +0 -0
  33. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/auto_runner.py +0 -0
  34. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/bundle_gen.py +0 -0
  35. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/data_analyzer.py +0 -0
  36. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
  37. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/hpo_gen.py +0 -0
  38. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/transforms.py +0 -0
  39. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/utils.py +0 -0
  40. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/datasets.py +0 -0
  41. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/__init__.py +0 -0
  42. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/interaction.py +0 -0
  43. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/transforms.py +0 -0
  44. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/__init__.py +0 -0
  45. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/dataset.py +0 -0
  46. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/interaction.py +0 -0
  47. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/transforms.py +0 -0
  48. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/__init__.py +0 -0
  49. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/__init__.py +0 -0
  50. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/coco.py +0 -0
  51. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/matching.py +0 -0
  52. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/__init__.py +0 -0
  53. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/retinanet_detector.py +0 -0
  54. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/retinanet_network.py +0 -0
  55. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/__init__.py +0 -0
  56. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/array.py +0 -0
  57. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/box_ops.py +0 -0
  58. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/dictionary.py +0 -0
  59. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
  60. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/__init__.py +0 -0
  61. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/anchor_utils.py +0 -0
  62. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/box_coder.py +0 -0
  63. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/box_selector.py +0 -0
  64. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/detector_utils.py +0 -0
  65. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
  66. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/predict_utils.py +0 -0
  67. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/generation/__init__.py +0 -0
  68. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/__init__.py +0 -0
  69. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/__init__.py +0 -0
  70. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
  71. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
  72. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
  73. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/mmars/__init__.py +0 -0
  74. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/mmars/mmars.py +0 -0
  75. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/mmars/model_desc.py +0 -0
  76. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/__init__.py +0 -0
  77. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/__main__.py +0 -0
  78. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/nnunet_bundle.py +0 -0
  79. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
  80. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/utils.py +0 -0
  81. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nuclick/__init__.py +0 -0
  82. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/nuclick/transforms.py +0 -0
  83. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/__init__.py +0 -0
  84. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/engines/__init__.py +0 -0
  85. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/engines/utils.py +0 -0
  86. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/handlers/__init__.py +0 -0
  87. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/handlers/utils.py +0 -0
  88. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/inferers/__init__.py +0 -0
  89. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/inferers/inferer.py +0 -0
  90. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/losses/__init__.py +0 -0
  91. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
  92. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/metrics/__init__.py +0 -0
  93. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
  94. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/__init__.py +0 -0
  95. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/__init__.py +0 -0
  96. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/array.py +0 -0
  97. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
  98. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
  99. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/array.py +0 -0
  100. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
  101. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/pathology/utils.py +0 -0
  102. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/__init__.py +0 -0
  103. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/complex_utils.py +0 -0
  104. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/fastmri_reader.py +0 -0
  105. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/mri_utils.py +0 -0
  106. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/__init__.py +0 -0
  107. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
  108. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
  109. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
  110. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
  111. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
  112. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
  113. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
  114. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/__init__.py +0 -0
  115. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/array.py +0 -0
  116. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
  117. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/tcia/__init__.py +0 -0
  118. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/tcia/label_desc.py +0 -0
  119. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/tcia/utils.py +0 -0
  120. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/__init__.py +0 -0
  121. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/inferer.py +0 -0
  122. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/sampler.py +0 -0
  123. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/transforms.py +0 -0
  124. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/auto3dseg/__init__.py +0 -0
  125. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/auto3dseg/algo_gen.py +0 -0
  126. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/auto3dseg/analyzer.py +0 -0
  127. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/auto3dseg/operations.py +0 -0
  128. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/auto3dseg/seg_summarizer.py +0 -0
  129. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/auto3dseg/utils.py +0 -0
  130. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/__init__.py +0 -0
  131. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/__main__.py +0 -0
  132. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/config_item.py +0 -0
  133. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/config_parser.py +0 -0
  134. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/properties.py +0 -0
  135. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/reference_resolver.py +0 -0
  136. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/scripts.py +0 -0
  137. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/utils.py +0 -0
  138. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/bundle/workflows.py +0 -0
  139. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/config/__init__.py +0 -0
  140. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/config/__main__.py +0 -0
  141. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/config/check_env.py +0 -0
  142. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/config/deviceconfig.py +0 -0
  143. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/config/print_dependencies.py +0 -0
  144. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/config/type_definitions.py +0 -0
  145. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/__init__.py +0 -0
  146. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/box_utils.py +0 -0
  147. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/csv_saver.py +0 -0
  148. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/dataloader.py +0 -0
  149. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/dataset.py +0 -0
  150. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/dataset_summary.py +0 -0
  151. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/decathlon_datalist.py +0 -0
  152. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/fft_utils.py +0 -0
  153. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/folder_layout.py +0 -0
  154. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/image_dataset.py +0 -0
  155. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/image_reader.py +0 -0
  156. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/image_writer.py +0 -0
  157. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/iterable_dataset.py +0 -0
  158. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/itk_torch_bridge.py +0 -0
  159. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/meta_obj.py +0 -0
  160. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/meta_tensor.py +0 -0
  161. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/nvimgcodec_pydicom_plugin.py +0 -0
  162. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/samplers.py +0 -0
  163. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/test_time_augmentation.py +0 -0
  164. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/thread_buffer.py +0 -0
  165. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/torchscript_utils.py +0 -0
  166. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/ultrasound_confidence_map.py +0 -0
  167. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/utils.py +0 -0
  168. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/video_dataset.py +0 -0
  169. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/wsi_datasets.py +0 -0
  170. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/data/wsi_reader.py +0 -0
  171. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/engines/__init__.py +0 -0
  172. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/engines/evaluator.py +0 -0
  173. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/engines/trainer.py +0 -0
  174. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/engines/utils.py +0 -0
  175. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/engines/workflow.py +0 -0
  176. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/__init__.py +0 -0
  177. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/client/__init__.py +0 -0
  178. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/client/client_algo.py +0 -0
  179. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/client/monai_algo.py +0 -0
  180. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/utils/__init__.py +0 -0
  181. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/utils/constants.py +0 -0
  182. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/utils/exchange_object.py +0 -0
  183. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/fl/utils/filters.py +0 -0
  184. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/__init__.py +0 -0
  185. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/average_precision.py +0 -0
  186. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/calibration.py +0 -0
  187. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/checkpoint_loader.py +0 -0
  188. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/checkpoint_saver.py +0 -0
  189. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/classification_saver.py +0 -0
  190. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/clearml_handlers.py +0 -0
  191. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/confusion_matrix.py +0 -0
  192. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/decollate_batch.py +0 -0
  193. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/earlystop_handler.py +0 -0
  194. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/garbage_collector.py +0 -0
  195. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/hausdorff_distance.py +0 -0
  196. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/ignite_metric.py +0 -0
  197. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/logfile_handler.py +0 -0
  198. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/lr_schedule_handler.py +0 -0
  199. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/mean_dice.py +0 -0
  200. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/mean_iou.py +0 -0
  201. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/metric_logger.py +0 -0
  202. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/metrics_reloaded_handler.py +0 -0
  203. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/metrics_saver.py +0 -0
  204. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/mlflow_handler.py +0 -0
  205. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/nvtx_handlers.py +0 -0
  206. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/panoptic_quality.py +0 -0
  207. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/parameter_scheduler.py +0 -0
  208. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/postprocessing.py +0 -0
  209. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/probability_maps.py +0 -0
  210. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/regression_metrics.py +0 -0
  211. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/roc_auc.py +0 -0
  212. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/smartcache_handler.py +0 -0
  213. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/stats_handler.py +0 -0
  214. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/surface_distance.py +0 -0
  215. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/tensorboard_handlers.py +0 -0
  216. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/trt_handler.py +0 -0
  217. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/utils.py +0 -0
  218. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/handlers/validation_handler.py +0 -0
  219. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/inferers/__init__.py +0 -0
  220. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/inferers/inferer.py +0 -0
  221. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/inferers/splitter.py +0 -0
  222. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/inferers/utils.py +0 -0
  223. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/__init__.py +0 -0
  224. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/adversarial_loss.py +0 -0
  225. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/aucm_loss.py +0 -0
  226. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/barlow_twins.py +0 -0
  227. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/boundary_loss.py +0 -0
  228. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/calibration.py +0 -0
  229. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/cldice.py +0 -0
  230. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/contrastive.py +0 -0
  231. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/deform.py +0 -0
  232. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/dice.py +0 -0
  233. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/ds_loss.py +0 -0
  234. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/focal_loss.py +0 -0
  235. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/giou_loss.py +0 -0
  236. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/hausdorff_loss.py +0 -0
  237. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/image_dissimilarity.py +0 -0
  238. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/mcc_loss.py +0 -0
  239. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/multi_scale.py +0 -0
  240. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/nacl_loss.py +0 -0
  241. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/perceptual.py +0 -0
  242. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/spatial_mask.py +0 -0
  243. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/spectral_loss.py +0 -0
  244. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/ssim_loss.py +0 -0
  245. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/sure_loss.py +0 -0
  246. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/tversky.py +0 -0
  247. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/unified_focal_loss.py +0 -0
  248. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/losses/utils.py +0 -0
  249. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/__init__.py +0 -0
  250. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/absolute_volume_difference.py +0 -0
  251. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/active_learning_metrics.py +0 -0
  252. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/average_precision.py +0 -0
  253. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/calibration.py +0 -0
  254. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/confusion_matrix.py +0 -0
  255. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/cumulative_average.py +0 -0
  256. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/f_beta_score.py +0 -0
  257. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/froc.py +0 -0
  258. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/generalized_dice.py +0 -0
  259. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/hausdorff_distance.py +0 -0
  260. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/loss_metric.py +0 -0
  261. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/meandice.py +0 -0
  262. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/metric.py +0 -0
  263. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/mmd.py +0 -0
  264. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/panoptic_quality.py +0 -0
  265. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/regression.py +0 -0
  266. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/rocauc.py +0 -0
  267. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/surface_dice.py +0 -0
  268. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/surface_distance.py +0 -0
  269. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/utils.py +0 -0
  270. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/metrics/wrapper.py +0 -0
  271. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/__init__.py +0 -0
  272. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/__init__.py +0 -0
  273. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/acti_norm.py +0 -0
  274. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/activation.py +0 -0
  275. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/activation_checkpointing.py +0 -0
  276. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/aspp.py +0 -0
  277. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/attention_utils.py +0 -0
  278. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
  279. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/cablock.py +0 -0
  280. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/convolutions.py +0 -0
  281. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/crf.py +0 -0
  282. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/crossattention.py +0 -0
  283. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/denseblock.py +0 -0
  284. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/dints_block.py +0 -0
  285. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/downsample.py +0 -0
  286. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/dynunet_block.py +0 -0
  287. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/encoder.py +0 -0
  288. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/fcn.py +0 -0
  289. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/feature_pyramid_network.py +0 -0
  290. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/fft_utils_t.py +0 -0
  291. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/hyena.py +0 -0
  292. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/localnet_block.py +0 -0
  293. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/mednext_block.py +0 -0
  294. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/mlp.py +0 -0
  295. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/patchembedding.py +0 -0
  296. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/pos_embed_utils.py +0 -0
  297. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/regunet_block.py +0 -0
  298. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/rel_pos_embedding.py +0 -0
  299. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/segresnet_block.py +0 -0
  300. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/selfattention.py +0 -0
  301. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/spade_norm.py +0 -0
  302. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/spatialattention.py +0 -0
  303. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
  304. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/text_embedding.py +0 -0
  305. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/transformerblock.py +0 -0
  306. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/unetr_block.py +0 -0
  307. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/upsample.py +0 -0
  308. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/blocks/warp.py +0 -0
  309. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/__init__.py +0 -0
  310. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/conjugate_gradient.py +0 -0
  311. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/convutils.py +0 -0
  312. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/drop_path.py +0 -0
  313. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/factories.py +0 -0
  314. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/filtering.py +0 -0
  315. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/gmm.py +0 -0
  316. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/simplelayers.py +0 -0
  317. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/spatial_transforms.py +0 -0
  318. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/utils.py +0 -0
  319. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/vector_quantizer.py +0 -0
  320. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/layers/weight_init.py +0 -0
  321. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/__init__.py +0 -0
  322. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/ahnet.py +0 -0
  323. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/attentionunet.py +0 -0
  324. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/autoencoder.py +0 -0
  325. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/autoencoderkl.py +0 -0
  326. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/basic_unet.py +0 -0
  327. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/basic_unetplusplus.py +0 -0
  328. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/cell_sam_wrapper.py +0 -0
  329. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/classifier.py +0 -0
  330. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/controlnet.py +0 -0
  331. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/daf3d.py +0 -0
  332. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/densenet.py +0 -0
  333. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/diffusion_model_unet.py +0 -0
  334. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/dynunet.py +0 -0
  335. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/efficientnet.py +0 -0
  336. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/flexible_unet.py +0 -0
  337. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/fullyconnectednet.py +0 -0
  338. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/generator.py +0 -0
  339. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/highresnet.py +0 -0
  340. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/hovernet.py +0 -0
  341. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/hyena_nd_unetr.py +0 -0
  342. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
  343. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/mednext.py +0 -0
  344. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/milmodel.py +0 -0
  345. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/navit.py +0 -0
  346. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/netadapter.py +0 -0
  347. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/patchgan_discriminator.py +0 -0
  348. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/quicknat.py +0 -0
  349. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/regressor.py +0 -0
  350. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/resnet.py +0 -0
  351. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/restormer.py +0 -0
  352. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/segresnet.py +0 -0
  353. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/segresnet_ds.py +0 -0
  354. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/senet.py +0 -0
  355. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_autoencoderkl.py +0 -0
  356. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
  357. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_network.py +0 -0
  358. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/swin_unetr.py +0 -0
  359. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/torchvision_fc.py +0 -0
  360. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/transchex.py +0 -0
  361. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/transformer.py +0 -0
  362. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/unet.py +0 -0
  363. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/unetr.py +0 -0
  364. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/varautoencoder.py +0 -0
  365. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/vista3d.py +0 -0
  366. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/vit.py +0 -0
  367. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/vitautoenc.py +0 -0
  368. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/vnet.py +0 -0
  369. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/voxelmorph.py +0 -0
  370. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/nets/vqvae.py +0 -0
  371. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/__init__.py +0 -0
  372. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/ddim.py +0 -0
  373. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/ddpm.py +0 -0
  374. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/pndm.py +0 -0
  375. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/rectified_flow.py +0 -0
  376. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/scheduler.py +0 -0
  377. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/trt_compiler.py +0 -0
  378. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/networks/utils.py +0 -0
  379. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/optimizers/__init__.py +0 -0
  380. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/optimizers/lr_finder.py +0 -0
  381. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/optimizers/lr_scheduler.py +0 -0
  382. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/optimizers/novograd.py +0 -0
  383. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/optimizers/utils.py +0 -0
  384. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/py.typed +0 -0
  385. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/adaptors.py +0 -0
  386. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/compose.py +0 -0
  387. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/__init__.py +0 -0
  388. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/array.py +0 -0
  389. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/batch.py +0 -0
  390. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/dictionary.py +0 -0
  391. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/functional.py +0 -0
  392. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/__init__.py +0 -0
  393. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/array.py +0 -0
  394. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/dictionary.py +0 -0
  395. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/inverse.py +0 -0
  396. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/inverse_batch_transform.py +0 -0
  397. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/io/__init__.py +0 -0
  398. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/io/array.py +0 -0
  399. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/io/dictionary.py +0 -0
  400. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/__init__.py +0 -0
  401. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/array.py +0 -0
  402. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/dictionary.py +0 -0
  403. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/functional.py +0 -0
  404. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/utils.py +0 -0
  405. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/meta_utility/__init__.py +0 -0
  406. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/meta_utility/dictionary.py +0 -0
  407. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/nvtx.py +0 -0
  408. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/post/__init__.py +0 -0
  409. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/__init__.py +0 -0
  410. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/array.py +0 -0
  411. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/dictionary.py +0 -0
  412. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/signal/__init__.py +0 -0
  413. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/signal/array.py +0 -0
  414. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/signal/dictionary.py +0 -0
  415. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/__init__.py +0 -0
  416. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/array.py +0 -0
  417. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/dictionary.py +0 -0
  418. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/__init__.py +0 -0
  419. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/array.py +0 -0
  420. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/functional.py +0 -0
  421. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/traits.py +0 -0
  422. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/transform.py +0 -0
  423. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utility/__init__.py +0 -0
  424. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utility/array.py +0 -0
  425. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utility/dictionary.py +0 -0
  426. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utils_create_transform_ims.py +0 -0
  427. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utils_morphological_ops.py +0 -0
  428. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
  429. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/__init__.py +0 -0
  430. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/compare_sources.py +0 -0
  431. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/component_store.py +0 -0
  432. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/decorators.py +0 -0
  433. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/dist.py +0 -0
  434. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/enums.py +0 -0
  435. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/jupyter_utils.py +0 -0
  436. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/misc.py +0 -0
  437. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/module.py +0 -0
  438. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/nvtx.py +0 -0
  439. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/ordering.py +0 -0
  440. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/profiling.py +0 -0
  441. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/safeeval.py +0 -0
  442. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/state_cacher.py +0 -0
  443. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/tf32.py +0 -0
  444. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/utils/type_conversion.py +0 -0
  445. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/__init__.py +0 -0
  446. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/class_activation_maps.py +0 -0
  447. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/gradient_based.py +0 -0
  448. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/img2tensorboard.py +0 -0
  449. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/occlusion_sensitivity.py +0 -0
  450. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/utils.py +0 -0
  451. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai/visualize/visualizer.py +0 -0
  452. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/SOURCES.txt +0 -0
  453. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/dependency_links.txt +0 -0
  454. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/not-zip-safe +0 -0
  455. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/requires.txt +0 -0
  456. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/top_level.txt +0 -0
  457. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/pyproject.toml +0 -0
  458. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/setup.cfg +0 -0
  459. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/setup.py +0 -0
  460. {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2642}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2641
3
+ Version: 1.7.dev2642
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Author-email: MONAI Consortium <monai.contact@gmail.com>
6
6
  License: Apache License 2.0
@@ -136,4 +136,4 @@ except Exception:
136
136
 
137
137
  if MONAIEnvVars.debug():
138
138
  raise
139
- __commit_id__ = "eedf5fad1e1c802e8ade5736c8ecf071f9dca0b7"
139
+ __commit_id__ = "8de81226c971dd27b5826d4bd60849d46aae9ff2"
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-10-11T02:25:27+0000",
11
+ "date": "2026-10-18T02:14:29+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "7bfe671ffaf469a0b2a44c800abe101d1f3447b4",
15
- "version": "1.7.dev2641"
14
+ "full-revisionid": "4835c649a66849125f1e656543264f5fa7d261c0",
15
+ "version": "1.7.dev2642"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -30,6 +30,7 @@ from urllib.request import urlopen, urlretrieve
30
30
 
31
31
  from monai.config.type_definitions import PathLike
32
32
  from monai.utils import look_up_option, min_version, optional_import
33
+ from monai.utils.deprecate_utils import warn_deprecated
33
34
 
34
35
  requests, has_requests = optional_import("requests")
35
36
  gdown, has_gdown = optional_import("gdown", "4.7.3")
@@ -177,6 +178,9 @@ def check_hash(filepath: PathLike, val: str | None = None, hash_type: str = "sha
177
178
  The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
178
179
  See also: :py:data:`monai.apps.utils.SUPPORTED_HASH_TYPES`.
179
180
 
181
+ .. versionchanged:: 1.7
182
+ The default `hash_type` changed from "md5" to "sha256" for stronger integrity verification.
183
+ Pass `hash_type="md5"` explicitly to verify against MD5 hashes.
180
184
  """
181
185
  if val is None:
182
186
  warnings.warn(f"No hash value provided for {filepath}; file integrity is NOT verified.", stacklevel=2)
@@ -204,7 +208,7 @@ def download_url(
204
208
  url: str,
205
209
  filepath: PathLike = "",
206
210
  hash_val: str | None = None,
207
- hash_type: str = "sha256",
211
+ hash_type: str | None = None,
208
212
  progress: bool = True,
209
213
  **gdown_kwargs: Any,
210
214
  ) -> None:
@@ -217,7 +221,7 @@ def download_url(
217
221
  If undefined, `os.path.basename(url)` will be used.
218
222
  hash_val: expected hash value to validate the downloaded file.
219
223
  if None, skip hash validation.
220
- hash_type: type of hash algorithm to use, default is `"sha256"`.
224
+ hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
221
225
  The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
222
226
  progress: whether to display a progress bar.
223
227
  gdown_kwargs: other args for `gdown` except for the `url`, `output` and `quiet`.
@@ -234,7 +238,23 @@ def download_url(
234
238
  ContentTooShortError: See urllib.request.urlretrieve.
235
239
  IOError: See urllib.request.urlretrieve.
236
240
  HashCheckError: When the hash validation of the ``url`` downloaded file fails.
241
+
242
+ .. versionchanged:: 1.7
243
+ The default `hash_type` changed from "md5" to None for stronger integrity verification. If this is left None
244
+ when a `hash_val` value is provided, this will warn to explicitly set `hash_type` then choose sha256 hashing.
245
+ Pass `hash_type="md5"` explicitly to verify against MD5 hashes and suppress the warning. In MONAI 1.8 the
246
+ default will be set to "sha256".
237
247
  """
248
+ if hash_val is not None and hash_type is None:
249
+ warn_deprecated(
250
+ "monai.apps.utils.download_url",
251
+ 'Default `hash_type` value changed to `None` from "md5" in MONAI 1.7, '
252
+ "set to explicit value to suppress this warning. Defaulting to sha256 checking. In MONAI 1.8 the "
253
+ 'default will be set to "sha256".',
254
+ stacklevel=3,
255
+ )
256
+ hash_type = "sha256"
257
+
238
258
  if not filepath:
239
259
  filepath = Path(".", _basename(url)).resolve()
240
260
  logger.info(f"Default downloading to '{filepath}'")
@@ -316,7 +336,7 @@ def extractall(
316
336
  filepath: PathLike,
317
337
  output_dir: PathLike = ".",
318
338
  hash_val: str | None = None,
319
- hash_type: str = "sha256",
339
+ hash_type: str | None = None,
320
340
  file_type: str = "",
321
341
  has_base: bool = True,
322
342
  ) -> None:
@@ -329,7 +349,7 @@ def extractall(
329
349
  output_dir: target directory to save extracted files.
330
350
  hash_val: expected hash value to validate the compressed file.
331
351
  if None, skip hash validation.
332
- hash_type: type of hash algorithm to use, default is `"sha256"`.
352
+ hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
333
353
  file_type: string of file type for decompressing. Leave it empty to infer the type from the filepath basename.
334
354
  has_base: whether the extracted files have a base folder. This flag is used when checking if the existing
335
355
  folder is a result of `extractall`, if it is, the extraction is skipped. For example, if A.zip is unzipped
@@ -340,7 +360,22 @@ def extractall(
340
360
  HashCheckError: When the hash validation of the ``filepath`` compressed file fails.
341
361
  NotImplementedError: When the ``filepath`` file extension is not one of [zip", "tar.gz", "tar"].
342
362
 
363
+ .. versionchanged:: 1.6.1
364
+ The default `hash_type` changed from "md5" to None for stronger integrity verification. If this is left None
365
+ when a `hash_val` value is provided, this will warn to explicitly set `hash_type` then choose sha256 hashing.
366
+ Pass `hash_type="md5"` explicitly to verify against MD5 hashes and suppress the warning. In MONAI 1.8 the
367
+ default will be set to "sha256".
343
368
  """
369
+ if hash_val is not None and hash_type is None:
370
+ warn_deprecated(
371
+ "monai.apps.utils.extractall",
372
+ 'Default `hash_type` value changed to `None` from "md5" in MONAI 1.7, '
373
+ "set to an explicit value to suppress this warning. Defaulting to sha256 checking. In MONAI 1.8 the "
374
+ 'default will be set to "sha256".',
375
+ stacklevel=3,
376
+ )
377
+ hash_type = "sha256"
378
+
344
379
  filepath = Path(filepath)
345
380
  if hash_val and not check_hash(filepath, hash_val, hash_type):
346
381
  raise HashCheckError(
@@ -395,7 +430,7 @@ def download_and_extract(
395
430
  filepath: PathLike = "",
396
431
  output_dir: PathLike = ".",
397
432
  hash_val: str | None = None,
398
- hash_type: str = "sha256",
433
+ hash_type: str | None = None,
399
434
  file_type: str = "",
400
435
  has_base: bool = True,
401
436
  progress: bool = True,
@@ -411,7 +446,7 @@ def download_and_extract(
411
446
  default is the current directory.
412
447
  hash_val: expected hash value to validate the downloaded file.
413
448
  if None, skip hash validation.
414
- hash_type: type of hash algorithm to use, default is `"sha256"`.
449
+ hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
415
450
  file_type: string of file type for decompressing. Leave it empty to infer the type from url's base file name.
416
451
  has_base: whether the extracted files have a base folder. This flag is used when checking if the existing
417
452
  folder is a result of `extractall`, if it is, the extraction is skipped. For example, if A.zip is unzipped
@@ -257,6 +257,8 @@ class GridPatchDataset(IterableDataset):
257
257
  self.first_random = self.patch_transform.get_index_of_first(
258
258
  lambda t: isinstance(t, RandomizableTrait) or not isinstance(t, Transform)
259
259
  )
260
+ if self.first_random is None:
261
+ self.first_random = len(self.patch_transform.transforms)
260
262
 
261
263
  if self.cache:
262
264
  if isinstance(data, Iterator):
@@ -279,7 +281,11 @@ class GridPatchDataset(IterableDataset):
279
281
  self.cache_num = min(int(self.set_num), int(len(mapping) * self.set_rate), len(mapping))
280
282
  self._hash_keys = list(mapping)[: self.cache_num]
281
283
  indices = list(mapping.values())[: self.cache_num]
282
- self._cache, self._cache_other = zip(*self._fill_cache(indices)) # type: ignore
284
+ cache_items = self._fill_cache(indices)
285
+ if cache_items:
286
+ self._cache, self._cache_other = zip(*cache_items) # type: ignore
287
+ else:
288
+ self._cache, self._cache_other = [], []
283
289
 
284
290
  def _fill_cache(self, indices=None) -> list:
285
291
  """
@@ -339,12 +345,9 @@ class GridPatchDataset(IterableDataset):
339
345
 
340
346
  def __iter__(self):
341
347
  if self.cache:
342
- cache_index = None
343
348
  for image in super().__iter__():
344
349
  key = self.hash_func(image)
345
- if key in self._hash_keys:
346
- # if existing in cache, try to get the index in cache
347
- cache_index = self._hash_keys.index(key)
350
+ cache_index = self._hash_keys.index(key) if key in self._hash_keys else None
348
351
  if cache_index is None:
349
352
  # no cache for this index, execute all the transforms directly
350
353
  yield from self._generate_patches(self.patch_iter(image))
@@ -354,11 +357,11 @@ class GridPatchDataset(IterableDataset):
354
357
  "Cache buffer is not initialized, please call `set_data()` before epoch begins."
355
358
  )
356
359
  data = self._cache[cache_index]
357
- other = self._cache_other[cache_index]
358
360
 
359
361
  # load data from cache and execute from the first random transform
360
362
  data = deepcopy(data) if self.copy_cache else data
361
- yield from self._generate_patches(zip(data, other), start=self.first_random)
363
+ cached_patches = zip(data, self._cache_other[cache_index]) if self.with_coordinates else zip(data)
364
+ yield from self._generate_patches(cached_patches, start=self.first_random)
362
365
  else:
363
366
  for image in super().__iter__():
364
367
  yield from self._generate_patches(self.patch_iter(image))
@@ -28,7 +28,8 @@ def create_test_image_2d(
28
28
  num_seg_classes: int = 5,
29
29
  channel_dim: int | None = None,
30
30
  random_state: np.random.RandomState | None = None,
31
- ) -> tuple[np.ndarray, np.ndarray]:
31
+ return_instance_id: bool = False,
32
+ ) -> tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]:
32
33
  """
33
34
  Return a noisy 2D image with `num_objs` circles and a 2D mask image. The maximum and minimum radii of the circles
34
35
  are given as `rad_max` and `rad_min`. The mask will have `num_seg_classes` number of classes for segmentations labeled
@@ -48,9 +49,13 @@ def create_test_image_2d(
48
49
  channel_dim: if None, create an image without channel dimension, otherwise create
49
50
  an image with channel dimension as first dim or last dim. Defaults to `None`.
50
51
  random_state: the random generator to use. Defaults to `np.random`.
52
+ return_instance_id: if True, also return an instance ID mask where every generated
53
+ object is assigned a unique positive integer. Later objects overwrite earlier IDs
54
+ where they overlap, so fully covered objects may not appear in the mask. Defaults to `False`.
51
55
 
52
56
  Returns:
53
- Randomised Numpy array with shape (`height`, `width`)
57
+ A tuple of image and segmentation label arrays. If `return_instance_id=True`, also returns
58
+ an instance ID array as the third element.
54
59
  """
55
60
 
56
61
  if rad_max <= rad_min:
@@ -62,9 +67,10 @@ def create_test_image_2d(
62
67
  raise ValueError(f"the minimal size {min_size} of the image should be larger than `2 * rad_max` 2x{rad_max}.")
63
68
 
64
69
  image = np.zeros((height, width))
70
+ instance_ids = np.zeros((height, width), dtype=np.int32) if return_instance_id else None
65
71
  rs: np.random.RandomState = np.random.random.__self__ if random_state is None else random_state # type: ignore
66
72
 
67
- for _ in range(num_objs):
73
+ for obj_id in range(1, num_objs + 1):
68
74
  x = rs.randint(rad_max, height - rad_max)
69
75
  y = rs.randint(rad_max, width - rad_max)
70
76
  rad = rs.randint(rad_min, rad_max)
@@ -75,6 +81,8 @@ def create_test_image_2d(
75
81
  image[circle] = np.ceil(rs.random() * num_seg_classes)
76
82
  else:
77
83
  image[circle] = rs.random() * 0.5 + 0.5
84
+ if instance_ids is not None:
85
+ instance_ids[circle] = obj_id
78
86
 
79
87
  labels = np.ceil(image).astype(np.int32, copy=False)
80
88
 
@@ -87,10 +95,16 @@ def create_test_image_2d(
87
95
  if channel_dim == 0:
88
96
  noisyimage = noisyimage[None]
89
97
  labels = labels[None]
98
+ if instance_ids is not None:
99
+ instance_ids = instance_ids[None]
90
100
  else:
91
101
  noisyimage = noisyimage[..., None]
92
102
  labels = labels[..., None]
103
+ if instance_ids is not None:
104
+ instance_ids = instance_ids[..., None]
93
105
 
106
+ if instance_ids is not None:
107
+ return noisyimage, labels, instance_ids
94
108
  return noisyimage, labels
95
109
 
96
110
 
@@ -105,7 +119,8 @@ def create_test_image_3d(
105
119
  num_seg_classes: int = 5,
106
120
  channel_dim: int | None = None,
107
121
  random_state: np.random.RandomState | None = None,
108
- ) -> tuple[np.ndarray, np.ndarray]:
122
+ return_instance_id: bool = False,
123
+ ) -> tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]:
109
124
  """
110
125
  Return a noisy 3D image and segmentation.
111
126
 
@@ -122,9 +137,13 @@ def create_test_image_3d(
122
137
  channel_dim: if None, create an image without channel dimension, otherwise create
123
138
  an image with channel dimension as first dim or last dim. Defaults to `None`.
124
139
  random_state: the random generator to use. Defaults to `np.random`.
140
+ return_instance_id: if True, also return an instance ID mask where every generated
141
+ object is assigned a unique positive integer. Later objects overwrite earlier IDs
142
+ where they overlap, so fully covered objects may not appear in the mask. Defaults to `False`.
125
143
 
126
144
  Returns:
127
- Randomised Numpy array with shape (`height`, `width`, `depth`)
145
+ A tuple of image and segmentation label arrays. If `return_instance_id=True`, also returns
146
+ an instance ID array as the third element.
128
147
 
129
148
  See also:
130
149
  :py:meth:`~create_test_image_2d`
@@ -139,9 +158,10 @@ def create_test_image_3d(
139
158
  raise ValueError(f"the minimal size {min_size} of the image should be larger than `2 * rad_max` 2x{rad_max}.")
140
159
 
141
160
  image = np.zeros((height, width, depth))
161
+ instance_ids = np.zeros((height, width, depth), dtype=np.int32) if return_instance_id else None
142
162
  rs: np.random.RandomState = np.random.random.__self__ if random_state is None else random_state # type: ignore
143
163
 
144
- for _ in range(num_objs):
164
+ for obj_id in range(1, num_objs + 1):
145
165
  x = rs.randint(rad_max, height - rad_max)
146
166
  y = rs.randint(rad_max, width - rad_max)
147
167
  z = rs.randint(rad_max, depth - rad_max)
@@ -153,6 +173,8 @@ def create_test_image_3d(
153
173
  image[circle] = np.ceil(rs.random() * num_seg_classes)
154
174
  else:
155
175
  image[circle] = rs.random() * 0.5 + 0.5
176
+ if instance_ids is not None:
177
+ instance_ids[circle] = obj_id
156
178
 
157
179
  labels = np.ceil(image).astype(np.int32, copy=False)
158
180
 
@@ -162,8 +184,17 @@ def create_test_image_3d(
162
184
  if channel_dim is not None:
163
185
  if not (isinstance(channel_dim, int) and channel_dim in (-1, 0, 3)):
164
186
  raise AssertionError("invalid channel dim.")
165
- noisyimage, labels = (
166
- (noisyimage[None], labels[None]) if channel_dim == 0 else (noisyimage[..., None], labels[..., None])
167
- )
187
+ if channel_dim == 0:
188
+ noisyimage = noisyimage[None]
189
+ labels = labels[None]
190
+ if instance_ids is not None:
191
+ instance_ids = instance_ids[None]
192
+ else:
193
+ noisyimage = noisyimage[..., None]
194
+ labels = labels[..., None]
195
+ if instance_ids is not None:
196
+ instance_ids = instance_ids[..., None]
168
197
 
198
+ if instance_ids is not None:
199
+ return noisyimage, labels, instance_ids
169
200
  return noisyimage, labels
@@ -307,7 +307,13 @@ class ZarrAvgMerger(Merger):
307
307
  self.value_store = zarr.storage.TempStore() if value_store is None else value_store # type: ignore
308
308
  self.count_store = zarr.storage.TempStore() if count_store is None else count_store # type: ignore
309
309
 
310
- self.chunks = chunks
310
+ # zarr 3.3 rejects boolean chunk arguments; `None` there means auto-chunking,
311
+ # which is what `chunks=True` meant before. On zarr < 3.3 `None` instead means
312
+ # a single whole-shape chunk, so the substitution must not be applied there.
313
+ if chunks is True and version_geq(get_package_version("zarr"), "3.3.0"):
314
+ self.chunks: Sequence[int] | bool | None = None
315
+ else:
316
+ self.chunks = chunks
311
317
 
312
318
  # Initialize codecs/compressor attributes with proper types
313
319
  self.codecs: list | None = None
@@ -51,8 +51,10 @@ class EmbeddingCollapseMetric(Metric):
51
51
  Args:
52
52
  reduction: how to aggregate individual scores into ``aggregate``.
53
53
  ``"max"`` returns the worst-case score (recommended for
54
- safety-critical use). ``"mean"`` returns the average of
55
- available scores. ``"none"`` omits the ``aggregate`` key.
54
+ safety-critical use), including the most collapsed class.
55
+ ``"mean"`` returns the average of available scores, where all
56
+ per-class scores contribute a single term. ``"none"`` omits the
57
+ ``aggregate`` key.
56
58
  include_indicators: optional list of indicator names to compute.
57
59
  If ``None``, all applicable indicators are computed.
58
60
  Valid names: ``"centroid_similarity"``, ``"effective_rank"``,
@@ -162,7 +164,8 @@ def compute_embedding_collapse(
162
164
  ``None`` if ``target_embeddings`` not provided.
163
165
  - ``separation``: silhouette-based inter-class separation score.
164
166
  ``None`` if sklearn unavailable or fewer than 2 classes.
165
- - ``aggregate``: reduced score. Omitted when ``reduction="none"``.
167
+ - ``aggregate``: reduced over the global indicators plus the worst
168
+ ``per_class_rank_<cls>``. Omitted when ``reduction="none"``.
166
169
 
167
170
  Raises:
168
171
  ValueError: if inputs are invalid (shape, reduction, indicators).
@@ -180,6 +183,7 @@ def compute_embedding_collapse(
180
183
 
181
184
  inc = set(include_indicators) if include_indicators is not None else None
182
185
  scores: dict[str, torch.Tensor | None] = {}
186
+ per_class_scores: dict[str, torch.Tensor | None] = {}
183
187
 
184
188
  # -- Label-dependent indicators
185
189
  if labels is not None:
@@ -191,7 +195,8 @@ def compute_embedding_collapse(
191
195
  scores["centroid_similarity"] = _centroid_similarity(emb, lbl)
192
196
 
193
197
  if inc is None or "per_class_rank" in inc:
194
- scores.update(_per_class_rank(emb, lbl))
198
+ per_class_scores = _per_class_rank(emb, lbl)
199
+ scores.update(per_class_scores)
195
200
 
196
201
  if inc is None or "separation" in inc:
197
202
  scores["separation"] = _separation(emb, lbl)
@@ -218,6 +223,11 @@ def compute_embedding_collapse(
218
223
  if reduction != "none":
219
224
  primary = {"centroid_similarity", "effective_rank_score", "domain_shift", "separation"}
220
225
  available = [v.to(device=emb.device) for k, v in scores.items() if k in primary and v is not None]
226
+ # Per-class collapse is reduced to its worst class before joining the pool, so that
227
+ # `mean` keeps one vote per indicator regardless of how many classes are present.
228
+ by_class = [v.to(device=emb.device) for v in per_class_scores.values() if v is not None]
229
+ if by_class:
230
+ available.append(torch.stack(by_class).max())
221
231
  if not available:
222
232
  scores["aggregate"] = None
223
233
  elif reduction == "max":
@@ -82,7 +82,7 @@ def _cov(input_data: torch.Tensor, rowvar: bool = True) -> torch.Tensor:
82
82
 
83
83
  def _sqrtm(input_data: torch.Tensor) -> torch.Tensor:
84
84
  """Compute the square root of a matrix."""
85
- scipy_res, _ = scipy.linalg.sqrtm(input_data.detach().cpu().numpy().astype(np.float64), disp=False)
85
+ scipy_res = scipy.linalg.sqrtm(input_data.detach().cpu().numpy().astype(np.float64))
86
86
  return torch.from_numpy(scipy_res)
87
87
 
88
88
 
@@ -152,16 +152,10 @@ def compute_iou(
152
152
  if y.shape != y_pred.shape:
153
153
  raise ValueError(f"y_pred and y should have same shapes, got {y_pred.shape} and {y.shape}.")
154
154
 
155
- if ignore_index is not None and 0 <= ignore_index < (y_pred.shape[1] + (0 if include_background else 1)):
156
- ignore_channel = ignore_index if include_background else ignore_index - 1
157
- if 0 <= ignore_channel < y_pred.shape[1]:
158
- y_pred = y_pred.clone()
159
- y = y.clone()
160
- y_pred[:, ignore_channel] = 0
161
- y[:, ignore_channel] = 0
162
- mask = None
163
- else:
164
- mask = create_ignore_mask(original_y if ignore_index is not None else y, ignore_index)
155
+ # Use the same spatial masking as DiceHelper so both metrics exclude the
156
+ # same voxels: zeroing the ignored channel alone would leave voxels of the
157
+ # ignored class counting as false positives for the other classes
158
+ mask = create_ignore_mask(original_y, ignore_index)
165
159
  if mask is not None:
166
160
  if mask.shape != y_pred.shape:
167
161
  mask = mask.expand_as(y_pred)
@@ -350,7 +350,7 @@ class DiNTS(nn.Module):
350
350
  use_downsample: use downsample in the stem.
351
351
  If ``False``, the search space will be in resolution [1, 1/2, 1/4, 1/8],
352
352
  if ``True``, the search space will be in resolution [1/2, 1/4, 1/8, 1/16].
353
- node_a: node activation numpy matrix. Its shape is `(num_depths, num_blocks + 1)`.
353
+ node_a: node activation matrix (numpy array or tensor). Its shape is `(num_blocks + 1, num_depths)`.
354
354
  +1 for multi-resolution inputs.
355
355
  In model searching stage, ``node_a`` can be None. In deployment stage, ``node_a`` cannot be None.
356
356
  """
@@ -544,8 +544,8 @@ class TopologyConstruction(nn.Module):
544
544
  The base class for `TopologyInstance` and `TopologySearch`.
545
545
 
546
546
  Args:
547
- arch_code: `[arch_code_a, arch_code_c]`, numpy arrays or torch tensors. The architecture codes defining
548
- the model.
547
+ arch_code: `[arch_code_a, arch_code_c]`, numpy arrays, torch tensors or nested lists (anything
548
+ accepted by ``torch.as_tensor``). The architecture codes defining the model.
549
549
  For example, for a ``num_depths=4, num_blocks=12`` search space:
550
550
 
551
551
  - `arch_code_a` is a 12x10 (10 paths) binary matrix representing if a path is activated.
@@ -631,8 +631,12 @@ class TopologyConstruction(nn.Module):
631
631
  arch_code_a = torch.ones((self.num_blocks, len(self.arch_code2out))).to(self.device)
632
632
  arch_code_c = torch.ones((self.num_blocks, len(self.arch_code2out), self.num_cell_ops)).to(self.device)
633
633
  else:
634
- arch_code_a = torch.as_tensor(arch_code[0]).to(self.device)
635
- arch_code_c = F.one_hot(torch.as_tensor(arch_code[1]).to(torch.int64), self.num_cell_ops).to(self.device)
634
+ # accept numpy arrays (legacy search checkpoints), torch tensors (checkpoints that are
635
+ # loadable with ``torch.load(weights_only=True)``) or nested lists (JSON/YAML configs)
636
+ arch_code_a = torch.as_tensor(arch_code[0], device=self.device)
637
+ arch_code_c = F.one_hot(
638
+ torch.as_tensor(arch_code[1], device=self.device).to(torch.int64), self.num_cell_ops
639
+ )
636
640
 
637
641
  self.arch_code_a = arch_code_a
638
642
  self.arch_code_c = arch_code_c
@@ -294,8 +294,19 @@ class AffineHead(nn.Module):
294
294
  return grid_warped
295
295
 
296
296
  def forward(self, x: list[torch.Tensor], image_size: list[int]) -> torch.Tensor:
297
+ """
298
+ Predict an affine transform from the first feature map and return it as a displacement field.
299
+
300
+ Args:
301
+ x: feature maps from the network; only the first, ``x[0]``, is used. The reference grid is moved to its
302
+ device and dtype, so a network cast to half precision stays in half precision.
303
+ image_size: spatial size of the input image; not used by this head.
304
+
305
+ Returns:
306
+ The displacement field, the warped reference grid minus the reference grid.
307
+ """
297
308
  f = x[0]
298
- self.grid = self.grid.to(device=f.device)
309
+ self.grid = self.grid.to(device=f.device, dtype=f.dtype)
299
310
  theta = self.fc(f.reshape(f.shape[0], -1))
300
311
  if self.save_theta:
301
312
  self.theta = theta.detach()
@@ -298,6 +298,7 @@ from .post.array import (
298
298
  KeepLargestConnectedComponent,
299
299
  LabelFilter,
300
300
  LabelToContour,
301
+ MarchingCubes,
301
302
  MeanEnsemble,
302
303
  ProbNMS,
303
304
  RemoveSmallObjects,
@@ -335,6 +336,9 @@ from .post.dictionary import (
335
336
  LabelToContourD,
336
337
  LabelToContourd,
337
338
  LabelToContourDict,
339
+ MarchingCubesD,
340
+ MarchingCubesd,
341
+ MarchingCubesDict,
338
342
  MeanEnsembleD,
339
343
  MeanEnsembled,
340
344
  MeanEnsembleDict,
@@ -34,6 +34,7 @@ from monai.transforms.utils import (
34
34
  distance_transform_edt,
35
35
  fill_holes,
36
36
  get_largest_connected_component_mask,
37
+ get_marching_cubes_surface,
37
38
  get_unique_labels,
38
39
  remove_small_objects,
39
40
  )
@@ -63,6 +64,7 @@ __all__ = [
63
64
  "Invert",
64
65
  "GenerateHeatmap",
65
66
  "DistanceTransformEDT",
67
+ "MarchingCubes",
66
68
  ]
67
69
 
68
70
 
@@ -644,7 +646,6 @@ class LabelToContour(Transform):
644
646
 
645
647
 
646
648
  class Ensemble:
647
-
648
649
  @staticmethod
649
650
  def get_stacked_torch(img: Sequence[NdarrayOrTensor] | NdarrayOrTensor) -> torch.Tensor:
650
651
  """Get either a sequence or single instance of np.ndarray/torch.Tensor. Return single torch.Tensor."""
@@ -1187,3 +1188,90 @@ class DistanceTransformEDT(Transform):
1187
1188
  An array with the same shape and data type as img
1188
1189
  """
1189
1190
  return distance_transform_edt(img=img, sampling=self.sampling) # type: ignore
1191
+
1192
+
1193
+ class MarchingCubes(Transform):
1194
+ """
1195
+ Extract a surface mesh from a 3D segmentation using marching cubes.
1196
+
1197
+ Thin wrapper around :func:`monai.transforms.utils.get_marching_cubes_surface`
1198
+ (`skimage.measure.marching_cubes`). The input is a channel-first volume with
1199
+ shape ``(C, M, N, P)``; marching cubes runs per channel on the CPU (scikit-image
1200
+ has no GPU kernel, CUDA inputs are moved to CPU first).
1201
+
1202
+ Note:
1203
+ The output is a mesh, not an image, so it cannot be composed with further
1204
+ image transforms or inverted. Place it at the end of the pipeline.
1205
+ For STL export, smoothing, or physical-space
1206
+ mapping see ``monai.deploy`` ``STLConversionOperator``.
1207
+
1208
+ Args:
1209
+ level: isosurface value, defaults to 0.5 for binary masks.
1210
+ spacing: voxel spacing along each spatial dim. A single number is used for
1211
+ all axes. If ``None`` and the input is a MetaTensor, its pixdim is used,
1212
+ otherwise unity spacing is assumed.
1213
+ step_size: step size in voxels for marching cubes. Larger steps are faster
1214
+ but yield coarser meshes.
1215
+ allow_degenerate: allow degenerate triangles in the mesh.
1216
+ method: one of ("lewiner", "lorensen"), see scikit-image docs.
1217
+ return_normals_values: if ``True``, also return vertex normals and values,
1218
+ i.e. ``(verts, faces, normals, values)`` matching scikit-image output.
1219
+ Defaults to ``False`` (``(verts, faces)`` only).
1220
+
1221
+ Example:
1222
+ >>> import numpy as np
1223
+ >>> from monai.transforms import MarchingCubes
1224
+ >>> vol = np.zeros((1, 10, 10, 10), np.float32); vol[0, 3:7, 3:7, 3:7] = 1.0
1225
+ >>> verts, faces = MarchingCubes(level=0.5)(vol)
1226
+ >>> verts.shape[1], faces.shape[1]
1227
+ (3, 3)
1228
+ """
1229
+
1230
+ backend = [TransformBackends.NUMPY, TransformBackends.TORCH]
1231
+
1232
+ def __init__(
1233
+ self,
1234
+ level: float | None = 0.5,
1235
+ spacing: Sequence[float] | float | None = None,
1236
+ step_size: int = 1,
1237
+ allow_degenerate: bool = True,
1238
+ method: str = "lewiner",
1239
+ return_normals_values: bool = False,
1240
+ ) -> None:
1241
+ super().__init__()
1242
+ self.level = level
1243
+ self.spacing = spacing
1244
+ self.step_size = step_size
1245
+ self.allow_degenerate = allow_degenerate
1246
+ self.method = method
1247
+ self.return_normals_values = return_normals_values
1248
+
1249
+ def __call__(self, img: NdarrayOrTensor):
1250
+ """
1251
+ Args:
1252
+ img: channel-first volume with shape (C, M, N, P).
1253
+
1254
+ Returns:
1255
+ ``(vertices, faces)`` tuple for single-channel input, or a list of one
1256
+ such tuple per channel for multi-channel input. Items have shapes ``(V, 3)``
1257
+ and ``(F, 3)`` and match the input type: numpy arrays for array input, plain
1258
+ ``torch.Tensor`` on the input device for tensor input. With ``return_normals_values=True`` each item
1259
+ is ``(verts, faces, normals, values)`` instead.
1260
+
1261
+ Raises:
1262
+ ValueError: when ``img`` is not a channel-first 3D volume or has no channels.
1263
+ """
1264
+ if img.ndim != 4 or img.shape[0] == 0:
1265
+ raise ValueError(f"MarchingCubes requires a channel-first 3D volume (C, M, N, P), got shape {img.shape}.")
1266
+ results = []
1267
+ for c in range(img.shape[0]):
1268
+ verts, faces, normals, values = get_marching_cubes_surface(
1269
+ img[c],
1270
+ level=self.level,
1271
+ spacing=self.spacing,
1272
+ step_size=self.step_size,
1273
+ allow_degenerate=self.allow_degenerate,
1274
+ method=self.method,
1275
+ )
1276
+ results.append((verts, faces, normals, values) if self.return_normals_values else (verts, faces))
1277
+ return results[0] if len(results) == 1 else results