monai-weekly 1.7.dev2625__tar.gz → 1.7.dev2626__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.dev2625/monai_weekly.egg-info → monai_weekly-1.7.dev2626}/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/__init__.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_version.py +3 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/__init__.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/box_utils.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/meta_obj.py +4 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/meta_tensor.py +94 -12
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/utils.py +4 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/adversarial_loss.py +2 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/cldice.py +2 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/dice.py +7 -7
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/focal_loss.py +2 -2
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/hausdorff_loss.py +3 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/image_dissimilarity.py +7 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/mcc_loss.py +3 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/perceptual.py +3 -2
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/spatial_mask.py +5 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/tversky.py +3 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/unified_focal_loss.py +3 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/active_learning_metrics.py +5 -2
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/average_precision.py +4 -2
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/confusion_matrix.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/cumulative_average.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/rocauc.py +6 -2
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/utils.py +7 -4
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/adaptors.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/croppad/functional.py +2 -2
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/intensity/array.py +8 -6
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/inverse.py +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/lazy/functional.py +6 -4
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/post/array.py +7 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/spatial/array.py +52 -13
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/spatial/functional.py +4 -3
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utility/array.py +28 -15
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utility/dictionary.py +7 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626/monai_weekly.egg-info}/PKG-INFO +1 -1
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/LICENSE +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/MANIFEST.in +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/README.md +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/gmm/gmm.cpp +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/gmm/gmm.h +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/gmm/gmm_cpu.cpp +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/gmm/gmm_cuda.cu +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/gmm/gmm_cuda_linalg.cuh +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/_extensions/loader.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/__main__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/auto_runner.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/bundle_gen.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/data_analyzer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/ensemble_builder.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/hpo_gen.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/transforms.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/datasets.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepedit/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepedit/interaction.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepedit/transforms.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepgrow/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepgrow/dataset.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepgrow/interaction.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/deepgrow/transforms.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/metrics/coco.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/metrics/matching.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/networks/retinanet_detector.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/networks/retinanet_network.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/transforms/box_ops.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/ATSS_matcher.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/anchor_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/box_coder.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/box_selector.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/detector_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/hard_negative_sampler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/detection/utils/predict_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/generation/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/generation/maisi/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/generation/maisi/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/generation/maisi/networks/autoencoderkl_maisi.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/generation/maisi/networks/controlnet_maisi.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/generation/maisi/networks/diffusion_model_unet_maisi.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/mmars/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/mmars/mmars.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/mmars/model_desc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nnunet/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nnunet/__main__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nnunet/nnunet_bundle.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nnunet/nnunetv2_runner.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nnunet/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nuclick/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/nuclick/transforms.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/losses/hovernet_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/metrics/lesion_froc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/post/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/post/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/stain/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/stain/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/transforms/stain/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/pathology/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/complex_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/fastmri_reader.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/mri_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/blocks/varnetblock.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/nets/complex_unet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/nets/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/networks/nets/varnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/transforms/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/reconstruction/transforms/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/tcia/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/tcia/label_desc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/tcia/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/vista3d/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/vista3d/inferer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/vista3d/sampler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/apps/vista3d/transforms.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/auto3dseg/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/auto3dseg/algo_gen.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/auto3dseg/analyzer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/auto3dseg/operations.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/auto3dseg/seg_summarizer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/auto3dseg/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/__main__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/config_item.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/config_parser.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/properties.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/reference_resolver.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/scripts.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/bundle/workflows.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/config/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/config/deviceconfig.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/config/type_definitions.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/csv_saver.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/dataloader.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/dataset.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/dataset_summary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/decathlon_datalist.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/fft_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/folder_layout.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/grid_dataset.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/image_dataset.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/image_reader.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/image_writer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/iterable_dataset.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/itk_torch_bridge.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/samplers.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/synthetic.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/test_time_augmentation.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/thread_buffer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/torchscript_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/ultrasound_confidence_map.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/video_dataset.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/wsi_datasets.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/data/wsi_reader.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/engines/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/engines/evaluator.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/engines/trainer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/engines/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/engines/workflow.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/client/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/client/client_algo.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/client/monai_algo.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/utils/constants.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/utils/exchange_object.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/fl/utils/filters.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/average_precision.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/calibration.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/checkpoint_loader.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/checkpoint_saver.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/classification_saver.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/clearml_handlers.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/confusion_matrix.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/decollate_batch.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/earlystop_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/garbage_collector.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/ignite_metric.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/logfile_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/lr_schedule_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/mean_dice.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/mean_iou.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/metric_logger.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/metrics_reloaded_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/metrics_saver.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/mlflow_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/nvtx_handlers.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/parameter_scheduler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/postprocessing.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/probability_maps.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/regression_metrics.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/roc_auc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/smartcache_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/stats_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/tensorboard_handlers.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/trt_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/handlers/validation_handler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/inferers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/inferers/inferer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/inferers/merger.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/inferers/splitter.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/inferers/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/aucm_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/barlow_twins.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/contrastive.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/deform.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/ds_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/giou_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/multi_scale.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/nacl_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/spectral_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/ssim_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/sure_loss.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/losses/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/calibration.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/embedding_collapse.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/f_beta_score.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/fid.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/froc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/generalized_dice.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/hausdorff_distance.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/loss_metric.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/meandice.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/meaniou.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/metric.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/mmd.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/panoptic_quality.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/regression.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/surface_dice.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/surface_distance.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/wrapper.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/acti_norm.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/activation.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/activation_checkpointing.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/aspp.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/attention_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/backbone_fpn_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/cablock.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/convolutions.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/crf.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/crossattention.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/denseblock.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/dints_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/downsample.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/dynunet_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/encoder.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/fcn.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/feature_pyramid_network.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/fft_utils_t.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/localnet_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/mednext_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/mlp.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/patchembedding.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/pos_embed_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/regunet_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/rel_pos_embedding.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/segresnet_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/selfattention.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/spade_norm.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/spatialattention.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/squeeze_and_excitation.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/text_embedding.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/transformerblock.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/unetr_block.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/upsample.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/blocks/warp.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/conjugate_gradient.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/convutils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/drop_path.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/factories.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/filtering.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/gmm.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/simplelayers.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/spatial_transforms.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/vector_quantizer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/layers/weight_init.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/ahnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/attentionunet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/autoencoder.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/basic_unet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/basic_unetplusplus.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/cell_sam_wrapper.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/classifier.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/controlnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/daf3d.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/densenet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/dints.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/dynunet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/efficientnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/flexible_unet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/fullyconnectednet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/generator.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/highresnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/hovernet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/masked_autoencoder_vit.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/mednext.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/milmodel.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/netadapter.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/patchgan_discriminator.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/quicknat.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/regressor.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/regunet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/resnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/restormer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/segresnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/segresnet_ds.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/senet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/spade_autoencoderkl.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/spade_diffusion_model_unet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/spade_network.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/swin_unetr.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/torchvision_fc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/transchex.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/transformer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/unet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/unetr.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/varautoencoder.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/vista3d.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/vit.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/vitautoenc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/vnet.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/voxelmorph.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/nets/vqvae.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/schedulers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/schedulers/ddim.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/schedulers/ddpm.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/schedulers/pndm.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/schedulers/rectified_flow.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/schedulers/scheduler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/trt_compiler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/networks/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/optimizers/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/optimizers/lr_finder.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/optimizers/lr_scheduler.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/optimizers/novograd.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/optimizers/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/py.typed +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/compose.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/croppad/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/croppad/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/croppad/batch.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/croppad/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/intensity/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/intensity/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/inverse_batch_transform.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/io/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/io/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/io/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/lazy/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/lazy/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/lazy/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/lazy/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/meta_utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/meta_utility/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/nvtx.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/post/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/post/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/regularization/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/regularization/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/regularization/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/signal/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/signal/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/signal/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/smooth_field/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/smooth_field/array.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/smooth_field/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/spatial/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/spatial/dictionary.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/traits.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/transform.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utility/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utils_create_transform_ims.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utils_morphological_ops.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/transforms/utils_pytorch_numpy_unification.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/component_store.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/decorators.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/deprecate_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/dist.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/enums.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/jupyter_utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/misc.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/module.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/nvtx.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/ordering.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/profiling.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/state_cacher.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/tf32.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/utils/type_conversion.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/__init__.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/class_activation_maps.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/gradient_based.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/img2tensorboard.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/occlusion_sensitivity.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/utils.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/visualize/visualizer.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai_weekly.egg-info/SOURCES.txt +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai_weekly.egg-info/dependency_links.txt +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai_weekly.egg-info/not-zip-safe +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai_weekly.egg-info/requires.txt +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai_weekly.egg-info/top_level.txt +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/pyproject.toml +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/setup.cfg +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/setup.py +0 -0
- {monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/versioneer.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-06-
|
|
11
|
+
"date": "2026-06-28T03:10:43+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.7.
|
|
14
|
+
"full-revisionid": "859efd3e7cdbbdf09355d0e91258b5d9c15e2547",
|
|
15
|
+
"version": "1.7.dev2626"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -71,7 +71,7 @@ from .itk_torch_bridge import (
|
|
|
71
71
|
monai_to_itk_ddf,
|
|
72
72
|
)
|
|
73
73
|
from .meta_obj import MetaObj, get_track_meta, set_track_meta
|
|
74
|
-
from .meta_tensor import MetaTensor
|
|
74
|
+
from .meta_tensor import MetaTensor, get_spatial_ndim
|
|
75
75
|
from .samplers import DistributedSampler, DistributedWeightedRandomSampler
|
|
76
76
|
from .synthetic import create_test_image_2d, create_test_image_3d
|
|
77
77
|
from .test_time_augmentation import TestTimeAugmentation
|
|
@@ -1200,7 +1200,7 @@ def batched_nms(
|
|
|
1200
1200
|
# from different classes do not overlap
|
|
1201
1201
|
max_coordinate = boxes_t.max()
|
|
1202
1202
|
offsets = labels_t.to(boxes_t) * (max_coordinate + 1)
|
|
1203
|
-
boxes_for_nms =
|
|
1203
|
+
boxes_for_nms = boxes_t + offsets[:, None]
|
|
1204
1204
|
keep = non_max_suppression(boxes_for_nms, scores_t, nms_thresh, max_proposals, box_overlap_metric)
|
|
1205
1205
|
|
|
1206
1206
|
# convert tensor back to numpy if needed
|
|
@@ -24,6 +24,9 @@ from monai.utils import TraceKeys, first, is_immutable
|
|
|
24
24
|
|
|
25
25
|
_TRACK_META = True
|
|
26
26
|
|
|
27
|
+
# Default number of spatial dimensions for medical imaging (3D volumetric data)
|
|
28
|
+
_DEFAULT_SPATIAL_NDIM = 3
|
|
29
|
+
|
|
27
30
|
__all__ = ["get_track_meta", "set_track_meta", "MetaObj"]
|
|
28
31
|
|
|
29
32
|
|
|
@@ -84,6 +87,7 @@ class MetaObj:
|
|
|
84
87
|
self._applied_operations: list = MetaObj.get_default_applied_operations()
|
|
85
88
|
self._pending_operations: list = MetaObj.get_default_applied_operations() # the same default as applied_ops
|
|
86
89
|
self._is_batch: bool = False
|
|
90
|
+
self._spatial_ndim: int = 3 # default: 3 spatial dimensions
|
|
87
91
|
|
|
88
92
|
@staticmethod
|
|
89
93
|
def flatten_meta_objs(*args: Iterable):
|
|
@@ -13,22 +13,60 @@ from __future__ import annotations
|
|
|
13
13
|
|
|
14
14
|
import functools
|
|
15
15
|
import warnings
|
|
16
|
-
from collections.abc import Sequence
|
|
16
|
+
from collections.abc import Mapping, Sequence
|
|
17
17
|
from copy import deepcopy
|
|
18
|
+
from numbers import Integral
|
|
18
19
|
from typing import Any
|
|
19
20
|
|
|
20
21
|
import numpy as np
|
|
21
22
|
import torch
|
|
22
23
|
|
|
23
24
|
import monai
|
|
24
|
-
from monai.config.type_definitions import NdarrayTensor
|
|
25
|
-
from monai.data.meta_obj import MetaObj, get_track_meta
|
|
26
|
-
from monai.data.utils import affine_to_spacing, decollate_batch, list_data_collate, remove_extra_metadata
|
|
25
|
+
from monai.config.type_definitions import NdarrayOrTensor, NdarrayTensor
|
|
26
|
+
from monai.data.meta_obj import _DEFAULT_SPATIAL_NDIM, MetaObj, get_track_meta
|
|
27
|
+
from monai.data.utils import affine_to_spacing, decollate_batch, is_no_channel, list_data_collate, remove_extra_metadata
|
|
27
28
|
from monai.utils import look_up_option
|
|
28
29
|
from monai.utils.enums import LazyAttr, MetaKeys, PostFix, SpaceKeys
|
|
29
30
|
from monai.utils.type_conversion import convert_data_type, convert_to_dst_type, convert_to_numpy, convert_to_tensor
|
|
30
31
|
|
|
31
|
-
__all__ = ["MetaTensor"]
|
|
32
|
+
__all__ = ["MetaTensor", "get_spatial_ndim"]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _normalize_spatial_ndim(spatial_ndim: int, tensor_ndim: int, no_channel: bool = False) -> int:
|
|
36
|
+
"""Clamp spatial dims to a valid range for the current tensor shape."""
|
|
37
|
+
limit = max(int(tensor_ndim), 1) if no_channel else max(int(tensor_ndim) - 1, 1)
|
|
38
|
+
return max(1, min(int(spatial_ndim), limit))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _has_explicit_no_channel(meta: Mapping | None) -> bool:
|
|
42
|
+
return (
|
|
43
|
+
isinstance(meta, Mapping)
|
|
44
|
+
and MetaKeys.ORIGINAL_CHANNEL_DIM in meta
|
|
45
|
+
and is_no_channel(meta[MetaKeys.ORIGINAL_CHANNEL_DIM])
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def get_spatial_ndim(img: NdarrayOrTensor) -> int:
|
|
50
|
+
"""Return the number of spatial dimensions assuming channel-first layout.
|
|
51
|
+
|
|
52
|
+
Uses ``MetaTensor.spatial_ndim`` when available, otherwise falls back to
|
|
53
|
+
``img.ndim - 1``. Always assumes channel-first (``no_channel=False``)
|
|
54
|
+
because callers run after ``EnsureChannelFirst`` has already added one.
|
|
55
|
+
"""
|
|
56
|
+
if isinstance(img, MetaTensor):
|
|
57
|
+
return _normalize_spatial_ndim(img.spatial_ndim, img.ndim)
|
|
58
|
+
return img.ndim - 1
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _is_batch_only_index(index: Any) -> bool:
|
|
62
|
+
"""True when indexing pattern selects only the batch axis (e.g., ``x[0]`` or ``x[0, ...]``)."""
|
|
63
|
+
if isinstance(index, (int, np.integer)):
|
|
64
|
+
return True
|
|
65
|
+
if not isinstance(index, Sequence) or not index:
|
|
66
|
+
return False
|
|
67
|
+
if not isinstance(index[0], (int, np.integer)):
|
|
68
|
+
return False
|
|
69
|
+
return all(i in (slice(None, None, None), Ellipsis, None) for i in index[1:])
|
|
32
70
|
|
|
33
71
|
|
|
34
72
|
@functools.lru_cache(None)
|
|
@@ -111,6 +149,7 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
111
149
|
meta: dict | None = None,
|
|
112
150
|
applied_operations: list | None = None,
|
|
113
151
|
*args,
|
|
152
|
+
spatial_ndim: int | None = None,
|
|
114
153
|
**kwargs,
|
|
115
154
|
) -> MetaTensor:
|
|
116
155
|
_kwargs = {"device": kwargs.pop("device", None), "dtype": kwargs.pop("dtype", None)} if kwargs else {}
|
|
@@ -123,6 +162,7 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
123
162
|
meta: dict | None = None,
|
|
124
163
|
applied_operations: list | None = None,
|
|
125
164
|
*_args,
|
|
165
|
+
spatial_ndim: int | None = None,
|
|
126
166
|
**_kwargs,
|
|
127
167
|
) -> None:
|
|
128
168
|
"""
|
|
@@ -134,6 +174,8 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
134
174
|
the list is typically maintained by `monai.transforms.TraceableTransform`.
|
|
135
175
|
See also: :py:class:`monai.transforms.TraceableTransform`
|
|
136
176
|
_args: additional args (currently not in use in this constructor).
|
|
177
|
+
spatial_ndim: optional number of spatial dimensions. If ``None``, derived
|
|
178
|
+
from the affine matrix clamped by the tensor shape.
|
|
137
179
|
_kwargs: additional kwargs (currently not in use in this constructor).
|
|
138
180
|
|
|
139
181
|
Note:
|
|
@@ -158,6 +200,14 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
158
200
|
self.affine = self.meta[MetaKeys.AFFINE]
|
|
159
201
|
else:
|
|
160
202
|
self.affine = self.get_default_affine()
|
|
203
|
+
# Initialize spatial_ndim from affine matrix (source of truth), clamped by tensor shape.
|
|
204
|
+
# This cached value is kept in sync via the affine setter for hot-path performance.
|
|
205
|
+
no_channel = _has_explicit_no_channel(self.meta)
|
|
206
|
+
if spatial_ndim is not None:
|
|
207
|
+
self.spatial_ndim = _normalize_spatial_ndim(spatial_ndim, self.ndim, no_channel=no_channel)
|
|
208
|
+
elif self.affine.ndim == 2:
|
|
209
|
+
self.spatial_ndim = _normalize_spatial_ndim(self.affine.shape[-1] - 1, self.ndim, no_channel=no_channel)
|
|
210
|
+
|
|
161
211
|
# applied_operations
|
|
162
212
|
if applied_operations is not None:
|
|
163
213
|
self.applied_operations = applied_operations
|
|
@@ -237,6 +287,7 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
237
287
|
if func == torch.Tensor.__getitem__:
|
|
238
288
|
if idx > 0 or len(args) < 2 or len(args[0]) < 1:
|
|
239
289
|
return ret
|
|
290
|
+
full_idx = args[1]
|
|
240
291
|
batch_idx = args[1][0] if isinstance(args[1], Sequence) else args[1]
|
|
241
292
|
# if using e.g., `batch[:, -1]` or `batch[..., -1]`, then the
|
|
242
293
|
# first element will be `slice(None, None, None)` and `Ellipsis`,
|
|
@@ -258,6 +309,8 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
258
309
|
ret_meta.is_batch = False
|
|
259
310
|
if hasattr(ret_meta, "__dict__"):
|
|
260
311
|
ret.__dict__ = ret_meta.__dict__.copy()
|
|
312
|
+
if _is_batch_only_index(full_idx):
|
|
313
|
+
ret.spatial_ndim = _normalize_spatial_ndim(ret.spatial_ndim, ret.ndim)
|
|
261
314
|
# `unbind` is used for `next(iter(batch))`. Also for `decollate_batch`.
|
|
262
315
|
# But we only want to split the batch if the `unbind` is along the 0th dimension.
|
|
263
316
|
elif func == torch.Tensor.unbind:
|
|
@@ -467,15 +520,42 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
467
520
|
|
|
468
521
|
@affine.setter
|
|
469
522
|
def affine(self, d: NdarrayTensor) -> None:
|
|
470
|
-
"""Set the affine.
|
|
471
|
-
|
|
523
|
+
"""Set the affine.
|
|
524
|
+
|
|
525
|
+
When setting a non-batched affine matrix, automatically synchronizes the cached
|
|
526
|
+
spatial_ndim attribute to maintain consistency between the affine matrix (source of truth)
|
|
527
|
+
and the cached spatial dimension count.
|
|
528
|
+
"""
|
|
529
|
+
a = torch.as_tensor(d, device=torch.device("cpu"), dtype=torch.float64)
|
|
530
|
+
self.meta[MetaKeys.AFFINE] = a
|
|
531
|
+
if a.ndim == 2: # non-batched: sync spatial_ndim from affine (source of truth)
|
|
532
|
+
no_channel = _has_explicit_no_channel(self.meta)
|
|
533
|
+
self.spatial_ndim = _normalize_spatial_ndim(a.shape[-1] - 1, self.ndim, no_channel=no_channel)
|
|
534
|
+
|
|
535
|
+
@property
|
|
536
|
+
def spatial_ndim(self) -> int:
|
|
537
|
+
"""Get the number of spatial dimensions.
|
|
538
|
+
|
|
539
|
+
This value is cached for hot-path performance and is kept in sync with the affine matrix
|
|
540
|
+
via the affine setter. The affine matrix is the source of truth for spatial dimensions.
|
|
541
|
+
"""
|
|
542
|
+
return getattr(self, "_spatial_ndim", _DEFAULT_SPATIAL_NDIM)
|
|
543
|
+
|
|
544
|
+
@spatial_ndim.setter
|
|
545
|
+
def spatial_ndim(self, val: int) -> None:
|
|
546
|
+
"""Set the number of spatial dimensions."""
|
|
547
|
+
if not isinstance(val, Integral):
|
|
548
|
+
raise TypeError(f"'val' must be an numbers.Integral type; got {type(val)}.")
|
|
549
|
+
if val < 1:
|
|
550
|
+
raise ValueError(f"spatial_ndim must be >= 1, got {val}")
|
|
551
|
+
self._spatial_ndim = int(val)
|
|
472
552
|
|
|
473
553
|
@property
|
|
474
554
|
def pixdim(self):
|
|
475
555
|
"""Get the spacing"""
|
|
476
556
|
if self.is_batch:
|
|
477
|
-
return [affine_to_spacing(a) for a in self.affine]
|
|
478
|
-
return affine_to_spacing(self.affine)
|
|
557
|
+
return [affine_to_spacing(a, r=self.spatial_ndim) for a in self.affine]
|
|
558
|
+
return affine_to_spacing(self.affine, r=self.spatial_ndim)
|
|
479
559
|
|
|
480
560
|
def peek_pending_shape(self):
|
|
481
561
|
"""
|
|
@@ -490,7 +570,7 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
490
570
|
|
|
491
571
|
def peek_pending_affine(self):
|
|
492
572
|
res = self.affine
|
|
493
|
-
r =
|
|
573
|
+
r = res.shape[-1] - 1 if res.ndim >= 2 else self.spatial_ndim
|
|
494
574
|
if r not in (2, 3):
|
|
495
575
|
warnings.warn(f"Only 2d and 3d affine are supported, got {r}d input.")
|
|
496
576
|
for p in self.pending_operations:
|
|
@@ -503,8 +583,10 @@ class MetaTensor(MetaObj, torch.Tensor):
|
|
|
503
583
|
return res
|
|
504
584
|
|
|
505
585
|
def peek_pending_rank(self):
|
|
506
|
-
|
|
507
|
-
|
|
586
|
+
if self.pending_operations:
|
|
587
|
+
a = self.pending_operations[-1].get(LazyAttr.AFFINE, None)
|
|
588
|
+
return 1 if a is None else int(max(1, len(a) - 1))
|
|
589
|
+
return self.spatial_ndim
|
|
508
590
|
|
|
509
591
|
def new_empty(self, size, dtype=None, device=None, requires_grad=False): # type: ignore[override]
|
|
510
592
|
"""
|
|
@@ -31,7 +31,7 @@ import torch
|
|
|
31
31
|
from torch.utils.data._utils.collate import default_collate
|
|
32
32
|
|
|
33
33
|
from monai.config.type_definitions import NdarrayOrTensor, NdarrayTensor, PathLike
|
|
34
|
-
from monai.data.meta_obj import MetaObj
|
|
34
|
+
from monai.data.meta_obj import _DEFAULT_SPATIAL_NDIM, MetaObj
|
|
35
35
|
from monai.utils import (
|
|
36
36
|
MAX_SEED,
|
|
37
37
|
BlendMode,
|
|
@@ -432,6 +432,9 @@ def collate_meta_tensor_fn(batch, *, collate_fn_map=None):
|
|
|
432
432
|
collated.meta = default_collate(meta_dicts)
|
|
433
433
|
collated.applied_operations = [i.applied_operations or TraceKeys.NONE for i in batch]
|
|
434
434
|
collated.is_batch = True
|
|
435
|
+
collated.spatial_ndim = min(
|
|
436
|
+
min(getattr(t, "spatial_ndim", _DEFAULT_SPATIAL_NDIM) for t in batch), max(collated.ndim - 1, 1)
|
|
437
|
+
)
|
|
435
438
|
return collated
|
|
436
439
|
|
|
437
440
|
|
|
@@ -129,7 +129,8 @@ class PatchAdversarialLoss(_Loss):
|
|
|
129
129
|
target_is_real = True # With generator, we always want this to be true!
|
|
130
130
|
warnings.warn(
|
|
131
131
|
"Variable target_is_real has been set to False, but for_discriminator is set"
|
|
132
|
-
"to False. To optimise a generator, target_is_real must be set to True."
|
|
132
|
+
"to False. To optimise a generator, target_is_real must be set to True.",
|
|
133
|
+
stacklevel=2,
|
|
133
134
|
)
|
|
134
135
|
|
|
135
136
|
if not isinstance(input, list):
|
|
@@ -134,7 +134,8 @@ class SoftclDiceLoss(_Loss):
|
|
|
134
134
|
Args:
|
|
135
135
|
iter_: Number of iterations for skeletonization. Must be a non-negative integer. Defaults to 3.
|
|
136
136
|
smooth_nr: a small constant added to the numerator to avoid zero. Defaults to 1.0.
|
|
137
|
-
smooth_dr: a small constant added to the denominator
|
|
137
|
+
smooth_dr: a small constant added to the denominator of the individual precision /
|
|
138
|
+
sensitivity ratios and the internal Dice denominator to avoid nan. Defaults to 1.0.
|
|
138
139
|
smooth: a small constant added to the denominator of the harmonic mean to avoid nan. Defaults to 1e-4.
|
|
139
140
|
include_background: if False, channel index 0 (background category) is excluded from the calculation.
|
|
140
141
|
if the non-background segmentations are small compared to the total image size they can get overwhelmed
|
|
@@ -156,7 +156,7 @@ class DiceLoss(_Loss):
|
|
|
156
156
|
n_pred_ch = input.shape[1]
|
|
157
157
|
if self.softmax:
|
|
158
158
|
if n_pred_ch == 1:
|
|
159
|
-
warnings.warn("single channel prediction, `softmax=True` ignored.")
|
|
159
|
+
warnings.warn("single channel prediction, `softmax=True` ignored.", stacklevel=2)
|
|
160
160
|
else:
|
|
161
161
|
input = torch.softmax(input, 1)
|
|
162
162
|
|
|
@@ -165,13 +165,13 @@ class DiceLoss(_Loss):
|
|
|
165
165
|
|
|
166
166
|
if self.to_onehot_y:
|
|
167
167
|
if n_pred_ch == 1:
|
|
168
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
168
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
169
169
|
else:
|
|
170
170
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
171
171
|
|
|
172
172
|
if not self.include_background:
|
|
173
173
|
if n_pred_ch == 1:
|
|
174
|
-
warnings.warn("single channel prediction, `include_background=False` ignored.")
|
|
174
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
175
175
|
else:
|
|
176
176
|
# if skipping background, removing first channel
|
|
177
177
|
target = target[:, 1:]
|
|
@@ -405,7 +405,7 @@ class GeneralizedDiceLoss(_Loss):
|
|
|
405
405
|
n_pred_ch = input.shape[1]
|
|
406
406
|
if self.softmax:
|
|
407
407
|
if n_pred_ch == 1:
|
|
408
|
-
warnings.warn("single channel prediction, `softmax=True` ignored.")
|
|
408
|
+
warnings.warn("single channel prediction, `softmax=True` ignored.", stacklevel=2)
|
|
409
409
|
else:
|
|
410
410
|
input = torch.softmax(input, 1)
|
|
411
411
|
|
|
@@ -414,13 +414,13 @@ class GeneralizedDiceLoss(_Loss):
|
|
|
414
414
|
|
|
415
415
|
if self.to_onehot_y:
|
|
416
416
|
if n_pred_ch == 1:
|
|
417
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
417
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
418
418
|
else:
|
|
419
419
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
420
420
|
|
|
421
421
|
if not self.include_background:
|
|
422
422
|
if n_pred_ch == 1:
|
|
423
|
-
warnings.warn("single channel prediction, `include_background=False` ignored.")
|
|
423
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
424
424
|
else:
|
|
425
425
|
# if skipping background, removing first channel
|
|
426
426
|
target = target[:, 1:]
|
|
@@ -987,7 +987,7 @@ class DiceFocalLoss(_Loss):
|
|
|
987
987
|
if self.to_onehot_y:
|
|
988
988
|
n_pred_ch = input.shape[1]
|
|
989
989
|
if n_pred_ch == 1:
|
|
990
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
990
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
991
991
|
else:
|
|
992
992
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
993
993
|
dice_loss = self.dice(input, target)
|
|
@@ -146,13 +146,13 @@ class FocalLoss(_Loss):
|
|
|
146
146
|
|
|
147
147
|
if self.to_onehot_y:
|
|
148
148
|
if n_pred_ch == 1:
|
|
149
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
149
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
150
150
|
else:
|
|
151
151
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
152
152
|
|
|
153
153
|
if not self.include_background:
|
|
154
154
|
if n_pred_ch == 1:
|
|
155
|
-
warnings.warn("single channel prediction, `include_background=False` ignored.")
|
|
155
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
156
156
|
else:
|
|
157
157
|
# if skipping background, removing first channel
|
|
158
158
|
target = target[:, 1:]
|
|
@@ -154,7 +154,7 @@ class HausdorffDTLoss(_Loss):
|
|
|
154
154
|
n_pred_ch = input.shape[1]
|
|
155
155
|
if self.softmax:
|
|
156
156
|
if n_pred_ch == 1:
|
|
157
|
-
warnings.warn("single channel prediction, `softmax=True` ignored.")
|
|
157
|
+
warnings.warn("single channel prediction, `softmax=True` ignored.", stacklevel=2)
|
|
158
158
|
else:
|
|
159
159
|
input = torch.softmax(input, 1)
|
|
160
160
|
|
|
@@ -163,13 +163,13 @@ class HausdorffDTLoss(_Loss):
|
|
|
163
163
|
|
|
164
164
|
if self.to_onehot_y:
|
|
165
165
|
if n_pred_ch == 1:
|
|
166
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
166
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
167
167
|
else:
|
|
168
168
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
169
169
|
|
|
170
170
|
if not self.include_background:
|
|
171
171
|
if n_pred_ch == 1:
|
|
172
|
-
warnings.warn("single channel prediction, `include_background=False` ignored.")
|
|
172
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
173
173
|
else:
|
|
174
174
|
# If skipping background, removing first channel
|
|
175
175
|
target = target[:, 1:]
|
|
@@ -233,10 +233,14 @@ class GlobalMutualInformationLoss(_Loss):
|
|
|
233
233
|
self.kernel_type = look_up_option(kernel_type, ["gaussian", "b-spline"])
|
|
234
234
|
self.num_bins = num_bins
|
|
235
235
|
self.kernel_type = kernel_type
|
|
236
|
+
# declared as buffers so they move with the module (e.g. ``.to(device)``); only populated for the
|
|
237
|
+
# gaussian kernel, hence the ``Tensor`` annotation reflects the type at the use sites in that path.
|
|
238
|
+
self.preterm: torch.Tensor | None
|
|
236
239
|
self.bin_centers: torch.Tensor | None
|
|
240
|
+
self.register_buffer("preterm", None, persistent=False)
|
|
237
241
|
self.register_buffer("bin_centers", None, persistent=False)
|
|
238
242
|
if self.kernel_type == "gaussian":
|
|
239
|
-
self.preterm
|
|
243
|
+
self.register_buffer("preterm", 1 / (2 * sigma**2), persistent=False)
|
|
240
244
|
self.register_buffer("bin_centers", bin_centers[None, None, ...], persistent=False)
|
|
241
245
|
self.smooth_nr = float(smooth_nr)
|
|
242
246
|
self.smooth_dr = float(smooth_dr)
|
|
@@ -316,8 +320,8 @@ class GlobalMutualInformationLoss(_Loss):
|
|
|
316
320
|
"""
|
|
317
321
|
img = torch.clamp(img, 0, 1)
|
|
318
322
|
img = img.reshape(img.shape[0], -1, 1) # (batch, num_sample, 1)
|
|
319
|
-
if self.bin_centers is None:
|
|
320
|
-
raise ValueError("bin_centers must be defined for gaussian parzen windowing.")
|
|
323
|
+
if self.bin_centers is None or self.preterm is None:
|
|
324
|
+
raise ValueError("bin_centers and preterm must be defined for gaussian parzen windowing.")
|
|
321
325
|
weight = torch.exp(
|
|
322
326
|
-self.preterm.to(img) * (img - self.bin_centers.to(img)) ** 2
|
|
323
327
|
) # (batch, num_sample, num_bin)
|
|
@@ -133,7 +133,7 @@ class MCCLoss(_Loss):
|
|
|
133
133
|
n_pred_ch = input.shape[1]
|
|
134
134
|
if self.softmax:
|
|
135
135
|
if n_pred_ch == 1:
|
|
136
|
-
warnings.warn("single channel prediction, `softmax=True` ignored.")
|
|
136
|
+
warnings.warn("single channel prediction, `softmax=True` ignored.", stacklevel=2)
|
|
137
137
|
else:
|
|
138
138
|
input = torch.softmax(input, 1)
|
|
139
139
|
|
|
@@ -142,13 +142,13 @@ class MCCLoss(_Loss):
|
|
|
142
142
|
|
|
143
143
|
if self.to_onehot_y:
|
|
144
144
|
if n_pred_ch == 1:
|
|
145
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
145
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
146
146
|
else:
|
|
147
147
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
148
148
|
|
|
149
149
|
if not self.include_background:
|
|
150
150
|
if n_pred_ch == 1:
|
|
151
|
-
warnings.warn("single channel prediction, `include_background=False` ignored.")
|
|
151
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
152
152
|
else:
|
|
153
153
|
target = target[:, 1:]
|
|
154
154
|
input = input[:, 1:]
|
|
@@ -112,7 +112,7 @@ class PerceptualLoss(nn.Module):
|
|
|
112
112
|
)
|
|
113
113
|
if not channel_wise:
|
|
114
114
|
warnings.warn(
|
|
115
|
-
"MedicalNet networks
|
|
115
|
+
"MedicalNet networks support channel-wise loss. Consider setting channel_wise=True.", stacklevel=2
|
|
116
116
|
)
|
|
117
117
|
|
|
118
118
|
# Channel-wise only for MedicalNet
|
|
@@ -127,7 +127,8 @@ class PerceptualLoss(nn.Module):
|
|
|
127
127
|
torch.hub.set_dir(cache_dir)
|
|
128
128
|
# raise a warning that this may change the default cache dir for all torch.hub calls
|
|
129
129
|
warnings.warn(
|
|
130
|
-
f"Setting cache_dir to {cache_dir}, this may change the default cache dir for all torch.hub calls."
|
|
130
|
+
f"Setting cache_dir to {cache_dir}, this may change the default cache dir for all torch.hub calls.",
|
|
131
|
+
stacklevel=2,
|
|
131
132
|
)
|
|
132
133
|
|
|
133
134
|
self.spatial_dims = spatial_dims
|
|
@@ -55,16 +55,18 @@ class MaskedLoss(_Loss):
|
|
|
55
55
|
mask: the shape should be B1H[WD] or 11H[WD].
|
|
56
56
|
"""
|
|
57
57
|
if mask is None:
|
|
58
|
-
warnings.warn("No mask value specified for the MaskedLoss.")
|
|
58
|
+
warnings.warn("No mask value specified for the MaskedLoss.", stacklevel=2)
|
|
59
59
|
return self.loss(input, target)
|
|
60
60
|
|
|
61
61
|
if input.dim() != mask.dim():
|
|
62
|
-
warnings.warn(f"Dim of input ({input.shape}) is different from mask ({mask.shape}).")
|
|
62
|
+
warnings.warn(f"Dim of input ({input.shape}) is different from mask ({mask.shape}).", stacklevel=2)
|
|
63
63
|
if input.shape[0] != mask.shape[0] and mask.shape[0] != 1:
|
|
64
64
|
raise ValueError(f"Batch size of mask ({mask.shape}) must be one or equal to input ({input.shape}).")
|
|
65
65
|
if target.dim() > 1:
|
|
66
66
|
if mask.shape[1] != 1:
|
|
67
67
|
raise ValueError(f"Mask ({mask.shape}) must have only one channel.")
|
|
68
68
|
if input.shape[2:] != mask.shape[2:]:
|
|
69
|
-
warnings.warn(
|
|
69
|
+
warnings.warn(
|
|
70
|
+
f"Spatial size of input ({input.shape}) is different from mask ({mask.shape}).", stacklevel=2
|
|
71
|
+
)
|
|
70
72
|
return self.loss(input * mask, target * mask)
|
|
@@ -118,7 +118,7 @@ class TverskyLoss(_Loss):
|
|
|
118
118
|
n_pred_ch = input.shape[1]
|
|
119
119
|
if self.softmax:
|
|
120
120
|
if n_pred_ch == 1:
|
|
121
|
-
warnings.warn("single channel prediction, `softmax=True` ignored.")
|
|
121
|
+
warnings.warn("single channel prediction, `softmax=True` ignored.", stacklevel=2)
|
|
122
122
|
else:
|
|
123
123
|
input = torch.softmax(input, 1)
|
|
124
124
|
|
|
@@ -127,13 +127,13 @@ class TverskyLoss(_Loss):
|
|
|
127
127
|
|
|
128
128
|
if self.to_onehot_y:
|
|
129
129
|
if n_pred_ch == 1:
|
|
130
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
130
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
131
131
|
else:
|
|
132
132
|
target = one_hot(target, num_classes=n_pred_ch)
|
|
133
133
|
|
|
134
134
|
if not self.include_background:
|
|
135
135
|
if n_pred_ch == 1:
|
|
136
|
-
warnings.warn("single channel prediction, `include_background=False` ignored.")
|
|
136
|
+
warnings.warn("single channel prediction, `include_background=False` ignored.", stacklevel=2)
|
|
137
137
|
else:
|
|
138
138
|
# if skipping background, removing first channel
|
|
139
139
|
target = target[:, 1:]
|
|
@@ -58,7 +58,7 @@ class AsymmetricFocalTverskyLoss(_Loss):
|
|
|
58
58
|
|
|
59
59
|
if self.to_onehot_y:
|
|
60
60
|
if n_pred_ch == 1:
|
|
61
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
61
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
62
62
|
else:
|
|
63
63
|
y_true = one_hot(y_true, num_classes=n_pred_ch)
|
|
64
64
|
|
|
@@ -122,7 +122,7 @@ class AsymmetricFocalLoss(_Loss):
|
|
|
122
122
|
|
|
123
123
|
if self.to_onehot_y:
|
|
124
124
|
if n_pred_ch == 1:
|
|
125
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
125
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
126
126
|
else:
|
|
127
127
|
y_true = one_hot(y_true, num_classes=n_pred_ch)
|
|
128
128
|
|
|
@@ -223,7 +223,7 @@ class AsymmetricUnifiedFocalLoss(_Loss):
|
|
|
223
223
|
n_pred_ch = y_pred.shape[1]
|
|
224
224
|
if self.to_onehot_y:
|
|
225
225
|
if n_pred_ch == 1:
|
|
226
|
-
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.")
|
|
226
|
+
warnings.warn("single channel prediction, `to_onehot_y=True` ignored.", stacklevel=2)
|
|
227
227
|
else:
|
|
228
228
|
y_true = one_hot(y_true, num_classes=n_pred_ch)
|
|
229
229
|
|
{monai_weekly-1.7.dev2625 → monai_weekly-1.7.dev2626}/monai/metrics/active_learning_metrics.py
RENAMED
|
@@ -137,7 +137,7 @@ def compute_variance(
|
|
|
137
137
|
n_len = len(y_pred.shape)
|
|
138
138
|
|
|
139
139
|
if n_len < 4 and spatial_map:
|
|
140
|
-
warnings.warn("Spatial map requires a 2D/3D image with N-repeats and C-channels")
|
|
140
|
+
warnings.warn("Spatial map requires a 2D/3D image with N-repeats and C-channels", stacklevel=2)
|
|
141
141
|
return None
|
|
142
142
|
|
|
143
143
|
# Create new shape list
|
|
@@ -190,7 +190,10 @@ def label_quality_score(
|
|
|
190
190
|
|
|
191
191
|
n_len = len(y_pred.shape)
|
|
192
192
|
if n_len < 4 and scalar_reduction == "none":
|
|
193
|
-
warnings.warn(
|
|
193
|
+
warnings.warn(
|
|
194
|
+
"Reduction set to None, Spatial map return requires a 2D/3D image of B-Batchsize and C-channels",
|
|
195
|
+
stacklevel=2,
|
|
196
|
+
)
|
|
194
197
|
return None
|
|
195
198
|
|
|
196
199
|
abs_diff_map = torch.abs(y_pred - y)
|
|
@@ -88,10 +88,12 @@ def _calculate(y_pred: torch.Tensor, y: torch.Tensor) -> float:
|
|
|
88
88
|
raise AssertionError("y and y_pred must be 1 dimension data with same length.")
|
|
89
89
|
y_unique = y.unique()
|
|
90
90
|
if len(y_unique) == 1:
|
|
91
|
-
warnings.warn(f"y values can not be all {y_unique.item()}, skip AP computation and return `Nan`.")
|
|
91
|
+
warnings.warn(f"y values can not be all {y_unique.item()}, skip AP computation and return `Nan`.", stacklevel=2)
|
|
92
92
|
return float("nan")
|
|
93
93
|
if not y_unique.equal(torch.tensor([0, 1], dtype=y.dtype, device=y.device)):
|
|
94
|
-
warnings.warn(
|
|
94
|
+
warnings.warn(
|
|
95
|
+
f"y values must be 0 or 1, but in {y_unique.tolist()}, skip AP computation and return `Nan`.", stacklevel=2
|
|
96
|
+
)
|
|
95
97
|
return float("nan")
|
|
96
98
|
|
|
97
99
|
n = len(y)
|
|
@@ -93,7 +93,7 @@ class ConfusionMatrixMetric(CumulativeIterationMetric):
|
|
|
93
93
|
raise ValueError("y_pred should have at least two dimensions.")
|
|
94
94
|
if dims == 2 or (dims == 3 and y_pred.shape[-1] == 1):
|
|
95
95
|
if self.compute_sample:
|
|
96
|
-
warnings.warn("As for classification task, compute_sample should be False.")
|
|
96
|
+
warnings.warn("As for classification task, compute_sample should be False.", stacklevel=2)
|
|
97
97
|
self.compute_sample = False
|
|
98
98
|
|
|
99
99
|
return get_confusion_matrix(y_pred=y_pred, y=y, include_background=self.include_background)
|
|
@@ -154,7 +154,7 @@ class CumulativeAverage:
|
|
|
154
154
|
# account for possible non-finite numbers in val and replace them with 0s
|
|
155
155
|
nfin = torch.isfinite(val)
|
|
156
156
|
if not torch.all(nfin):
|
|
157
|
-
warnings.warn(f"non-finite inputs received: val: {val}, count: {count}")
|
|
157
|
+
warnings.warn(f"non-finite inputs received: val: {val}, count: {count}", stacklevel=2)
|
|
158
158
|
count = torch.where(nfin, count, torch.zeros_like(count))
|
|
159
159
|
val = torch.where(nfin, val, torch.zeros_like(val))
|
|
160
160
|
|
|
@@ -77,10 +77,14 @@ def _calculate(y_pred: torch.Tensor, y: torch.Tensor) -> float:
|
|
|
77
77
|
raise AssertionError("y and y_pred must be 1 dimension data with same length.")
|
|
78
78
|
y_unique = y.unique()
|
|
79
79
|
if len(y_unique) == 1:
|
|
80
|
-
warnings.warn(
|
|
80
|
+
warnings.warn(
|
|
81
|
+
f"y values can not be all {y_unique.item()}, skip AUC computation and return `Nan`.", stacklevel=2
|
|
82
|
+
)
|
|
81
83
|
return float("nan")
|
|
82
84
|
if not y_unique.equal(torch.tensor([0, 1], dtype=y.dtype, device=y.device)):
|
|
83
|
-
warnings.warn(
|
|
85
|
+
warnings.warn(
|
|
86
|
+
f"y values must be 0 or 1, but in {y_unique.tolist()}, skip AUC computation and return `Nan`.", stacklevel=2
|
|
87
|
+
)
|
|
84
88
|
return float("nan")
|
|
85
89
|
|
|
86
90
|
n = len(y)
|