monai-weekly 1.7.dev2642__tar.gz → 1.7.dev2644__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/__init__.py +2 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_version.py +3 -3
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/auto_runner.py +2 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/bundle_gen.py +60 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/hpo_gen.py +81 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/dictionary.py +0 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/mmars/mmars.py +62 -116
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/mmars/model_desc.py +13 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/__init__.py +1 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/nnunet_bundle.py +87 -3
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/post/dictionary.py +0 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/utils.py +13 -12
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/image_reader.py +27 -5
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/nvimgcodec_pydicom_plugin.py +1 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/merger.py +23 -16
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/active_learning_metrics.py +0 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/confusion_matrix.py +49 -8
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/hausdorff_distance.py +14 -9
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/meandice.py +16 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/surface_distance.py +88 -18
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/__init__.py +1 -0
- monai_weekly-1.7.dev2644/monai/networks/layers/layer_norm_nd.py +58 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/__init__.py +19 -0
- monai_weekly-1.7.dev2644/monai/networks/nets/convnext.py +354 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/dynunet.py +24 -3
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/segresnet_ds.py +10 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/intensity/array.py +9 -8
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/functional.py +5 -2
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utility/array.py +16 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/SOURCES.txt +2 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/LICENSE +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/MANIFEST.in +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/README.md +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm.cpp +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm.h +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/_extensions/loader.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/__main__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/data_analyzer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/transforms.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/datasets.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepedit/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepedit/interaction.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepedit/transforms.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/dataset.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/interaction.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/deepgrow/transforms.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/metrics/coco.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/metrics/matching.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/networks/retinanet_detector.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/networks/retinanet_network.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/transforms/box_ops.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/anchor_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/box_coder.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/box_selector.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/detector_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/detection/utils/predict_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/mmars/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/__main__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nnunet/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nuclick/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/nuclick/transforms.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/stain/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/pathology/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/complex_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/fastmri_reader.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/mri_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/tcia/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/tcia/label_desc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/tcia/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/inferer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/sampler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/apps/vista3d/transforms.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/algo_gen.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/analyzer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/operations.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/auto3dseg/seg_summarizer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/__main__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/config_item.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/config_parser.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/properties.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/reference_resolver.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/scripts.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/bundle/workflows.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/__main__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/check_env.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/deviceconfig.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/print_dependencies.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/config/type_definitions.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/box_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/csv_saver.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/dataloader.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/dataset.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/dataset_summary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/decathlon_datalist.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/fft_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/folder_layout.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/grid_dataset.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/image_dataset.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/image_writer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/iterable_dataset.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/itk_torch_bridge.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/meta_obj.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/meta_tensor.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/samplers.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/synthetic.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/test_time_augmentation.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/thread_buffer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/torchscript_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/ultrasound_confidence_map.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/video_dataset.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/wsi_datasets.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/data/wsi_reader.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/evaluator.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/trainer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/engines/workflow.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/client/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/client/client_algo.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/client/monai_algo.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/constants.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/exchange_object.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/fl/utils/filters.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/average_precision.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/calibration.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/checkpoint_loader.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/checkpoint_saver.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/classification_saver.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/clearml_handlers.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/decollate_batch.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/earlystop_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/garbage_collector.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/ignite_metric.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/logfile_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/lr_schedule_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/mean_dice.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/mean_iou.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/metric_logger.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/metrics_reloaded_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/metrics_saver.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/mlflow_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/nvtx_handlers.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/parameter_scheduler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/postprocessing.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/probability_maps.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/regression_metrics.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/roc_auc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/smartcache_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/stats_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/tensorboard_handlers.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/trt_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/handlers/validation_handler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/splitter.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/inferers/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/adversarial_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/aucm_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/barlow_twins.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/boundary_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/calibration.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/cldice.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/contrastive.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/deform.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/dice.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/ds_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/focal_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/giou_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/hausdorff_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/image_dissimilarity.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/mcc_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/multi_scale.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/nacl_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/perceptual.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/spatial_mask.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/spectral_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/ssim_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/sure_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/tversky.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/unified_focal_loss.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/losses/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/absolute_volume_difference.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/average_precision.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/calibration.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/cumulative_average.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/embedding_collapse.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/f_beta_score.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/fid.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/froc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/generalized_dice.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/loss_metric.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/meaniou.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/metric.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/mmd.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/regression.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/rocauc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/surface_dice.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/metrics/wrapper.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/acti_norm.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/activation.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/activation_checkpointing.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/aspp.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/attention_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/cablock.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/convolutions.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/crf.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/crossattention.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/denseblock.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/dints_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/downsample.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/dynunet_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/encoder.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/fcn.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/feature_pyramid_network.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/fft_utils_t.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/hyena.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/localnet_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/mednext_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/mlp.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/patchembedding.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/pos_embed_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/regunet_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/rel_pos_embedding.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/segresnet_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/selfattention.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/spade_norm.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/spatialattention.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/text_embedding.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/transformerblock.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/unetr_block.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/upsample.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/blocks/warp.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/conjugate_gradient.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/convutils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/drop_path.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/factories.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/filtering.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/gmm.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/simplelayers.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/spatial_transforms.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/vector_quantizer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/layers/weight_init.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/ahnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/attentionunet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/autoencoder.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/basic_unet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/basic_unetplusplus.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/cell_sam_wrapper.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/classifier.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/controlnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/daf3d.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/densenet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/dints.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/efficientnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/flexible_unet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/fullyconnectednet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/generator.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/highresnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/hovernet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/hyena_nd_unetr.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/mednext.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/milmodel.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/navit.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/netadapter.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/patchgan_discriminator.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/quicknat.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/regressor.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/regunet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/resnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/restormer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/segresnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/senet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/spade_autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/spade_network.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/swin_unetr.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/torchvision_fc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/transchex.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/transformer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/unet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/unetr.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/varautoencoder.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vista3d.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vit.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vitautoenc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vnet.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/voxelmorph.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/nets/vqvae.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/ddim.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/ddpm.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/pndm.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/rectified_flow.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/schedulers/scheduler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/trt_compiler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/networks/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/lr_finder.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/lr_scheduler.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/novograd.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/optimizers/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/py.typed +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/adaptors.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/compose.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/batch.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/croppad/functional.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/intensity/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/intensity/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/inverse.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/inverse_batch_transform.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/io/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/io/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/io/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/functional.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/lazy/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/meta_utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/meta_utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/nvtx.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/post/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/regularization/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/regularization/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/regularization/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/signal/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/signal/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/signal/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/smooth_field/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/smooth_field/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/smooth_field/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/array.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/spatial/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/traits.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/transform.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils_create_transform_ims.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils_morphological_ops.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/compare_sources.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/component_store.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/decorators.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/deprecate_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/dist.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/enums.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/jupyter_utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/misc.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/module.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/nvtx.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/ordering.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/profiling.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/safeeval.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/state_cacher.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/tf32.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/utils/type_conversion.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/__init__.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/class_activation_maps.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/gradient_based.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/img2tensorboard.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/occlusion_sensitivity.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/utils.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai/visualize/visualizer.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/dependency_links.txt +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/not-zip-safe +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/requires.txt +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/monai_weekly.egg-info/top_level.txt +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/pyproject.toml +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/setup.cfg +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/setup.py +0 -0
- {monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/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__ = "827fa24fef4f474f70ead141412a2a0675990684"
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-
|
|
11
|
+
"date": "2026-11-01T02:09:43+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.7.
|
|
14
|
+
"full-revisionid": "47589b4b36aee36f5956dc5d440c445c3a7b1e2a",
|
|
15
|
+
"version": "1.7.dev2644"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -23,7 +23,7 @@ import torch
|
|
|
23
23
|
from monai.apps.auto3dseg.bundle_gen import BundleGen
|
|
24
24
|
from monai.apps.auto3dseg.data_analyzer import DataAnalyzer
|
|
25
25
|
from monai.apps.auto3dseg.ensemble_builder import EnsembleRunner
|
|
26
|
-
from monai.apps.auto3dseg.hpo_gen import NNIGen
|
|
26
|
+
from monai.apps.auto3dseg.hpo_gen import NNIGen, _nni_trial_command
|
|
27
27
|
from monai.apps.auto3dseg.utils import export_bundle_algo_history, import_bundle_algo_history
|
|
28
28
|
from monai.apps.utils import get_logger
|
|
29
29
|
from monai.auto3dseg.utils import algo_to_json
|
|
@@ -797,7 +797,7 @@ class AutoRunner:
|
|
|
797
797
|
nni_config[key] = self.hpo_params[key]
|
|
798
798
|
nni_config.update({"experimentName": name})
|
|
799
799
|
nni_config.update({"search_space": self.search_space})
|
|
800
|
-
trial_cmd =
|
|
800
|
+
trial_cmd = _nni_trial_command(obj_filename, self.work_dir)
|
|
801
801
|
nni_config.update({"trialCommand": trial_cmd})
|
|
802
802
|
nni_config_filename = os.path.abspath(os.path.join(self.work_dir, f"{name}_nni_config.yaml"))
|
|
803
803
|
ConfigParser.export_config_file(nni_config, nni_config_filename, fmt="yaml", default_flow_style=None)
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import importlib
|
|
15
|
+
import ntpath
|
|
15
16
|
import os
|
|
16
17
|
import re
|
|
17
18
|
import shutil
|
|
@@ -50,6 +51,52 @@ ALGO_HASH = MONAIEnvVars.algo_hash()
|
|
|
50
51
|
__all__ = ["BundleAlgo", "BundleGen"]
|
|
51
52
|
|
|
52
53
|
|
|
54
|
+
def _check_single_path_component(value: Any, what: str) -> None:
|
|
55
|
+
"""
|
|
56
|
+
Require ``value`` to be one non-empty directory name with no path separators, drive or NUL character.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
value: the name to check.
|
|
60
|
+
what: a description of the value, used in the error message.
|
|
61
|
+
|
|
62
|
+
Raises:
|
|
63
|
+
ValueError: if ``value`` is not a plain directory name.
|
|
64
|
+
"""
|
|
65
|
+
name = str(value)
|
|
66
|
+
separators = {os.sep, "/"} | ({os.altsep} if os.altsep else set())
|
|
67
|
+
if (
|
|
68
|
+
not name
|
|
69
|
+
or name in (".", "..")
|
|
70
|
+
or "\x00" in name
|
|
71
|
+
or any(sep in name for sep in separators)
|
|
72
|
+
or os.path.isabs(name)
|
|
73
|
+
or ntpath.splitdrive(name)[0]
|
|
74
|
+
):
|
|
75
|
+
raise ValueError(f"Invalid {what} {value!r}: expected a single directory name without path separators.")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _confined_join(root: str, name: str) -> str:
|
|
79
|
+
"""
|
|
80
|
+
Join ``name`` to ``root`` and check that the resolved result stays inside ``root``.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
root: the parent directory.
|
|
84
|
+
name: the child directory name.
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
the joined path.
|
|
88
|
+
|
|
89
|
+
Raises:
|
|
90
|
+
ValueError: if the resolved path is not inside ``root``.
|
|
91
|
+
"""
|
|
92
|
+
path = os.path.join(root, name)
|
|
93
|
+
real_root = os.path.realpath(root)
|
|
94
|
+
real_path = os.path.realpath(path)
|
|
95
|
+
if real_path == real_root or os.path.commonpath([real_root, real_path]) != real_root:
|
|
96
|
+
raise ValueError(f"Invalid path: {path!r} is not inside {root!r}.")
|
|
97
|
+
return path
|
|
98
|
+
|
|
99
|
+
|
|
53
100
|
class BundleAlgo(Algo):
|
|
54
101
|
"""
|
|
55
102
|
An algorithm represented by a set of bundle configurations and scripts.
|
|
@@ -176,18 +223,29 @@ class BundleAlgo(Algo):
|
|
|
176
223
|
Args:
|
|
177
224
|
output_path: Path to export the 'scripts' and 'configs' directories.
|
|
178
225
|
algo_name: the identifier of the algorithm (usually contains the name and extra info like fold ID).
|
|
226
|
+
It must be a single directory name: path separators, ``.`` and ``..`` are rejected.
|
|
179
227
|
kwargs: other parameters, including: "copy_dirs=True/False" means whether to copy the template as output
|
|
180
228
|
instead of inplace operation, "fill_template=True/False" means whether to fill the placeholders
|
|
181
229
|
in the template. other parameters are for `fill_template_config` function.
|
|
182
230
|
|
|
231
|
+
|
|
232
|
+
Raises:
|
|
233
|
+
ValueError: if ``algo_name`` or the Algo ``name`` is not a single directory name, or the destination
|
|
234
|
+
does not resolve inside ``output_path``.
|
|
183
235
|
"""
|
|
184
236
|
if kwargs.pop("copy_dirs", True):
|
|
185
|
-
|
|
237
|
+
_check_single_path_component(algo_name, "algo_name")
|
|
238
|
+
if self.name: # an empty name copies the whole template_path
|
|
239
|
+
_check_single_path_component(self.name, "the Algo name")
|
|
240
|
+
source = os.path.join(str(self.template_path), self.name)
|
|
241
|
+
if not os.path.isdir(source):
|
|
242
|
+
raise ValueError(f"Algo template folder {source!r} does not exist.")
|
|
243
|
+
self.output_path = _confined_join(output_path, algo_name)
|
|
186
244
|
os.makedirs(self.output_path, exist_ok=True)
|
|
187
245
|
if os.path.isdir(self.output_path):
|
|
188
246
|
shutil.rmtree(self.output_path)
|
|
189
247
|
# copy algorithm_templates/<Algo> to the working directory output_path
|
|
190
|
-
shutil.copytree(
|
|
248
|
+
shutil.copytree(source, self.output_path)
|
|
191
249
|
else:
|
|
192
250
|
self.output_path = str(self.template_path)
|
|
193
251
|
if kwargs.pop("fill_template", True):
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import os
|
|
15
|
+
import shlex
|
|
16
|
+
import sys
|
|
15
17
|
from abc import abstractmethod
|
|
16
18
|
from copy import deepcopy
|
|
17
19
|
from typing import Any, cast
|
|
@@ -32,6 +34,84 @@ logger = get_logger(module_name=__name__)
|
|
|
32
34
|
__all__ = ["HPOGen", "NNIGen", "OptunaGen"]
|
|
33
35
|
|
|
34
36
|
|
|
37
|
+
# cmd.exe expands or ends a quoted argument at these characters even inside double quotes
|
|
38
|
+
_CMD_UNSAFE_CHARS = frozenset('"%!\r\n\x00')
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _quote_trial_arg(arg: Any, windows: bool | None = None) -> str:
|
|
42
|
+
"""
|
|
43
|
+
Quote one argument of an NNI ``trialCommand`` as a literal for the shell NNI uses.
|
|
44
|
+
|
|
45
|
+
NNI's local training service runs ``trialCommand`` with bash on Linux and macOS and with ``cmd.exe`` on
|
|
46
|
+
Windows. For ``cmd.exe`` the argument is wrapped in double quotes, which make ``&``, ``|``, ``<``, ``>``,
|
|
47
|
+
``^`` and parentheses literal, and backslashes before the closing quote are doubled so the program receives
|
|
48
|
+
the argument unchanged. Characters that ``cmd.exe`` interprets even inside double quotes are rejected.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
arg: the argument value.
|
|
52
|
+
windows: quote for ``cmd.exe`` instead of a POSIX shell. Defaults to ``sys.platform == "win32"``.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
the quoted argument.
|
|
56
|
+
|
|
57
|
+
Raises:
|
|
58
|
+
ValueError: on Windows, if the argument contains ``"``, ``%``, ``!`` or a line break or NUL character.
|
|
59
|
+
"""
|
|
60
|
+
text = str(arg)
|
|
61
|
+
if sys.platform == "win32" if windows is None else windows:
|
|
62
|
+
unsafe = sorted(_CMD_UNSAFE_CHARS.intersection(text))
|
|
63
|
+
if unsafe:
|
|
64
|
+
raise ValueError(f"Cannot pass {text!r} to an NNI trial on Windows: it contains {unsafe}.")
|
|
65
|
+
trailing = len(text) - len(text.rstrip("\\"))
|
|
66
|
+
return '"' + text + "\\" * trailing + '"'
|
|
67
|
+
return shlex.quote(text)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _nni_trial_command(obj_filename: Any, work_dir: Any, windows: bool | None = None) -> str:
|
|
71
|
+
"""
|
|
72
|
+
Build the NNI ``trialCommand`` that runs one algo trial.
|
|
73
|
+
|
|
74
|
+
The fixed part of the command is plain text; the two paths are quoted with ``_quote_trial_arg`` so they
|
|
75
|
+
are passed to ``NNIGen run_algo`` unchanged. On a POSIX shell any path is accepted; ``cmd.exe`` cannot
|
|
76
|
+
carry a few characters even inside double quotes, see ``_quote_trial_arg``.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
obj_filename: the serialized algo object file.
|
|
80
|
+
work_dir: the Auto3DSeg working directory.
|
|
81
|
+
windows: quote for ``cmd.exe`` instead of a POSIX shell. Defaults to ``sys.platform == "win32"``.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
the command string to store as ``trialCommand``.
|
|
85
|
+
|
|
86
|
+
Raises:
|
|
87
|
+
ValueError: on Windows, if ``obj_filename`` or ``work_dir`` contains ``"``, ``%``, ``!``, a line
|
|
88
|
+
break or a NUL character.
|
|
89
|
+
"""
|
|
90
|
+
paths = " ".join(_quote_trial_arg(p, windows) for p in (obj_filename, work_dir))
|
|
91
|
+
return f"python -m monai.apps.auto3dseg NNIGen run_algo {paths}"
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _quote_or_raw(arg: Any, windows: bool | None = None) -> str:
|
|
95
|
+
"""
|
|
96
|
+
Quote one argument of the printed trialCommand instruction, falling back to the unquoted text.
|
|
97
|
+
|
|
98
|
+
``print_bundle_algo_instruction`` only reports how to write the command, so a path its shell cannot
|
|
99
|
+
quote must not stop the instructions from printing: warn and print the path as it is.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
arg: the argument value.
|
|
103
|
+
windows: quote for ``cmd.exe`` instead of a POSIX shell. Defaults to ``sys.platform == "win32"``.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
the quoted argument, or ``str(arg)`` if the shell cannot quote it.
|
|
107
|
+
"""
|
|
108
|
+
try:
|
|
109
|
+
return _quote_trial_arg(arg, windows)
|
|
110
|
+
except ValueError as error:
|
|
111
|
+
logger.warning(f"Leaving {str(arg)!r} unquoted in the printed trialCommand: {error}")
|
|
112
|
+
return str(arg)
|
|
113
|
+
|
|
114
|
+
|
|
35
115
|
class HPOGen(AlgoGen):
|
|
36
116
|
"""
|
|
37
117
|
The base class for hyperparameter optimization (HPO) interfaces to generate algos in the Auto3Dseg pipeline.
|
|
@@ -143,7 +223,7 @@ class NNIGen(HPOGen):
|
|
|
143
223
|
logger.info("=" * 140)
|
|
144
224
|
logger.info("If NNI will run in your local env: ")
|
|
145
225
|
logger.info("1. Add the following line to the trialCommand in your NNI config: ")
|
|
146
|
-
logger.info(f"{hint} {self.obj_filename} {{result_dir}}")
|
|
226
|
+
logger.info(f"{hint} {_quote_or_raw(self.obj_filename)} {{result_dir}}")
|
|
147
227
|
logger.info("-" * 140)
|
|
148
228
|
logger.info("If NNI will run in a remote env: ")
|
|
149
229
|
logger.info(
|
{monai_weekly-1.7.dev2642 → monai_weekly-1.7.dev2644}/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
|