monai-weekly 1.5.dev2506__py3-none-any.whl → 1.5.dev2508__py3-none-any.whl
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/__init__.py +1 -1
- monai/_version.py +3 -3
- monai/apps/auto3dseg/transforms.py +1 -4
- monai/data/utils.py +6 -13
- monai/handlers/__init__.py +1 -0
- monai/handlers/average_precision.py +53 -0
- monai/inferers/inferer.py +10 -7
- monai/inferers/utils.py +1 -2
- monai/losses/dice.py +2 -14
- monai/losses/ds_loss.py +1 -3
- monai/metrics/__init__.py +1 -0
- monai/metrics/average_precision.py +187 -0
- monai/networks/layers/simplelayers.py +2 -14
- monai/networks/utils.py +4 -16
- monai/transforms/compose.py +28 -11
- monai/transforms/croppad/array.py +1 -6
- monai/transforms/io/array.py +0 -1
- monai/transforms/transform.py +15 -6
- monai/transforms/utility/array.py +2 -12
- monai/transforms/utils.py +1 -2
- monai/transforms/utils_pytorch_numpy_unification.py +2 -4
- monai/utils/enums.py +3 -2
- monai/utils/module.py +6 -6
- monai/utils/tf32.py +0 -10
- monai/visualize/class_activation_maps.py +5 -8
- {monai_weekly-1.5.dev2506.dist-info → monai_weekly-1.5.dev2508.dist-info}/METADATA +21 -17
- monai_weekly-1.5.dev2508.dist-info/RECORD +1185 -0
- {monai_weekly-1.5.dev2506.dist-info → monai_weekly-1.5.dev2508.dist-info}/top_level.txt +1 -0
- tests/apps/__init__.py +10 -0
- tests/apps/deepedit/__init__.py +10 -0
- tests/apps/deepedit/test_deepedit_transforms.py +314 -0
- tests/apps/deepgrow/__init__.py +10 -0
- tests/apps/deepgrow/test_deepgrow_dataset.py +109 -0
- tests/apps/deepgrow/transforms/__init__.py +10 -0
- tests/apps/deepgrow/transforms/test_deepgrow_interaction.py +97 -0
- tests/apps/deepgrow/transforms/test_deepgrow_transforms.py +556 -0
- tests/apps/detection/__init__.py +10 -0
- tests/apps/detection/metrics/__init__.py +10 -0
- tests/apps/detection/metrics/test_detection_coco_metrics.py +69 -0
- tests/apps/detection/networks/__init__.py +10 -0
- tests/apps/detection/networks/test_retinanet.py +210 -0
- tests/apps/detection/networks/test_retinanet_detector.py +203 -0
- tests/apps/detection/test_box_transform.py +370 -0
- tests/apps/detection/utils/__init__.py +10 -0
- tests/apps/detection/utils/test_anchor_box.py +88 -0
- tests/apps/detection/utils/test_atss_box_matcher.py +46 -0
- tests/apps/detection/utils/test_box_coder.py +43 -0
- tests/apps/detection/utils/test_detector_boxselector.py +67 -0
- tests/apps/detection/utils/test_detector_utils.py +96 -0
- tests/apps/detection/utils/test_hardnegsampler.py +54 -0
- tests/apps/nuclick/__init__.py +10 -0
- tests/apps/nuclick/test_nuclick_transforms.py +259 -0
- tests/apps/pathology/__init__.py +10 -0
- tests/apps/pathology/handlers/__init__.py +10 -0
- tests/apps/pathology/handlers/test_from_engine_hovernet.py +38 -0
- tests/apps/pathology/test_lesion_froc.py +333 -0
- tests/apps/pathology/test_pathology_prob_nms.py +55 -0
- tests/apps/pathology/test_prepare_batch_hovernet.py +70 -0
- tests/apps/pathology/test_sliding_window_hovernet_inference.py +303 -0
- tests/apps/pathology/transforms/__init__.py +10 -0
- tests/apps/pathology/transforms/post/__init__.py +10 -0
- tests/apps/pathology/transforms/post/test_generate_distance_map.py +51 -0
- tests/apps/pathology/transforms/post/test_generate_distance_mapd.py +70 -0
- tests/apps/pathology/transforms/post/test_generate_instance_border.py +49 -0
- tests/apps/pathology/transforms/post/test_generate_instance_borderd.py +59 -0
- tests/apps/pathology/transforms/post/test_generate_instance_centroid.py +53 -0
- tests/apps/pathology/transforms/post/test_generate_instance_centroidd.py +56 -0
- tests/apps/pathology/transforms/post/test_generate_instance_contour.py +58 -0
- tests/apps/pathology/transforms/post/test_generate_instance_contourd.py +61 -0
- tests/apps/pathology/transforms/post/test_generate_instance_type.py +51 -0
- tests/apps/pathology/transforms/post/test_generate_instance_typed.py +53 -0
- tests/apps/pathology/transforms/post/test_generate_succinct_contour.py +55 -0
- tests/apps/pathology/transforms/post/test_generate_succinct_contourd.py +57 -0
- tests/apps/pathology/transforms/post/test_generate_watershed_markers.py +53 -0
- tests/apps/pathology/transforms/post/test_generate_watershed_markersd.py +83 -0
- tests/apps/pathology/transforms/post/test_generate_watershed_mask.py +77 -0
- tests/apps/pathology/transforms/post/test_generate_watershed_maskd.py +77 -0
- tests/apps/pathology/transforms/post/test_hovernet_instance_map_post_processing.py +61 -0
- tests/apps/pathology/transforms/post/test_hovernet_instance_map_post_processingd.py +66 -0
- tests/apps/pathology/transforms/post/test_hovernet_nuclear_type_post_processing.py +66 -0
- tests/apps/pathology/transforms/post/test_watershed.py +60 -0
- tests/apps/pathology/transforms/post/test_watershedd.py +70 -0
- tests/apps/pathology/transforms/test_pathology_he_stain.py +230 -0
- tests/apps/pathology/transforms/test_pathology_he_stain_dict.py +225 -0
- tests/apps/reconstruction/__init__.py +10 -0
- tests/apps/reconstruction/nets/__init__.py +10 -0
- tests/apps/reconstruction/nets/test_recon_net_utils.py +82 -0
- tests/apps/reconstruction/test_complex_utils.py +77 -0
- tests/apps/reconstruction/test_fastmri_reader.py +82 -0
- tests/apps/reconstruction/test_mri_utils.py +37 -0
- tests/apps/reconstruction/transforms/__init__.py +10 -0
- tests/apps/reconstruction/transforms/test_kspace_mask.py +50 -0
- tests/apps/reconstruction/transforms/test_reference_based_normalize_intensity.py +77 -0
- tests/apps/reconstruction/transforms/test_reference_based_spatial_cropd.py +57 -0
- tests/apps/test_auto3dseg_bundlegen.py +156 -0
- tests/apps/test_check_hash.py +53 -0
- tests/apps/test_cross_validation.py +74 -0
- tests/apps/test_decathlondataset.py +93 -0
- tests/apps/test_download_and_extract.py +70 -0
- tests/apps/test_download_url_yandex.py +45 -0
- tests/apps/test_mednistdataset.py +72 -0
- tests/apps/test_mmar_download.py +154 -0
- tests/apps/test_tciadataset.py +123 -0
- tests/apps/vista3d/__init__.py +10 -0
- tests/apps/vista3d/test_point_based_window_inferer.py +77 -0
- tests/apps/vista3d/test_vista3d_sampler.py +100 -0
- tests/apps/vista3d/test_vista3d_transforms.py +94 -0
- tests/bundle/__init__.py +10 -0
- tests/bundle/test_bundle_ckpt_export.py +107 -0
- tests/bundle/test_bundle_download.py +435 -0
- tests/bundle/test_bundle_get_data.py +94 -0
- tests/bundle/test_bundle_push_to_hf_hub.py +41 -0
- tests/bundle/test_bundle_trt_export.py +147 -0
- tests/bundle/test_bundle_utils.py +149 -0
- tests/bundle/test_bundle_verify_metadata.py +66 -0
- tests/bundle/test_bundle_verify_net.py +76 -0
- tests/bundle/test_bundle_workflow.py +272 -0
- tests/bundle/test_component_locator.py +38 -0
- tests/bundle/test_config_item.py +138 -0
- tests/bundle/test_config_parser.py +392 -0
- tests/bundle/test_reference_resolver.py +114 -0
- tests/config/__init__.py +10 -0
- tests/config/test_cv2_dist.py +53 -0
- tests/engines/__init__.py +10 -0
- tests/engines/test_ensemble_evaluator.py +94 -0
- tests/engines/test_prepare_batch_default.py +76 -0
- tests/engines/test_prepare_batch_default_dist.py +76 -0
- tests/engines/test_prepare_batch_diffusion.py +104 -0
- tests/engines/test_prepare_batch_extra_input.py +80 -0
- tests/fl/__init__.py +10 -0
- tests/fl/monai_algo/__init__.py +10 -0
- tests/fl/monai_algo/test_fl_monai_algo.py +251 -0
- tests/fl/monai_algo/test_fl_monai_algo_dist.py +117 -0
- tests/fl/test_fl_monai_algo_stats.py +81 -0
- tests/fl/utils/__init__.py +10 -0
- tests/fl/utils/test_fl_exchange_object.py +63 -0
- tests/handlers/__init__.py +10 -0
- tests/handlers/test_handler_average_precision.py +79 -0
- tests/handlers/test_handler_checkpoint_loader.py +182 -0
- tests/handlers/test_handler_checkpoint_saver.py +233 -0
- tests/handlers/test_handler_classification_saver.py +64 -0
- tests/handlers/test_handler_classification_saver_dist.py +77 -0
- tests/handlers/test_handler_clearml_image.py +65 -0
- tests/handlers/test_handler_clearml_stats.py +65 -0
- tests/handlers/test_handler_confusion_matrix.py +104 -0
- tests/handlers/test_handler_confusion_matrix_dist.py +70 -0
- tests/handlers/test_handler_decollate_batch.py +66 -0
- tests/handlers/test_handler_early_stop.py +68 -0
- tests/handlers/test_handler_garbage_collector.py +73 -0
- tests/handlers/test_handler_hausdorff_distance.py +111 -0
- tests/handlers/test_handler_ignite_metric.py +191 -0
- tests/handlers/test_handler_lr_scheduler.py +94 -0
- tests/handlers/test_handler_mean_dice.py +98 -0
- tests/handlers/test_handler_mean_iou.py +76 -0
- tests/handlers/test_handler_metrics_reloaded.py +149 -0
- tests/handlers/test_handler_metrics_saver.py +89 -0
- tests/handlers/test_handler_metrics_saver_dist.py +120 -0
- tests/handlers/test_handler_mlflow.py +296 -0
- tests/handlers/test_handler_nvtx.py +93 -0
- tests/handlers/test_handler_panoptic_quality.py +89 -0
- tests/handlers/test_handler_parameter_scheduler.py +136 -0
- tests/handlers/test_handler_post_processing.py +74 -0
- tests/handlers/test_handler_prob_map_producer.py +111 -0
- tests/handlers/test_handler_regression_metrics.py +160 -0
- tests/handlers/test_handler_regression_metrics_dist.py +245 -0
- tests/handlers/test_handler_rocauc.py +48 -0
- tests/handlers/test_handler_rocauc_dist.py +54 -0
- tests/handlers/test_handler_stats.py +281 -0
- tests/handlers/test_handler_surface_distance.py +113 -0
- tests/handlers/test_handler_tb_image.py +61 -0
- tests/handlers/test_handler_tb_stats.py +166 -0
- tests/handlers/test_handler_validation.py +59 -0
- tests/handlers/test_trt_compile.py +145 -0
- tests/handlers/test_write_metrics_reports.py +68 -0
- tests/inferers/__init__.py +10 -0
- tests/inferers/test_avg_merger.py +179 -0
- tests/inferers/test_controlnet_inferers.py +1388 -0
- tests/inferers/test_diffusion_inferer.py +236 -0
- tests/inferers/test_latent_diffusion_inferer.py +884 -0
- tests/inferers/test_patch_inferer.py +309 -0
- tests/inferers/test_saliency_inferer.py +55 -0
- tests/inferers/test_slice_inferer.py +57 -0
- tests/inferers/test_sliding_window_inference.py +377 -0
- tests/inferers/test_sliding_window_splitter.py +284 -0
- tests/inferers/test_wsi_sliding_window_splitter.py +249 -0
- tests/inferers/test_zarr_avg_merger.py +326 -0
- tests/integration/__init__.py +10 -0
- tests/integration/test_auto3dseg_ensemble.py +211 -0
- tests/integration/test_auto3dseg_hpo.py +189 -0
- tests/integration/test_deepedit_interaction.py +122 -0
- tests/integration/test_downsample_block.py +50 -0
- tests/integration/test_hovernet_nuclear_type_post_processingd.py +71 -0
- tests/integration/test_integration_autorunner.py +201 -0
- tests/integration/test_integration_bundle_run.py +240 -0
- tests/integration/test_integration_classification_2d.py +282 -0
- tests/integration/test_integration_determinism.py +95 -0
- tests/integration/test_integration_fast_train.py +231 -0
- tests/integration/test_integration_gpu_customization.py +159 -0
- tests/integration/test_integration_lazy_samples.py +219 -0
- tests/integration/test_integration_nnunetv2_runner.py +96 -0
- tests/integration/test_integration_segmentation_3d.py +304 -0
- tests/integration/test_integration_sliding_window.py +100 -0
- tests/integration/test_integration_stn.py +133 -0
- tests/integration/test_integration_unet_2d.py +67 -0
- tests/integration/test_integration_workers.py +61 -0
- tests/integration/test_integration_workflows.py +365 -0
- tests/integration/test_integration_workflows_adversarial.py +173 -0
- tests/integration/test_integration_workflows_gan.py +158 -0
- tests/integration/test_loader_semaphore.py +48 -0
- tests/integration/test_mapping_filed.py +122 -0
- tests/integration/test_meta_affine.py +183 -0
- tests/integration/test_metatensor_integration.py +114 -0
- tests/integration/test_module_list.py +76 -0
- tests/integration/test_one_of.py +283 -0
- tests/integration/test_pad_collation.py +124 -0
- tests/integration/test_reg_loss_integration.py +107 -0
- tests/integration/test_retinanet_predict_utils.py +154 -0
- tests/integration/test_seg_loss_integration.py +159 -0
- tests/integration/test_spatial_combine_transforms.py +185 -0
- tests/integration/test_testtimeaugmentation.py +186 -0
- tests/integration/test_vis_gradbased.py +69 -0
- tests/integration/test_vista3d_utils.py +159 -0
- tests/losses/__init__.py +10 -0
- tests/losses/deform/__init__.py +10 -0
- tests/losses/deform/test_bending_energy.py +88 -0
- tests/losses/deform/test_diffusion_loss.py +117 -0
- tests/losses/image_dissimilarity/__init__.py +10 -0
- tests/losses/image_dissimilarity/test_global_mutual_information_loss.py +150 -0
- tests/losses/image_dissimilarity/test_local_normalized_cross_correlation_loss.py +162 -0
- tests/losses/test_adversarial_loss.py +94 -0
- tests/losses/test_barlow_twins_loss.py +109 -0
- tests/losses/test_cldice_loss.py +51 -0
- tests/losses/test_contrastive_loss.py +86 -0
- tests/losses/test_dice_ce_loss.py +123 -0
- tests/losses/test_dice_focal_loss.py +124 -0
- tests/losses/test_dice_loss.py +227 -0
- tests/losses/test_ds_loss.py +189 -0
- tests/losses/test_focal_loss.py +379 -0
- tests/losses/test_generalized_dice_focal_loss.py +85 -0
- tests/losses/test_generalized_dice_loss.py +221 -0
- tests/losses/test_generalized_wasserstein_dice_loss.py +234 -0
- tests/losses/test_giou_loss.py +62 -0
- tests/losses/test_hausdorff_loss.py +264 -0
- tests/losses/test_masked_dice_loss.py +152 -0
- tests/losses/test_masked_loss.py +87 -0
- tests/losses/test_multi_scale.py +86 -0
- tests/losses/test_nacl_loss.py +167 -0
- tests/losses/test_perceptual_loss.py +122 -0
- tests/losses/test_spectral_loss.py +86 -0
- tests/losses/test_ssim_loss.py +59 -0
- tests/losses/test_sure_loss.py +72 -0
- tests/losses/test_tversky_loss.py +198 -0
- tests/losses/test_unified_focal_loss.py +66 -0
- tests/metrics/__init__.py +10 -0
- tests/metrics/test_compute_average_precision.py +162 -0
- tests/metrics/test_compute_confusion_matrix.py +294 -0
- tests/metrics/test_compute_f_beta.py +80 -0
- tests/metrics/test_compute_fid_metric.py +40 -0
- tests/metrics/test_compute_froc.py +143 -0
- tests/metrics/test_compute_generalized_dice.py +240 -0
- tests/metrics/test_compute_meandice.py +306 -0
- tests/metrics/test_compute_meaniou.py +223 -0
- tests/metrics/test_compute_mmd_metric.py +56 -0
- tests/metrics/test_compute_multiscalessim_metric.py +83 -0
- tests/metrics/test_compute_panoptic_quality.py +113 -0
- tests/metrics/test_compute_regression_metrics.py +196 -0
- tests/metrics/test_compute_roc_auc.py +155 -0
- tests/metrics/test_compute_variance.py +147 -0
- tests/metrics/test_cumulative.py +63 -0
- tests/metrics/test_cumulative_average.py +74 -0
- tests/metrics/test_cumulative_average_dist.py +48 -0
- tests/metrics/test_hausdorff_distance.py +209 -0
- tests/metrics/test_label_quality_score.py +134 -0
- tests/metrics/test_loss_metric.py +57 -0
- tests/metrics/test_metrics_reloaded.py +96 -0
- tests/metrics/test_ssim_metric.py +78 -0
- tests/metrics/test_surface_dice.py +416 -0
- tests/metrics/test_surface_distance.py +186 -0
- tests/networks/__init__.py +10 -0
- tests/networks/blocks/__init__.py +10 -0
- tests/networks/blocks/dints_block/__init__.py +10 -0
- tests/networks/blocks/dints_block/test_acn_block.py +41 -0
- tests/networks/blocks/dints_block/test_factorized_increase.py +37 -0
- tests/networks/blocks/dints_block/test_factorized_reduce.py +37 -0
- tests/networks/blocks/dints_block/test_p3d_block.py +78 -0
- tests/networks/blocks/test_adn.py +86 -0
- tests/networks/blocks/test_convolutions.py +156 -0
- tests/networks/blocks/test_crf_cpu.py +513 -0
- tests/networks/blocks/test_crf_cuda.py +528 -0
- tests/networks/blocks/test_crossattention.py +185 -0
- tests/networks/blocks/test_denseblock.py +105 -0
- tests/networks/blocks/test_dynunet_block.py +116 -0
- tests/networks/blocks/test_fpn_block.py +88 -0
- tests/networks/blocks/test_localnet_block.py +121 -0
- tests/networks/blocks/test_mlp.py +78 -0
- tests/networks/blocks/test_patchembedding.py +212 -0
- tests/networks/blocks/test_regunet_block.py +103 -0
- tests/networks/blocks/test_se_block.py +85 -0
- tests/networks/blocks/test_se_blocks.py +78 -0
- tests/networks/blocks/test_segresnet_block.py +57 -0
- tests/networks/blocks/test_selfattention.py +232 -0
- tests/networks/blocks/test_simple_aspp.py +87 -0
- tests/networks/blocks/test_spatialattention.py +55 -0
- tests/networks/blocks/test_subpixel_upsample.py +87 -0
- tests/networks/blocks/test_text_encoding.py +49 -0
- tests/networks/blocks/test_transformerblock.py +90 -0
- tests/networks/blocks/test_unetr_block.py +158 -0
- tests/networks/blocks/test_upsample_block.py +134 -0
- tests/networks/blocks/warp/__init__.py +10 -0
- tests/networks/blocks/warp/test_dvf2ddf.py +72 -0
- tests/networks/blocks/warp/test_warp.py +250 -0
- tests/networks/layers/__init__.py +10 -0
- tests/networks/layers/filtering/__init__.py +10 -0
- tests/networks/layers/filtering/test_bilateral_approx_cpu.py +399 -0
- tests/networks/layers/filtering/test_bilateral_approx_cuda.py +404 -0
- tests/networks/layers/filtering/test_bilateral_precise.py +437 -0
- tests/networks/layers/filtering/test_phl_cpu.py +259 -0
- tests/networks/layers/filtering/test_phl_cuda.py +167 -0
- tests/networks/layers/filtering/test_trainable_bilateral.py +474 -0
- tests/networks/layers/filtering/test_trainable_joint_bilateral.py +609 -0
- tests/networks/layers/test_affine_transform.py +385 -0
- tests/networks/layers/test_apply_filter.py +89 -0
- tests/networks/layers/test_channel_pad.py +51 -0
- tests/networks/layers/test_conjugate_gradient.py +56 -0
- tests/networks/layers/test_drop_path.py +46 -0
- tests/networks/layers/test_gaussian.py +317 -0
- tests/networks/layers/test_gaussian_filter.py +206 -0
- tests/networks/layers/test_get_layers.py +65 -0
- tests/networks/layers/test_gmm.py +314 -0
- tests/networks/layers/test_grid_pull.py +93 -0
- tests/networks/layers/test_hilbert_transform.py +131 -0
- tests/networks/layers/test_lltm.py +62 -0
- tests/networks/layers/test_median_filter.py +52 -0
- tests/networks/layers/test_polyval.py +55 -0
- tests/networks/layers/test_preset_filters.py +136 -0
- tests/networks/layers/test_savitzky_golay_filter.py +141 -0
- tests/networks/layers/test_separable_filter.py +87 -0
- tests/networks/layers/test_skip_connection.py +48 -0
- tests/networks/layers/test_vector_quantizer.py +89 -0
- tests/networks/layers/test_weight_init.py +50 -0
- tests/networks/nets/__init__.py +10 -0
- tests/networks/nets/dints/__init__.py +10 -0
- tests/networks/nets/dints/test_dints_cell.py +110 -0
- tests/networks/nets/dints/test_dints_mixop.py +84 -0
- tests/networks/nets/regunet/__init__.py +10 -0
- tests/networks/nets/regunet/test_localnet.py +86 -0
- tests/networks/nets/regunet/test_regunet.py +88 -0
- tests/networks/nets/test_ahnet.py +224 -0
- tests/networks/nets/test_attentionunet.py +88 -0
- tests/networks/nets/test_autoencoder.py +95 -0
- tests/networks/nets/test_autoencoderkl.py +337 -0
- tests/networks/nets/test_basic_unet.py +102 -0
- tests/networks/nets/test_basic_unetplusplus.py +109 -0
- tests/networks/nets/test_bundle_init_bundle.py +55 -0
- tests/networks/nets/test_cell_sam_wrapper.py +58 -0
- tests/networks/nets/test_controlnet.py +215 -0
- tests/networks/nets/test_daf3d.py +62 -0
- tests/networks/nets/test_densenet.py +121 -0
- tests/networks/nets/test_diffusion_model_unet.py +585 -0
- tests/networks/nets/test_dints_network.py +168 -0
- tests/networks/nets/test_discriminator.py +59 -0
- tests/networks/nets/test_dynunet.py +181 -0
- tests/networks/nets/test_efficientnet.py +400 -0
- tests/networks/nets/test_flexible_unet.py +341 -0
- tests/networks/nets/test_fullyconnectednet.py +69 -0
- tests/networks/nets/test_generator.py +59 -0
- tests/networks/nets/test_globalnet.py +103 -0
- tests/networks/nets/test_highresnet.py +67 -0
- tests/networks/nets/test_hovernet.py +218 -0
- tests/networks/nets/test_mednext.py +122 -0
- tests/networks/nets/test_milmodel.py +92 -0
- tests/networks/nets/test_net_adapter.py +68 -0
- tests/networks/nets/test_network_consistency.py +86 -0
- tests/networks/nets/test_patch_gan_dicriminator.py +179 -0
- tests/networks/nets/test_quicknat.py +57 -0
- tests/networks/nets/test_resnet.py +340 -0
- tests/networks/nets/test_segresnet.py +120 -0
- tests/networks/nets/test_segresnet_ds.py +156 -0
- tests/networks/nets/test_senet.py +151 -0
- tests/networks/nets/test_spade_autoencoderkl.py +295 -0
- tests/networks/nets/test_spade_diffusion_model_unet.py +574 -0
- tests/networks/nets/test_spade_vaegan.py +140 -0
- tests/networks/nets/test_swin_unetr.py +139 -0
- tests/networks/nets/test_torchvision_fc_model.py +201 -0
- tests/networks/nets/test_transchex.py +84 -0
- tests/networks/nets/test_transformer.py +108 -0
- tests/networks/nets/test_unet.py +208 -0
- tests/networks/nets/test_unetr.py +137 -0
- tests/networks/nets/test_varautoencoder.py +127 -0
- tests/networks/nets/test_vista3d.py +84 -0
- tests/networks/nets/test_vit.py +139 -0
- tests/networks/nets/test_vitautoenc.py +112 -0
- tests/networks/nets/test_vnet.py +81 -0
- tests/networks/nets/test_voxelmorph.py +280 -0
- tests/networks/nets/test_vqvae.py +274 -0
- tests/networks/nets/test_vqvaetransformer_inferer.py +295 -0
- tests/networks/schedulers/__init__.py +10 -0
- tests/networks/schedulers/test_scheduler_ddim.py +83 -0
- tests/networks/schedulers/test_scheduler_ddpm.py +104 -0
- tests/networks/schedulers/test_scheduler_pndm.py +108 -0
- tests/networks/test_bundle_onnx_export.py +71 -0
- tests/networks/test_convert_to_onnx.py +106 -0
- tests/networks/test_convert_to_torchscript.py +46 -0
- tests/networks/test_convert_to_trt.py +79 -0
- tests/networks/test_save_state.py +73 -0
- tests/networks/test_to_onehot.py +63 -0
- tests/networks/test_varnet.py +63 -0
- tests/networks/utils/__init__.py +10 -0
- tests/networks/utils/test_copy_model_state.py +187 -0
- tests/networks/utils/test_eval_mode.py +34 -0
- tests/networks/utils/test_freeze_layers.py +61 -0
- tests/networks/utils/test_replace_module.py +98 -0
- tests/networks/utils/test_train_mode.py +34 -0
- tests/optimizers/__init__.py +10 -0
- tests/optimizers/test_generate_param_groups.py +105 -0
- tests/optimizers/test_lr_finder.py +108 -0
- tests/optimizers/test_lr_scheduler.py +71 -0
- tests/optimizers/test_optim_novograd.py +100 -0
- tests/profile_subclass/__init__.py +10 -0
- tests/profile_subclass/cprofile_profiling.py +29 -0
- tests/profile_subclass/min_classes.py +30 -0
- tests/profile_subclass/profiling.py +73 -0
- tests/profile_subclass/pyspy_profiling.py +41 -0
- tests/transforms/__init__.py +10 -0
- tests/transforms/compose/__init__.py +10 -0
- tests/transforms/compose/test_compose.py +758 -0
- tests/transforms/compose/test_some_of.py +258 -0
- tests/transforms/croppad/__init__.py +10 -0
- tests/transforms/croppad/test_rand_weighted_crop.py +224 -0
- tests/transforms/croppad/test_rand_weighted_cropd.py +182 -0
- tests/transforms/functional/__init__.py +10 -0
- tests/transforms/functional/test_apply.py +75 -0
- tests/transforms/functional/test_resample.py +50 -0
- tests/transforms/intensity/__init__.py +10 -0
- tests/transforms/intensity/test_compute_ho_ver_maps.py +75 -0
- tests/transforms/intensity/test_compute_ho_ver_maps_d.py +79 -0
- tests/transforms/intensity/test_foreground_mask.py +98 -0
- tests/transforms/intensity/test_foreground_maskd.py +106 -0
- tests/transforms/intensity/test_rand_histogram_shiftd.py +76 -0
- tests/transforms/intensity/test_scale_intensity_range_percentiles.py +96 -0
- tests/transforms/intensity/test_scale_intensity_range_percentilesd.py +100 -0
- tests/transforms/inverse/__init__.py +10 -0
- tests/transforms/inverse/test_inverse_array.py +76 -0
- tests/transforms/inverse/test_traceable_transform.py +59 -0
- tests/transforms/post/__init__.py +10 -0
- tests/transforms/post/test_label_filterd.py +78 -0
- tests/transforms/post/test_probnms.py +72 -0
- tests/transforms/post/test_probnmsd.py +79 -0
- tests/transforms/post/test_remove_small_objects.py +102 -0
- tests/transforms/spatial/__init__.py +10 -0
- tests/transforms/spatial/test_convert_box_points.py +119 -0
- tests/transforms/spatial/test_grid_patch.py +134 -0
- tests/transforms/spatial/test_grid_patchd.py +102 -0
- tests/transforms/spatial/test_rand_grid_patch.py +150 -0
- tests/transforms/spatial/test_rand_grid_patchd.py +117 -0
- tests/transforms/spatial/test_spatial_resampled.py +124 -0
- tests/transforms/test_activations.py +120 -0
- tests/transforms/test_activationsd.py +64 -0
- tests/transforms/test_adaptors.py +160 -0
- tests/transforms/test_add_coordinate_channels.py +53 -0
- tests/transforms/test_add_coordinate_channelsd.py +67 -0
- tests/transforms/test_add_extreme_points_channel.py +80 -0
- tests/transforms/test_add_extreme_points_channeld.py +77 -0
- tests/transforms/test_adjust_contrast.py +70 -0
- tests/transforms/test_adjust_contrastd.py +64 -0
- tests/transforms/test_affine.py +245 -0
- tests/transforms/test_affine_grid.py +152 -0
- tests/transforms/test_affined.py +190 -0
- tests/transforms/test_as_channel_last.py +38 -0
- tests/transforms/test_as_channel_lastd.py +44 -0
- tests/transforms/test_as_discrete.py +81 -0
- tests/transforms/test_as_discreted.py +82 -0
- tests/transforms/test_border_pad.py +49 -0
- tests/transforms/test_border_padd.py +45 -0
- tests/transforms/test_bounding_rect.py +54 -0
- tests/transforms/test_bounding_rectd.py +53 -0
- tests/transforms/test_cast_to_type.py +63 -0
- tests/transforms/test_cast_to_typed.py +74 -0
- tests/transforms/test_center_scale_crop.py +55 -0
- tests/transforms/test_center_scale_cropd.py +56 -0
- tests/transforms/test_center_spatial_crop.py +56 -0
- tests/transforms/test_center_spatial_cropd.py +63 -0
- tests/transforms/test_classes_to_indices.py +93 -0
- tests/transforms/test_classes_to_indicesd.py +110 -0
- tests/transforms/test_clip_intensity_percentiles.py +196 -0
- tests/transforms/test_clip_intensity_percentilesd.py +193 -0
- tests/transforms/test_compose_get_number_conversions.py +127 -0
- tests/transforms/test_concat_itemsd.py +82 -0
- tests/transforms/test_convert_to_multi_channel.py +59 -0
- tests/transforms/test_convert_to_multi_channeld.py +37 -0
- tests/transforms/test_copy_itemsd.py +86 -0
- tests/transforms/test_create_grid_and_affine.py +274 -0
- tests/transforms/test_crop_foreground.py +164 -0
- tests/transforms/test_crop_foregroundd.py +205 -0
- tests/transforms/test_cucim_dict_transform.py +142 -0
- tests/transforms/test_cucim_transform.py +141 -0
- tests/transforms/test_data_stats.py +221 -0
- tests/transforms/test_data_statsd.py +249 -0
- tests/transforms/test_delete_itemsd.py +58 -0
- tests/transforms/test_detect_envelope.py +159 -0
- tests/transforms/test_distance_transform_edt.py +202 -0
- tests/transforms/test_divisible_pad.py +49 -0
- tests/transforms/test_divisible_padd.py +42 -0
- tests/transforms/test_ensure_channel_first.py +113 -0
- tests/transforms/test_ensure_channel_firstd.py +85 -0
- tests/transforms/test_ensure_type.py +94 -0
- tests/transforms/test_ensure_typed.py +110 -0
- tests/transforms/test_fg_bg_to_indices.py +83 -0
- tests/transforms/test_fg_bg_to_indicesd.py +78 -0
- tests/transforms/test_fill_holes.py +207 -0
- tests/transforms/test_fill_holesd.py +209 -0
- tests/transforms/test_flatten_sub_keysd.py +64 -0
- tests/transforms/test_flip.py +83 -0
- tests/transforms/test_flipd.py +90 -0
- tests/transforms/test_fourier.py +70 -0
- tests/transforms/test_gaussian_sharpen.py +92 -0
- tests/transforms/test_gaussian_sharpend.py +92 -0
- tests/transforms/test_gaussian_smooth.py +96 -0
- tests/transforms/test_gaussian_smoothd.py +96 -0
- tests/transforms/test_generate_label_classes_crop_centers.py +71 -0
- tests/transforms/test_generate_pos_neg_label_crop_centers.py +76 -0
- tests/transforms/test_generate_spatial_bounding_box.py +114 -0
- tests/transforms/test_get_extreme_points.py +57 -0
- tests/transforms/test_gibbs_noise.py +73 -0
- tests/transforms/test_gibbs_noised.py +88 -0
- tests/transforms/test_grid_distortion.py +113 -0
- tests/transforms/test_grid_distortiond.py +87 -0
- tests/transforms/test_grid_split.py +88 -0
- tests/transforms/test_grid_splitd.py +96 -0
- tests/transforms/test_histogram_normalize.py +59 -0
- tests/transforms/test_histogram_normalized.py +59 -0
- tests/transforms/test_image_filter.py +259 -0
- tests/transforms/test_intensity_stats.py +73 -0
- tests/transforms/test_intensity_statsd.py +90 -0
- tests/transforms/test_inverse.py +521 -0
- tests/transforms/test_inverse_collation.py +147 -0
- tests/transforms/test_invert.py +105 -0
- tests/transforms/test_invertd.py +142 -0
- tests/transforms/test_k_space_spike_noise.py +81 -0
- tests/transforms/test_k_space_spike_noised.py +98 -0
- tests/transforms/test_keep_largest_connected_component.py +419 -0
- tests/transforms/test_keep_largest_connected_componentd.py +348 -0
- tests/transforms/test_label_filter.py +78 -0
- tests/transforms/test_label_to_contour.py +179 -0
- tests/transforms/test_label_to_contourd.py +182 -0
- tests/transforms/test_label_to_mask.py +69 -0
- tests/transforms/test_label_to_maskd.py +70 -0
- tests/transforms/test_load_image.py +502 -0
- tests/transforms/test_load_imaged.py +198 -0
- tests/transforms/test_load_spacing_orientation.py +149 -0
- tests/transforms/test_map_and_generate_sampling_centers.py +86 -0
- tests/transforms/test_map_binary_to_indices.py +75 -0
- tests/transforms/test_map_classes_to_indices.py +135 -0
- tests/transforms/test_map_label_value.py +89 -0
- tests/transforms/test_map_label_valued.py +85 -0
- tests/transforms/test_map_transform.py +45 -0
- tests/transforms/test_mask_intensity.py +74 -0
- tests/transforms/test_mask_intensityd.py +68 -0
- tests/transforms/test_mean_ensemble.py +77 -0
- tests/transforms/test_mean_ensembled.py +91 -0
- tests/transforms/test_median_smooth.py +41 -0
- tests/transforms/test_median_smoothd.py +65 -0
- tests/transforms/test_morphological_ops.py +101 -0
- tests/transforms/test_nifti_endianness.py +107 -0
- tests/transforms/test_normalize_intensity.py +143 -0
- tests/transforms/test_normalize_intensityd.py +81 -0
- tests/transforms/test_nvtx_decorator.py +289 -0
- tests/transforms/test_nvtx_transform.py +143 -0
- tests/transforms/test_orientation.py +247 -0
- tests/transforms/test_orientationd.py +112 -0
- tests/transforms/test_rand_adjust_contrast.py +45 -0
- tests/transforms/test_rand_adjust_contrastd.py +44 -0
- tests/transforms/test_rand_affine.py +201 -0
- tests/transforms/test_rand_affine_grid.py +212 -0
- tests/transforms/test_rand_affined.py +281 -0
- tests/transforms/test_rand_axis_flip.py +50 -0
- tests/transforms/test_rand_axis_flipd.py +50 -0
- tests/transforms/test_rand_bias_field.py +69 -0
- tests/transforms/test_rand_bias_fieldd.py +65 -0
- tests/transforms/test_rand_coarse_dropout.py +110 -0
- tests/transforms/test_rand_coarse_dropoutd.py +107 -0
- tests/transforms/test_rand_coarse_shuffle.py +65 -0
- tests/transforms/test_rand_coarse_shuffled.py +59 -0
- tests/transforms/test_rand_crop_by_label_classes.py +170 -0
- tests/transforms/test_rand_crop_by_label_classesd.py +159 -0
- tests/transforms/test_rand_crop_by_pos_neg_label.py +152 -0
- tests/transforms/test_rand_crop_by_pos_neg_labeld.py +172 -0
- tests/transforms/test_rand_cucim_dict_transform.py +162 -0
- tests/transforms/test_rand_cucim_transform.py +162 -0
- tests/transforms/test_rand_deform_grid.py +138 -0
- tests/transforms/test_rand_elastic_2d.py +127 -0
- tests/transforms/test_rand_elastic_3d.py +104 -0
- tests/transforms/test_rand_elasticd_2d.py +177 -0
- tests/transforms/test_rand_elasticd_3d.py +156 -0
- tests/transforms/test_rand_flip.py +60 -0
- tests/transforms/test_rand_flipd.py +55 -0
- tests/transforms/test_rand_gaussian_noise.py +48 -0
- tests/transforms/test_rand_gaussian_noised.py +54 -0
- tests/transforms/test_rand_gaussian_sharpen.py +140 -0
- tests/transforms/test_rand_gaussian_sharpend.py +143 -0
- tests/transforms/test_rand_gaussian_smooth.py +98 -0
- tests/transforms/test_rand_gaussian_smoothd.py +98 -0
- tests/transforms/test_rand_gibbs_noise.py +103 -0
- tests/transforms/test_rand_gibbs_noised.py +117 -0
- tests/transforms/test_rand_grid_distortion.py +99 -0
- tests/transforms/test_rand_grid_distortiond.py +90 -0
- tests/transforms/test_rand_histogram_shift.py +92 -0
- tests/transforms/test_rand_k_space_spike_noise.py +92 -0
- tests/transforms/test_rand_k_space_spike_noised.py +76 -0
- tests/transforms/test_rand_rician_noise.py +52 -0
- tests/transforms/test_rand_rician_noised.py +52 -0
- tests/transforms/test_rand_rotate.py +166 -0
- tests/transforms/test_rand_rotate90.py +100 -0
- tests/transforms/test_rand_rotate90d.py +112 -0
- tests/transforms/test_rand_rotated.py +187 -0
- tests/transforms/test_rand_scale_crop.py +78 -0
- tests/transforms/test_rand_scale_cropd.py +98 -0
- tests/transforms/test_rand_scale_intensity.py +54 -0
- tests/transforms/test_rand_scale_intensity_fixed_mean.py +41 -0
- tests/transforms/test_rand_scale_intensity_fixed_meand.py +41 -0
- tests/transforms/test_rand_scale_intensityd.py +53 -0
- tests/transforms/test_rand_shift_intensity.py +52 -0
- tests/transforms/test_rand_shift_intensityd.py +67 -0
- tests/transforms/test_rand_simulate_low_resolution.py +83 -0
- tests/transforms/test_rand_simulate_low_resolutiond.py +73 -0
- tests/transforms/test_rand_spatial_crop.py +107 -0
- tests/transforms/test_rand_spatial_crop_samples.py +128 -0
- tests/transforms/test_rand_spatial_crop_samplesd.py +147 -0
- tests/transforms/test_rand_spatial_cropd.py +112 -0
- tests/transforms/test_rand_std_shift_intensity.py +43 -0
- tests/transforms/test_rand_std_shift_intensityd.py +38 -0
- tests/transforms/test_rand_zoom.py +105 -0
- tests/transforms/test_rand_zoomd.py +108 -0
- tests/transforms/test_randidentity.py +49 -0
- tests/transforms/test_random_order.py +144 -0
- tests/transforms/test_randtorchvisiond.py +65 -0
- tests/transforms/test_regularization.py +139 -0
- tests/transforms/test_remove_repeated_channel.py +34 -0
- tests/transforms/test_remove_repeated_channeld.py +44 -0
- tests/transforms/test_repeat_channel.py +34 -0
- tests/transforms/test_repeat_channeld.py +41 -0
- tests/transforms/test_resample_backends.py +65 -0
- tests/transforms/test_resample_to_match.py +110 -0
- tests/transforms/test_resample_to_matchd.py +93 -0
- tests/transforms/test_resampler.py +165 -0
- tests/transforms/test_resize.py +140 -0
- tests/transforms/test_resize_with_pad_or_crop.py +91 -0
- tests/transforms/test_resize_with_pad_or_cropd.py +86 -0
- tests/transforms/test_resized.py +163 -0
- tests/transforms/test_rotate.py +160 -0
- tests/transforms/test_rotate90.py +212 -0
- tests/transforms/test_rotate90d.py +106 -0
- tests/transforms/test_rotated.py +179 -0
- tests/transforms/test_save_classificationd.py +109 -0
- tests/transforms/test_save_image.py +80 -0
- tests/transforms/test_save_imaged.py +130 -0
- tests/transforms/test_savitzky_golay_smooth.py +73 -0
- tests/transforms/test_savitzky_golay_smoothd.py +73 -0
- tests/transforms/test_scale_intensity.py +76 -0
- tests/transforms/test_scale_intensity_fixed_mean.py +94 -0
- tests/transforms/test_scale_intensity_range.py +41 -0
- tests/transforms/test_scale_intensity_ranged.py +40 -0
- tests/transforms/test_scale_intensityd.py +57 -0
- tests/transforms/test_select_itemsd.py +41 -0
- tests/transforms/test_shift_intensity.py +31 -0
- tests/transforms/test_shift_intensityd.py +44 -0
- tests/transforms/test_signal_continuouswavelet.py +44 -0
- tests/transforms/test_signal_fillempty.py +52 -0
- tests/transforms/test_signal_fillemptyd.py +60 -0
- tests/transforms/test_signal_rand_add_gaussiannoise.py +50 -0
- tests/transforms/test_signal_rand_add_sine.py +52 -0
- tests/transforms/test_signal_rand_add_sine_partial.py +50 -0
- tests/transforms/test_signal_rand_add_squarepulse.py +58 -0
- tests/transforms/test_signal_rand_add_squarepulse_partial.py +62 -0
- tests/transforms/test_signal_rand_drop.py +50 -0
- tests/transforms/test_signal_rand_scale.py +52 -0
- tests/transforms/test_signal_rand_shift.py +55 -0
- tests/transforms/test_signal_remove_frequency.py +71 -0
- tests/transforms/test_smooth_field.py +177 -0
- tests/transforms/test_sobel_gradient.py +189 -0
- tests/transforms/test_sobel_gradientd.py +212 -0
- tests/transforms/test_spacing.py +381 -0
- tests/transforms/test_spacingd.py +178 -0
- tests/transforms/test_spatial_crop.py +82 -0
- tests/transforms/test_spatial_cropd.py +74 -0
- tests/transforms/test_spatial_pad.py +57 -0
- tests/transforms/test_spatial_padd.py +43 -0
- tests/transforms/test_spatial_resample.py +235 -0
- tests/transforms/test_squeezedim.py +62 -0
- tests/transforms/test_squeezedimd.py +98 -0
- tests/transforms/test_std_shift_intensity.py +76 -0
- tests/transforms/test_std_shift_intensityd.py +74 -0
- tests/transforms/test_threshold_intensity.py +38 -0
- tests/transforms/test_threshold_intensityd.py +58 -0
- tests/transforms/test_to_contiguous.py +47 -0
- tests/transforms/test_to_cupy.py +112 -0
- tests/transforms/test_to_cupyd.py +76 -0
- tests/transforms/test_to_device.py +42 -0
- tests/transforms/test_to_deviced.py +37 -0
- tests/transforms/test_to_numpy.py +85 -0
- tests/transforms/test_to_numpyd.py +68 -0
- tests/transforms/test_to_pil.py +52 -0
- tests/transforms/test_to_pild.py +50 -0
- tests/transforms/test_to_tensor.py +60 -0
- tests/transforms/test_to_tensord.py +71 -0
- tests/transforms/test_torchvision.py +66 -0
- tests/transforms/test_torchvisiond.py +63 -0
- tests/transforms/test_transform.py +62 -0
- tests/transforms/test_transpose.py +41 -0
- tests/transforms/test_transposed.py +52 -0
- tests/transforms/test_ultrasound_confidence_map_transform.py +711 -0
- tests/transforms/test_utils_pytorch_numpy_unification.py +90 -0
- tests/transforms/test_vote_ensemble.py +84 -0
- tests/transforms/test_vote_ensembled.py +107 -0
- tests/transforms/test_with_allow_missing_keys.py +76 -0
- tests/transforms/test_zoom.py +120 -0
- tests/transforms/test_zoomd.py +94 -0
- tests/transforms/transform/__init__.py +10 -0
- tests/transforms/transform/test_randomizable.py +52 -0
- tests/transforms/transform/test_randomizable_transform_type.py +37 -0
- tests/transforms/utility/__init__.py +10 -0
- tests/transforms/utility/test_apply_transform_to_points.py +81 -0
- tests/transforms/utility/test_apply_transform_to_pointsd.py +185 -0
- tests/transforms/utility/test_identity.py +29 -0
- tests/transforms/utility/test_identityd.py +30 -0
- tests/transforms/utility/test_lambda.py +71 -0
- tests/transforms/utility/test_lambdad.py +83 -0
- tests/transforms/utility/test_rand_lambda.py +87 -0
- tests/transforms/utility/test_rand_lambdad.py +77 -0
- tests/transforms/utility/test_simulatedelay.py +36 -0
- tests/transforms/utility/test_simulatedelayd.py +36 -0
- tests/transforms/utility/test_splitdim.py +52 -0
- tests/transforms/utility/test_splitdimd.py +96 -0
- tests/transforms/utils/__init__.py +10 -0
- tests/transforms/utils/test_correct_crop_centers.py +36 -0
- tests/transforms/utils/test_get_unique_labels.py +45 -0
- tests/transforms/utils/test_print_transform_backends.py +29 -0
- tests/transforms/utils/test_soft_clip.py +125 -0
- tests/utils/__init__.py +10 -0
- tests/utils/enums/__init__.py +10 -0
- tests/utils/enums/test_hovernet_loss.py +190 -0
- tests/utils/enums/test_ordering.py +289 -0
- tests/utils/enums/test_wsireader.py +663 -0
- tests/utils/misc/__init__.py +10 -0
- tests/utils/misc/test_ensure_tuple.py +53 -0
- tests/utils/misc/test_monai_env_vars.py +44 -0
- tests/utils/misc/test_monai_utils_misc.py +103 -0
- tests/utils/misc/test_str2bool.py +34 -0
- tests/utils/misc/test_str2list.py +33 -0
- tests/utils/test_alias.py +44 -0
- tests/utils/test_component_store.py +73 -0
- tests/utils/test_deprecated.py +455 -0
- tests/utils/test_enum_bound_interp.py +75 -0
- tests/utils/test_evenly_divisible_all_gather_dist.py +50 -0
- tests/utils/test_get_package_version.py +34 -0
- tests/utils/test_handler_logfile.py +84 -0
- tests/utils/test_handler_metric_logger.py +62 -0
- tests/utils/test_list_to_dict.py +43 -0
- tests/utils/test_look_up_option.py +87 -0
- tests/utils/test_optional_import.py +80 -0
- tests/utils/test_pad_mode.py +39 -0
- tests/utils/test_profiling.py +208 -0
- tests/utils/test_rankfilter_dist.py +77 -0
- tests/utils/test_require_pkg.py +83 -0
- tests/utils/test_sample_slices.py +43 -0
- tests/utils/test_set_determinism.py +74 -0
- tests/utils/test_squeeze_unsqueeze.py +71 -0
- tests/utils/test_state_cacher.py +67 -0
- tests/utils/test_torchscript_utils.py +113 -0
- tests/utils/test_version.py +91 -0
- tests/utils/test_version_after.py +65 -0
- tests/utils/type_conversion/__init__.py +10 -0
- tests/utils/type_conversion/test_convert_data_type.py +152 -0
- tests/utils/type_conversion/test_get_equivalent_dtype.py +65 -0
- tests/utils/type_conversion/test_safe_dtype_range.py +99 -0
- tests/visualize/__init__.py +10 -0
- tests/visualize/test_img2tensorboard.py +46 -0
- tests/visualize/test_occlusion_sensitivity.py +128 -0
- tests/visualize/test_plot_2d_or_3d_image.py +74 -0
- tests/visualize/test_vis_cam.py +98 -0
- tests/visualize/test_vis_gradcam.py +211 -0
- tests/visualize/utils/__init__.py +10 -0
- tests/visualize/utils/test_blend_images.py +63 -0
- tests/visualize/utils/test_matshow3d.py +133 -0
- monai_weekly-1.5.dev2506.dist-info/RECORD +0 -427
- {monai_weekly-1.5.dev2506.dist-info → monai_weekly-1.5.dev2508.dist-info}/LICENSE +0 -0
- {monai_weekly-1.5.dev2506.dist-info → monai_weekly-1.5.dev2508.dist-info}/WHEEL +0 -0
@@ -0,0 +1,455 @@
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
9
|
+
# See the License for the specific language governing permissions and
|
10
|
+
# limitations under the License.
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
import unittest
|
15
|
+
import warnings
|
16
|
+
|
17
|
+
from monai.utils import DeprecatedError, deprecated, deprecated_arg, deprecated_arg_default
|
18
|
+
|
19
|
+
|
20
|
+
class TestDeprecatedRC(unittest.TestCase):
|
21
|
+
|
22
|
+
def setUp(self):
|
23
|
+
self.test_version_rc = "0.6.0rc1"
|
24
|
+
self.test_version = "0.6.0"
|
25
|
+
self.next_version = "0.7.0"
|
26
|
+
|
27
|
+
def test_warning(self):
|
28
|
+
"""Test deprecated decorator with `since` and `removed` set for an RC version"""
|
29
|
+
|
30
|
+
@deprecated(since=self.test_version, removed=self.next_version, version_val=self.test_version_rc)
|
31
|
+
def foo2():
|
32
|
+
pass
|
33
|
+
|
34
|
+
foo2() # should not raise any warnings
|
35
|
+
|
36
|
+
def test_warning_milestone(self):
|
37
|
+
"""Test deprecated decorator with `since` and `removed` set for a milestone version"""
|
38
|
+
|
39
|
+
@deprecated(since=self.test_version, removed=self.next_version, version_val=self.test_version)
|
40
|
+
def foo2():
|
41
|
+
pass
|
42
|
+
|
43
|
+
self.assertWarns(FutureWarning, foo2)
|
44
|
+
|
45
|
+
def test_warning_last(self):
|
46
|
+
"""Test deprecated decorator with `since` and `removed` set, for the last version"""
|
47
|
+
|
48
|
+
@deprecated(since=self.test_version, removed=self.next_version, version_val=self.next_version)
|
49
|
+
def foo3():
|
50
|
+
pass
|
51
|
+
|
52
|
+
self.assertRaises(DeprecatedError, foo3)
|
53
|
+
|
54
|
+
def test_warning_beyond(self):
|
55
|
+
"""Test deprecated decorator with `since` and `removed` set, beyond the last version"""
|
56
|
+
|
57
|
+
@deprecated(since=self.test_version_rc, removed=self.test_version, version_val=self.next_version)
|
58
|
+
def foo3():
|
59
|
+
pass
|
60
|
+
|
61
|
+
self.assertRaises(DeprecatedError, foo3)
|
62
|
+
|
63
|
+
|
64
|
+
class TestDeprecated(unittest.TestCase):
|
65
|
+
|
66
|
+
def setUp(self):
|
67
|
+
self.test_version = "0.5.3+96.g1fa03c2.dirty"
|
68
|
+
self.prev_version = "0.4.3+96.g1fa03c2.dirty"
|
69
|
+
self.next_version = "0.6.3+96.g1fa03c2.dirty"
|
70
|
+
|
71
|
+
def test_warning1(self):
|
72
|
+
"""Test deprecated decorator with just `since` set."""
|
73
|
+
|
74
|
+
@deprecated(since=self.prev_version, version_val=self.test_version)
|
75
|
+
def foo1():
|
76
|
+
pass
|
77
|
+
|
78
|
+
self.assertWarns(FutureWarning, foo1)
|
79
|
+
|
80
|
+
def test_warning2(self):
|
81
|
+
"""Test deprecated decorator with `since` and `removed` set."""
|
82
|
+
|
83
|
+
@deprecated(since=self.prev_version, removed=self.next_version, version_val=self.test_version)
|
84
|
+
def foo2():
|
85
|
+
pass
|
86
|
+
|
87
|
+
self.assertWarns(FutureWarning, foo2)
|
88
|
+
|
89
|
+
def test_except1(self):
|
90
|
+
"""Test deprecated decorator raises exception with no versions set."""
|
91
|
+
|
92
|
+
@deprecated(version_val=self.test_version)
|
93
|
+
def foo3():
|
94
|
+
pass
|
95
|
+
|
96
|
+
self.assertRaises(DeprecatedError, foo3)
|
97
|
+
|
98
|
+
def test_except2(self):
|
99
|
+
"""Test deprecated decorator raises exception with `removed` set in the past."""
|
100
|
+
|
101
|
+
@deprecated(removed=self.prev_version, version_val=self.test_version)
|
102
|
+
def foo4():
|
103
|
+
pass
|
104
|
+
|
105
|
+
self.assertRaises(DeprecatedError, foo4)
|
106
|
+
|
107
|
+
def test_class_warning1(self):
|
108
|
+
"""Test deprecated decorator with just `since` set."""
|
109
|
+
|
110
|
+
@deprecated(since=self.prev_version, version_val=self.test_version)
|
111
|
+
class Foo1:
|
112
|
+
pass
|
113
|
+
|
114
|
+
self.assertWarns(FutureWarning, Foo1)
|
115
|
+
|
116
|
+
def test_class_warning2(self):
|
117
|
+
"""Test deprecated decorator with `since` and `removed` set."""
|
118
|
+
|
119
|
+
@deprecated(since=self.prev_version, removed=self.next_version, version_val=self.test_version)
|
120
|
+
class Foo2:
|
121
|
+
pass
|
122
|
+
|
123
|
+
self.assertWarns(FutureWarning, Foo2)
|
124
|
+
|
125
|
+
def test_class_except1(self):
|
126
|
+
"""Test deprecated decorator raises exception with no versions set."""
|
127
|
+
|
128
|
+
@deprecated(version_val=self.test_version)
|
129
|
+
class Foo3:
|
130
|
+
pass
|
131
|
+
|
132
|
+
self.assertRaises(DeprecatedError, Foo3)
|
133
|
+
|
134
|
+
def test_class_except2(self):
|
135
|
+
"""Test deprecated decorator raises exception with `removed` set in the past."""
|
136
|
+
|
137
|
+
@deprecated(removed=self.prev_version, version_val=self.test_version)
|
138
|
+
class Foo4:
|
139
|
+
pass
|
140
|
+
|
141
|
+
self.assertRaises(DeprecatedError, Foo4)
|
142
|
+
|
143
|
+
def test_meth_warning1(self):
|
144
|
+
"""Test deprecated decorator with just `since` set."""
|
145
|
+
|
146
|
+
class Foo5:
|
147
|
+
|
148
|
+
@deprecated(since=self.prev_version, version_val=self.test_version)
|
149
|
+
def meth1(self):
|
150
|
+
pass
|
151
|
+
|
152
|
+
self.assertWarns(FutureWarning, lambda: Foo5().meth1())
|
153
|
+
|
154
|
+
def test_meth_except1(self):
|
155
|
+
"""Test deprecated decorator with just `since` set."""
|
156
|
+
|
157
|
+
class Foo6:
|
158
|
+
|
159
|
+
@deprecated(version_val=self.test_version)
|
160
|
+
def meth1(self):
|
161
|
+
pass
|
162
|
+
|
163
|
+
self.assertRaises(DeprecatedError, lambda: Foo6().meth1())
|
164
|
+
|
165
|
+
def test_arg_warn1(self):
|
166
|
+
"""Test deprecated_arg decorator with just `since` set."""
|
167
|
+
|
168
|
+
@deprecated_arg("b", since=self.prev_version, version_val=self.test_version)
|
169
|
+
def afoo1(a, b=None):
|
170
|
+
pass
|
171
|
+
|
172
|
+
afoo1(1) # ok when no b provided
|
173
|
+
|
174
|
+
self.assertWarns(FutureWarning, lambda: afoo1(1, 2))
|
175
|
+
|
176
|
+
def test_arg_warn2(self):
|
177
|
+
"""Test deprecated_arg decorator with just `since` set."""
|
178
|
+
|
179
|
+
@deprecated_arg("b", since=self.prev_version, version_val=self.test_version)
|
180
|
+
def afoo2(a, **kw):
|
181
|
+
pass
|
182
|
+
|
183
|
+
afoo2(1) # ok when no b provided
|
184
|
+
|
185
|
+
self.assertWarns(FutureWarning, lambda: afoo2(1, b=2))
|
186
|
+
|
187
|
+
def test_arg_except1(self):
|
188
|
+
"""Test deprecated_arg decorator raises exception with no versions set."""
|
189
|
+
|
190
|
+
@deprecated_arg("b", version_val=self.test_version)
|
191
|
+
def afoo3(a, b=None):
|
192
|
+
pass
|
193
|
+
|
194
|
+
self.assertRaises(DeprecatedError, lambda: afoo3(1, b=2))
|
195
|
+
|
196
|
+
def test_arg_except2(self):
|
197
|
+
"""Test deprecated_arg decorator raises exception with `removed` set in the past."""
|
198
|
+
|
199
|
+
@deprecated_arg("b", removed=self.prev_version, version_val=self.test_version)
|
200
|
+
def afoo4(a, b=None):
|
201
|
+
pass
|
202
|
+
|
203
|
+
self.assertRaises(DeprecatedError, lambda: afoo4(1, b=2))
|
204
|
+
|
205
|
+
def test_2arg_warn1(self):
|
206
|
+
"""Test deprecated_arg decorator applied twice with just `since` set."""
|
207
|
+
|
208
|
+
@deprecated_arg("b", since=self.prev_version, version_val=self.test_version)
|
209
|
+
@deprecated_arg("c", since=self.prev_version, version_val=self.test_version)
|
210
|
+
def afoo5(a, b=None, c=None):
|
211
|
+
pass
|
212
|
+
|
213
|
+
afoo5(1) # ok when no b or c provided
|
214
|
+
|
215
|
+
self.assertWarns(FutureWarning, lambda: afoo5(1, 2))
|
216
|
+
self.assertWarns(FutureWarning, lambda: afoo5(1, 2, 3))
|
217
|
+
|
218
|
+
def test_future(self):
|
219
|
+
"""Test deprecated decorator with `since` set to a future version."""
|
220
|
+
|
221
|
+
@deprecated(since=self.next_version, version_val=self.test_version)
|
222
|
+
def future1():
|
223
|
+
pass
|
224
|
+
|
225
|
+
with self.assertWarns(FutureWarning) as aw:
|
226
|
+
future1()
|
227
|
+
warnings.warn("fake warning", FutureWarning)
|
228
|
+
|
229
|
+
self.assertEqual(aw.warning.args[0], "fake warning")
|
230
|
+
|
231
|
+
def test_arg_except2_unknown(self):
|
232
|
+
"""
|
233
|
+
Test deprecated_arg decorator raises exception with `removed` set in the past.
|
234
|
+
with unknown version
|
235
|
+
"""
|
236
|
+
|
237
|
+
@deprecated_arg("b", removed=self.prev_version, version_val="0+untagged.1.g3131155")
|
238
|
+
def afoo4(a, b=None):
|
239
|
+
pass
|
240
|
+
|
241
|
+
afoo4(1, b=2)
|
242
|
+
|
243
|
+
def test_arg_except3_unknown(self):
|
244
|
+
"""
|
245
|
+
Test deprecated_arg decorator raises exception with `removed` set in the past.
|
246
|
+
with unknown version and kwargs
|
247
|
+
"""
|
248
|
+
|
249
|
+
@deprecated_arg("b", removed=self.prev_version, version_val="0+untagged.1.g3131155")
|
250
|
+
def afoo4(a, b=None, **kwargs):
|
251
|
+
pass
|
252
|
+
|
253
|
+
afoo4(1, b=2)
|
254
|
+
afoo4(1, b=2, c=3)
|
255
|
+
|
256
|
+
def test_replacement_arg(self):
|
257
|
+
"""
|
258
|
+
Test deprecated arg being replaced.
|
259
|
+
"""
|
260
|
+
|
261
|
+
@deprecated_arg("b", new_name="a", since=self.prev_version, version_val=self.test_version)
|
262
|
+
def afoo4(a, b=None):
|
263
|
+
return a
|
264
|
+
|
265
|
+
self.assertEqual(afoo4(b=2), 2)
|
266
|
+
self.assertEqual(afoo4(1, b=2), 1) # new name is in use
|
267
|
+
self.assertEqual(afoo4(a=1, b=2), 1) # prefers the new arg
|
268
|
+
|
269
|
+
def test_replacement_arg1(self):
|
270
|
+
"""
|
271
|
+
Test deprecated arg being replaced with kwargs.
|
272
|
+
"""
|
273
|
+
|
274
|
+
@deprecated_arg("b", new_name="a", since=self.prev_version, version_val=self.test_version)
|
275
|
+
def afoo4(a, *args, **kwargs):
|
276
|
+
return a
|
277
|
+
|
278
|
+
self.assertEqual(afoo4(b=2), 2)
|
279
|
+
self.assertEqual(afoo4(1, b=2, c=3), 1) # new name is in use
|
280
|
+
self.assertEqual(afoo4(a=1, b=2, c=3), 1) # prefers the new arg
|
281
|
+
|
282
|
+
def test_replacement_arg2(self):
|
283
|
+
"""
|
284
|
+
Test deprecated arg (with a default value) being replaced.
|
285
|
+
"""
|
286
|
+
|
287
|
+
@deprecated_arg("b", new_name="a", since=self.prev_version, version_val=self.test_version)
|
288
|
+
def afoo4(a, b=None, **kwargs):
|
289
|
+
return a, kwargs
|
290
|
+
|
291
|
+
self.assertEqual(afoo4(b=2, c=3), (2, {"c": 3}))
|
292
|
+
self.assertEqual(afoo4(1, b=2, c=3), (1, {"c": 3})) # new name is in use
|
293
|
+
self.assertEqual(afoo4(a=1, b=2, c=3), (1, {"c": 3})) # prefers the new arg
|
294
|
+
self.assertEqual(afoo4(1, 2, c=3), (1, {"c": 3})) # prefers the new positional arg
|
295
|
+
|
296
|
+
def test_deprecated_arg_default_explicit_default(self):
|
297
|
+
"""
|
298
|
+
Test deprecated arg default, where the default is explicitly set (no warning).
|
299
|
+
"""
|
300
|
+
|
301
|
+
@deprecated_arg_default(
|
302
|
+
"b", old_default="a", new_default="b", since=self.prev_version, version_val=self.test_version
|
303
|
+
)
|
304
|
+
def foo(a, b="a"):
|
305
|
+
return a, b
|
306
|
+
|
307
|
+
with self.assertWarns(FutureWarning) as aw:
|
308
|
+
self.assertEqual(foo("a", "a"), ("a", "a"))
|
309
|
+
self.assertEqual(foo("a", "b"), ("a", "b"))
|
310
|
+
self.assertEqual(foo("a", "c"), ("a", "c"))
|
311
|
+
warnings.warn("fake warning", FutureWarning)
|
312
|
+
|
313
|
+
self.assertEqual(aw.warning.args[0], "fake warning")
|
314
|
+
|
315
|
+
def test_deprecated_arg_default_version_less_than_since(self):
|
316
|
+
"""
|
317
|
+
Test deprecated arg default, where the current version is less than `since` (no warning).
|
318
|
+
"""
|
319
|
+
|
320
|
+
@deprecated_arg_default(
|
321
|
+
"b", old_default="a", new_default="b", since=self.test_version, version_val=self.prev_version
|
322
|
+
)
|
323
|
+
def foo(a, b="a"):
|
324
|
+
return a, b
|
325
|
+
|
326
|
+
with self.assertWarns(FutureWarning) as aw:
|
327
|
+
self.assertEqual(foo("a"), ("a", "a"))
|
328
|
+
self.assertEqual(foo("a", "a"), ("a", "a"))
|
329
|
+
warnings.warn("fake warning", FutureWarning)
|
330
|
+
|
331
|
+
self.assertEqual(aw.warning.args[0], "fake warning")
|
332
|
+
|
333
|
+
def test_deprecated_arg_default_warning_deprecated(self):
|
334
|
+
"""
|
335
|
+
Test deprecated arg default, where the default is used.
|
336
|
+
"""
|
337
|
+
|
338
|
+
@deprecated_arg_default(
|
339
|
+
"b", old_default="a", new_default="b", since=self.prev_version, version_val=self.test_version
|
340
|
+
)
|
341
|
+
def foo(a, b="a"):
|
342
|
+
return a, b
|
343
|
+
|
344
|
+
self.assertWarns(FutureWarning, lambda: foo("a"))
|
345
|
+
|
346
|
+
def test_deprecated_arg_default_warning_replaced(self):
|
347
|
+
"""
|
348
|
+
Test deprecated arg default, where the default is used.
|
349
|
+
"""
|
350
|
+
|
351
|
+
@deprecated_arg_default(
|
352
|
+
"b",
|
353
|
+
old_default="a",
|
354
|
+
new_default="b",
|
355
|
+
since=self.prev_version,
|
356
|
+
replaced=self.prev_version,
|
357
|
+
version_val=self.test_version,
|
358
|
+
)
|
359
|
+
def foo(a, b="a"):
|
360
|
+
return a, b
|
361
|
+
|
362
|
+
self.assertWarns(FutureWarning, lambda: foo("a"))
|
363
|
+
|
364
|
+
def test_deprecated_arg_default_warning_with_none_as_placeholder(self):
|
365
|
+
"""
|
366
|
+
Test deprecated arg default, where the default is used.
|
367
|
+
"""
|
368
|
+
|
369
|
+
@deprecated_arg_default(
|
370
|
+
"b", old_default="a", new_default="b", since=self.prev_version, version_val=self.test_version
|
371
|
+
)
|
372
|
+
def foo(a, b=None):
|
373
|
+
if b is None:
|
374
|
+
b = "a"
|
375
|
+
return a, b
|
376
|
+
|
377
|
+
self.assertWarns(FutureWarning, lambda: foo("a"))
|
378
|
+
|
379
|
+
@deprecated_arg_default(
|
380
|
+
"b", old_default="a", new_default="b", since=self.prev_version, version_val=self.test_version
|
381
|
+
)
|
382
|
+
def foo2(a, b=None):
|
383
|
+
if b is None:
|
384
|
+
b = "b"
|
385
|
+
return a, b
|
386
|
+
|
387
|
+
self.assertWarns(FutureWarning, lambda: foo2("a"))
|
388
|
+
|
389
|
+
def test_deprecated_arg_default_errors(self):
|
390
|
+
"""
|
391
|
+
Test deprecated arg default, where the decorator is wrongly used.
|
392
|
+
"""
|
393
|
+
|
394
|
+
# since > replaced
|
395
|
+
def since_grater_than_replaced():
|
396
|
+
|
397
|
+
@deprecated_arg_default(
|
398
|
+
"b",
|
399
|
+
old_default="a",
|
400
|
+
new_default="b",
|
401
|
+
since=self.test_version,
|
402
|
+
replaced=self.prev_version,
|
403
|
+
version_val=self.test_version,
|
404
|
+
)
|
405
|
+
def foo(a, b=None):
|
406
|
+
return a, b
|
407
|
+
|
408
|
+
self.assertRaises(ValueError, since_grater_than_replaced)
|
409
|
+
|
410
|
+
# argname doesnt exist
|
411
|
+
def argname_doesnt_exist():
|
412
|
+
|
413
|
+
@deprecated_arg_default(
|
414
|
+
"other", old_default="a", new_default="b", since=self.test_version, version_val=self.test_version
|
415
|
+
)
|
416
|
+
def foo(a, b=None):
|
417
|
+
return a, b
|
418
|
+
|
419
|
+
self.assertRaises(ValueError, argname_doesnt_exist)
|
420
|
+
|
421
|
+
# argname has no default
|
422
|
+
def argname_has_no_default():
|
423
|
+
|
424
|
+
@deprecated_arg_default(
|
425
|
+
"a",
|
426
|
+
old_default="a",
|
427
|
+
new_default="b",
|
428
|
+
since=self.prev_version,
|
429
|
+
replaced=self.test_version,
|
430
|
+
version_val=self.test_version,
|
431
|
+
)
|
432
|
+
def foo(a):
|
433
|
+
return a
|
434
|
+
|
435
|
+
self.assertRaises(ValueError, argname_has_no_default)
|
436
|
+
|
437
|
+
# new default is used but version < replaced
|
438
|
+
def argname_was_replaced_before_specified_version():
|
439
|
+
|
440
|
+
@deprecated_arg_default(
|
441
|
+
"a",
|
442
|
+
old_default="a",
|
443
|
+
new_default="b",
|
444
|
+
since=self.prev_version,
|
445
|
+
replaced=self.next_version,
|
446
|
+
version_val=self.test_version,
|
447
|
+
)
|
448
|
+
def foo(a, b="b"):
|
449
|
+
return a, b
|
450
|
+
|
451
|
+
self.assertRaises(ValueError, argname_was_replaced_before_specified_version)
|
452
|
+
|
453
|
+
|
454
|
+
if __name__ == "__main__":
|
455
|
+
unittest.main()
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
9
|
+
# See the License for the specific language governing permissions and
|
10
|
+
# limitations under the License.
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
import unittest
|
15
|
+
|
16
|
+
from monai.utils import optional_import
|
17
|
+
from tests.test_utils import skip_if_no_cpp_extension
|
18
|
+
|
19
|
+
b, _ = optional_import("monai._C", name="BoundType")
|
20
|
+
p, _ = optional_import("monai._C", name="InterpolationType")
|
21
|
+
|
22
|
+
|
23
|
+
@skip_if_no_cpp_extension
|
24
|
+
class TestEnumBoundInterp(unittest.TestCase):
|
25
|
+
def test_bound(self):
|
26
|
+
self.assertEqual(str(b.replicate), "BoundType.replicate")
|
27
|
+
self.assertEqual(str(b.nearest), "BoundType.replicate")
|
28
|
+
self.assertEqual(str(b.dct1), "BoundType.dct1")
|
29
|
+
self.assertEqual(str(b.mirror), "BoundType.dct1")
|
30
|
+
self.assertEqual(str(b.dct2), "BoundType.dct2")
|
31
|
+
self.assertEqual(str(b.reflect), "BoundType.dct2")
|
32
|
+
self.assertEqual(str(b.dst1), "BoundType.dst1")
|
33
|
+
self.assertEqual(str(b.antimirror), "BoundType.dst1")
|
34
|
+
self.assertEqual(str(b.dst2), "BoundType.dst2")
|
35
|
+
self.assertEqual(str(b.antireflect), "BoundType.dst2")
|
36
|
+
self.assertEqual(str(b.dft), "BoundType.dft")
|
37
|
+
self.assertEqual(str(b.wrap), "BoundType.dft")
|
38
|
+
self.assertEqual(str(b.zero), "BoundType.zero")
|
39
|
+
|
40
|
+
self.assertEqual(int(b.replicate), 0)
|
41
|
+
self.assertEqual(int(b.nearest), 0)
|
42
|
+
self.assertEqual(int(b.dct1), 1)
|
43
|
+
self.assertEqual(int(b.mirror), 1)
|
44
|
+
self.assertEqual(int(b.dct2), 2)
|
45
|
+
self.assertEqual(int(b.reflect), 2)
|
46
|
+
self.assertEqual(int(b.dst1), 3)
|
47
|
+
self.assertEqual(int(b.antimirror), 3)
|
48
|
+
self.assertEqual(int(b.dst2), 4)
|
49
|
+
self.assertEqual(int(b.antireflect), 4)
|
50
|
+
self.assertEqual(int(b.dft), 5)
|
51
|
+
self.assertEqual(int(b.wrap), 5)
|
52
|
+
self.assertEqual(int(b.zero), 7)
|
53
|
+
|
54
|
+
def test_interp(self):
|
55
|
+
self.assertEqual(str(p.nearest), "InterpolationType.nearest")
|
56
|
+
self.assertEqual(str(p.linear), "InterpolationType.linear")
|
57
|
+
self.assertEqual(str(p.quadratic), "InterpolationType.quadratic")
|
58
|
+
self.assertEqual(str(p.cubic), "InterpolationType.cubic")
|
59
|
+
self.assertEqual(str(p.fourth), "InterpolationType.fourth")
|
60
|
+
self.assertEqual(str(p.fifth), "InterpolationType.fifth")
|
61
|
+
self.assertEqual(str(p.sixth), "InterpolationType.sixth")
|
62
|
+
self.assertEqual(str(p.seventh), "InterpolationType.seventh")
|
63
|
+
|
64
|
+
self.assertEqual(int(p.nearest), 0)
|
65
|
+
self.assertEqual(int(p.linear), 1)
|
66
|
+
self.assertEqual(int(p.quadratic), 2)
|
67
|
+
self.assertEqual(int(p.cubic), 3)
|
68
|
+
self.assertEqual(int(p.fourth), 4)
|
69
|
+
self.assertEqual(int(p.fifth), 5)
|
70
|
+
self.assertEqual(int(p.sixth), 6)
|
71
|
+
self.assertEqual(int(p.seventh), 7)
|
72
|
+
|
73
|
+
|
74
|
+
if __name__ == "__main__":
|
75
|
+
unittest.main()
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
9
|
+
# See the License for the specific language governing permissions and
|
10
|
+
# limitations under the License.
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
import unittest
|
15
|
+
|
16
|
+
import torch
|
17
|
+
import torch.distributed as dist
|
18
|
+
|
19
|
+
from monai.utils import evenly_divisible_all_gather
|
20
|
+
from tests.test_utils import DistCall, DistTestCase, assert_allclose
|
21
|
+
|
22
|
+
|
23
|
+
class DistributedEvenlyDivisibleAllGather(DistTestCase):
|
24
|
+
@DistCall(nnodes=1, nproc_per_node=2)
|
25
|
+
def test_data(self):
|
26
|
+
self._run()
|
27
|
+
|
28
|
+
def _run(self):
|
29
|
+
# if dist.get_rank() == 0
|
30
|
+
data1 = torch.tensor([[1, 2], [3, 4]])
|
31
|
+
data2 = torch.tensor([[1.0, 2.0]])
|
32
|
+
data3 = torch.tensor(7)
|
33
|
+
|
34
|
+
if dist.get_rank() == 1:
|
35
|
+
data1 = torch.tensor([[5, 6]])
|
36
|
+
data2 = torch.tensor([[3.0, 4.0], [5.0, 6.0]])
|
37
|
+
data3 = torch.tensor(8)
|
38
|
+
|
39
|
+
result1 = evenly_divisible_all_gather(data=data1, concat=True)
|
40
|
+
assert_allclose(result1, torch.tensor([[1, 2], [3, 4], [5, 6]]))
|
41
|
+
result2 = evenly_divisible_all_gather(data=data2, concat=False)
|
42
|
+
for r, e in zip(result2, [torch.tensor([[1.0, 2.0]]), torch.tensor([[3.0, 4.0], [5.0, 6.0]])]):
|
43
|
+
assert_allclose(r, e)
|
44
|
+
result3 = evenly_divisible_all_gather(data=data3, concat=False)
|
45
|
+
for r in result3:
|
46
|
+
self.assertEqual(r.ndimension(), 0)
|
47
|
+
|
48
|
+
|
49
|
+
if __name__ == "__main__":
|
50
|
+
unittest.main()
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
9
|
+
# See the License for the specific language governing permissions and
|
10
|
+
# limitations under the License.
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
import unittest
|
15
|
+
|
16
|
+
from monai.utils.module import get_package_version
|
17
|
+
|
18
|
+
|
19
|
+
class TestGetVersion(unittest.TestCase):
|
20
|
+
|
21
|
+
def test_default(self):
|
22
|
+
output = get_package_version("42foobarnoexist")
|
23
|
+
self.assertIn("UNKNOWN", output)
|
24
|
+
|
25
|
+
output = get_package_version("numpy")
|
26
|
+
self.assertNotIn("UNKNOWN", output)
|
27
|
+
|
28
|
+
def test_msg(self):
|
29
|
+
output = get_package_version("42foobarnoexist", "test")
|
30
|
+
self.assertIn("test", output)
|
31
|
+
|
32
|
+
|
33
|
+
if __name__ == "__main__":
|
34
|
+
unittest.main()
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
9
|
+
# See the License for the specific language governing permissions and
|
10
|
+
# limitations under the License.
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
import os
|
15
|
+
import tempfile
|
16
|
+
import unittest
|
17
|
+
|
18
|
+
import torch
|
19
|
+
|
20
|
+
from monai.utils import optional_import
|
21
|
+
from tests.test_utils import SkipIfNoModule
|
22
|
+
|
23
|
+
try:
|
24
|
+
_, has_ignite = optional_import("ignite")
|
25
|
+
from ignite.engine import Engine
|
26
|
+
|
27
|
+
from monai.handlers import LogfileHandler
|
28
|
+
except ImportError:
|
29
|
+
has_ignite = False
|
30
|
+
|
31
|
+
|
32
|
+
class TestHandlerLogfile(unittest.TestCase):
|
33
|
+
def setUp(self):
|
34
|
+
if has_ignite:
|
35
|
+
# set up engine
|
36
|
+
def _train_func(engine, batch):
|
37
|
+
return torch.tensor(0.0)
|
38
|
+
|
39
|
+
self.engine = Engine(_train_func)
|
40
|
+
|
41
|
+
logger = self.engine.logger
|
42
|
+
|
43
|
+
# remove all other handlers to prevent output
|
44
|
+
while logger is not None:
|
45
|
+
del logger.handlers[:]
|
46
|
+
logger = logger.parent
|
47
|
+
|
48
|
+
@SkipIfNoModule("ignite")
|
49
|
+
def test_logfile(self):
|
50
|
+
with tempfile.TemporaryDirectory() as tempdir:
|
51
|
+
handler = LogfileHandler(output_dir=tempdir)
|
52
|
+
handler.attach(self.engine)
|
53
|
+
|
54
|
+
self.engine.run(range(3))
|
55
|
+
|
56
|
+
self.assertTrue(os.path.isfile(os.path.join(tempdir, "log.txt")))
|
57
|
+
|
58
|
+
@SkipIfNoModule("ignite")
|
59
|
+
def test_filename(self):
|
60
|
+
filename = "something_else.txt"
|
61
|
+
|
62
|
+
with tempfile.TemporaryDirectory() as tempdir:
|
63
|
+
handler = LogfileHandler(output_dir=tempdir, filename=filename)
|
64
|
+
handler.attach(self.engine)
|
65
|
+
|
66
|
+
self.engine.run(range(3))
|
67
|
+
|
68
|
+
self.assertTrue(os.path.isfile(os.path.join(tempdir, filename)))
|
69
|
+
|
70
|
+
@SkipIfNoModule("ignite")
|
71
|
+
def test_createdir(self):
|
72
|
+
with tempfile.TemporaryDirectory() as tempdir:
|
73
|
+
output_dir = os.path.join(tempdir, "new_dir")
|
74
|
+
|
75
|
+
handler = LogfileHandler(output_dir=output_dir)
|
76
|
+
handler.attach(self.engine)
|
77
|
+
|
78
|
+
self.engine.run(range(3))
|
79
|
+
|
80
|
+
self.assertTrue(os.path.isfile(os.path.join(output_dir, "log.txt")))
|
81
|
+
|
82
|
+
|
83
|
+
if __name__ == "__main__":
|
84
|
+
unittest.main()
|