monai-weekly 1.7.dev2638__tar.gz → 1.7.dev2639__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 (459) hide show
  1. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/PKG-INFO +1 -1
  2. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/__init__.py +1 -1
  3. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_version.py +3 -3
  4. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/inferers/inferer.py +149 -36
  5. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utils.py +2 -1
  6. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/__init__.py +1 -0
  7. monai_weekly-1.7.dev2639/monai/utils/compare_sources.py +107 -0
  8. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/safeeval.py +17 -2
  9. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai_weekly.egg-info/PKG-INFO +1 -1
  10. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai_weekly.egg-info/SOURCES.txt +1 -0
  11. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/LICENSE +0 -0
  12. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/MANIFEST.in +0 -0
  13. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/README.md +0 -0
  14. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/__init__.py +0 -0
  15. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/gmm/gmm.cpp +0 -0
  16. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/gmm/gmm.h +0 -0
  17. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
  18. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
  19. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
  20. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/_extensions/loader.py +0 -0
  21. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/__init__.py +0 -0
  22. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/__init__.py +0 -0
  23. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/__main__.py +0 -0
  24. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/auto_runner.py +0 -0
  25. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/bundle_gen.py +0 -0
  26. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/data_analyzer.py +0 -0
  27. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
  28. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/hpo_gen.py +0 -0
  29. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/transforms.py +0 -0
  30. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/auto3dseg/utils.py +0 -0
  31. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/datasets.py +0 -0
  32. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepedit/__init__.py +0 -0
  33. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepedit/interaction.py +0 -0
  34. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepedit/transforms.py +0 -0
  35. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepgrow/__init__.py +0 -0
  36. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepgrow/dataset.py +0 -0
  37. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepgrow/interaction.py +0 -0
  38. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/deepgrow/transforms.py +0 -0
  39. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/__init__.py +0 -0
  40. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/metrics/__init__.py +0 -0
  41. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/metrics/coco.py +0 -0
  42. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/metrics/matching.py +0 -0
  43. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/networks/__init__.py +0 -0
  44. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/networks/retinanet_detector.py +0 -0
  45. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/networks/retinanet_network.py +0 -0
  46. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/transforms/__init__.py +0 -0
  47. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/transforms/array.py +0 -0
  48. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/transforms/box_ops.py +0 -0
  49. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/transforms/dictionary.py +0 -0
  50. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
  51. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/__init__.py +0 -0
  52. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/anchor_utils.py +0 -0
  53. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/box_coder.py +0 -0
  54. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/box_selector.py +0 -0
  55. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/detector_utils.py +0 -0
  56. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
  57. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/detection/utils/predict_utils.py +0 -0
  58. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/generation/__init__.py +0 -0
  59. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/generation/maisi/__init__.py +0 -0
  60. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/generation/maisi/networks/__init__.py +0 -0
  61. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
  62. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
  63. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
  64. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/mmars/__init__.py +0 -0
  65. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/mmars/mmars.py +0 -0
  66. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/mmars/model_desc.py +0 -0
  67. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nnunet/__init__.py +0 -0
  68. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nnunet/__main__.py +0 -0
  69. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nnunet/nnunet_bundle.py +0 -0
  70. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
  71. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nnunet/utils.py +0 -0
  72. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nuclick/__init__.py +0 -0
  73. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/nuclick/transforms.py +0 -0
  74. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/__init__.py +0 -0
  75. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/engines/__init__.py +0 -0
  76. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/engines/utils.py +0 -0
  77. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/handlers/__init__.py +0 -0
  78. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/handlers/utils.py +0 -0
  79. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/inferers/__init__.py +0 -0
  80. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/inferers/inferer.py +0 -0
  81. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/losses/__init__.py +0 -0
  82. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
  83. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/metrics/__init__.py +0 -0
  84. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
  85. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/__init__.py +0 -0
  86. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/post/__init__.py +0 -0
  87. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/post/array.py +0 -0
  88. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
  89. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
  90. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/stain/array.py +0 -0
  91. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
  92. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/pathology/utils.py +0 -0
  93. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/__init__.py +0 -0
  94. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/complex_utils.py +0 -0
  95. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/fastmri_reader.py +0 -0
  96. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/mri_utils.py +0 -0
  97. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/__init__.py +0 -0
  98. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
  99. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
  100. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
  101. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
  102. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
  103. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
  104. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
  105. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/transforms/__init__.py +0 -0
  106. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/transforms/array.py +0 -0
  107. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
  108. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/tcia/__init__.py +0 -0
  109. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/tcia/label_desc.py +0 -0
  110. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/tcia/utils.py +0 -0
  111. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/utils.py +0 -0
  112. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/vista3d/__init__.py +0 -0
  113. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/vista3d/inferer.py +0 -0
  114. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/vista3d/sampler.py +0 -0
  115. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/apps/vista3d/transforms.py +0 -0
  116. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/auto3dseg/__init__.py +0 -0
  117. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/auto3dseg/algo_gen.py +0 -0
  118. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/auto3dseg/analyzer.py +0 -0
  119. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/auto3dseg/operations.py +0 -0
  120. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/auto3dseg/seg_summarizer.py +0 -0
  121. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/auto3dseg/utils.py +0 -0
  122. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/__init__.py +0 -0
  123. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/__main__.py +0 -0
  124. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/config_item.py +0 -0
  125. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/config_parser.py +0 -0
  126. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/properties.py +0 -0
  127. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/reference_resolver.py +0 -0
  128. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/scripts.py +0 -0
  129. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/utils.py +0 -0
  130. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/bundle/workflows.py +0 -0
  131. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/config/__init__.py +0 -0
  132. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/config/__main__.py +0 -0
  133. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/config/check_env.py +0 -0
  134. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/config/deviceconfig.py +0 -0
  135. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/config/print_dependencies.py +0 -0
  136. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/config/type_definitions.py +0 -0
  137. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/__init__.py +0 -0
  138. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/box_utils.py +0 -0
  139. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/csv_saver.py +0 -0
  140. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/dataloader.py +0 -0
  141. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/dataset.py +0 -0
  142. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/dataset_summary.py +0 -0
  143. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/decathlon_datalist.py +0 -0
  144. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/fft_utils.py +0 -0
  145. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/folder_layout.py +0 -0
  146. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/grid_dataset.py +0 -0
  147. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/image_dataset.py +0 -0
  148. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/image_reader.py +0 -0
  149. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/image_writer.py +0 -0
  150. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/iterable_dataset.py +0 -0
  151. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/itk_torch_bridge.py +0 -0
  152. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/meta_obj.py +0 -0
  153. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/meta_tensor.py +0 -0
  154. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/nvimgcodec_pydicom_plugin.py +0 -0
  155. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/samplers.py +0 -0
  156. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/synthetic.py +0 -0
  157. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/test_time_augmentation.py +0 -0
  158. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/thread_buffer.py +0 -0
  159. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/torchscript_utils.py +0 -0
  160. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/ultrasound_confidence_map.py +0 -0
  161. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/utils.py +0 -0
  162. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/video_dataset.py +0 -0
  163. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/wsi_datasets.py +0 -0
  164. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/data/wsi_reader.py +0 -0
  165. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/engines/__init__.py +0 -0
  166. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/engines/evaluator.py +0 -0
  167. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/engines/trainer.py +0 -0
  168. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/engines/utils.py +0 -0
  169. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/engines/workflow.py +0 -0
  170. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/__init__.py +0 -0
  171. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/client/__init__.py +0 -0
  172. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/client/client_algo.py +0 -0
  173. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/client/monai_algo.py +0 -0
  174. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/utils/__init__.py +0 -0
  175. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/utils/constants.py +0 -0
  176. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/utils/exchange_object.py +0 -0
  177. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/fl/utils/filters.py +0 -0
  178. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/__init__.py +0 -0
  179. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/average_precision.py +0 -0
  180. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/calibration.py +0 -0
  181. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/checkpoint_loader.py +0 -0
  182. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/checkpoint_saver.py +0 -0
  183. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/classification_saver.py +0 -0
  184. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/clearml_handlers.py +0 -0
  185. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/confusion_matrix.py +0 -0
  186. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/decollate_batch.py +0 -0
  187. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/earlystop_handler.py +0 -0
  188. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/garbage_collector.py +0 -0
  189. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/hausdorff_distance.py +0 -0
  190. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/ignite_metric.py +0 -0
  191. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/logfile_handler.py +0 -0
  192. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/lr_schedule_handler.py +0 -0
  193. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/mean_dice.py +0 -0
  194. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/mean_iou.py +0 -0
  195. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/metric_logger.py +0 -0
  196. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/metrics_reloaded_handler.py +0 -0
  197. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/metrics_saver.py +0 -0
  198. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/mlflow_handler.py +0 -0
  199. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/nvtx_handlers.py +0 -0
  200. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/panoptic_quality.py +0 -0
  201. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/parameter_scheduler.py +0 -0
  202. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/postprocessing.py +0 -0
  203. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/probability_maps.py +0 -0
  204. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/regression_metrics.py +0 -0
  205. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/roc_auc.py +0 -0
  206. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/smartcache_handler.py +0 -0
  207. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/stats_handler.py +0 -0
  208. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/surface_distance.py +0 -0
  209. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/tensorboard_handlers.py +0 -0
  210. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/trt_handler.py +0 -0
  211. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/utils.py +0 -0
  212. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/handlers/validation_handler.py +0 -0
  213. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/inferers/__init__.py +0 -0
  214. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/inferers/merger.py +0 -0
  215. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/inferers/splitter.py +0 -0
  216. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/inferers/utils.py +0 -0
  217. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/__init__.py +0 -0
  218. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/adversarial_loss.py +0 -0
  219. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/aucm_loss.py +0 -0
  220. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/barlow_twins.py +0 -0
  221. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/boundary_loss.py +0 -0
  222. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/cldice.py +0 -0
  223. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/contrastive.py +0 -0
  224. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/deform.py +0 -0
  225. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/dice.py +0 -0
  226. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/ds_loss.py +0 -0
  227. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/focal_loss.py +0 -0
  228. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/giou_loss.py +0 -0
  229. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/hausdorff_loss.py +0 -0
  230. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/image_dissimilarity.py +0 -0
  231. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/mcc_loss.py +0 -0
  232. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/multi_scale.py +0 -0
  233. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/nacl_loss.py +0 -0
  234. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/perceptual.py +0 -0
  235. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/spatial_mask.py +0 -0
  236. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/spectral_loss.py +0 -0
  237. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/ssim_loss.py +0 -0
  238. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/sure_loss.py +0 -0
  239. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/tversky.py +0 -0
  240. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/unified_focal_loss.py +0 -0
  241. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/losses/utils.py +0 -0
  242. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/__init__.py +0 -0
  243. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/absolute_volume_difference.py +0 -0
  244. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/active_learning_metrics.py +0 -0
  245. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/average_precision.py +0 -0
  246. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/calibration.py +0 -0
  247. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/confusion_matrix.py +0 -0
  248. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/cumulative_average.py +0 -0
  249. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/embedding_collapse.py +0 -0
  250. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/f_beta_score.py +0 -0
  251. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/fid.py +0 -0
  252. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/froc.py +0 -0
  253. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/generalized_dice.py +0 -0
  254. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/hausdorff_distance.py +0 -0
  255. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/loss_metric.py +0 -0
  256. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/meandice.py +0 -0
  257. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/meaniou.py +0 -0
  258. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/metric.py +0 -0
  259. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/mmd.py +0 -0
  260. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/panoptic_quality.py +0 -0
  261. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/regression.py +0 -0
  262. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/rocauc.py +0 -0
  263. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/surface_dice.py +0 -0
  264. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/surface_distance.py +0 -0
  265. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/utils.py +0 -0
  266. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/metrics/wrapper.py +0 -0
  267. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/__init__.py +0 -0
  268. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/__init__.py +0 -0
  269. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/acti_norm.py +0 -0
  270. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/activation.py +0 -0
  271. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/activation_checkpointing.py +0 -0
  272. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/aspp.py +0 -0
  273. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/attention_utils.py +0 -0
  274. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
  275. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/cablock.py +0 -0
  276. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/convolutions.py +0 -0
  277. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/crf.py +0 -0
  278. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/crossattention.py +0 -0
  279. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/denseblock.py +0 -0
  280. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/dints_block.py +0 -0
  281. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/downsample.py +0 -0
  282. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/dynunet_block.py +0 -0
  283. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/encoder.py +0 -0
  284. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/fcn.py +0 -0
  285. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/feature_pyramid_network.py +0 -0
  286. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/fft_utils_t.py +0 -0
  287. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/hyena.py +0 -0
  288. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/localnet_block.py +0 -0
  289. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/mednext_block.py +0 -0
  290. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/mlp.py +0 -0
  291. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/patchembedding.py +0 -0
  292. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/pos_embed_utils.py +0 -0
  293. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/regunet_block.py +0 -0
  294. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/rel_pos_embedding.py +0 -0
  295. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/segresnet_block.py +0 -0
  296. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/selfattention.py +0 -0
  297. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/spade_norm.py +0 -0
  298. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/spatialattention.py +0 -0
  299. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
  300. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/text_embedding.py +0 -0
  301. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/transformerblock.py +0 -0
  302. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/unetr_block.py +0 -0
  303. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/upsample.py +0 -0
  304. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/blocks/warp.py +0 -0
  305. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/__init__.py +0 -0
  306. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/conjugate_gradient.py +0 -0
  307. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/convutils.py +0 -0
  308. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/drop_path.py +0 -0
  309. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/factories.py +0 -0
  310. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/filtering.py +0 -0
  311. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/gmm.py +0 -0
  312. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/simplelayers.py +0 -0
  313. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/spatial_transforms.py +0 -0
  314. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/utils.py +0 -0
  315. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/vector_quantizer.py +0 -0
  316. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/layers/weight_init.py +0 -0
  317. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/__init__.py +0 -0
  318. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/ahnet.py +0 -0
  319. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/attentionunet.py +0 -0
  320. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/autoencoder.py +0 -0
  321. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/autoencoderkl.py +0 -0
  322. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/basic_unet.py +0 -0
  323. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/basic_unetplusplus.py +0 -0
  324. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/cell_sam_wrapper.py +0 -0
  325. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/classifier.py +0 -0
  326. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/controlnet.py +0 -0
  327. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/daf3d.py +0 -0
  328. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/densenet.py +0 -0
  329. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/diffusion_model_unet.py +0 -0
  330. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/dints.py +0 -0
  331. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/dynunet.py +0 -0
  332. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/efficientnet.py +0 -0
  333. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/flexible_unet.py +0 -0
  334. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/fullyconnectednet.py +0 -0
  335. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/generator.py +0 -0
  336. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/highresnet.py +0 -0
  337. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/hovernet.py +0 -0
  338. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/hyena_nd_unetr.py +0 -0
  339. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
  340. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/mednext.py +0 -0
  341. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/milmodel.py +0 -0
  342. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/navit.py +0 -0
  343. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/netadapter.py +0 -0
  344. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/patchgan_discriminator.py +0 -0
  345. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/quicknat.py +0 -0
  346. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/regressor.py +0 -0
  347. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/regunet.py +0 -0
  348. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/resnet.py +0 -0
  349. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/restormer.py +0 -0
  350. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/segresnet.py +0 -0
  351. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/segresnet_ds.py +0 -0
  352. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/senet.py +0 -0
  353. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/spade_autoencoderkl.py +0 -0
  354. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
  355. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/spade_network.py +0 -0
  356. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/swin_unetr.py +0 -0
  357. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/torchvision_fc.py +0 -0
  358. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/transchex.py +0 -0
  359. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/transformer.py +0 -0
  360. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/unet.py +0 -0
  361. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/unetr.py +0 -0
  362. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/varautoencoder.py +0 -0
  363. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/vista3d.py +0 -0
  364. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/vit.py +0 -0
  365. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/vitautoenc.py +0 -0
  366. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/vnet.py +0 -0
  367. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/voxelmorph.py +0 -0
  368. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/nets/vqvae.py +0 -0
  369. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/schedulers/__init__.py +0 -0
  370. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/schedulers/ddim.py +0 -0
  371. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/schedulers/ddpm.py +0 -0
  372. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/schedulers/pndm.py +0 -0
  373. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/schedulers/rectified_flow.py +0 -0
  374. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/schedulers/scheduler.py +0 -0
  375. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/trt_compiler.py +0 -0
  376. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/networks/utils.py +0 -0
  377. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/optimizers/__init__.py +0 -0
  378. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/optimizers/lr_finder.py +0 -0
  379. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/optimizers/lr_scheduler.py +0 -0
  380. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/optimizers/novograd.py +0 -0
  381. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/optimizers/utils.py +0 -0
  382. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/py.typed +0 -0
  383. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/__init__.py +0 -0
  384. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/adaptors.py +0 -0
  385. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/compose.py +0 -0
  386. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/croppad/__init__.py +0 -0
  387. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/croppad/array.py +0 -0
  388. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/croppad/batch.py +0 -0
  389. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/croppad/dictionary.py +0 -0
  390. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/croppad/functional.py +0 -0
  391. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/intensity/__init__.py +0 -0
  392. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/intensity/array.py +0 -0
  393. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/intensity/dictionary.py +0 -0
  394. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/inverse.py +0 -0
  395. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/inverse_batch_transform.py +0 -0
  396. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/io/__init__.py +0 -0
  397. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/io/array.py +0 -0
  398. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/io/dictionary.py +0 -0
  399. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/lazy/__init__.py +0 -0
  400. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/lazy/array.py +0 -0
  401. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/lazy/dictionary.py +0 -0
  402. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/lazy/functional.py +0 -0
  403. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/lazy/utils.py +0 -0
  404. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/meta_utility/__init__.py +0 -0
  405. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/meta_utility/dictionary.py +0 -0
  406. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/nvtx.py +0 -0
  407. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/post/__init__.py +0 -0
  408. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/post/array.py +0 -0
  409. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/post/dictionary.py +0 -0
  410. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/regularization/__init__.py +0 -0
  411. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/regularization/array.py +0 -0
  412. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/regularization/dictionary.py +0 -0
  413. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/signal/__init__.py +0 -0
  414. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/signal/array.py +0 -0
  415. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/signal/dictionary.py +0 -0
  416. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/smooth_field/__init__.py +0 -0
  417. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/smooth_field/array.py +0 -0
  418. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/smooth_field/dictionary.py +0 -0
  419. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/spatial/__init__.py +0 -0
  420. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/spatial/array.py +0 -0
  421. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/spatial/dictionary.py +0 -0
  422. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/spatial/functional.py +0 -0
  423. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/traits.py +0 -0
  424. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/transform.py +0 -0
  425. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utility/__init__.py +0 -0
  426. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utility/array.py +0 -0
  427. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utility/dictionary.py +0 -0
  428. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utils_create_transform_ims.py +0 -0
  429. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utils_morphological_ops.py +0 -0
  430. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
  431. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/component_store.py +0 -0
  432. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/decorators.py +0 -0
  433. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/deprecate_utils.py +0 -0
  434. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/dist.py +0 -0
  435. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/enums.py +0 -0
  436. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/jupyter_utils.py +0 -0
  437. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/misc.py +0 -0
  438. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/module.py +0 -0
  439. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/nvtx.py +0 -0
  440. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/ordering.py +0 -0
  441. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/profiling.py +0 -0
  442. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/state_cacher.py +0 -0
  443. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/tf32.py +0 -0
  444. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/utils/type_conversion.py +0 -0
  445. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/__init__.py +0 -0
  446. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/class_activation_maps.py +0 -0
  447. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/gradient_based.py +0 -0
  448. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/img2tensorboard.py +0 -0
  449. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/occlusion_sensitivity.py +0 -0
  450. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/utils.py +0 -0
  451. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai/visualize/visualizer.py +0 -0
  452. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai_weekly.egg-info/dependency_links.txt +0 -0
  453. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai_weekly.egg-info/not-zip-safe +0 -0
  454. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai_weekly.egg-info/requires.txt +0 -0
  455. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/monai_weekly.egg-info/top_level.txt +0 -0
  456. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/pyproject.toml +0 -0
  457. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/setup.cfg +0 -0
  458. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/setup.py +0 -0
  459. {monai_weekly-1.7.dev2638 → monai_weekly-1.7.dev2639}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2638
3
+ Version: 1.7.dev2639
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__ = "f2ec87ae9b536baaeca1d6bcc2b6349369e2af8f"
139
+ __commit_id__ = "25847e7570361fc93261509943b21c1639ab9f04"
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-09-20T02:14:58+0000",
11
+ "date": "2026-09-27T02:18:34+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "43b604323beaeca5718d23b2ba4c130da08d84b8",
15
- "version": "1.7.dev2638"
14
+ "full-revisionid": "5cfc144e2f41cc448085b59758dd2ab1d335f3d1",
15
+ "version": "1.7.dev2639"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -11,6 +11,7 @@
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
+ import inspect
14
15
  import math
15
16
  import warnings
16
17
  from abc import ABC, abstractmethod
@@ -862,6 +863,96 @@ class DiffusionInferer(Inferer):
862
863
 
863
864
  self.scheduler = scheduler
864
865
 
866
+ @staticmethod
867
+ def _scheduler_step_supports_kwarg(scheduler: Scheduler, kwarg: str) -> bool:
868
+ try:
869
+ return kwarg in inspect.signature(scheduler.step).parameters
870
+ except (TypeError, ValueError):
871
+ return False
872
+
873
+ @staticmethod
874
+ def _get_previous_sample_from_step_output(step_output: Any) -> torch.Tensor:
875
+ if isinstance(step_output, tuple):
876
+ return step_output[0]
877
+ if isinstance(step_output, Mapping):
878
+ return step_output["prev_sample"]
879
+ if hasattr(step_output, "prev_sample"):
880
+ return step_output.prev_sample
881
+ raise TypeError("Unsupported scheduler.step output. Expected a tuple or an object with `prev_sample`.")
882
+
883
+ @staticmethod
884
+ def _get_scheduler_name(scheduler: Scheduler) -> str:
885
+ if hasattr(scheduler, "_get_name"):
886
+ return scheduler._get_name()
887
+ return scheduler.__class__.__name__
888
+
889
+ @staticmethod
890
+ def _get_scheduler_config_value(scheduler: Scheduler, name: str, default: Any = None) -> Any:
891
+ config = getattr(scheduler, "config", None)
892
+ if isinstance(config, Mapping):
893
+ if name in config:
894
+ return config[name]
895
+ elif config is not None and hasattr(config, name):
896
+ return getattr(config, name)
897
+
898
+ if hasattr(scheduler, name):
899
+ return getattr(scheduler, name)
900
+ return default
901
+
902
+ @staticmethod
903
+ def _get_posterior_mean(
904
+ scheduler: Scheduler, timestep: int | torch.Tensor, x_0: torch.Tensor, x_t: torch.Tensor
905
+ ) -> torch.Tensor:
906
+ alpha_t = scheduler.alphas[timestep]
907
+ alpha_prod_t = scheduler.alphas_cumprod[timestep]
908
+ alpha_prod_t_prev = scheduler.alphas_cumprod[timestep - 1] if timestep > 0 else scheduler.one
909
+
910
+ x_0_coefficient = alpha_prod_t_prev.sqrt() * scheduler.betas[timestep] / (1 - alpha_prod_t)
911
+ x_t_coefficient = alpha_t.sqrt() * (1 - alpha_prod_t_prev) / (1 - alpha_prod_t)
912
+
913
+ return x_0_coefficient * x_0 + x_t_coefficient * x_t
914
+
915
+ def _get_posterior_variance(
916
+ self, scheduler: Scheduler, timestep: int | torch.Tensor, predicted_variance: torch.Tensor | None = None
917
+ ) -> torch.Tensor:
918
+ alpha_prod_t = scheduler.alphas_cumprod[timestep]
919
+ alpha_prod_t_prev = scheduler.alphas_cumprod[timestep - 1] if timestep > 0 else scheduler.one
920
+ variance = (1 - alpha_prod_t_prev) / (1 - alpha_prod_t) * scheduler.betas[timestep]
921
+ variance_type = self._get_scheduler_config_value(scheduler, "variance_type")
922
+
923
+ if variance_type == "fixed_small":
924
+ variance = torch.clamp(variance, min=1e-20)
925
+ elif variance_type == "fixed_large":
926
+ variance = scheduler.betas[timestep]
927
+ elif variance_type == "learned" and predicted_variance is not None:
928
+ return predicted_variance
929
+ elif variance_type == "learned_range" and predicted_variance is not None:
930
+ min_log = variance
931
+ max_log = scheduler.betas[timestep]
932
+ frac = (predicted_variance + 1) / 2
933
+ variance = frac * max_log + (1 - frac) * min_log
934
+
935
+ return variance
936
+
937
+ def _scheduler_step(
938
+ self,
939
+ scheduler: Scheduler,
940
+ model_output: torch.Tensor,
941
+ timestep: int | torch.Tensor,
942
+ sample: torch.Tensor,
943
+ next_timestep: int | torch.Tensor | None = None,
944
+ ) -> torch.Tensor:
945
+ step_kwargs = {}
946
+ if self._scheduler_step_supports_kwarg(scheduler, "return_dict"):
947
+ step_kwargs["return_dict"] = False
948
+
949
+ if isinstance(scheduler, RFlowScheduler):
950
+ step_output = scheduler.step(model_output, timestep, sample, next_timestep, **step_kwargs) # type: ignore
951
+ else:
952
+ step_output = scheduler.step(model_output, timestep, sample, **step_kwargs) # type: ignore
953
+
954
+ return self._get_previous_sample_from_step_output(step_output)
955
+
865
956
  def __call__( # type: ignore[override]
866
957
  self,
867
958
  inputs: torch.Tensor,
@@ -941,7 +1032,12 @@ class DiffusionInferer(Inferer):
941
1032
  scheduler = self.scheduler
942
1033
  image = input_noise
943
1034
 
944
- all_next_timesteps = torch.cat((scheduler.timesteps[1:], torch.tensor([0], dtype=scheduler.timesteps.dtype)))
1035
+ all_next_timesteps = torch.cat(
1036
+ (
1037
+ scheduler.timesteps[1:],
1038
+ torch.tensor([0], dtype=scheduler.timesteps.dtype, device=scheduler.timesteps.device),
1039
+ )
1040
+ )
945
1041
  if verbose and has_tqdm:
946
1042
  progress_bar = tqdm(
947
1043
  zip(scheduler.timesteps, all_next_timesteps),
@@ -985,10 +1081,9 @@ class DiffusionInferer(Inferer):
985
1081
  model_output = model_output_uncond + cfg * (model_output_cond - model_output_uncond)
986
1082
 
987
1083
  # 2. compute previous image: x_t -> x_t-1
988
- if not isinstance(scheduler, RFlowScheduler):
989
- image, _ = scheduler.step(model_output, t, image) # type: ignore
990
- else:
991
- image, _ = scheduler.step(model_output, t, image, next_t) # type: ignore
1084
+ image = self._scheduler_step(
1085
+ scheduler=scheduler, model_output=model_output, timestep=t, sample=image, next_timestep=next_t
1086
+ )
992
1087
  if save_intermediates and t % intermediate_steps == 0:
993
1088
  intermediates.append(image)
994
1089
 
@@ -1029,10 +1124,10 @@ class DiffusionInferer(Inferer):
1029
1124
 
1030
1125
  if not scheduler:
1031
1126
  scheduler = self.scheduler
1032
- if scheduler._get_name() != "DDPMScheduler":
1127
+ scheduler_name = self._get_scheduler_name(scheduler)
1128
+ if scheduler_name != "DDPMScheduler":
1033
1129
  raise NotImplementedError(
1034
- f"Likelihood computation is only compatible with DDPMScheduler,"
1035
- f" you are using {scheduler._get_name()}"
1130
+ f"Likelihood computation is only compatible with DDPMScheduler, you are using {scheduler_name},"
1036
1131
  )
1037
1132
  if mode not in ["crossattn", "concat"]:
1038
1133
  raise NotImplementedError(f"{mode} condition is not supported")
@@ -1047,7 +1142,7 @@ class DiffusionInferer(Inferer):
1047
1142
  total_kl = torch.zeros(inputs.shape[0]).to(inputs.device)
1048
1143
  for t in progress_bar:
1049
1144
  timesteps = torch.full(inputs.shape[:1], t, device=inputs.device).long()
1050
- noisy_image = self.scheduler.add_noise(original_samples=inputs, noise=noise, timesteps=timesteps)
1145
+ noisy_image = scheduler.add_noise(original_samples=inputs, noise=noise, timesteps=timesteps)
1051
1146
  diffusion_model = (
1052
1147
  partial(diffusion_model, seg=seg)
1053
1148
  if isinstance(diffusion_model, SPADEDiffusionModelUNet)
@@ -1060,7 +1155,8 @@ class DiffusionInferer(Inferer):
1060
1155
  model_output = diffusion_model(x=noisy_image, timesteps=timesteps, context=conditioning)
1061
1156
 
1062
1157
  # get the model's predicted mean, and variance if it is predicted
1063
- if model_output.shape[1] == inputs.shape[1] * 2 and scheduler.variance_type in ["learned", "learned_range"]:
1158
+ variance_type = self._get_scheduler_config_value(scheduler, "variance_type")
1159
+ if model_output.shape[1] == inputs.shape[1] * 2 and variance_type in ["learned", "learned_range"]:
1064
1160
  model_output, predicted_variance = torch.split(model_output, inputs.shape[1], dim=1)
1065
1161
  else:
1066
1162
  predicted_variance = None
@@ -1073,15 +1169,17 @@ class DiffusionInferer(Inferer):
1073
1169
 
1074
1170
  # 2. compute predicted original sample from predicted noise also called
1075
1171
  # "predicted x_0" of formula (15) from https://arxiv.org/pdf/2006.11239.pdf
1076
- if scheduler.prediction_type == "epsilon":
1172
+ prediction_type = self._get_scheduler_config_value(scheduler, "prediction_type")
1173
+ if prediction_type == "epsilon":
1077
1174
  pred_original_sample = (noisy_image - beta_prod_t ** (0.5) * model_output) / alpha_prod_t ** (0.5)
1078
- elif scheduler.prediction_type == "sample":
1175
+ elif prediction_type == "sample":
1079
1176
  pred_original_sample = model_output
1080
- elif scheduler.prediction_type == "v_prediction":
1177
+ elif prediction_type == "v_prediction":
1081
1178
  pred_original_sample = (alpha_prod_t**0.5) * noisy_image - (beta_prod_t**0.5) * model_output
1082
1179
  # 3. Clip "predicted x_0"
1083
- if scheduler.clip_sample:
1084
- pred_original_sample = torch.clamp(pred_original_sample, -1, 1)
1180
+ if self._get_scheduler_config_value(scheduler, "clip_sample"):
1181
+ clip_sample_range = self._get_scheduler_config_value(scheduler, "clip_sample_range", 1.0)
1182
+ pred_original_sample = torch.clamp(pred_original_sample, -clip_sample_range, clip_sample_range)
1085
1183
 
1086
1184
  # 4. Compute coefficients for pred_original_sample x_0 and current sample x_t
1087
1185
  # See formula (7) from https://arxiv.org/pdf/2006.11239.pdf
@@ -1093,11 +1191,15 @@ class DiffusionInferer(Inferer):
1093
1191
  predicted_mean = pred_original_sample_coeff * pred_original_sample + current_sample_coeff * noisy_image
1094
1192
 
1095
1193
  # get the posterior mean and variance
1096
- posterior_mean = scheduler._get_mean(timestep=t, x_0=inputs, x_t=noisy_image) # type: ignore[operator]
1097
- posterior_variance = scheduler._get_variance(timestep=t, predicted_variance=predicted_variance) # type: ignore[operator]
1194
+ posterior_mean = self._get_posterior_mean(scheduler=scheduler, timestep=t, x_0=inputs, x_t=noisy_image)
1195
+ posterior_variance = self._get_posterior_variance(
1196
+ scheduler=scheduler, timestep=t, predicted_variance=predicted_variance
1197
+ )
1098
1198
 
1099
1199
  log_posterior_variance = torch.log(posterior_variance)
1100
- log_predicted_variance = torch.log(predicted_variance) if predicted_variance else log_posterior_variance
1200
+ log_predicted_variance = (
1201
+ torch.log(predicted_variance) if predicted_variance is not None else log_posterior_variance
1202
+ )
1101
1203
 
1102
1204
  if t == 0:
1103
1205
  # compute -log p(x_0|x_1)
@@ -1510,7 +1612,12 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1510
1612
  scheduler = self.scheduler
1511
1613
  image = input_noise
1512
1614
 
1513
- all_next_timesteps = torch.cat((scheduler.timesteps[1:], torch.tensor([0], dtype=scheduler.timesteps.dtype)))
1615
+ all_next_timesteps = torch.cat(
1616
+ (
1617
+ scheduler.timesteps[1:],
1618
+ torch.tensor([0], dtype=scheduler.timesteps.dtype, device=scheduler.timesteps.device),
1619
+ )
1620
+ )
1514
1621
  if verbose and has_tqdm:
1515
1622
  progress_bar = tqdm(
1516
1623
  zip(scheduler.timesteps, all_next_timesteps),
@@ -1584,10 +1691,9 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1584
1691
  model_output = model_output_uncond + cfg * (model_output_cond - model_output_uncond)
1585
1692
 
1586
1693
  # 3. compute previous image: x_t -> x_t-1
1587
- if not isinstance(scheduler, RFlowScheduler):
1588
- image, _ = scheduler.step(model_output, t, image) # type: ignore
1589
- else:
1590
- image, _ = scheduler.step(model_output, t, image, next_t) # type: ignore
1694
+ image = self._scheduler_step(
1695
+ scheduler=scheduler, model_output=model_output, timestep=t, sample=image, next_timestep=next_t
1696
+ )
1591
1697
 
1592
1698
  if save_intermediates and t % intermediate_steps == 0:
1593
1699
  intermediates.append(image)
@@ -1632,10 +1738,10 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1632
1738
 
1633
1739
  if not scheduler:
1634
1740
  scheduler = self.scheduler
1635
- if scheduler._get_name() != "DDPMScheduler":
1741
+ scheduler_name = self._get_scheduler_name(scheduler)
1742
+ if scheduler_name != "DDPMScheduler":
1636
1743
  raise NotImplementedError(
1637
- f"Likelihood computation is only compatible with DDPMScheduler,"
1638
- f" you are using {scheduler._get_name()}"
1744
+ f"Likelihood computation is only compatible with DDPMScheduler, you are using {scheduler_name}."
1639
1745
  )
1640
1746
  if mode not in ["crossattn", "concat"]:
1641
1747
  raise NotImplementedError(f"{mode} condition is not supported")
@@ -1648,7 +1754,7 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1648
1754
  total_kl = torch.zeros(inputs.shape[0]).to(inputs.device)
1649
1755
  for t in progress_bar:
1650
1756
  timesteps = torch.full(inputs.shape[:1], t, device=inputs.device).long()
1651
- noisy_image = self.scheduler.add_noise(original_samples=inputs, noise=noise, timesteps=timesteps)
1757
+ noisy_image = scheduler.add_noise(original_samples=inputs, noise=noise, timesteps=timesteps)
1652
1758
 
1653
1759
  diffuse = diffusion_model
1654
1760
  if isinstance(diffusion_model, SPADEDiffusionModelUNet):
@@ -1681,7 +1787,8 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1681
1787
  mid_block_additional_residual=mid_block_res_sample,
1682
1788
  )
1683
1789
  # get the model's predicted mean, and variance if it is predicted
1684
- if model_output.shape[1] == inputs.shape[1] * 2 and scheduler.variance_type in ["learned", "learned_range"]:
1790
+ variance_type = self._get_scheduler_config_value(scheduler, "variance_type")
1791
+ if model_output.shape[1] == inputs.shape[1] * 2 and variance_type in ["learned", "learned_range"]:
1685
1792
  model_output, predicted_variance = torch.split(model_output, inputs.shape[1], dim=1)
1686
1793
  else:
1687
1794
  predicted_variance = None
@@ -1694,15 +1801,17 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1694
1801
 
1695
1802
  # 2. compute predicted original sample from predicted noise also called
1696
1803
  # "predicted x_0" of formula (15) from https://arxiv.org/pdf/2006.11239.pdf
1697
- if scheduler.prediction_type == "epsilon":
1804
+ prediction_type = self._get_scheduler_config_value(scheduler, "prediction_type")
1805
+ if prediction_type == "epsilon":
1698
1806
  pred_original_sample = (noisy_image - beta_prod_t ** (0.5) * model_output) / alpha_prod_t ** (0.5)
1699
- elif scheduler.prediction_type == "sample":
1807
+ elif prediction_type == "sample":
1700
1808
  pred_original_sample = model_output
1701
- elif scheduler.prediction_type == "v_prediction":
1809
+ elif prediction_type == "v_prediction":
1702
1810
  pred_original_sample = (alpha_prod_t**0.5) * noisy_image - (beta_prod_t**0.5) * model_output
1703
1811
  # 3. Clip "predicted x_0"
1704
- if scheduler.clip_sample:
1705
- pred_original_sample = torch.clamp(pred_original_sample, -1, 1)
1812
+ if self._get_scheduler_config_value(scheduler, "clip_sample"):
1813
+ clip_sample_range = self._get_scheduler_config_value(scheduler, "clip_sample_range", 1.0)
1814
+ pred_original_sample = torch.clamp(pred_original_sample, -clip_sample_range, clip_sample_range)
1706
1815
 
1707
1816
  # 4. Compute coefficients for pred_original_sample x_0 and current sample x_t
1708
1817
  # See formula (7) from https://arxiv.org/pdf/2006.11239.pdf
@@ -1714,11 +1823,15 @@ class ControlNetDiffusionInferer(DiffusionInferer):
1714
1823
  predicted_mean = pred_original_sample_coeff * pred_original_sample + current_sample_coeff * noisy_image
1715
1824
 
1716
1825
  # get the posterior mean and variance
1717
- posterior_mean = scheduler._get_mean(timestep=t, x_0=inputs, x_t=noisy_image) # type: ignore[operator]
1718
- posterior_variance = scheduler._get_variance(timestep=t, predicted_variance=predicted_variance) # type: ignore[operator]
1826
+ posterior_mean = self._get_posterior_mean(scheduler=scheduler, timestep=t, x_0=inputs, x_t=noisy_image)
1827
+ posterior_variance = self._get_posterior_variance(
1828
+ scheduler=scheduler, timestep=t, predicted_variance=predicted_variance
1829
+ )
1719
1830
 
1720
1831
  log_posterior_variance = torch.log(posterior_variance)
1721
- log_predicted_variance = torch.log(predicted_variance) if predicted_variance else log_posterior_variance
1832
+ log_predicted_variance = (
1833
+ torch.log(predicted_variance) if predicted_variance is not None else log_posterior_variance
1834
+ )
1722
1835
 
1723
1836
  if t == 0:
1724
1837
  # compute -log p(x_0|x_1)
@@ -2281,7 +2281,8 @@ def squarepulse(sig, duty: float = 0.5):
2281
2281
  w = convert_to_tensor(w)
2282
2282
  t = convert_to_tensor(t)
2283
2283
 
2284
- y = torch.zeros(t.shape)
2284
+ out_dtype = t.dtype if t.is_floating_point() else torch.get_default_dtype()
2285
+ y = torch.zeros_like(t, dtype=out_dtype)
2285
2286
 
2286
2287
  mask1 = (w > 1) | (w < 0)
2287
2288
 
@@ -11,6 +11,7 @@
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
+ from .compare_sources import SKIP_EXTS, files_considered_equal, sources_equal
14
15
  from .component_store import ComponentStore
15
16
  from .decorators import MethodReplacer, RestartGenerator
16
17
  from .deprecate_utils import DeprecatedError, deprecated, deprecated_arg, deprecated_arg_default
@@ -0,0 +1,107 @@
1
+ # Copyright (c) MONAI Consortium
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ """
13
+ This module is used in Github Actions to determine if a Python source file has been modified in a PR.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import ast
19
+ import os
20
+ import sys
21
+ from os.path import splitext
22
+
23
+ PathLike = str | os.PathLike # needs to be duplicated here to avoid importing anything from MONAI inside actions
24
+
25
+ SKIP_EXTS = (".md", ".rst", ".cff")
26
+
27
+
28
+ class RemoveDocstrings(ast.NodeTransformer):
29
+ """
30
+ Strips docstrings from source files so that they aren't used for comparing ASTs.
31
+ """
32
+
33
+ def visit(self, node: ast.AST) -> ast.AST:
34
+ try:
35
+ # remove docstrings from the files
36
+ if ast.get_docstring(node) is not None:
37
+ del node.body[0]
38
+ except TypeError:
39
+ pass
40
+ return super().visit(node)
41
+
42
+
43
+ def sources_equal(src1: str, src2: str) -> bool:
44
+ """
45
+ Compare Python source texts at the AST level without docstrings or comments. If two texts are equal except for
46
+ changes to docstrings or comments, they will be considered equal by this function. Any other changes will appear
47
+ as differences in the AST representations, which are compared inefficiently by comparing tree string dumps.
48
+
49
+ Args:
50
+ src1: first Python source text.
51
+ src2: second Python source text.
52
+
53
+ Returns:
54
+ True if the texts `src1` and `src2` are equal with docstrings and comments removed, False otherwise.
55
+ """
56
+ remdoc = RemoveDocstrings()
57
+
58
+ m1 = ast.parse(src1)
59
+ m2 = ast.parse(src2)
60
+ remdoc.visit(m1)
61
+ remdoc.visit(m2)
62
+
63
+ list1 = list(ast.walk(m1))
64
+ list2 = list(ast.walk(m2))
65
+
66
+ if len(list1) != len(list2) or any(type(n1) is not type(n2) for n1, n2 in zip(list1, list2)):
67
+ return False
68
+
69
+ return ast.dump(m1) == ast.dump(m2)
70
+
71
+
72
+ def files_considered_equal(file1: PathLike, file2: PathLike) -> bool:
73
+ """
74
+ Returns True if the files are considered equal, that is they are doc files or differ only in docstrings or comments.
75
+
76
+ Args:
77
+ file1: first file path to compare.
78
+ file2: second file path to compare.
79
+
80
+ Returns:
81
+ True if the files have the same extension, and either this extension is in `SKIP_EXTS`, or is ".py" with the
82
+ files having the same content according to `sources_equal`. If the extensions differ, or are both ".py" but the
83
+ file contents differ, returns False.
84
+ """
85
+ _, ext1 = splitext(str(file1))
86
+ _, ext2 = splitext(str(file2))
87
+
88
+ # if extensions aren't equal then definitely different (which shouldn't happen anyway)
89
+ if ext1 != ext2:
90
+ return False
91
+
92
+ # if extensions are an ignored type, ie. docs, don't compare at all
93
+ if ext1 in SKIP_EXTS:
94
+ return True
95
+
96
+ # if not Python source files, they aren't doc files at this point so assume different
97
+ if ext1 != ".py":
98
+ return False
99
+
100
+ # compare the actual parsed contents of the source files
101
+ with open(file1) as o1, open(file2) as o2:
102
+ return sources_equal(o1.read(), o2.read())
103
+
104
+
105
+ if __name__ == "__main__":
106
+ _, file1, file2 = sys.argv
107
+ sys.exit(0 if files_considered_equal(file1, file2) else 1)
@@ -71,6 +71,13 @@ def safe_eval(
71
71
  expressions with constants and names can be evaluated, so excludes attribute access, indexing, and calls. Code
72
72
  injection is infeasible through such expressions, so this is a safe and secure way of evaluating simple expressions.
73
73
 
74
+ Names are resolved only against `globals_vars` and `locals_vars`, so an expression naming anything the caller did
75
+ not supply raises a `NameError` rather than silently resolving to a builtin or to a module imported here. Two
76
+ names resolve without being supplied: `__builtins__`, which is bound to an empty mapping so that nothing can be
77
+ reached through it, and `np`, which `rewrite_np` adds because the rewritten constants need it. This matters when
78
+ `allowed_types` is widened beyond `SAFE_TYPES`, since node types such as `ast.Attribute` and `ast.Call` would
79
+ otherwise make the builtins and this module's imports reachable.
80
+
74
81
  If `rewrite_np` is True, int and float constants in the given expression will be wrapped with Numpy types as given
75
82
  by `int_type_str` and `float_type_str`. These are expected to be constructor names prefixed with `np.` as Numpy
76
83
  will be present in the expression global variables under that name. The values can be changed to other types if
@@ -79,7 +86,8 @@ def safe_eval(
79
86
 
80
87
  Args:
81
88
  expr: expression to evaluate, this will be stripped before parsing to avoid indentation complaints
82
- globals_vars: global variable mapping, this will be treated as read-only for this function, unlike `eval`
89
+ globals_vars: global variable mapping, this will be treated as read-only for this function, unlike `eval`.
90
+ An empty `__builtins__` is added to the copy unless the mapping provides its own value for that key
83
91
  locals_vars: local variable mapping
84
92
  allowed_types: sequence of allowed AST types which can be found in `expr` when parsed
85
93
  rewrite_np: if True, wrap int or float literals in Numpy types
@@ -88,6 +96,8 @@ def safe_eval(
88
96
 
89
97
  Raises:
90
98
  ValueError: raised when any node in the AST parsed from `expr` has a type not in `allowed_types`
99
+ NameError: raised when `expr` names a variable not present in `globals_vars` or `locals_vars`, other than
100
+ `__builtins__` and, when `rewrite_np` is True, `np`
91
101
 
92
102
  Returns:
93
103
  The evaluated expression value, using `eval` with `globals_vars` and `locals_vars`
@@ -105,4 +115,9 @@ def safe_eval(
105
115
  ast.fix_missing_locations(parsed)
106
116
  locals_vars = {**(locals_vars or {}), "np": np}
107
117
 
108
- return eval(compile(parsed, "<safe_eval>", "eval"), dict(globals_vars) if globals_vars else None, locals_vars)
118
+ # an explicit globals mapping stops `eval` from falling back to this module's globals, and an empty
119
+ # `__builtins__` keeps the builtins out of scope, so only names the caller supplied can be resolved
120
+ eval_globals: dict[str, Any] = dict(globals_vars) if globals_vars else {}
121
+ eval_globals.setdefault("__builtins__", {})
122
+
123
+ return eval(compile(parsed, "<safe_eval>", "eval"), eval_globals, locals_vars)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2638
3
+ Version: 1.7.dev2639
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
@@ -426,6 +426,7 @@ monai/transforms/utility/__init__.py
426
426
  monai/transforms/utility/array.py
427
427
  monai/transforms/utility/dictionary.py
428
428
  monai/utils/__init__.py
429
+ monai/utils/compare_sources.py
429
430
  monai/utils/component_store.py
430
431
  monai/utils/decorators.py
431
432
  monai/utils/deprecate_utils.py