monai-weekly 1.7.dev2641__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.
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/__init__.py +2 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_version.py +3 -3
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/dictionary.py +0 -2
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/mmars/mmars.py +62 -116
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/mmars/model_desc.py +13 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/post/dictionary.py +0 -2
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/utils.py +41 -6
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/grid_dataset.py +10 -7
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/image_reader.py +27 -5
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/nvimgcodec_pydicom_plugin.py +1 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/synthetic.py +40 -9
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/inferers/merger.py +30 -17
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/active_learning_metrics.py +0 -2
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/confusion_matrix.py +49 -8
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/embedding_collapse.py +14 -4
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/fid.py +1 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/hausdorff_distance.py +14 -9
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/meaniou.py +4 -10
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/surface_distance.py +88 -18
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/dints.py +9 -5
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/regunet.py +12 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/segresnet_ds.py +10 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/__init__.py +4 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/post/array.py +89 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/post/dictionary.py +58 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/dictionary.py +8 -2
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utility/array.py +16 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utils.py +84 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/deprecate_utils.py +2 -2
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/LICENSE +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/MANIFEST.in +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/README.md +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm.cpp +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm.h +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/_extensions/loader.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/__main__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/auto_runner.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/bundle_gen.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/data_analyzer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/hpo_gen.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/transforms.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/datasets.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepedit/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepedit/interaction.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepedit/transforms.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/dataset.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/interaction.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/deepgrow/transforms.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/metrics/coco.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/metrics/matching.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/networks/retinanet_detector.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/networks/retinanet_network.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/box_ops.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/anchor_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/box_coder.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/box_selector.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/detector_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/utils/predict_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/generation/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/mmars/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/__main__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/nnunet_bundle.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nnunet/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nuclick/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/nuclick/transforms.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/stain/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/pathology/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/complex_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/fastmri_reader.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/mri_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/tcia/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/tcia/label_desc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/tcia/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/inferer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/sampler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/vista3d/transforms.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/auto3dseg/algo_gen.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/auto3dseg/analyzer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/auto3dseg/operations.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/auto3dseg/seg_summarizer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/__main__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/config_item.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/config_parser.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/properties.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/reference_resolver.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/scripts.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/bundle/workflows.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/config/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/config/__main__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/config/check_env.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/config/deviceconfig.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/config/print_dependencies.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/config/type_definitions.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/box_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/csv_saver.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/dataloader.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/dataset.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/dataset_summary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/decathlon_datalist.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/fft_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/folder_layout.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/image_dataset.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/image_writer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/iterable_dataset.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/itk_torch_bridge.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/meta_obj.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/meta_tensor.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/samplers.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/test_time_augmentation.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/thread_buffer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/torchscript_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/ultrasound_confidence_map.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/video_dataset.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/wsi_datasets.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/wsi_reader.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/engines/evaluator.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/engines/trainer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/engines/workflow.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/client/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/client/client_algo.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/client/monai_algo.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/utils/constants.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/utils/exchange_object.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/fl/utils/filters.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/average_precision.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/calibration.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/checkpoint_loader.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/checkpoint_saver.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/classification_saver.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/clearml_handlers.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/decollate_batch.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/earlystop_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/garbage_collector.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/ignite_metric.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/logfile_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/lr_schedule_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/mean_dice.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/mean_iou.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/metric_logger.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/metrics_reloaded_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/metrics_saver.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/mlflow_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/nvtx_handlers.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/parameter_scheduler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/postprocessing.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/probability_maps.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/regression_metrics.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/roc_auc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/smartcache_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/stats_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/tensorboard_handlers.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/trt_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/handlers/validation_handler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/inferers/splitter.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/inferers/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/adversarial_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/aucm_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/barlow_twins.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/boundary_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/calibration.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/cldice.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/contrastive.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/deform.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/dice.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/ds_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/focal_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/giou_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/hausdorff_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/image_dissimilarity.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/mcc_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/multi_scale.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/nacl_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/perceptual.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/spatial_mask.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/spectral_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/ssim_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/sure_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/tversky.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/unified_focal_loss.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/losses/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/absolute_volume_difference.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/average_precision.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/calibration.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/cumulative_average.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/f_beta_score.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/froc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/generalized_dice.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/loss_metric.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/meandice.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/metric.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/mmd.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/regression.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/rocauc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/surface_dice.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/metrics/wrapper.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/acti_norm.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/activation.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/activation_checkpointing.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/aspp.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/attention_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/cablock.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/convolutions.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/crf.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/crossattention.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/denseblock.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/dints_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/downsample.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/dynunet_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/encoder.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/fcn.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/feature_pyramid_network.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/fft_utils_t.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/hyena.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/localnet_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/mednext_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/mlp.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/patchembedding.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/pos_embed_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/regunet_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/rel_pos_embedding.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/segresnet_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/selfattention.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/spade_norm.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/spatialattention.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/text_embedding.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/transformerblock.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/unetr_block.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/upsample.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/blocks/warp.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/conjugate_gradient.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/convutils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/drop_path.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/factories.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/filtering.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/gmm.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/simplelayers.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/spatial_transforms.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/vector_quantizer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/layers/weight_init.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/ahnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/attentionunet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/autoencoder.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/basic_unet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/basic_unetplusplus.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/cell_sam_wrapper.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/classifier.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/controlnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/daf3d.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/densenet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/dynunet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/efficientnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/flexible_unet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/fullyconnectednet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/generator.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/highresnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/hovernet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/hyena_nd_unetr.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/mednext.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/milmodel.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/navit.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/netadapter.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/patchgan_discriminator.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/quicknat.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/regressor.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/resnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/restormer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/segresnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/senet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/spade_autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/spade_network.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/swin_unetr.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/torchvision_fc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/transchex.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/transformer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/unet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/unetr.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/varautoencoder.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/vista3d.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/vit.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/vitautoenc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/vnet.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/voxelmorph.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/nets/vqvae.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/ddim.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/ddpm.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/pndm.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/rectified_flow.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/schedulers/scheduler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/trt_compiler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/networks/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/optimizers/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/optimizers/lr_finder.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/optimizers/lr_scheduler.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/optimizers/novograd.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/optimizers/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/py.typed +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/adaptors.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/compose.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/batch.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/croppad/functional.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/intensity/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/intensity/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/intensity/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/inverse.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/inverse_batch_transform.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/io/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/io/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/io/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/functional.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/lazy/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/meta_utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/meta_utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/nvtx.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/regularization/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/regularization/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/regularization/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/signal/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/signal/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/signal/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/smooth_field/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/smooth_field/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/smooth_field/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/array.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/spatial/functional.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/traits.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/transform.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utils_create_transform_ims.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utils_morphological_ops.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/compare_sources.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/component_store.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/decorators.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/dist.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/enums.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/jupyter_utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/misc.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/module.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/nvtx.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/ordering.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/profiling.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/safeeval.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/state_cacher.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/tf32.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/utils/type_conversion.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/__init__.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/class_activation_maps.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/gradient_based.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/img2tensorboard.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/occlusion_sensitivity.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/utils.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/visualize/visualizer.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/SOURCES.txt +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/dependency_links.txt +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/not-zip-safe +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/requires.txt +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai_weekly.egg-info/top_level.txt +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/pyproject.toml +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/setup.cfg +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/setup.py +0 -0
- {monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/versioneer.py +0 -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__ = "
|
|
140
|
+
__commit_id__ = "4f150a8f26664d1452a8e420d118f4541597f686"
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-10-
|
|
11
|
+
"date": "2026-10-25T02:15:18+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.7.
|
|
14
|
+
"full-revisionid": "08aa7d448a8733b13dadffc2f153f7bcb56f41cf",
|
|
15
|
+
"version": "1.7.dev2643"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
{monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/apps/detection/transforms/dictionary.py
RENAMED
|
@@ -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
|
-
|
|
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
|
|
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.
|
|
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
|
|
42
|
-
"""
|
|
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
|
-
|
|
103
|
-
|
|
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 =
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
218
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
@@ -30,6 +30,7 @@ from urllib.request import urlopen, urlretrieve
|
|
|
30
30
|
|
|
31
31
|
from monai.config.type_definitions import PathLike
|
|
32
32
|
from monai.utils import look_up_option, min_version, optional_import
|
|
33
|
+
from monai.utils.deprecate_utils import warn_deprecated
|
|
33
34
|
|
|
34
35
|
requests, has_requests = optional_import("requests")
|
|
35
36
|
gdown, has_gdown = optional_import("gdown", "4.7.3")
|
|
@@ -177,6 +178,9 @@ def check_hash(filepath: PathLike, val: str | None = None, hash_type: str = "sha
|
|
|
177
178
|
The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
|
|
178
179
|
See also: :py:data:`monai.apps.utils.SUPPORTED_HASH_TYPES`.
|
|
179
180
|
|
|
181
|
+
.. versionchanged:: 1.7
|
|
182
|
+
The default `hash_type` changed from "md5" to "sha256" for stronger integrity verification.
|
|
183
|
+
Pass `hash_type="md5"` explicitly to verify against MD5 hashes.
|
|
180
184
|
"""
|
|
181
185
|
if val is None:
|
|
182
186
|
warnings.warn(f"No hash value provided for {filepath}; file integrity is NOT verified.", stacklevel=2)
|
|
@@ -204,7 +208,7 @@ def download_url(
|
|
|
204
208
|
url: str,
|
|
205
209
|
filepath: PathLike = "",
|
|
206
210
|
hash_val: str | None = None,
|
|
207
|
-
hash_type: str =
|
|
211
|
+
hash_type: str | None = None,
|
|
208
212
|
progress: bool = True,
|
|
209
213
|
**gdown_kwargs: Any,
|
|
210
214
|
) -> None:
|
|
@@ -217,7 +221,7 @@ def download_url(
|
|
|
217
221
|
If undefined, `os.path.basename(url)` will be used.
|
|
218
222
|
hash_val: expected hash value to validate the downloaded file.
|
|
219
223
|
if None, skip hash validation.
|
|
220
|
-
hash_type: type of hash algorithm to use, default is `"sha256"`.
|
|
224
|
+
hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
|
|
221
225
|
The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
|
|
222
226
|
progress: whether to display a progress bar.
|
|
223
227
|
gdown_kwargs: other args for `gdown` except for the `url`, `output` and `quiet`.
|
|
@@ -234,7 +238,23 @@ def download_url(
|
|
|
234
238
|
ContentTooShortError: See urllib.request.urlretrieve.
|
|
235
239
|
IOError: See urllib.request.urlretrieve.
|
|
236
240
|
HashCheckError: When the hash validation of the ``url`` downloaded file fails.
|
|
241
|
+
|
|
242
|
+
.. versionchanged:: 1.7
|
|
243
|
+
The default `hash_type` changed from "md5" to None for stronger integrity verification. If this is left None
|
|
244
|
+
when a `hash_val` value is provided, this will warn to explicitly set `hash_type` then choose sha256 hashing.
|
|
245
|
+
Pass `hash_type="md5"` explicitly to verify against MD5 hashes and suppress the warning. In MONAI 1.8 the
|
|
246
|
+
default will be set to "sha256".
|
|
237
247
|
"""
|
|
248
|
+
if hash_val is not None and hash_type is None:
|
|
249
|
+
warn_deprecated(
|
|
250
|
+
"monai.apps.utils.download_url",
|
|
251
|
+
'Default `hash_type` value changed to `None` from "md5" in MONAI 1.7, '
|
|
252
|
+
"set to explicit value to suppress this warning. Defaulting to sha256 checking. In MONAI 1.8 the "
|
|
253
|
+
'default will be set to "sha256".',
|
|
254
|
+
stacklevel=3,
|
|
255
|
+
)
|
|
256
|
+
hash_type = "sha256"
|
|
257
|
+
|
|
238
258
|
if not filepath:
|
|
239
259
|
filepath = Path(".", _basename(url)).resolve()
|
|
240
260
|
logger.info(f"Default downloading to '{filepath}'")
|
|
@@ -316,7 +336,7 @@ def extractall(
|
|
|
316
336
|
filepath: PathLike,
|
|
317
337
|
output_dir: PathLike = ".",
|
|
318
338
|
hash_val: str | None = None,
|
|
319
|
-
hash_type: str =
|
|
339
|
+
hash_type: str | None = None,
|
|
320
340
|
file_type: str = "",
|
|
321
341
|
has_base: bool = True,
|
|
322
342
|
) -> None:
|
|
@@ -329,7 +349,7 @@ def extractall(
|
|
|
329
349
|
output_dir: target directory to save extracted files.
|
|
330
350
|
hash_val: expected hash value to validate the compressed file.
|
|
331
351
|
if None, skip hash validation.
|
|
332
|
-
hash_type: type of hash algorithm to use, default is `"sha256"`.
|
|
352
|
+
hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
|
|
333
353
|
file_type: string of file type for decompressing. Leave it empty to infer the type from the filepath basename.
|
|
334
354
|
has_base: whether the extracted files have a base folder. This flag is used when checking if the existing
|
|
335
355
|
folder is a result of `extractall`, if it is, the extraction is skipped. For example, if A.zip is unzipped
|
|
@@ -340,7 +360,22 @@ def extractall(
|
|
|
340
360
|
HashCheckError: When the hash validation of the ``filepath`` compressed file fails.
|
|
341
361
|
NotImplementedError: When the ``filepath`` file extension is not one of [zip", "tar.gz", "tar"].
|
|
342
362
|
|
|
363
|
+
.. versionchanged:: 1.6.1
|
|
364
|
+
The default `hash_type` changed from "md5" to None for stronger integrity verification. If this is left None
|
|
365
|
+
when a `hash_val` value is provided, this will warn to explicitly set `hash_type` then choose sha256 hashing.
|
|
366
|
+
Pass `hash_type="md5"` explicitly to verify against MD5 hashes and suppress the warning. In MONAI 1.8 the
|
|
367
|
+
default will be set to "sha256".
|
|
343
368
|
"""
|
|
369
|
+
if hash_val is not None and hash_type is None:
|
|
370
|
+
warn_deprecated(
|
|
371
|
+
"monai.apps.utils.extractall",
|
|
372
|
+
'Default `hash_type` value changed to `None` from "md5" in MONAI 1.7, '
|
|
373
|
+
"set to an explicit value to suppress this warning. Defaulting to sha256 checking. In MONAI 1.8 the "
|
|
374
|
+
'default will be set to "sha256".',
|
|
375
|
+
stacklevel=3,
|
|
376
|
+
)
|
|
377
|
+
hash_type = "sha256"
|
|
378
|
+
|
|
344
379
|
filepath = Path(filepath)
|
|
345
380
|
if hash_val and not check_hash(filepath, hash_val, hash_type):
|
|
346
381
|
raise HashCheckError(
|
|
@@ -395,7 +430,7 @@ def download_and_extract(
|
|
|
395
430
|
filepath: PathLike = "",
|
|
396
431
|
output_dir: PathLike = ".",
|
|
397
432
|
hash_val: str | None = None,
|
|
398
|
-
hash_type: str =
|
|
433
|
+
hash_type: str | None = None,
|
|
399
434
|
file_type: str = "",
|
|
400
435
|
has_base: bool = True,
|
|
401
436
|
progress: bool = True,
|
|
@@ -411,7 +446,7 @@ def download_and_extract(
|
|
|
411
446
|
default is the current directory.
|
|
412
447
|
hash_val: expected hash value to validate the downloaded file.
|
|
413
448
|
if None, skip hash validation.
|
|
414
|
-
hash_type: type of hash algorithm to use, default is `"sha256"`.
|
|
449
|
+
hash_type: type of hash algorithm to use, default is None which will select `"sha256"`.
|
|
415
450
|
file_type: string of file type for decompressing. Leave it empty to infer the type from url's base file name.
|
|
416
451
|
has_base: whether the extracted files have a base folder. This flag is used when checking if the existing
|
|
417
452
|
folder is a result of `extractall`, if it is, the extraction is skipped. For example, if A.zip is unzipped
|
|
@@ -257,6 +257,8 @@ class GridPatchDataset(IterableDataset):
|
|
|
257
257
|
self.first_random = self.patch_transform.get_index_of_first(
|
|
258
258
|
lambda t: isinstance(t, RandomizableTrait) or not isinstance(t, Transform)
|
|
259
259
|
)
|
|
260
|
+
if self.first_random is None:
|
|
261
|
+
self.first_random = len(self.patch_transform.transforms)
|
|
260
262
|
|
|
261
263
|
if self.cache:
|
|
262
264
|
if isinstance(data, Iterator):
|
|
@@ -279,7 +281,11 @@ class GridPatchDataset(IterableDataset):
|
|
|
279
281
|
self.cache_num = min(int(self.set_num), int(len(mapping) * self.set_rate), len(mapping))
|
|
280
282
|
self._hash_keys = list(mapping)[: self.cache_num]
|
|
281
283
|
indices = list(mapping.values())[: self.cache_num]
|
|
282
|
-
|
|
284
|
+
cache_items = self._fill_cache(indices)
|
|
285
|
+
if cache_items:
|
|
286
|
+
self._cache, self._cache_other = zip(*cache_items) # type: ignore
|
|
287
|
+
else:
|
|
288
|
+
self._cache, self._cache_other = [], []
|
|
283
289
|
|
|
284
290
|
def _fill_cache(self, indices=None) -> list:
|
|
285
291
|
"""
|
|
@@ -339,12 +345,9 @@ class GridPatchDataset(IterableDataset):
|
|
|
339
345
|
|
|
340
346
|
def __iter__(self):
|
|
341
347
|
if self.cache:
|
|
342
|
-
cache_index = None
|
|
343
348
|
for image in super().__iter__():
|
|
344
349
|
key = self.hash_func(image)
|
|
345
|
-
if key in self._hash_keys
|
|
346
|
-
# if existing in cache, try to get the index in cache
|
|
347
|
-
cache_index = self._hash_keys.index(key)
|
|
350
|
+
cache_index = self._hash_keys.index(key) if key in self._hash_keys else None
|
|
348
351
|
if cache_index is None:
|
|
349
352
|
# no cache for this index, execute all the transforms directly
|
|
350
353
|
yield from self._generate_patches(self.patch_iter(image))
|
|
@@ -354,11 +357,11 @@ class GridPatchDataset(IterableDataset):
|
|
|
354
357
|
"Cache buffer is not initialized, please call `set_data()` before epoch begins."
|
|
355
358
|
)
|
|
356
359
|
data = self._cache[cache_index]
|
|
357
|
-
other = self._cache_other[cache_index]
|
|
358
360
|
|
|
359
361
|
# load data from cache and execute from the first random transform
|
|
360
362
|
data = deepcopy(data) if self.copy_cache else data
|
|
361
|
-
|
|
363
|
+
cached_patches = zip(data, self._cache_other[cache_index]) if self.with_coordinates else zip(data)
|
|
364
|
+
yield from self._generate_patches(cached_patches, start=self.first_random)
|
|
362
365
|
else:
|
|
363
366
|
for image in super().__iter__():
|
|
364
367
|
yield from self._generate_patches(self.patch_iter(image))
|
|
@@ -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
|
|
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;
|
|
1121
|
-
default pydicom decoders
|
|
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
|
|
1184
|
+
if not has_pydicom or not is_dicom_path(filename):
|
|
1176
1185
|
return False
|
|
1177
|
-
|
|
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")
|
{monai_weekly-1.7.dev2641 → monai_weekly-1.7.dev2643}/monai/data/nvimgcodec_pydicom_plugin.py
RENAMED
|
@@ -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.
|
|
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
|