monai-weekly 1.7.dev2640__tar.gz → 1.7.dev2642__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/__init__.py +1 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/loader.py +3 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_version.py +3 -3
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/utils.py +41 -6
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/grid_dataset.py +10 -7
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/synthetic.py +40 -9
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/utils.py +17 -5
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/calibration.py +2 -2
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/mlflow_handler.py +119 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/merger.py +7 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/__init__.py +1 -0
- monai_weekly-1.7.dev2642/monai/losses/calibration.py +379 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/image_dissimilarity.py +25 -6
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/calibration.py +4 -4
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/embedding_collapse.py +14 -4
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/fid.py +1 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/hausdorff_distance.py +47 -3
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/meaniou.py +4 -10
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/utils.py +1 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/warp.py +17 -2
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/dints.py +49 -7
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/regunet.py +12 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/__init__.py +4 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/array.py +135 -9
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/dictionary.py +24 -2
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/post/array.py +89 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/post/dictionary.py +58 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/dictionary.py +8 -2
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils.py +84 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/deprecate_utils.py +2 -2
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/SOURCES.txt +1 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/setup.py +5 -1
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/LICENSE +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/MANIFEST.in +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/README.md +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm.cpp +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm.h +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/__main__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/auto_runner.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/bundle_gen.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/data_analyzer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/hpo_gen.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/transforms.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/datasets.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/interaction.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepedit/transforms.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/dataset.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/interaction.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/deepgrow/transforms.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/coco.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/metrics/matching.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/retinanet_detector.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/networks/retinanet_network.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/box_ops.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/anchor_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/box_coder.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/box_selector.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/detector_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/detection/utils/predict_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/mmars/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/mmars/mmars.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/mmars/model_desc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/__main__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/nnunet_bundle.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nnunet/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nuclick/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/nuclick/transforms.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/pathology/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/complex_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/fastmri_reader.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/mri_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/tcia/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/tcia/label_desc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/tcia/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/inferer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/sampler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/apps/vista3d/transforms.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/algo_gen.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/analyzer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/operations.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/seg_summarizer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/__main__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/config_item.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/config_parser.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/properties.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/reference_resolver.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/scripts.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/bundle/workflows.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/__main__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/check_env.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/deviceconfig.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/print_dependencies.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/config/type_definitions.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/box_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/csv_saver.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/dataloader.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/dataset.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/dataset_summary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/decathlon_datalist.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/fft_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/folder_layout.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/image_dataset.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/image_reader.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/image_writer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/iterable_dataset.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/itk_torch_bridge.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/meta_obj.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/meta_tensor.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/nvimgcodec_pydicom_plugin.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/samplers.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/test_time_augmentation.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/thread_buffer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/torchscript_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/ultrasound_confidence_map.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/video_dataset.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/wsi_datasets.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/data/wsi_reader.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/evaluator.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/trainer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/engines/workflow.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/client/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/client/client_algo.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/client/monai_algo.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/constants.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/exchange_object.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/fl/utils/filters.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/average_precision.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/checkpoint_loader.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/checkpoint_saver.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/classification_saver.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/clearml_handlers.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/decollate_batch.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/earlystop_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/garbage_collector.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/ignite_metric.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/logfile_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/lr_schedule_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/mean_dice.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/mean_iou.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/metric_logger.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/metrics_reloaded_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/metrics_saver.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/nvtx_handlers.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/parameter_scheduler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/postprocessing.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/probability_maps.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/regression_metrics.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/roc_auc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/smartcache_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/stats_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/tensorboard_handlers.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/trt_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/handlers/validation_handler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/splitter.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/inferers/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/adversarial_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/aucm_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/barlow_twins.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/boundary_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/cldice.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/contrastive.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/deform.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/dice.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/ds_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/focal_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/giou_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/hausdorff_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/mcc_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/multi_scale.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/nacl_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/perceptual.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/spatial_mask.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/spectral_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/ssim_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/sure_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/tversky.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/unified_focal_loss.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/losses/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/absolute_volume_difference.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/active_learning_metrics.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/average_precision.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/cumulative_average.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/f_beta_score.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/froc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/generalized_dice.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/loss_metric.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/meandice.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/metric.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/mmd.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/regression.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/rocauc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/surface_dice.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/metrics/wrapper.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/acti_norm.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/activation.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/activation_checkpointing.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/aspp.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/attention_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/cablock.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/convolutions.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/crf.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/crossattention.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/denseblock.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/dints_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/downsample.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/dynunet_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/encoder.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/fcn.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/feature_pyramid_network.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/fft_utils_t.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/hyena.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/localnet_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/mednext_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/mlp.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/patchembedding.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/pos_embed_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/regunet_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/rel_pos_embedding.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/segresnet_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/selfattention.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/spade_norm.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/spatialattention.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/text_embedding.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/transformerblock.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/unetr_block.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/blocks/upsample.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/conjugate_gradient.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/convutils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/drop_path.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/factories.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/filtering.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/gmm.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/simplelayers.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/spatial_transforms.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/vector_quantizer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/layers/weight_init.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/ahnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/attentionunet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/autoencoder.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/basic_unet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/basic_unetplusplus.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/cell_sam_wrapper.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/classifier.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/controlnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/daf3d.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/densenet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/dynunet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/efficientnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/flexible_unet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/fullyconnectednet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/generator.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/highresnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/hovernet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/hyena_nd_unetr.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/mednext.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/milmodel.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/navit.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/netadapter.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/patchgan_discriminator.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/quicknat.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/regressor.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/resnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/restormer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/segresnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/segresnet_ds.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/senet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/spade_network.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/swin_unetr.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/torchvision_fc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/transchex.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/transformer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/unet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/unetr.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/varautoencoder.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vista3d.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vit.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vitautoenc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vnet.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/voxelmorph.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/nets/vqvae.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/ddim.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/ddpm.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/pndm.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/rectified_flow.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/schedulers/scheduler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/trt_compiler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/networks/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/lr_finder.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/lr_scheduler.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/novograd.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/optimizers/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/py.typed +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/adaptors.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/compose.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/batch.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/croppad/functional.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/intensity/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/inverse.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/inverse_batch_transform.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/io/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/io/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/io/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/functional.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/lazy/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/meta_utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/meta_utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/nvtx.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/regularization/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/signal/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/signal/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/signal/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/smooth_field/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/spatial/functional.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/traits.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/transform.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utility/array.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils_create_transform_ims.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils_morphological_ops.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/compare_sources.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/component_store.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/decorators.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/dist.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/enums.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/jupyter_utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/misc.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/module.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/nvtx.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/ordering.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/profiling.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/safeeval.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/state_cacher.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/tf32.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/utils/type_conversion.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/__init__.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/class_activation_maps.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/gradient_based.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/img2tensorboard.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/occlusion_sensitivity.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/utils.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai/visualize/visualizer.py +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/dependency_links.txt +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/not-zip-safe +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/requires.txt +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/monai_weekly.egg-info/top_level.txt +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/pyproject.toml +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/setup.cfg +0 -0
- {monai_weekly-1.7.dev2640 → monai_weekly-1.7.dev2642}/versioneer.py +0 -0
|
@@ -75,7 +75,9 @@ def load_module(
|
|
|
75
75
|
source = glob(path.join(module_dir, "**", "*.cpp"), recursive=True)
|
|
76
76
|
if torch.cuda.is_available():
|
|
77
77
|
source += glob(path.join(module_dir, "**", "*.cu"), recursive=True)
|
|
78
|
-
|
|
78
|
+
# `torch.version.cuda` is None on a ROCm build, which would make every ROCm
|
|
79
|
+
# toolkit version share a single cache entry. Key on whichever is populated.
|
|
80
|
+
platform_str += f"_{torch.version.cuda or f'hip{torch.version.hip}'}"
|
|
79
81
|
|
|
80
82
|
# Constructing compilation argument list.
|
|
81
83
|
define_args = [] if not defines else [f"-D {key}={defines[key]}" for key in defines]
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-10-
|
|
11
|
+
"date": "2026-10-18T02:14:29+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.7.
|
|
14
|
+
"full-revisionid": "4835c649a66849125f1e656543264f5fa7d261c0",
|
|
15
|
+
"version": "1.7.dev2642"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -30,6 +30,7 @@ from urllib.request import urlopen, urlretrieve
|
|
|
30
30
|
|
|
31
31
|
from monai.config.type_definitions import PathLike
|
|
32
32
|
from monai.utils import look_up_option, min_version, optional_import
|
|
33
|
+
from monai.utils.deprecate_utils import warn_deprecated
|
|
33
34
|
|
|
34
35
|
requests, has_requests = optional_import("requests")
|
|
35
36
|
gdown, has_gdown = optional_import("gdown", "4.7.3")
|
|
@@ -177,6 +178,9 @@ def check_hash(filepath: PathLike, val: str | None = None, hash_type: str = "sha
|
|
|
177
178
|
The supported hash types are `"md5"`, `"sha1"`, `"sha256"`, `"sha512"`.
|
|
178
179
|
See also: :py:data:`monai.apps.utils.SUPPORTED_HASH_TYPES`.
|
|
179
180
|
|
|
181
|
+
.. versionchanged:: 1.7
|
|
182
|
+
The default `hash_type` changed from "md5" to "sha256" for stronger integrity verification.
|
|
183
|
+
Pass `hash_type="md5"` explicitly to verify against MD5 hashes.
|
|
180
184
|
"""
|
|
181
185
|
if val is None:
|
|
182
186
|
warnings.warn(f"No hash value provided for {filepath}; file integrity is NOT verified.", stacklevel=2)
|
|
@@ -204,7 +208,7 @@ def download_url(
|
|
|
204
208
|
url: str,
|
|
205
209
|
filepath: PathLike = "",
|
|
206
210
|
hash_val: str | None = None,
|
|
207
|
-
hash_type: str =
|
|
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))
|
|
@@ -28,7 +28,8 @@ def create_test_image_2d(
|
|
|
28
28
|
num_seg_classes: int = 5,
|
|
29
29
|
channel_dim: int | None = None,
|
|
30
30
|
random_state: np.random.RandomState | None = None,
|
|
31
|
-
|
|
31
|
+
return_instance_id: bool = False,
|
|
32
|
+
) -> tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]:
|
|
32
33
|
"""
|
|
33
34
|
Return a noisy 2D image with `num_objs` circles and a 2D mask image. The maximum and minimum radii of the circles
|
|
34
35
|
are given as `rad_max` and `rad_min`. The mask will have `num_seg_classes` number of classes for segmentations labeled
|
|
@@ -48,9 +49,13 @@ def create_test_image_2d(
|
|
|
48
49
|
channel_dim: if None, create an image without channel dimension, otherwise create
|
|
49
50
|
an image with channel dimension as first dim or last dim. Defaults to `None`.
|
|
50
51
|
random_state: the random generator to use. Defaults to `np.random`.
|
|
52
|
+
return_instance_id: if True, also return an instance ID mask where every generated
|
|
53
|
+
object is assigned a unique positive integer. Later objects overwrite earlier IDs
|
|
54
|
+
where they overlap, so fully covered objects may not appear in the mask. Defaults to `False`.
|
|
51
55
|
|
|
52
56
|
Returns:
|
|
53
|
-
|
|
57
|
+
A tuple of image and segmentation label arrays. If `return_instance_id=True`, also returns
|
|
58
|
+
an instance ID array as the third element.
|
|
54
59
|
"""
|
|
55
60
|
|
|
56
61
|
if rad_max <= rad_min:
|
|
@@ -62,9 +67,10 @@ def create_test_image_2d(
|
|
|
62
67
|
raise ValueError(f"the minimal size {min_size} of the image should be larger than `2 * rad_max` 2x{rad_max}.")
|
|
63
68
|
|
|
64
69
|
image = np.zeros((height, width))
|
|
70
|
+
instance_ids = np.zeros((height, width), dtype=np.int32) if return_instance_id else None
|
|
65
71
|
rs: np.random.RandomState = np.random.random.__self__ if random_state is None else random_state # type: ignore
|
|
66
72
|
|
|
67
|
-
for
|
|
73
|
+
for obj_id in range(1, num_objs + 1):
|
|
68
74
|
x = rs.randint(rad_max, height - rad_max)
|
|
69
75
|
y = rs.randint(rad_max, width - rad_max)
|
|
70
76
|
rad = rs.randint(rad_min, rad_max)
|
|
@@ -75,6 +81,8 @@ def create_test_image_2d(
|
|
|
75
81
|
image[circle] = np.ceil(rs.random() * num_seg_classes)
|
|
76
82
|
else:
|
|
77
83
|
image[circle] = rs.random() * 0.5 + 0.5
|
|
84
|
+
if instance_ids is not None:
|
|
85
|
+
instance_ids[circle] = obj_id
|
|
78
86
|
|
|
79
87
|
labels = np.ceil(image).astype(np.int32, copy=False)
|
|
80
88
|
|
|
@@ -87,10 +95,16 @@ def create_test_image_2d(
|
|
|
87
95
|
if channel_dim == 0:
|
|
88
96
|
noisyimage = noisyimage[None]
|
|
89
97
|
labels = labels[None]
|
|
98
|
+
if instance_ids is not None:
|
|
99
|
+
instance_ids = instance_ids[None]
|
|
90
100
|
else:
|
|
91
101
|
noisyimage = noisyimage[..., None]
|
|
92
102
|
labels = labels[..., None]
|
|
103
|
+
if instance_ids is not None:
|
|
104
|
+
instance_ids = instance_ids[..., None]
|
|
93
105
|
|
|
106
|
+
if instance_ids is not None:
|
|
107
|
+
return noisyimage, labels, instance_ids
|
|
94
108
|
return noisyimage, labels
|
|
95
109
|
|
|
96
110
|
|
|
@@ -105,7 +119,8 @@ def create_test_image_3d(
|
|
|
105
119
|
num_seg_classes: int = 5,
|
|
106
120
|
channel_dim: int | None = None,
|
|
107
121
|
random_state: np.random.RandomState | None = None,
|
|
108
|
-
|
|
122
|
+
return_instance_id: bool = False,
|
|
123
|
+
) -> tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]:
|
|
109
124
|
"""
|
|
110
125
|
Return a noisy 3D image and segmentation.
|
|
111
126
|
|
|
@@ -122,9 +137,13 @@ def create_test_image_3d(
|
|
|
122
137
|
channel_dim: if None, create an image without channel dimension, otherwise create
|
|
123
138
|
an image with channel dimension as first dim or last dim. Defaults to `None`.
|
|
124
139
|
random_state: the random generator to use. Defaults to `np.random`.
|
|
140
|
+
return_instance_id: if True, also return an instance ID mask where every generated
|
|
141
|
+
object is assigned a unique positive integer. Later objects overwrite earlier IDs
|
|
142
|
+
where they overlap, so fully covered objects may not appear in the mask. Defaults to `False`.
|
|
125
143
|
|
|
126
144
|
Returns:
|
|
127
|
-
|
|
145
|
+
A tuple of image and segmentation label arrays. If `return_instance_id=True`, also returns
|
|
146
|
+
an instance ID array as the third element.
|
|
128
147
|
|
|
129
148
|
See also:
|
|
130
149
|
:py:meth:`~create_test_image_2d`
|
|
@@ -139,9 +158,10 @@ def create_test_image_3d(
|
|
|
139
158
|
raise ValueError(f"the minimal size {min_size} of the image should be larger than `2 * rad_max` 2x{rad_max}.")
|
|
140
159
|
|
|
141
160
|
image = np.zeros((height, width, depth))
|
|
161
|
+
instance_ids = np.zeros((height, width, depth), dtype=np.int32) if return_instance_id else None
|
|
142
162
|
rs: np.random.RandomState = np.random.random.__self__ if random_state is None else random_state # type: ignore
|
|
143
163
|
|
|
144
|
-
for
|
|
164
|
+
for obj_id in range(1, num_objs + 1):
|
|
145
165
|
x = rs.randint(rad_max, height - rad_max)
|
|
146
166
|
y = rs.randint(rad_max, width - rad_max)
|
|
147
167
|
z = rs.randint(rad_max, depth - rad_max)
|
|
@@ -153,6 +173,8 @@ def create_test_image_3d(
|
|
|
153
173
|
image[circle] = np.ceil(rs.random() * num_seg_classes)
|
|
154
174
|
else:
|
|
155
175
|
image[circle] = rs.random() * 0.5 + 0.5
|
|
176
|
+
if instance_ids is not None:
|
|
177
|
+
instance_ids[circle] = obj_id
|
|
156
178
|
|
|
157
179
|
labels = np.ceil(image).astype(np.int32, copy=False)
|
|
158
180
|
|
|
@@ -162,8 +184,17 @@ def create_test_image_3d(
|
|
|
162
184
|
if channel_dim is not None:
|
|
163
185
|
if not (isinstance(channel_dim, int) and channel_dim in (-1, 0, 3)):
|
|
164
186
|
raise AssertionError("invalid channel dim.")
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
187
|
+
if channel_dim == 0:
|
|
188
|
+
noisyimage = noisyimage[None]
|
|
189
|
+
labels = labels[None]
|
|
190
|
+
if instance_ids is not None:
|
|
191
|
+
instance_ids = instance_ids[None]
|
|
192
|
+
else:
|
|
193
|
+
noisyimage = noisyimage[..., None]
|
|
194
|
+
labels = labels[..., None]
|
|
195
|
+
if instance_ids is not None:
|
|
196
|
+
instance_ids = instance_ids[..., None]
|
|
168
197
|
|
|
198
|
+
if instance_ids is not None:
|
|
199
|
+
return noisyimage, labels, instance_ids
|
|
169
200
|
return noisyimage, labels
|
|
@@ -686,28 +686,40 @@ def worker_init_fn(worker_id: int) -> None:
|
|
|
686
686
|
set_rnd(worker_info.dataset, seed=worker_info.seed) # type: ignore[union-attr]
|
|
687
687
|
|
|
688
688
|
|
|
689
|
-
def set_rnd(obj, seed: int) -> int:
|
|
689
|
+
def set_rnd(obj, seed: int, _seen: set[int] | None = None) -> int:
|
|
690
690
|
"""
|
|
691
691
|
Set seed or random state for all randomizable properties of obj.
|
|
692
692
|
|
|
693
693
|
Args:
|
|
694
694
|
obj: object to set seed or random state for.
|
|
695
695
|
seed: set the random state with an integer seed.
|
|
696
|
+
_seen: internal set of already-visited object ids, used to guard against
|
|
697
|
+
infinite recursion on cyclic object graphs (e.g. OmegaConf/Hydra
|
|
698
|
+
configs whose child nodes back-reference their parent, see issue #8087).
|
|
696
699
|
"""
|
|
700
|
+
if _seen is None:
|
|
701
|
+
_seen = set()
|
|
697
702
|
if isinstance(obj, (tuple, list)): # ZipDataset.data is a list
|
|
698
|
-
|
|
703
|
+
if id(obj) in _seen:
|
|
704
|
+
return seed
|
|
705
|
+
_seen.add(id(obj))
|
|
706
|
+
has_randomizable = False
|
|
699
707
|
for item in obj:
|
|
700
|
-
|
|
701
|
-
|
|
708
|
+
item_seed = set_rnd(item, seed=seed, _seen=_seen)
|
|
709
|
+
has_randomizable = has_randomizable or item_seed != seed
|
|
710
|
+
return seed + 1 if has_randomizable else seed
|
|
702
711
|
if not hasattr(obj, "__dict__"):
|
|
703
712
|
return seed # no attribute
|
|
713
|
+
if id(obj) in _seen:
|
|
714
|
+
return seed # already visited: avoid infinite recursion on cyclic references
|
|
715
|
+
_seen.add(id(obj))
|
|
704
716
|
if hasattr(obj, "set_random_state"):
|
|
705
717
|
obj.set_random_state(seed=seed % MAX_SEED)
|
|
706
718
|
return seed + 1 # a different seed for the next component
|
|
707
719
|
for key in obj.__dict__:
|
|
708
720
|
if key.startswith("__"): # skip the private methods
|
|
709
721
|
continue
|
|
710
|
-
seed = set_rnd(obj.__dict__[key], seed=seed)
|
|
722
|
+
seed = set_rnd(obj.__dict__[key], seed=seed, _seen=_seen)
|
|
711
723
|
return seed
|
|
712
724
|
|
|
713
725
|
|
|
@@ -59,8 +59,8 @@ class CalibrationError(IgniteMetricHandler):
|
|
|
59
59
|
- Guo, C., et al. "On Calibration of Modern Neural Networks." ICML 2017.
|
|
60
60
|
https://proceedings.mlr.press/v70/guo17a.html
|
|
61
61
|
- Barfoot, T., et al. "Average Calibration Losses for Reliable Uncertainty in
|
|
62
|
-
Medical Image Segmentation."
|
|
63
|
-
https://
|
|
62
|
+
Medical Image Segmentation." IEEE Transactions on Medical Imaging, 2026.
|
|
63
|
+
https://doi.org/10.1109/TMI.2026.3673118
|
|
64
64
|
|
|
65
65
|
See Also:
|
|
66
66
|
- :py:class:`~monai.metrics.CalibrationErrorMetric`: The underlying metric class.
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import os
|
|
15
|
+
import threading
|
|
15
16
|
import time
|
|
16
17
|
import warnings
|
|
17
18
|
from collections.abc import Callable, Mapping, Sequence
|
|
@@ -43,6 +44,9 @@ MlflowException, _ = optional_import(
|
|
|
43
44
|
)
|
|
44
45
|
pandas, _ = optional_import("pandas", descriptor="Please install pandas for recording the dataset.")
|
|
45
46
|
tqdm, _ = optional_import("tqdm", "4.47.0", min_version, "tqdm")
|
|
47
|
+
SystemMetricsMonitor, has_system_metrics = optional_import(
|
|
48
|
+
"mlflow.system_metrics.system_metrics_monitor", name="SystemMetricsMonitor"
|
|
49
|
+
)
|
|
46
50
|
|
|
47
51
|
if TYPE_CHECKING:
|
|
48
52
|
from ignite.engine import Engine
|
|
@@ -136,6 +140,19 @@ class MLFlowHandler:
|
|
|
136
140
|
or the ``MLFLOW_TRACKING_URI`` environment variable), it defaults to an ``mlruns`` directory
|
|
137
141
|
next to the database file; for other backends ``None`` lets MLflow decide based on the
|
|
138
142
|
``tracking_uri``. Has no effect if the experiment already exists.
|
|
143
|
+
log_system_metrics: whether to record system resource usage (CPU, memory, disk, network and GPU)
|
|
144
|
+
while the workflow runs, default to False. The metrics are sampled in a background thread by
|
|
145
|
+
MLflow itself and stored in the same run as the workflow metrics, under the `system/` prefix.
|
|
146
|
+
Requires `psutil`, and `pynvml` in addition for the GPU metrics. Note that MLflow reads the
|
|
147
|
+
run through the global tracking URI to sample it, so this points the global tracking URI
|
|
148
|
+
(and with it `MLFLOW_TRACKING_URI`, which later handlers read in preference to their own
|
|
149
|
+
argument) at `tracking_uri` while the run is sampled, and puts the previous value back
|
|
150
|
+
when sampling stops.
|
|
151
|
+
system_metrics_sampling_interval: seconds between two samples of the system metrics, default to
|
|
152
|
+
`None`, which keeps the MLflow default (10 seconds). Only used if `log_system_metrics` is True.
|
|
153
|
+
system_metrics_samples_before_logging: number of samples to aggregate before they are logged,
|
|
154
|
+
default to `None`, which keeps the MLflow default (1 sample). Only used if `log_system_metrics`
|
|
155
|
+
is True.
|
|
139
156
|
|
|
140
157
|
For more details of MLFlow usage, please refer to: https://mlflow.org/docs/latest/index.html.
|
|
141
158
|
|
|
@@ -144,6 +161,10 @@ class MLFlowHandler:
|
|
|
144
161
|
# parameters that are logged at the start of training
|
|
145
162
|
default_tracking_params = ["max_epochs", "epoch_length"]
|
|
146
163
|
|
|
164
|
+
# runs whose system metrics are being sampled, so that handlers sharing a run sample it once
|
|
165
|
+
_monitored_run_ids: set[str] = set()
|
|
166
|
+
_system_metrics_lock = threading.Lock()
|
|
167
|
+
|
|
147
168
|
def __init__(
|
|
148
169
|
self,
|
|
149
170
|
tracking_uri: str | None = None,
|
|
@@ -165,6 +186,9 @@ class MLFlowHandler:
|
|
|
165
186
|
optimizer_param_names: str | Sequence[str] = "lr",
|
|
166
187
|
close_on_complete: bool = False,
|
|
167
188
|
artifact_location: str | None = None,
|
|
189
|
+
log_system_metrics: bool = False,
|
|
190
|
+
system_metrics_sampling_interval: int | None = None,
|
|
191
|
+
system_metrics_samples_before_logging: int | None = None,
|
|
168
192
|
) -> None:
|
|
169
193
|
self.iteration_log = iteration_log
|
|
170
194
|
self.epoch_log = epoch_log
|
|
@@ -210,11 +234,27 @@ class MLFlowHandler:
|
|
|
210
234
|
f"tracking_uri={effective_tracking_uri!r}. Use a SQLite URI "
|
|
211
235
|
"(sqlite:///<path>/mlruns.db) or a remote tracking URI instead."
|
|
212
236
|
)
|
|
237
|
+
# The system metrics monitor reads the run through the global tracking uri,
|
|
238
|
+
# so remember the uri that was actually settled on rather than the argument.
|
|
239
|
+
self.tracking_uri = effective_tracking_uri
|
|
213
240
|
# Only the argument is passed to the client; when `MLFLOW_TRACKING_URI` took priority it
|
|
214
241
|
# is left None so MLflow resolves the environment variable itself.
|
|
215
242
|
self.client = mlflow.MlflowClient(tracking_uri=None if env_tracking_uri else tracking_uri)
|
|
216
243
|
self.run_finish_status = mlflow.entities.RunStatus.to_string(mlflow.entities.RunStatus.FINISHED)
|
|
217
244
|
self.close_on_complete = close_on_complete
|
|
245
|
+
self.log_system_metrics = log_system_metrics
|
|
246
|
+
for name, value in (
|
|
247
|
+
("system_metrics_sampling_interval", system_metrics_sampling_interval),
|
|
248
|
+
("system_metrics_samples_before_logging", system_metrics_samples_before_logging),
|
|
249
|
+
):
|
|
250
|
+
if value is not None and value <= 0:
|
|
251
|
+
raise ValueError(f"`{name}` must be a positive number, got {value}.")
|
|
252
|
+
self.system_metrics_sampling_interval = system_metrics_sampling_interval
|
|
253
|
+
self.system_metrics_samples_before_logging = system_metrics_samples_before_logging
|
|
254
|
+
self.system_metrics_monitor = None
|
|
255
|
+
self._monitored_run_id: str | None = None
|
|
256
|
+
self._previous_tracking_uri: str | None = None
|
|
257
|
+
self._tracking_uri_overridden = False
|
|
218
258
|
self.experiment = None
|
|
219
259
|
self.cur_run = None
|
|
220
260
|
self.dataset_dict = dataset_dict
|
|
@@ -295,6 +335,81 @@ class MLFlowHandler:
|
|
|
295
335
|
else:
|
|
296
336
|
self._default_dataset_log(self.dataset_dict)
|
|
297
337
|
|
|
338
|
+
if self.log_system_metrics:
|
|
339
|
+
self._start_system_metrics_monitor()
|
|
340
|
+
|
|
341
|
+
def _start_system_metrics_monitor(self) -> None:
|
|
342
|
+
"""
|
|
343
|
+
Start sampling the system resource usage of the current run, if it is not sampled yet.
|
|
344
|
+
|
|
345
|
+
A workflow attaches one handler per engine, and those handlers share a run, so the run is
|
|
346
|
+
sampled by the first handler that starts and left alone by the other ones.
|
|
347
|
+
"""
|
|
348
|
+
if self.system_metrics_monitor is not None or self.cur_run is None:
|
|
349
|
+
return
|
|
350
|
+
|
|
351
|
+
if not has_system_metrics:
|
|
352
|
+
warnings.warn("Please install mlflow>=2.8.0 to record the system metrics.")
|
|
353
|
+
return
|
|
354
|
+
|
|
355
|
+
run_id = self.cur_run.info.run_id
|
|
356
|
+
with MLFlowHandler._system_metrics_lock:
|
|
357
|
+
if run_id in MLFlowHandler._monitored_run_ids:
|
|
358
|
+
return
|
|
359
|
+
|
|
360
|
+
kwargs = {}
|
|
361
|
+
if self.system_metrics_sampling_interval is not None:
|
|
362
|
+
kwargs["sampling_interval"] = self.system_metrics_sampling_interval
|
|
363
|
+
if self.system_metrics_samples_before_logging is not None:
|
|
364
|
+
kwargs["samples_before_logging"] = self.system_metrics_samples_before_logging
|
|
365
|
+
|
|
366
|
+
# mlflow reads the run to sample through the global tracking uri, not through
|
|
367
|
+
# the client, so it has to be pointed at ours for as long as we sample. Setting
|
|
368
|
+
# it also writes MLFLOW_TRACKING_URI, which every later handler reads in
|
|
369
|
+
# preference to its own argument, so the previous value is put back when
|
|
370
|
+
# sampling stops. `None` is a meaningful previous value, meaning it was unset,
|
|
371
|
+
# and passing it back to mlflow restores exactly that.
|
|
372
|
+
previous_tracking_uri = os.environ.get("MLFLOW_TRACKING_URI")
|
|
373
|
+
overridden = False
|
|
374
|
+
try:
|
|
375
|
+
if self.tracking_uri:
|
|
376
|
+
mlflow.set_tracking_uri(self.tracking_uri)
|
|
377
|
+
overridden = True
|
|
378
|
+
monitor = SystemMetricsMonitor(run_id, **kwargs)
|
|
379
|
+
monitor.start()
|
|
380
|
+
except Exception as e:
|
|
381
|
+
# a workflow should not fail because its resource usage cannot be recorded
|
|
382
|
+
if overridden:
|
|
383
|
+
mlflow.set_tracking_uri(previous_tracking_uri)
|
|
384
|
+
warnings.warn(f"Failed to record the system metrics: {e}")
|
|
385
|
+
return
|
|
386
|
+
self._previous_tracking_uri = previous_tracking_uri
|
|
387
|
+
self._tracking_uri_overridden = overridden
|
|
388
|
+
|
|
389
|
+
MLFlowHandler._monitored_run_ids.add(run_id)
|
|
390
|
+
self.system_metrics_monitor = monitor
|
|
391
|
+
self._monitored_run_id = run_id
|
|
392
|
+
|
|
393
|
+
def _stop_system_metrics_monitor(self) -> None:
|
|
394
|
+
"""
|
|
395
|
+
Stop sampling the system resource usage, if this handler is the one sampling it.
|
|
396
|
+
"""
|
|
397
|
+
if self.system_metrics_monitor is None:
|
|
398
|
+
return
|
|
399
|
+
|
|
400
|
+
with MLFlowHandler._system_metrics_lock:
|
|
401
|
+
try:
|
|
402
|
+
self.system_metrics_monitor.finish()
|
|
403
|
+
except Exception as e:
|
|
404
|
+
warnings.warn(f"Failed to stop recording the system metrics: {e}")
|
|
405
|
+
if self._tracking_uri_overridden:
|
|
406
|
+
mlflow.set_tracking_uri(self._previous_tracking_uri)
|
|
407
|
+
self._tracking_uri_overridden = False
|
|
408
|
+
self._previous_tracking_uri = None
|
|
409
|
+
MLFlowHandler._monitored_run_ids.discard(self._monitored_run_id)
|
|
410
|
+
self.system_metrics_monitor = None
|
|
411
|
+
self._monitored_run_id = None
|
|
412
|
+
|
|
298
413
|
def _set_experiment(self):
|
|
299
414
|
experiment = self.experiment
|
|
300
415
|
if not experiment:
|
|
@@ -394,6 +509,8 @@ class MLFlowHandler:
|
|
|
394
509
|
"""
|
|
395
510
|
Handler for train or validation/evaluation completed Event.
|
|
396
511
|
"""
|
|
512
|
+
self._stop_system_metrics_monitor()
|
|
513
|
+
|
|
397
514
|
if self.artifacts and self.cur_run:
|
|
398
515
|
artifact_list = self._parse_artifacts()
|
|
399
516
|
for artifact in artifact_list:
|
|
@@ -430,6 +547,8 @@ class MLFlowHandler:
|
|
|
430
547
|
Stop current running logger of MLFlow and release local SQLite resources.
|
|
431
548
|
|
|
432
549
|
"""
|
|
550
|
+
self._stop_system_metrics_monitor()
|
|
551
|
+
|
|
433
552
|
try:
|
|
434
553
|
if self.cur_run:
|
|
435
554
|
self.client.set_terminated(self.cur_run.info.run_id, self.run_finish_status)
|
|
@@ -307,7 +307,13 @@ class ZarrAvgMerger(Merger):
|
|
|
307
307
|
self.value_store = zarr.storage.TempStore() if value_store is None else value_store # type: ignore
|
|
308
308
|
self.count_store = zarr.storage.TempStore() if count_store is None else count_store # type: ignore
|
|
309
309
|
|
|
310
|
-
|
|
310
|
+
# zarr 3.3 rejects boolean chunk arguments; `None` there means auto-chunking,
|
|
311
|
+
# which is what `chunks=True` meant before. On zarr < 3.3 `None` instead means
|
|
312
|
+
# a single whole-shape chunk, so the substitution must not be applied there.
|
|
313
|
+
if chunks is True and version_geq(get_package_version("zarr"), "3.3.0"):
|
|
314
|
+
self.chunks: Sequence[int] | bool | None = None
|
|
315
|
+
else:
|
|
316
|
+
self.chunks = chunks
|
|
311
317
|
|
|
312
318
|
# Initialize codecs/compressor attributes with proper types
|
|
313
319
|
self.codecs: list | None = None
|
|
@@ -15,6 +15,7 @@ from .adversarial_loss import PatchAdversarialLoss
|
|
|
15
15
|
from .aucm_loss import AUCMLoss
|
|
16
16
|
from .barlow_twins import BarlowTwinsLoss
|
|
17
17
|
from .boundary_loss import BoundaryLoss
|
|
18
|
+
from .calibration import HardL1ACELoss, SoftL1ACELoss
|
|
18
19
|
from .cldice import SoftclDiceLoss, SoftDiceclDiceLoss
|
|
19
20
|
from .contrastive import ContrastiveLoss
|
|
20
21
|
from .deform import BendingEnergyLoss, DiffusionLoss
|