monai-weekly 1.7.dev2642__tar.gz → 1.7.dev2643__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.dev2642 → monai_weekly-1.7.dev2643}/PKG-INFO +1 -1
  2. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/__init__.py +2 -1
  3. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_version.py +3 -3
  4. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/dictionary.py +0 -2
  5. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/mmars/mmars.py +62 -116
  6. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/mmars/model_desc.py +13 -1
  7. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/post/dictionary.py +0 -2
  8. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/image_reader.py +27 -5
  9. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/nvimgcodec_pydicom_plugin.py +1 -1
  10. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/inferers/merger.py +23 -16
  11. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/active_learning_metrics.py +0 -2
  12. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/confusion_matrix.py +49 -8
  13. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/hausdorff_distance.py +14 -9
  14. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/surface_distance.py +88 -18
  15. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/segresnet_ds.py +10 -0
  16. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utility/array.py +16 -1
  17. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/PKG-INFO +1 -1
  18. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/LICENSE +0 -0
  19. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/MANIFEST.in +0 -0
  20. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/README.md +0 -0
  21. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/__init__.py +0 -0
  22. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm.cpp +0 -0
  23. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm.h +0 -0
  24. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
  25. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
  26. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
  27. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/_extensions/loader.py +0 -0
  28. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/__init__.py +0 -0
  29. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/__init__.py +0 -0
  30. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/__main__.py +0 -0
  31. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/auto_runner.py +0 -0
  32. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/bundle_gen.py +0 -0
  33. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/data_analyzer.py +0 -0
  34. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
  35. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/hpo_gen.py +0 -0
  36. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/transforms.py +0 -0
  37. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/utils.py +0 -0
  38. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/datasets.py +0 -0
  39. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepedit/__init__.py +0 -0
  40. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepedit/interaction.py +0 -0
  41. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepedit/transforms.py +0 -0
  42. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/__init__.py +0 -0
  43. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/dataset.py +0 -0
  44. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/interaction.py +0 -0
  45. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/transforms.py +0 -0
  46. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/__init__.py +0 -0
  47. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/metrics/__init__.py +0 -0
  48. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/metrics/coco.py +0 -0
  49. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/metrics/matching.py +0 -0
  50. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/networks/__init__.py +0 -0
  51. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/networks/retinanet_detector.py +0 -0
  52. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/networks/retinanet_network.py +0 -0
  53. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/__init__.py +0 -0
  54. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/array.py +0 -0
  55. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/box_ops.py +0 -0
  56. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
  57. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/__init__.py +0 -0
  58. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/anchor_utils.py +0 -0
  59. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/box_coder.py +0 -0
  60. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/box_selector.py +0 -0
  61. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/detector_utils.py +0 -0
  62. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
  63. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/predict_utils.py +0 -0
  64. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/generation/__init__.py +0 -0
  65. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/__init__.py +0 -0
  66. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/__init__.py +0 -0
  67. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
  68. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
  69. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
  70. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/mmars/__init__.py +0 -0
  71. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/__init__.py +0 -0
  72. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/__main__.py +0 -0
  73. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/nnunet_bundle.py +0 -0
  74. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
  75. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/utils.py +0 -0
  76. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nuclick/__init__.py +0 -0
  77. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/nuclick/transforms.py +0 -0
  78. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/__init__.py +0 -0
  79. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/engines/__init__.py +0 -0
  80. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/engines/utils.py +0 -0
  81. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/handlers/__init__.py +0 -0
  82. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/handlers/utils.py +0 -0
  83. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/inferers/__init__.py +0 -0
  84. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/inferers/inferer.py +0 -0
  85. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/losses/__init__.py +0 -0
  86. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
  87. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/metrics/__init__.py +0 -0
  88. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
  89. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/__init__.py +0 -0
  90. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/post/__init__.py +0 -0
  91. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/post/array.py +0 -0
  92. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
  93. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/stain/array.py +0 -0
  94. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
  95. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/pathology/utils.py +0 -0
  96. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/__init__.py +0 -0
  97. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/complex_utils.py +0 -0
  98. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/fastmri_reader.py +0 -0
  99. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/mri_utils.py +0 -0
  100. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/__init__.py +0 -0
  101. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
  102. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
  103. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
  104. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
  105. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
  106. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
  107. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
  108. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/transforms/__init__.py +0 -0
  109. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/transforms/array.py +0 -0
  110. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
  111. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/tcia/__init__.py +0 -0
  112. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/tcia/label_desc.py +0 -0
  113. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/tcia/utils.py +0 -0
  114. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/utils.py +0 -0
  115. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/__init__.py +0 -0
  116. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/inferer.py +0 -0
  117. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/sampler.py +0 -0
  118. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/transforms.py +0 -0
  119. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/auto3dseg/__init__.py +0 -0
  120. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/auto3dseg/algo_gen.py +0 -0
  121. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/auto3dseg/analyzer.py +0 -0
  122. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/auto3dseg/operations.py +0 -0
  123. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/auto3dseg/seg_summarizer.py +0 -0
  124. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/auto3dseg/utils.py +0 -0
  125. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/__init__.py +0 -0
  126. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/__main__.py +0 -0
  127. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/config_item.py +0 -0
  128. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/config_parser.py +0 -0
  129. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/properties.py +0 -0
  130. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/reference_resolver.py +0 -0
  131. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/scripts.py +0 -0
  132. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/utils.py +0 -0
  133. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/bundle/workflows.py +0 -0
  134. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/config/__init__.py +0 -0
  135. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/config/__main__.py +0 -0
  136. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/config/check_env.py +0 -0
  137. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/config/deviceconfig.py +0 -0
  138. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/config/print_dependencies.py +0 -0
  139. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/config/type_definitions.py +0 -0
  140. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/__init__.py +0 -0
  141. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/box_utils.py +0 -0
  142. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/csv_saver.py +0 -0
  143. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/dataloader.py +0 -0
  144. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/dataset.py +0 -0
  145. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/dataset_summary.py +0 -0
  146. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/decathlon_datalist.py +0 -0
  147. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/fft_utils.py +0 -0
  148. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/folder_layout.py +0 -0
  149. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/grid_dataset.py +0 -0
  150. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/image_dataset.py +0 -0
  151. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/image_writer.py +0 -0
  152. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/iterable_dataset.py +0 -0
  153. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/itk_torch_bridge.py +0 -0
  154. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/meta_obj.py +0 -0
  155. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/meta_tensor.py +0 -0
  156. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/samplers.py +0 -0
  157. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/synthetic.py +0 -0
  158. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/test_time_augmentation.py +0 -0
  159. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/thread_buffer.py +0 -0
  160. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/torchscript_utils.py +0 -0
  161. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/ultrasound_confidence_map.py +0 -0
  162. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/utils.py +0 -0
  163. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/video_dataset.py +0 -0
  164. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/wsi_datasets.py +0 -0
  165. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/data/wsi_reader.py +0 -0
  166. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/engines/__init__.py +0 -0
  167. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/engines/evaluator.py +0 -0
  168. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/engines/trainer.py +0 -0
  169. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/engines/utils.py +0 -0
  170. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/engines/workflow.py +0 -0
  171. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/__init__.py +0 -0
  172. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/client/__init__.py +0 -0
  173. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/client/client_algo.py +0 -0
  174. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/client/monai_algo.py +0 -0
  175. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/utils/__init__.py +0 -0
  176. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/utils/constants.py +0 -0
  177. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/utils/exchange_object.py +0 -0
  178. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/fl/utils/filters.py +0 -0
  179. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/__init__.py +0 -0
  180. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/average_precision.py +0 -0
  181. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/calibration.py +0 -0
  182. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/checkpoint_loader.py +0 -0
  183. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/checkpoint_saver.py +0 -0
  184. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/classification_saver.py +0 -0
  185. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/clearml_handlers.py +0 -0
  186. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/confusion_matrix.py +0 -0
  187. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/decollate_batch.py +0 -0
  188. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/earlystop_handler.py +0 -0
  189. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/garbage_collector.py +0 -0
  190. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/hausdorff_distance.py +0 -0
  191. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/ignite_metric.py +0 -0
  192. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/logfile_handler.py +0 -0
  193. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/lr_schedule_handler.py +0 -0
  194. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/mean_dice.py +0 -0
  195. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/mean_iou.py +0 -0
  196. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/metric_logger.py +0 -0
  197. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/metrics_reloaded_handler.py +0 -0
  198. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/metrics_saver.py +0 -0
  199. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/mlflow_handler.py +0 -0
  200. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/nvtx_handlers.py +0 -0
  201. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/panoptic_quality.py +0 -0
  202. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/parameter_scheduler.py +0 -0
  203. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/postprocessing.py +0 -0
  204. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/probability_maps.py +0 -0
  205. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/regression_metrics.py +0 -0
  206. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/roc_auc.py +0 -0
  207. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/smartcache_handler.py +0 -0
  208. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/stats_handler.py +0 -0
  209. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/surface_distance.py +0 -0
  210. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/tensorboard_handlers.py +0 -0
  211. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/trt_handler.py +0 -0
  212. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/utils.py +0 -0
  213. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/handlers/validation_handler.py +0 -0
  214. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/inferers/__init__.py +0 -0
  215. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/inferers/inferer.py +0 -0
  216. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/inferers/splitter.py +0 -0
  217. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/inferers/utils.py +0 -0
  218. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/__init__.py +0 -0
  219. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/adversarial_loss.py +0 -0
  220. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/aucm_loss.py +0 -0
  221. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/barlow_twins.py +0 -0
  222. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/boundary_loss.py +0 -0
  223. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/calibration.py +0 -0
  224. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/cldice.py +0 -0
  225. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/contrastive.py +0 -0
  226. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/deform.py +0 -0
  227. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/dice.py +0 -0
  228. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/ds_loss.py +0 -0
  229. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/focal_loss.py +0 -0
  230. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/giou_loss.py +0 -0
  231. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/hausdorff_loss.py +0 -0
  232. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/image_dissimilarity.py +0 -0
  233. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/mcc_loss.py +0 -0
  234. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/multi_scale.py +0 -0
  235. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/nacl_loss.py +0 -0
  236. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/perceptual.py +0 -0
  237. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/spatial_mask.py +0 -0
  238. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/spectral_loss.py +0 -0
  239. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/ssim_loss.py +0 -0
  240. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/sure_loss.py +0 -0
  241. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/tversky.py +0 -0
  242. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/unified_focal_loss.py +0 -0
  243. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/losses/utils.py +0 -0
  244. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/__init__.py +0 -0
  245. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/absolute_volume_difference.py +0 -0
  246. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/average_precision.py +0 -0
  247. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/calibration.py +0 -0
  248. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/cumulative_average.py +0 -0
  249. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/embedding_collapse.py +0 -0
  250. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/f_beta_score.py +0 -0
  251. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/fid.py +0 -0
  252. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/froc.py +0 -0
  253. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/generalized_dice.py +0 -0
  254. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/loss_metric.py +0 -0
  255. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/meandice.py +0 -0
  256. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/meaniou.py +0 -0
  257. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/metric.py +0 -0
  258. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/mmd.py +0 -0
  259. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/panoptic_quality.py +0 -0
  260. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/regression.py +0 -0
  261. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/rocauc.py +0 -0
  262. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/surface_dice.py +0 -0
  263. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/utils.py +0 -0
  264. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/metrics/wrapper.py +0 -0
  265. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/__init__.py +0 -0
  266. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/__init__.py +0 -0
  267. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/acti_norm.py +0 -0
  268. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/activation.py +0 -0
  269. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/activation_checkpointing.py +0 -0
  270. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/aspp.py +0 -0
  271. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/attention_utils.py +0 -0
  272. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
  273. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/cablock.py +0 -0
  274. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/convolutions.py +0 -0
  275. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/crf.py +0 -0
  276. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/crossattention.py +0 -0
  277. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/denseblock.py +0 -0
  278. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/dints_block.py +0 -0
  279. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/downsample.py +0 -0
  280. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/dynunet_block.py +0 -0
  281. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/encoder.py +0 -0
  282. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/fcn.py +0 -0
  283. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/feature_pyramid_network.py +0 -0
  284. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/fft_utils_t.py +0 -0
  285. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/hyena.py +0 -0
  286. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/localnet_block.py +0 -0
  287. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/mednext_block.py +0 -0
  288. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/mlp.py +0 -0
  289. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/patchembedding.py +0 -0
  290. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/pos_embed_utils.py +0 -0
  291. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/regunet_block.py +0 -0
  292. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/rel_pos_embedding.py +0 -0
  293. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/segresnet_block.py +0 -0
  294. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/selfattention.py +0 -0
  295. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/spade_norm.py +0 -0
  296. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/spatialattention.py +0 -0
  297. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
  298. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/text_embedding.py +0 -0
  299. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/transformerblock.py +0 -0
  300. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/unetr_block.py +0 -0
  301. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/upsample.py +0 -0
  302. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/blocks/warp.py +0 -0
  303. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/__init__.py +0 -0
  304. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/conjugate_gradient.py +0 -0
  305. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/convutils.py +0 -0
  306. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/drop_path.py +0 -0
  307. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/factories.py +0 -0
  308. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/filtering.py +0 -0
  309. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/gmm.py +0 -0
  310. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/simplelayers.py +0 -0
  311. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/spatial_transforms.py +0 -0
  312. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/utils.py +0 -0
  313. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/vector_quantizer.py +0 -0
  314. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/layers/weight_init.py +0 -0
  315. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/__init__.py +0 -0
  316. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/ahnet.py +0 -0
  317. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/attentionunet.py +0 -0
  318. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/autoencoder.py +0 -0
  319. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/autoencoderkl.py +0 -0
  320. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/basic_unet.py +0 -0
  321. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/basic_unetplusplus.py +0 -0
  322. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/cell_sam_wrapper.py +0 -0
  323. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/classifier.py +0 -0
  324. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/controlnet.py +0 -0
  325. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/daf3d.py +0 -0
  326. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/densenet.py +0 -0
  327. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/diffusion_model_unet.py +0 -0
  328. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/dints.py +0 -0
  329. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/dynunet.py +0 -0
  330. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/efficientnet.py +0 -0
  331. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/flexible_unet.py +0 -0
  332. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/fullyconnectednet.py +0 -0
  333. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/generator.py +0 -0
  334. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/highresnet.py +0 -0
  335. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/hovernet.py +0 -0
  336. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/hyena_nd_unetr.py +0 -0
  337. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
  338. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/mednext.py +0 -0
  339. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/milmodel.py +0 -0
  340. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/navit.py +0 -0
  341. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/netadapter.py +0 -0
  342. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/patchgan_discriminator.py +0 -0
  343. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/quicknat.py +0 -0
  344. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/regressor.py +0 -0
  345. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/regunet.py +0 -0
  346. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/resnet.py +0 -0
  347. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/restormer.py +0 -0
  348. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/segresnet.py +0 -0
  349. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/senet.py +0 -0
  350. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/spade_autoencoderkl.py +0 -0
  351. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
  352. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/spade_network.py +0 -0
  353. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/swin_unetr.py +0 -0
  354. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/torchvision_fc.py +0 -0
  355. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/transchex.py +0 -0
  356. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/transformer.py +0 -0
  357. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/unet.py +0 -0
  358. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/unetr.py +0 -0
  359. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/varautoencoder.py +0 -0
  360. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/vista3d.py +0 -0
  361. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/vit.py +0 -0
  362. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/vitautoenc.py +0 -0
  363. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/vnet.py +0 -0
  364. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/voxelmorph.py +0 -0
  365. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/nets/vqvae.py +0 -0
  366. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/__init__.py +0 -0
  367. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/ddim.py +0 -0
  368. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/ddpm.py +0 -0
  369. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/pndm.py +0 -0
  370. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/rectified_flow.py +0 -0
  371. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/scheduler.py +0 -0
  372. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/trt_compiler.py +0 -0
  373. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/networks/utils.py +0 -0
  374. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/optimizers/__init__.py +0 -0
  375. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/optimizers/lr_finder.py +0 -0
  376. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/optimizers/lr_scheduler.py +0 -0
  377. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/optimizers/novograd.py +0 -0
  378. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/optimizers/utils.py +0 -0
  379. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/py.typed +0 -0
  380. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/__init__.py +0 -0
  381. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/adaptors.py +0 -0
  382. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/compose.py +0 -0
  383. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/__init__.py +0 -0
  384. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/array.py +0 -0
  385. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/batch.py +0 -0
  386. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/dictionary.py +0 -0
  387. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/functional.py +0 -0
  388. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/intensity/__init__.py +0 -0
  389. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/intensity/array.py +0 -0
  390. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/intensity/dictionary.py +0 -0
  391. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/inverse.py +0 -0
  392. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/inverse_batch_transform.py +0 -0
  393. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/io/__init__.py +0 -0
  394. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/io/array.py +0 -0
  395. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/io/dictionary.py +0 -0
  396. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/__init__.py +0 -0
  397. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/array.py +0 -0
  398. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/dictionary.py +0 -0
  399. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/functional.py +0 -0
  400. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/utils.py +0 -0
  401. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/meta_utility/__init__.py +0 -0
  402. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/meta_utility/dictionary.py +0 -0
  403. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/nvtx.py +0 -0
  404. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/post/__init__.py +0 -0
  405. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/post/array.py +0 -0
  406. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/post/dictionary.py +0 -0
  407. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/regularization/__init__.py +0 -0
  408. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/regularization/array.py +0 -0
  409. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/regularization/dictionary.py +0 -0
  410. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/signal/__init__.py +0 -0
  411. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/signal/array.py +0 -0
  412. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/signal/dictionary.py +0 -0
  413. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/smooth_field/__init__.py +0 -0
  414. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/smooth_field/array.py +0 -0
  415. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/smooth_field/dictionary.py +0 -0
  416. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/__init__.py +0 -0
  417. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/array.py +0 -0
  418. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/dictionary.py +0 -0
  419. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/functional.py +0 -0
  420. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/traits.py +0 -0
  421. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/transform.py +0 -0
  422. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utility/__init__.py +0 -0
  423. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utility/dictionary.py +0 -0
  424. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utils.py +0 -0
  425. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utils_create_transform_ims.py +0 -0
  426. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utils_morphological_ops.py +0 -0
  427. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
  428. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/__init__.py +0 -0
  429. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/compare_sources.py +0 -0
  430. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/component_store.py +0 -0
  431. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/decorators.py +0 -0
  432. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/deprecate_utils.py +0 -0
  433. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/dist.py +0 -0
  434. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/enums.py +0 -0
  435. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/jupyter_utils.py +0 -0
  436. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/misc.py +0 -0
  437. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/module.py +0 -0
  438. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/nvtx.py +0 -0
  439. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/ordering.py +0 -0
  440. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/profiling.py +0 -0
  441. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/safeeval.py +0 -0
  442. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/state_cacher.py +0 -0
  443. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/tf32.py +0 -0
  444. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/utils/type_conversion.py +0 -0
  445. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/__init__.py +0 -0
  446. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/class_activation_maps.py +0 -0
  447. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/gradient_based.py +0 -0
  448. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/img2tensorboard.py +0 -0
  449. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/occlusion_sensitivity.py +0 -0
  450. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/utils.py +0 -0
  451. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai/visualize/visualizer.py +0 -0
  452. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/SOURCES.txt +0 -0
  453. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/dependency_links.txt +0 -0
  454. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/not-zip-safe +0 -0
  455. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/requires.txt +0 -0
  456. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/top_level.txt +0 -0
  457. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/pyproject.toml +0 -0
  458. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/setup.cfg +0 -0
  459. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/setup.py +0 -0
  460. {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2643}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monai-weekly
3
- Version: 1.7.dev2642
3
+ Version: 1.7.dev2643
4
4
  Summary: AI Toolkit for Healthcare Imaging
5
5
  Author-email: MONAI Consortium <monai.contact@gmail.com>
6
6
  License: Apache License 2.0
@@ -86,6 +86,7 @@ from .utils.module import load_submodules # noqa: E402
86
86
  # *.so files and folder "_C" may not exist when the cpp extensions are not compiled
87
87
  excludes = "|".join(
88
88
  [
89
+ "(.*(nvimgcodec_pydicom_plugin)$)",
89
90
  "(^(monai.handlers))",
90
91
  "(^(monai.bundle))",
91
92
  "(^(monai.fl))",
@@ -136,4 +137,4 @@ except Exception:
136
137
 
137
138
  if MONAIEnvVars.debug():
138
139
  raise
139
- __commit_id__ = "8de81226c971dd27b5826d4bd60849d46aae9ff2"
140
+ __commit_id__ = "4f150a8f26664d1452a8e420d118f4541597f686"
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-10-18T02:14:29+0000",
11
+ "date": "2026-10-25T02:15:18+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "4835c649a66849125f1e656543264f5fa7d261c0",
15
- "version": "1.7.dev2642"
14
+ "full-revisionid": "08aa7d448a8733b13dadffc2f153f7bcb56f41cf",
15
+ "version": "1.7.dev2643"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -258,7 +258,6 @@ class AffineBoxToImageCoordinated(MapTransform, InvertibleTransform):
258
258
  Args:
259
259
  box_keys: Keys to pick box data for transformation. The box mode is assumed to be ``StandardMode``.
260
260
  box_ref_image_keys: The single key that represents the reference image to which ``box_keys`` are attached.
261
- remove_empty: whether to remove the boxes that are actually empty
262
261
  allow_missing_keys: don't raise exception if key is missing.
263
262
  image_meta_key: explicitly indicate the key of the corresponding metadata dictionary.
264
263
  for example, for data with key `image`, the metadata by default is in `image_meta_dict`.
@@ -347,7 +346,6 @@ class AffineBoxToWorldCoordinated(AffineBoxToImageCoordinated):
347
346
  Args:
348
347
  box_keys: Keys to pick box data for transformation. The box mode is assumed to be ``StandardMode``.
349
348
  box_ref_image_keys: The single key that represents the reference image to which ``box_keys`` are attached.
350
- remove_empty: whether to remove the boxes that are actually empty
351
349
  allow_missing_keys: don't raise exception if key is missing.
352
350
  image_meta_key: explicitly indicate the key of the corresponding metadata dictionary.
353
351
  for example, for data with key `image`, the metadata by default is in `image_meta_dict`.
@@ -9,7 +9,7 @@
9
9
  # See the License for the specific language governing permissions and
10
10
  # limitations under the License.
11
11
  """
12
- Utilities for accessing Nvidia MMARs
12
+ Deprecated utilities for accessing Nvidia MMARs. Use MONAI Bundles instead.
13
13
 
14
14
  See Also:
15
15
  - https://docs.nvidia.com/clara/clara-train-sdk/pt/mmar.html
@@ -18,18 +18,13 @@ See Also:
18
18
  from __future__ import annotations
19
19
 
20
20
  import json
21
- import os
22
- import warnings
23
21
  from collections.abc import Mapping
24
22
  from pathlib import Path
25
23
  from typing import Any
26
24
 
27
- import torch
28
-
29
- import monai.networks.nets as monai_nets
30
- from monai.apps.utils import download_and_extract, logger
25
+ from monai.apps.utils import download_and_extract
31
26
  from monai.config.type_definitions import PathLike
32
- from monai.networks.utils import copy_model_state
27
+ from monai.utils.deprecate_utils import DeprecatedError, deprecated
33
28
  from monai.utils.module import optional_import
34
29
 
35
30
  from .model_desc import MODEL_DESC
@@ -38,8 +33,21 @@ from .model_desc import RemoteMMARKeys as Keys
38
33
  __all__ = ["get_model_spec", "download_mmar", "load_from_mmar"]
39
34
 
40
35
 
41
- def get_model_spec(idx: int | str) -> dict | Any:
42
- """get model specification by `idx`. `idx` could be index of the constant tuple of dict or the actual model ID."""
36
+ def _get_model_spec(idx: int | str) -> dict | Any:
37
+ """
38
+ Look up a model specification without emitting a deprecation warning.
39
+
40
+ Args:
41
+ idx: An index into ``MODEL_DESC`` or a model ID. Negative indices count from the end.
42
+ Model IDs ignore case and leading or trailing whitespace.
43
+
44
+ Returns:
45
+ The matching model specification. Unknown IDs and inputs other than integers or strings
46
+ are returned unchanged.
47
+
48
+ Raises:
49
+ IndexError: If an integer index is outside the range of ``MODEL_DESC``.
50
+ """
43
51
  if isinstance(idx, int):
44
52
  return MODEL_DESC[idx]
45
53
  if isinstance(idx, str):
@@ -50,6 +58,21 @@ def get_model_spec(idx: int | str) -> dict | Any:
50
58
  return idx
51
59
 
52
60
 
61
+ @deprecated(
62
+ since="1.7.0",
63
+ removed="1.9.0",
64
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
65
+ )
66
+ def get_model_spec(idx: int | str) -> dict | Any:
67
+ """
68
+ Get a model specification by index or model ID.
69
+
70
+ .. deprecated:: 1.7.0
71
+ NVIDIA Clara MMAR support will be removed in version 1.9.0. Use MONAI Bundles instead.
72
+ """
73
+ return _get_model_spec(idx)
74
+
75
+
53
76
  def _get_all_ngc_models(pattern, page_index=0, page_size=50):
54
77
  url = "https://api.ngc.nvidia.com/v2/search/catalog/resources/MODEL"
55
78
  query_dict = {
@@ -99,16 +122,20 @@ def _get_ngc_url(model_name: str, version: str, model_prefix: str = "") -> str:
99
122
  return f"https://api.ngc.nvidia.com/v2/models/{model_prefix}{model_name}/versions/{version}/zip"
100
123
 
101
124
 
102
- def _get_ngc_doc_url(model_name: str, model_prefix: str = "") -> str:
103
- return f"https://ngc.nvidia.com/catalog/models/{model_prefix}{model_name}"
104
-
105
-
125
+ @deprecated(
126
+ since="1.7.0",
127
+ removed="1.9.0",
128
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
129
+ )
106
130
  def download_mmar(
107
131
  item: str | Mapping, mmar_dir: PathLike | None = None, progress: bool = True, api: bool = True, version: int = -1
108
132
  ) -> Path:
109
133
  """
110
134
  Download and extract Medical Model Archive (MMAR) from Nvidia Clara Train.
111
135
 
136
+ .. deprecated:: 1.7.0
137
+ NVIDIA Clara MMAR support will be removed in version 1.9.0. Use MONAI Bundles instead.
138
+
112
139
  See Also:
113
140
  - https://docs.nvidia.com/clara/
114
141
  - Nvidia NGC Registry CLI
@@ -165,7 +192,7 @@ def download_mmar(
165
192
  return model_dir_list[0]
166
193
 
167
194
  if not isinstance(item, Mapping):
168
- item = get_model_spec(item)
195
+ item = _get_model_spec(item)
169
196
  ver = item.get(Keys.VERSION, 1)
170
197
  if version > 0:
171
198
  ver = str(version)
@@ -185,6 +212,11 @@ def download_mmar(
185
212
  return model_dir
186
213
 
187
214
 
215
+ @deprecated(
216
+ since="1.7.0",
217
+ removed="1.9.0",
218
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
219
+ )
188
220
  def load_from_mmar(
189
221
  item: Mapping | str | int,
190
222
  mmar_dir: PathLike | None = None,
@@ -198,117 +230,31 @@ def load_from_mmar(
198
230
  model_file: PathLike | None = None,
199
231
  ) -> Any:
200
232
  """
201
- Download and extract Medical Model Archive (MMAR) model weights from Nvidia Clara Train.
233
+ Disabled loader for NVIDIA Clara Medical Model Archive (MMAR) models.
234
+
235
+ .. deprecated:: 1.7.0
236
+ Loading MMAR models is disabled for security reasons. This function will be removed
237
+ in version 1.9.0. Use MONAI Bundles instead.
238
+
239
+ Every call raises :class:`monai.utils.DeprecatedError` before downloading or
240
+ loading a model. The arguments are kept for compatibility and are ignored.
241
+ Their former meanings are listed below.
202
242
 
203
243
  Args:
204
244
  item: the corresponding model item from `MODEL_DESC`.
205
- mmar_dir: : target directory to store the MMAR, default is mmars subfolder under `torch.hub get_dir()`.
245
+ mmar_dir: target directory to store the MMAR, default is mmars subfolder under `torch.hub get_dir()`.
206
246
  progress: whether to display a progress bar when downloading the content.
207
247
  version: version number of the MMAR. Set it to `-1` to use `item[Keys.VERSION]`.
208
248
  map_location: pytorch API parameter for `torch.load` or `torch.jit.load`.
209
249
  pretrained: whether to load the pretrained weights after initializing a network module.
210
250
  weights_only: whether to load only the weights instead of initializing the network module and assign weights.
211
251
  model_key: a key to search in the model file or config file for the model dictionary.
212
- Currently this function assumes that the model dictionary has
252
+ The model dictionary was expected to have
213
253
  `{"[name|path]": "test.module", "args": {'kw': 'test'}}`.
214
- api: whether to query NGC API to get model infomation.
254
+ api: whether to query NGC API to get model information.
215
255
  model_file: the relative path to the model file within an MMAR.
216
256
 
217
- Examples::
218
- >>> from monai.apps import load_from_mmar
219
- >>> unet_model = load_from_mmar("clara_pt_prostate_mri_segmentation_1", mmar_dir=".", map_location="cpu")
220
- >>> print(unet_model)
221
-
222
- See Also:
223
- https://docs.nvidia.com/clara/
224
- """
225
- if api:
226
- item = {Keys.NAME: get_model_spec(item)[Keys.NAME] if isinstance(item, int) else f"{item}"}
227
- if not isinstance(item, Mapping):
228
- item = get_model_spec(item)
229
- model_dir = download_mmar(item=item, mmar_dir=mmar_dir, progress=progress, version=version, api=api)
230
- if model_file is None:
231
- model_file = os.path.join("models", "model.pt")
232
- _model_file = model_dir / item.get(Keys.MODEL_FILE, model_file)
233
- logger.info(f'\n*** "{item.get(Keys.NAME)}" available at {model_dir}.')
234
-
235
- # loading with `torch.jit.load`
236
- if _model_file.name.endswith(".ts"):
237
- if not pretrained:
238
- warnings.warn("Loading a ScriptModule, 'pretrained' option ignored.")
239
- if weights_only:
240
- warnings.warn("Loading a ScriptModule, 'weights_only' option ignored.")
241
- return torch.jit.load(_model_file, map_location=map_location)
242
-
243
- # loading with `torch.load`
244
- model_dict = torch.load(_model_file, map_location=map_location, weights_only=True)
245
- if weights_only:
246
- return model_dict.get(model_key, model_dict) # model_dict[model_key] or model_dict directly
247
-
248
- # 1. search `model_dict['train_config]` for model config spec.
249
- model_config = _get_val(dict(model_dict).get("train_conf", {}), key=model_key, default={})
250
- if not model_config or not isinstance(model_config, Mapping):
251
- # 2. search json CONFIG_FILE for model config spec.
252
- json_path = model_dir / item.get(Keys.CONFIG_FILE, os.path.join("config", "config_train.json"))
253
- with open(json_path) as f:
254
- conf_dict = json.load(f)
255
- conf_dict = dict(conf_dict)
256
- model_config = _get_val(conf_dict, key=model_key, default={})
257
- if not model_config:
258
- # 3. search `model_dict` for model config spec.
259
- model_config = _get_val(dict(model_dict), key=model_key, default={})
260
-
261
- if not (model_config and isinstance(model_config, Mapping)):
262
- raise ValueError(
263
- f"Could not load model config dictionary from config: {item.get(Keys.CONFIG_FILE)}, "
264
- f"or from model file: {item.get(Keys.MODEL_FILE)}."
265
- )
266
-
267
- # parse `model_config` for model class and model parameters
268
- if model_config.get("name"): # model config section is a "name"
269
- model_name = model_config["name"]
270
- model_cls = monai_nets.__dict__[model_name]
271
- elif model_config.get("path"): # model config section is a "path"
272
- # https://docs.nvidia.com/clara/clara-train-sdk/pt/byom.html
273
- model_module, model_name = model_config.get("path", ".").rsplit(".", 1)
274
- model_cls, has_cls = optional_import(module=model_module, name=model_name)
275
- if not has_cls:
276
- raise ValueError(
277
- f"Could not load MMAR model config {model_config.get('path', '')}, "
278
- f"Please make sure MMAR's sub-folders in '{model_dir}' is on the PYTHONPATH."
279
- "See also: https://docs.nvidia.com/clara/clara-train-sdk/pt/byom.html"
280
- )
281
- else:
282
- raise ValueError(f"Could not load model config {model_config}.")
283
-
284
- logger.info(f"*** Model: {model_cls}")
285
- model_kwargs = model_config.get("args", None)
286
- if model_kwargs:
287
- model_inst = model_cls(**model_kwargs)
288
- logger.info(f"*** Model params: {model_kwargs}")
289
- else:
290
- model_inst = model_cls()
291
- if pretrained:
292
- _, changed, unchanged = copy_model_state(model_inst, model_dict.get(model_key, model_dict), inplace=True)
293
- if not (changed and not unchanged): # not all model_inst variables are changed
294
- logger.warning(f"*** Loading model state -- unchanged: {len(unchanged)}, changed: {len(changed)}.")
295
- logger.info("\n---")
296
- doc_url = item.get(Keys.DOC) or _get_ngc_doc_url(item[Keys.NAME], model_prefix="nvidia:med:")
297
- logger.info(f"For more information, please visit {doc_url}\n")
298
- return model_inst
299
-
300
-
301
- def _get_val(input_dict: Mapping, key: str = "model", default: Any | None = None) -> Any | None:
302
- """
303
- Search for the item with `key` in `config_dict`.
304
- Returns: the first occurrence of `key` in a breadth first search.
257
+ Raises:
258
+ DeprecatedError: always, because MMAR loading is disabled for security reasons.
305
259
  """
306
- if key in input_dict:
307
- return input_dict[key]
308
- for sub_dict in input_dict:
309
- val = input_dict[sub_dict]
310
- if isinstance(val, Mapping):
311
- found_val = _get_val(val, key=key, default=None)
312
- if found_val is not None:
313
- return found_val
314
- return default
260
+ raise DeprecatedError("load_from_mmar is disabled for security reasons. Please use MONAI Bundles instead.")
@@ -20,19 +20,31 @@ from __future__ import annotations
20
20
  import os
21
21
  from typing import Any
22
22
 
23
+ from monai.utils.deprecate_utils import deprecated
24
+
23
25
  __all__ = ["MODEL_DESC", "RemoteMMARKeys"]
24
26
 
25
27
 
28
+ @deprecated(
29
+ since="1.7.0",
30
+ removed="1.9.0",
31
+ msg_suffix="NVIDIA Clara MMAR support is deprecated. Please use MONAI Bundles instead.",
32
+ )
26
33
  class RemoteMMARKeys:
27
34
  """
28
35
  Data keys used for loading MMAR.
29
36
  ID must uniquely define an MMAR.
37
+
38
+ .. deprecated:: 1.7.0
39
+ NVIDIA Clara MMAR support will be removed in version 1.9.0. Use MONAI Bundles instead.
40
+ Reading these constants or ``MODEL_DESC`` does not emit a warning; both will be removed
41
+ with the MMAR module in version 1.9.0.
30
42
  """
31
43
 
32
44
  ID = "id" # unique MMAR
33
45
  NAME = "name" # MMAR name for readability
34
46
  URL = "url" # remote location of the MMAR, see also: `monai.apps.mmars.mmars._get_ngc_url`
35
- DOC = "doc" # documentation page of the remote model, see also: `monai.apps.mmars.mmars._get_ngc_doc_url`
47
+ DOC = "doc" # documentation page of the remote model
36
48
  FILE_TYPE = "file_type" # type of the compressed MMAR
37
49
  HASH_TYPE = "hash_type" # hashing method for the compressed MMAR
38
50
  HASH_VAL = "hash_val" # hashing value for the compressed MMAR
@@ -178,7 +178,6 @@ class GenerateInstanceBorderd(Transform):
178
178
  border_key: the output key where instance border map is written. Defaults to `"border"`.
179
179
  kernel_size: the size of the Sobel kernel. Defaults to 21.
180
180
  dtype: target data content type to convert, default is np.float32.
181
- allow_missing_keys: don't raise exception if key is missing.
182
181
 
183
182
  Raises:
184
183
  ValueError: when the `hover_map` has only one value.
@@ -259,7 +258,6 @@ class GenerateWatershedMarkersd(Transform):
259
258
  min_object_size: objects smaller than this size are removed. Defaults to 10.
260
259
  postprocess_fn: execute additional post transformation on marker. Defaults to None.
261
260
  dtype: target data content type to convert, default is np.uint8.
262
- allow_missing_keys: don't raise exception if key is missing.
263
261
  """
264
262
 
265
263
  backend = GenerateWatershedMarkers.backend
@@ -1087,7 +1087,7 @@ class NvImgCodecPydicomReader(PydicomReader):
1087
1087
  Load DICOM images using Pydicom with GPU-accelerated decompression via nvImageCodec.
1088
1088
 
1089
1089
  This reader extends :py:class:`PydicomReader` and registers the nvImageCodec pydicom
1090
- decoder plugin on initialization. The plugin accelerates decoding of compressed pixel data
1090
+ decoder plugin lazily on first use. The plugin accelerates decoding of compressed pixel data
1091
1091
  for JPEG, JPEG 2000, and HTJ2K transfer syntaxes when CUDA, CuPy and ``nvidia-nvimgcodec`` are available.
1092
1092
 
1093
1093
  If nvImageCodec is not available, a warning is issued and the reader falls back to the
@@ -1117,8 +1117,8 @@ class NvImgCodecPydicomReader(PydicomReader):
1117
1117
 
1118
1118
  This reader only declares ``@require_pkg(pkg_name="pydicom")`` so that :py:class:`monai.transforms.LoadImage`
1119
1119
  can register it without hard-failing when GPU dependencies are missing. ``pydicom`` is required to construct
1120
- the reader; nvimgcodec, CUDA, and CuPy availability is checked at runtime with a warning issued and fallback to
1121
- default pydicom decoders if missing.
1120
+ the reader; nvImageCodec, CUDA, and CuPy availability is checked when a DICOM file is verified or read.
1121
+ If the plugin is unavailable or registration fails, the reader falls back to the default pydicom decoders.
1122
1122
 
1123
1123
  Args:
1124
1124
  channel_dim: the channel dimension of the input image, default is None.
@@ -1159,6 +1159,14 @@ class NvImgCodecPydicomReader(PydicomReader):
1159
1159
  to_gpu=False,
1160
1160
  **kwargs,
1161
1161
  )
1162
+
1163
+ self._nvimgcodec_available = False
1164
+ self._setup_done = False
1165
+
1166
+ def _ensure_setup(self) -> None:
1167
+ """Import and register the nvImageCodec plugin on first use only."""
1168
+ if self._setup_done:
1169
+ return
1162
1170
  from monai.data.nvimgcodec_pydicom_plugin import is_nvimgcodec_available, register_as_decoder_plugin
1163
1171
 
1164
1172
  self._nvimgcodec_available = is_nvimgcodec_available()
@@ -1167,14 +1175,28 @@ class NvImgCodecPydicomReader(PydicomReader):
1167
1175
  "NvImgCodecPydicomReader: nvImageCodec decoder plugin did not register successfully. "
1168
1176
  "Falling back to default pydicom decoders."
1169
1177
  )
1178
+ self._setup_done = True
1170
1179
 
1171
1180
  def verify_suffix(self, filename: Sequence[PathLike] | PathLike) -> bool:
1172
1181
  """
1173
1182
  Verify whether the specified file or files are DICOM and nvImageCodec is available.
1174
1183
  """
1175
- if not has_pydicom or not self._nvimgcodec_available:
1184
+ if not has_pydicom or not is_dicom_path(filename):
1176
1185
  return False
1177
- return is_dicom_path(filename)
1186
+ self._ensure_setup()
1187
+ return self._nvimgcodec_available
1188
+
1189
+ def read(self, data: Sequence[PathLike] | PathLike, **kwargs):
1190
+ """Read image data using the configured reader.
1191
+
1192
+ Args:
1193
+ data: Input image data or file path.
1194
+ **kwargs: Additional arguments passed to the underlying reader.
1195
+
1196
+ Returns:
1197
+ The image data returned by the underlying reader."""
1198
+ self._ensure_setup()
1199
+ return super().read(data, **kwargs)
1178
1200
 
1179
1201
 
1180
1202
  @require_pkg(pkg_name="nibabel")
@@ -66,7 +66,7 @@ def is_nvimgcodec_available() -> bool:
66
66
  def register_as_decoder_plugin(module_path: str | None = None) -> bool:
67
67
  """Register the nvImageCodec pydicom decoder plugin."""
68
68
  if not is_nvimgcodec_available():
69
- _logger.warning("nvImageCodec is not available; skipping pydicom decoder plugin registration.")
69
+ _logger.debug("nvImageCodec is not available; skipping pydicom decoder plugin registration.")
70
70
  return False
71
71
  if not has_pydicom_plugin:
72
72
  return False
@@ -241,6 +241,7 @@ class ZarrAvgMerger(Merger):
241
241
  If True, chunk shape will be guessed from `shape` and `dtype`.
242
242
  If False, it will be set to `shape`, i.e., single chunk for the whole array.
243
243
  If an int, the chunk size in each dimension will be given by the value of `chunks`.
244
+ thread_locking: whether to use thread locking during aggregation. Default is True.
244
245
  """
245
246
 
246
247
  @deprecated_arg(
@@ -286,24 +287,28 @@ class ZarrAvgMerger(Merger):
286
287
  self.value_dtype = value_dtype
287
288
  self.count_dtype = count_dtype
288
289
  self.store = store
289
- self.tmpdir: TemporaryDirectory | None
290
+ # Use separate tmpdir attributes so both TemporaryDirectory objects remain alive
291
+ # for the full lifetime of this instance. Previously a single `self.tmpdir` was
292
+ # overwritten when both value_store and count_store were None, causing the first
293
+ # TemporaryDirectory to be garbage-collected immediately.
294
+ self.value_tmpdir: TemporaryDirectory | None = None
295
+ self.count_tmpdir: TemporaryDirectory | None = None
290
296
 
291
297
  # Handle zarr v3 vs older versions
292
298
  is_zarr_v3 = version_geq(get_package_version("zarr"), "3.0.0")
293
299
 
294
300
  if is_zarr_v3:
295
301
  if value_store is None:
296
- self.tmpdir = TemporaryDirectory()
297
- self.value_store = zarr.storage.LocalStore(self.tmpdir.name) # type: ignore
302
+ self.value_tmpdir = TemporaryDirectory()
303
+ self.value_store = zarr.storage.LocalStore(self.value_tmpdir.name) # type: ignore
298
304
  else:
299
305
  self.value_store = value_store # type: ignore
300
306
  if count_store is None:
301
- self.tmpdir = TemporaryDirectory()
302
- self.count_store = zarr.storage.LocalStore(self.tmpdir.name) # type: ignore
307
+ self.count_tmpdir = TemporaryDirectory()
308
+ self.count_store = zarr.storage.LocalStore(self.count_tmpdir.name) # type: ignore
303
309
  else:
304
310
  self.count_store = count_store # type: ignore
305
311
  else:
306
- self.tmpdir = None
307
312
  self.value_store = zarr.storage.TempStore() if value_store is None else value_store # type: ignore
308
313
  self.count_store = zarr.storage.TempStore() if count_store is None else count_store # type: ignore
309
314
 
@@ -325,7 +330,6 @@ class ZarrAvgMerger(Merger):
325
330
  if codecs is not None:
326
331
  self.codecs = codecs
327
332
  elif compressor is not None:
328
- # Convert compressor to codec format
329
333
  if isinstance(compressor, (list, tuple)):
330
334
  self.codecs = compressor
331
335
  else:
@@ -354,19 +358,22 @@ class ZarrAvgMerger(Merger):
354
358
  self.count_codecs = None
355
359
  else:
356
360
  # For zarr v2, use compressors
357
- if codecs is not None:
358
- # If codecs are specified in v2, use the first codec as compressor
359
- self.codecs = codecs[0] if isinstance(codecs, (list, tuple)) else codecs
361
+ if isinstance(codecs, (list, tuple)):
362
+ self.codecs = codecs[0] if codecs else None
363
+ elif codecs is not None:
364
+ self.codecs = codecs
360
365
  else:
361
366
  self.codecs = compressor # type: ignore[assignment]
362
-
363
- if value_codecs is not None:
364
- self.value_codecs = value_codecs[0] if isinstance(value_codecs, (list, tuple)) else value_codecs
367
+ if isinstance(value_codecs, (list, tuple)):
368
+ self.value_codecs = value_codecs[0] if value_codecs else None
369
+ elif value_codecs is not None:
370
+ self.value_codecs = value_codecs
365
371
  else:
366
372
  self.value_codecs = value_compressor # type: ignore[assignment]
367
-
368
- if count_codecs is not None:
369
- self.count_codecs = count_codecs[0] if isinstance(count_codecs, (list, tuple)) else count_codecs
373
+ if isinstance(count_codecs, (list, tuple)):
374
+ self.count_codecs = count_codecs[0] if count_codecs else None
375
+ elif count_codecs is not None:
376
+ self.count_codecs = count_codecs
370
377
  else:
371
378
  self.count_codecs = count_compressor # type: ignore[assignment]
372
379
 
@@ -79,8 +79,6 @@ class LabelQualityScore(Metric):
79
79
  with uncertainty
80
80
  Args:
81
81
  include_background: Whether to include the background of the spatial image or channel 0 of the 1-D vector
82
- spatial_map: Boolean, if set to True, spatial map of variance will be returned corresponding to i/p image
83
- dimensions
84
82
  scalar_reduction: reduction type of the metric, either 'sum' or 'mean' can be used
85
83
 
86
84
  """
@@ -43,12 +43,18 @@ class ConfusionMatrixMetric(CumulativeIterationMetric):
43
43
  ``"miss rate"``, ``"fall out"``, ``"false discovery rate"``, ``"false omission rate"``,
44
44
  ``"prevalence threshold"``, ``"threat score"``, ``"accuracy"``, ``"balanced accuracy"``,
45
45
  ``"f1 score"``, ``"matthews correlation coefficient"``, ``"fowlkes mallows index"``,
46
- ``"informedness"``, ``"markedness"``]
46
+ ``"informedness"``, ``"markedness"``, ``"positive likelihood ratio"``,
47
+ ``"negative likelihood ratio"``, ``"diagnostic odds ratio"``]
47
48
  Some of the metrics have multiple aliases (as shown in the wikipedia page aforementioned),
48
49
  and you can also input those names instead.
49
50
  Except for input only one metric, multiple metrics are also supported via input a sequence of metric names, such as
50
51
  ("sensitivity", "precision", "recall"), if ``compute_sample`` is ``True``, multiple ``f`` and ``not_nans`` will be
51
52
  returned with the same order as input names when calling the class.
53
+ Note that for the likelihood-ratio family — ``"positive likelihood ratio"`` (``LR+ = tpr / fpr``),
54
+ ``"negative likelihood ratio"`` (``LR- = fnr / tnr``) and ``"diagnostic odds ratio"``
55
+ (``DOR = (tp * tn) / (fp * fn)``) — a zero denominator yields ``NaN`` (e.g. ``LR+`` is undefined
56
+ when the false positive rate is ``0``, and ``DOR`` when either ``fp`` or ``fn`` is ``0``),
57
+ following the same convention as the other ratio-based metrics.
52
58
  compute_sample: when reducing, if ``True``, each sample's metric will be computed based on each confusion matrix first.
53
59
  if ``False``, compute reduction on the confusion matrices first, defaults to ``False``.
54
60
  reduction: define mode of reduction to the metrics, will only apply reduction on `not-nan` values,
@@ -63,6 +69,7 @@ class ConfusionMatrixMetric(CumulativeIterationMetric):
63
69
  Voxels with this label are excluded from the score, which is useful for padding, unlabeled regions,
64
70
  or boundary artifacts. For federated or aggregated settings, ensure all clients use the same
65
71
  ignore_index to keep score values comparable.
72
+ For a single-channel binary target, ignoring channel 0 excludes locations where the target is 1.
66
73
 
67
74
  """
68
75
 
@@ -153,11 +160,19 @@ def get_confusion_matrix(
153
160
  The values should be binarized.
154
161
  y: ground truth to compute the metric. It must be one-hot format and first dim is batch.
155
162
  The values should be binarized.
163
+ A single channel is a binary membership indicator, not a map of class IDs.
156
164
  include_background: whether to include metric computation on the first channel of
157
165
  the predicted output. Defaults to True.
158
166
  ignore_index: single integer class index (or sentinel value) to ignore from the metric computation.
159
- If ignore_index refers to a valid class channel, that channel is excluded. If it is outside the
160
- class range, ignored regions are inferred from spatial locations where all label channels are zero.
167
+ For a valid class index, voxels belonging to that channel are excluded from all classes' counts.
168
+ The existing channel-exclusion behavior is retained for multi-channel targets. With a single-channel
169
+ binary target, ignore_index=0 excludes locations where the target is 1 without zeroing the channel.
170
+ Counts at valid single-channel locations do not depend on include_background. Out-of-range values use all-zero
171
+ locations for multi-channel targets and direct value comparison for single-channel targets.
172
+
173
+ Returns:
174
+ Tensor of shape [B, C, 4], containing true positive, false positive, true negative, and false negative
175
+ counts, in that order, for each sample and evaluated channel.
161
176
 
162
177
  Raises:
163
178
  ValueError: when `y_pred` and `y` have different shapes.
@@ -173,17 +188,23 @@ def get_confusion_matrix(
173
188
  # get confusion matrix related metric
174
189
  batch_size, n_class = y_pred.shape[:2]
175
190
 
176
- # Create spatial mask if ignore_index is provided
177
- if ignore_index is not None and 0 <= ignore_index < (y_pred.shape[1] + (0 if include_background else 1)):
191
+ # Single-channel targets need spatial exclusion only, preserving errors at valid locations.
192
+ if (
193
+ ignore_index is not None
194
+ and original_y.shape[1] > 1
195
+ and 0 <= ignore_index < (y_pred.shape[1] + (0 if include_background else 1))
196
+ ):
178
197
  ignore_channel = ignore_index if include_background else ignore_index - 1
179
198
  if 0 <= ignore_channel < y_pred.shape[1]:
180
199
  y_pred = y_pred.clone()
181
200
  y = y.clone()
182
201
  y_pred[:, ignore_channel] = 0
183
202
  y[:, ignore_channel] = 0
184
- mask = None
203
+ if ignore_index is not None and 0 <= ignore_index < original_y.shape[1]:
204
+ # Every channel represents binary membership; comparison also supports boolean targets.
205
+ mask = (original_y[:, ignore_index : ignore_index + 1] == 0).float()
185
206
  else:
186
- mask = create_ignore_mask(original_y if ignore_index is not None else y, ignore_index)
207
+ mask = create_ignore_mask(original_y, ignore_index)
187
208
 
188
209
  # convert to [BNS], where S is the number of pixels for one sample.
189
210
  y_pred = y_pred.reshape(batch_size, n_class, -1)
@@ -226,7 +247,8 @@ def compute_confusion_matrix_metric(metric_name: str, confusion_matrix: torch.Te
226
247
  ``"miss rate"``, ``"fall out"``, ``"false discovery rate"``, ``"false omission rate"``,
227
248
  ``"prevalence threshold"``, ``"threat score"``, ``"accuracy"``, ``"balanced accuracy"``,
228
249
  ``"f1 score"``, ``"matthews correlation coefficient"``, ``"fowlkes mallows index"``,
229
- ``"informedness"``, ``"markedness"``]
250
+ ``"informedness"``, ``"markedness"``, ``"positive likelihood ratio"``,
251
+ ``"negative likelihood ratio"``, ``"diagnostic odds ratio"``]
230
252
  Some of the metrics have multiple aliases (as shown in the wikipedia page aforementioned),
231
253
  and you can also input those names instead.
232
254
  confusion_matrix: Please see the doc string of the function ``get_confusion_matrix`` for more details.
@@ -304,6 +326,19 @@ def compute_confusion_matrix_metric(metric_name: str, confusion_matrix: torch.Te
304
326
  npv = torch.where((tn + fn) > 0, tn / (tn + fn), nan_tensor)
305
327
  numerator = ppv + npv - 1.0
306
328
  denominator = 1.0
329
+ elif metric == "plr":
330
+ # LR+ = sensitivity / (1 - specificity) = tpr / fpr; fpr == 0 yields NaN
331
+ tpr = torch.where(p > 0, tp / p, nan_tensor)
332
+ fpr = torch.where(n > 0, fp / n, nan_tensor)
333
+ numerator, denominator = tpr, fpr
334
+ elif metric == "nlr":
335
+ # LR- = (1 - sensitivity) / specificity = fnr / tnr; tnr == 0 yields NaN
336
+ fnr = torch.where(p > 0, fn / p, nan_tensor)
337
+ tnr = torch.where(n > 0, tn / n, nan_tensor)
338
+ numerator, denominator = fnr, tnr
339
+ elif metric == "dor":
340
+ # DOR = (LR+) / (LR-) = (tp * tn) / (fp * fn); fp * fn == 0 yields NaN
341
+ numerator, denominator = tp * tn, fp * fn
307
342
  else:
308
343
  raise NotImplementedError("the metric is not implemented.")
309
344
 
@@ -360,4 +395,10 @@ def check_confusion_matrix_metric_name(metric_name: str) -> str:
360
395
  return "bm"
361
396
  if metric_name in ["markedness", "deltap", "mk"]:
362
397
  return "mk"
398
+ if metric_name in ["positive_likelihood_ratio", "plr", "lr+"]:
399
+ return "plr"
400
+ if metric_name in ["negative_likelihood_ratio", "nlr", "lr-"]:
401
+ return "nlr"
402
+ if metric_name in ["diagnostic_odds_ratio", "dor"]:
403
+ return "dor"
363
404
  raise NotImplementedError("the metric is not implemented.")