From da9a099de4c7f1f97fd51fe3e13f2c44651a0909 Mon Sep 17 00:00:00 2001 From: Richard Brown <33289025+rijobro@users.noreply.github.com> Date: Tue, 12 Jan 2021 15:49:18 +0000 Subject: [PATCH 1/5] add aliases to import Signed-off-by: Richard Brown <33289025+rijobro@users.noreply.github.com> --- monai/transforms/__init__.py | 94 +++++++++++++++++++++++++- monai/transforms/io/dictionary.py | 16 ++++- monai/transforms/post/dictionary.py | 12 ++++ monai/transforms/spatial/dictionary.py | 28 ++++++++ monai/transforms/utility/dictionary.py | 38 +++++++++++ 5 files changed, 186 insertions(+), 2 deletions(-) diff --git a/monai/transforms/__init__.py b/monai/transforms/__init__.py index 305c27607e..d34512554c 100644 --- a/monai/transforms/__init__.py +++ b/monai/transforms/__init__.py @@ -164,7 +164,21 @@ ThresholdIntensityDict, ) from .io.array import LoadImage, LoadNifti, LoadNumpy, LoadPNG -from .io.dictionary import LoadDatad, LoadImaged, LoadNiftid, LoadNumpyd, LoadPNGd +from .io.dictionary import ( + LoadDatad, + LoadImaged, + LoadImageD, + LoadImageDict, + LoadNiftid, + LoadNiftiD, + LoadNiftiDict, + LoadNumpyd, + LoadNumpyD, + LoadNumpyDict, + LoadPNGd, + LoadPNGD, + LoadPNGDict, +) from .post.array import ( Activations, AsDiscrete, @@ -175,12 +189,24 @@ ) from .post.dictionary import ( Activationsd, + ActivationsD, + ActivationsDict, AsDiscreted, + AsDiscreteD, + AsDiscreteDict, Ensembled, KeepLargestConnectedComponentd, + KeepLargestConnectedComponentD, + KeepLargestConnectedComponentDict, LabelToContourd, + LabelToContourD, + LabelToContourDict, MeanEnsembled, + MeanEnsembleD, + MeanEnsembleDict, VoteEnsembled, + VoteEnsembleD, + VoteEnsembleDict, ) from .spatial.array import ( Affine, @@ -205,19 +231,47 @@ ) from .spatial.dictionary import ( Flipd, + FlipD, + FlipDict, Orientationd, + OrientationD, + OrientationDict, Rand2DElasticd, + Rand2DElasticD, + Rand2DElasticDict, Rand3DElasticd, + Rand3DElasticD, + Rand3DElasticDict, RandAffined, + RandAffineD, + RandAffineDict, RandFlipd, + RandFlipD, + RandFlipDict, RandRotate90d, + RandRotate90D, + RandRotate90Dict, RandRotated, + RandRotateD, + RandRotateDict, RandZoomd, + RandZoomD, + RandZoomDict, Resized, + ResizeD, + ResizeDict, Rotate90d, + Rotate90D, + Rotate90Dict, Rotated, + RotateD, + RotateDict, Spacingd, + SpacingD, + SpacingDict, Zoomd, + ZoomD, + ZoomDict, ) from .utility.array import ( AddChannel, @@ -240,24 +294,62 @@ ) from .utility.dictionary import ( AddChanneld, + AddChannelD, + AddChannelDict, AddExtremePointsChanneld, + AddExtremePointsChannelD, + AddExtremePointsChannelDict, AsChannelFirstd, + AsChannelFirstD, + AsChannelFirstDict, AsChannelLastd, + AsChannelLastD, + AsChannelLastDict, CastToTyped, + CastToTypeD, + CastToTypeDict, ConcatItemsd, + ConcatItemsD, + ConcatItemsDict, ConvertToMultiChannelBasedOnBratsClassesd, + ConvertToMultiChannelBasedOnBratsClassesD, + ConvertToMultiChannelBasedOnBratsClassesDict, CopyItemsd, + CopyItemsD, + CopyItemsDict, DataStatsd, + DataStatsD, + DataStatsDict, DeleteItemsd, + DeleteItemsD, + DeleteItemsDict, FgBgToIndicesd, + FgBgToIndicesD, + FgBgToIndicesDict, Identityd, + IdentityD, + IdentityDict, LabelToMaskd, + LabelToMaskD, + LabelToMaskDict, Lambdad, + LambdaD, + LambdaDict, RepeatChanneld, + RepeatChannelD, + RepeatChannelDict, SelectItemsd, SimulateDelayd, + SimulateDelayD, + SimulateDelayDict, SplitChanneld, + SplitChannelD, + SplitChannelDict, SqueezeDimd, + SqueezeDimD, + SqueezeDimDict, ToNumpyd, ToTensord, + ToTensorD, + ToTensorDict, ) diff --git a/monai/transforms/io/dictionary.py b/monai/transforms/io/dictionary.py index 9f7cd821eb..474fbd0a50 100644 --- a/monai/transforms/io/dictionary.py +++ b/monai/transforms/io/dictionary.py @@ -24,7 +24,21 @@ from monai.transforms.compose import MapTransform from monai.transforms.io.array import LoadImage, LoadNifti, LoadNumpy, LoadPNG -__all__ = ["LoadImaged", "LoadDatad", "LoadNiftid", "LoadPNGd", "LoadNumpyd"] +__all__ = [ + "LoadImaged", + "LoadDatad", + "LoadNiftid", + "LoadPNGd", + "LoadNumpyd", + "LoadImageD", + "LoadImageDict", + "LoadNiftiD", + "LoadNiftiDict", + "LoadPNGD", + "LoadPNGDict", + "LoadNumpyD", + "LoadNumpyDict", +] class LoadImaged(MapTransform): diff --git a/monai/transforms/post/dictionary.py b/monai/transforms/post/dictionary.py index 779fcdc397..60cda11a91 100644 --- a/monai/transforms/post/dictionary.py +++ b/monai/transforms/post/dictionary.py @@ -40,6 +40,18 @@ "Ensembled", "MeanEnsembled", "VoteEnsembled", + "ActivationsD", + "ActivationsDict", + "AsDiscreteD", + "AsDiscreteDict", + "KeepLargestConnectedComponentD", + "KeepLargestConnectedComponentDict", + "LabelToContourD", + "LabelToContourDict", + "MeanEnsembleD", + "MeanEnsembleDict", + "VoteEnsembleD", + "VoteEnsembleDict", ] diff --git a/monai/transforms/spatial/dictionary.py b/monai/transforms/spatial/dictionary.py index 5250bd1550..2113f6c2d0 100644 --- a/monai/transforms/spatial/dictionary.py +++ b/monai/transforms/spatial/dictionary.py @@ -62,6 +62,34 @@ "RandRotated", "Zoomd", "RandZoomd", + "SpacingD", + "SpacingDict", + "OrientationD", + "OrientationDict", + "Rotate90D", + "Rotate90Dict", + "RandRotate90D", + "RandRotate90Dict", + "ResizeD", + "ResizeDict", + "RandAffineD", + "RandAffineDict", + "Rand2DElasticD", + "Rand2DElasticDict", + "Rand3DElasticD", + "Rand3DElasticDict", + "FlipD", + "FlipDict", + "RandFlipD", + "RandFlipDict", + "RotateD", + "RotateDict", + "RandRotateD", + "RandRotateDict", + "ZoomD", + "ZoomDict", + "RandZoomD", + "RandZoomDict", ] GridSampleModeSequence = Union[Sequence[Union[GridSampleMode, str]], GridSampleMode, str] diff --git a/monai/transforms/utility/dictionary.py b/monai/transforms/utility/dictionary.py index 21c30f6010..dcb79e1111 100644 --- a/monai/transforms/utility/dictionary.py +++ b/monai/transforms/utility/dictionary.py @@ -66,6 +66,44 @@ "FgBgToIndicesd", "ConvertToMultiChannelBasedOnBratsClassesd", "AddExtremePointsChanneld", + "IdentityD", + "IdentityDict", + "AsChannelFirstD", + "AsChannelFirstDict", + "AsChannelLastD", + "AsChannelLastDict", + "AddChannelD", + "AddChannelDict", + "RepeatChannelD", + "RepeatChannelDict", + "SplitChannelD", + "SplitChannelDict", + "CastToTypeD", + "CastToTypeDict", + "ToTensorD", + "ToTensorDict", + "DeleteItemsD", + "DeleteItemsDict", + "SqueezeDimD", + "SqueezeDimDict", + "DataStatsD", + "DataStatsDict", + "SimulateDelayD", + "SimulateDelayDict", + "CopyItemsD", + "CopyItemsDict", + "ConcatItemsD", + "ConcatItemsDict", + "LambdaD", + "LambdaDict", + "LabelToMaskD", + "LabelToMaskDict", + "FgBgToIndicesD", + "FgBgToIndicesDict", + "ConvertToMultiChannelBasedOnBratsClassesD", + "ConvertToMultiChannelBasedOnBratsClassesDict", + "AddExtremePointsChannelD", + "AddExtremePointsChannelDict", ] From 2ccd190dd0293eb5b734cb1e19fd5afaad1505ba Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Wed, 13 Jan 2021 15:43:16 +0000 Subject: [PATCH 2/5] all-> __all__; resolves built-in name conficts Signed-off-by: Wenqi Li --- monai/networks/utils.py | 6 +++--- monai/utils/aliases.py | 2 +- monai/utils/decorators.py | 2 +- monai/utils/enums.py | 2 +- monai/utils/misc.py | 2 +- tests/test_occlusion_sensitivity.py | 6 +++--- tests/test_reg_loss_integration.py | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/monai/networks/utils.py b/monai/networks/utils.py index a2104945b0..bc3d291203 100644 --- a/monai/networks/utils.py +++ b/monai/networks/utils.py @@ -301,13 +301,13 @@ def train_mode(*nets: nn.Module): """ # Get original state of network(s) - eval = [n for n in nets if not n.training] + eval_list = [n for n in nets if not n.training] try: # set to train mode with torch.set_grad_enabled(True): yield [n.train() for n in nets] finally: - # Return required networks to eval - for n in eval: + # Return required networks to eval_list + for n in eval_list: n.eval() diff --git a/monai/utils/aliases.py b/monai/utils/aliases.py index ce3c513473..e4ef40da11 100644 --- a/monai/utils/aliases.py +++ b/monai/utils/aliases.py @@ -21,7 +21,7 @@ alias_lock = threading.RLock() GlobalAliases = {} -all = ["alias", "resolve_name"] +__all__ = ["alias", "resolve_name"] def alias(*names): diff --git a/monai/utils/decorators.py b/monai/utils/decorators.py index 78b510ad1c..a3e6e3f980 100644 --- a/monai/utils/decorators.py +++ b/monai/utils/decorators.py @@ -11,7 +11,7 @@ from functools import wraps -all = ["RestartGenerator", "MethodReplacer"] +__all__ = ["RestartGenerator", "MethodReplacer"] class RestartGenerator: diff --git a/monai/utils/enums.py b/monai/utils/enums.py index 7b01f2146b..d1d2d3bcce 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -11,7 +11,7 @@ from enum import Enum -all = [ +__all__ = [ "NumpyPadMode", "GridSampleMode", "InterpolateMode", diff --git a/monai/utils/misc.py b/monai/utils/misc.py index 343e809f70..bf1ff60cbc 100644 --- a/monai/utils/misc.py +++ b/monai/utils/misc.py @@ -19,7 +19,7 @@ import numpy as np import torch -all = [ +__all__ = [ "zip_with", "star_zip_with", "first", diff --git a/tests/test_occlusion_sensitivity.py b/tests/test_occlusion_sensitivity.py index ea21cd4fa8..47a13d01e1 100644 --- a/tests/test_occlusion_sensitivity.py +++ b/tests/test_occlusion_sensitivity.py @@ -77,13 +77,13 @@ class TestComputeOcclusionSensitivity(unittest.TestCase): @parameterized.expand([TEST_CASE_0, TEST_CASE_1]) def test_shape(self, init_data, call_data, map_expected_shape, most_prob_expected_shape): occ_sens = OcclusionSensitivity(**init_data) - map, most_prob = occ_sens(**call_data) - self.assertTupleEqual(map.shape, map_expected_shape) + m, most_prob = occ_sens(**call_data) + self.assertTupleEqual(m.shape, map_expected_shape) self.assertTupleEqual(most_prob.shape, most_prob_expected_shape) # most probable class should be of type int, and should have min>=0, max Date: Wed, 13 Jan 2021 16:00:01 +0000 Subject: [PATCH 3/5] fixes typo Signed-off-by: Wenqi Li --- tests/test_load_image.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_load_image.py b/tests/test_load_image.py index f549979de7..b7743f86ad 100644 --- a/tests/test_load_image.py +++ b/tests/test_load_image.py @@ -124,7 +124,7 @@ def test_itk_dicom_series_reader(self, input_param, filenames, expected_shape): [0.0, 0.0, 0.0, 1.0], ] ), - ), + ) self.assertTupleEqual(result.shape, expected_shape) self.assertTupleEqual(tuple(header["spatial_shape"]), expected_shape) From baea553d4661e0f7159c44620c899b6130cbd811 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Wed, 13 Jan 2021 16:03:41 +0000 Subject: [PATCH 4/5] exit -> sys.exit Signed-off-by: Wenqi Li --- tests/min_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/min_tests.py b/tests/min_tests.py index 0e2e8d3917..4cca8b5af8 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -136,4 +136,4 @@ def run_testsuit(): # testing all modules test_runner = unittest.TextTestRunner(stream=sys.stdout, verbosity=2) result = test_runner.run(run_testsuit()) - exit(int(not result.wasSuccessful())) + sys.exit(int(not result.wasSuccessful())) From a95ee0edfb06b98f12ccedd61fb62f6f9f437b41 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Wed, 13 Jan 2021 16:06:26 +0000 Subject: [PATCH 5/5] maintainer field deprecated https://docs.docker.com/engine/reference/builder/\#maintainer-deprecated Signed-off-by: Wenqi Li --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9430db076b..2d01f57301 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ ARG PYTORCH_IMAGE=nvcr.io/nvidia/pytorch:20.10-py3 FROM ${PYTORCH_IMAGE} -MAINTAINER MONAI Consortium +LABEL maintainer="monai.miccai2019@gmail.com" WORKDIR /opt/monai