diff --git a/monai/transforms/io/array.py b/monai/transforms/io/array.py index 164c7b0e76..9c2727ffc3 100644 --- a/monai/transforms/io/array.py +++ b/monai/transforms/io/array.py @@ -47,10 +47,10 @@ def switch_endianness(data, old, new): data = [switch_endianness(x, old, new) for x in data] elif isinstance(data, dict): data = {k: switch_endianness(v, old, new) for k, v in data.items()} - elif isinstance(data, (bool, str, float, int)): + elif isinstance(data, (bool, str, float, int, type(None))): pass else: - raise AssertionError() + raise AssertionError(f"Unknown type: {type(data).__name__}") return data diff --git a/monai/utils/jupyter_utils.py b/monai/utils/jupyter_utils.py index a7e712619e..726a11731c 100644 --- a/monai/utils/jupyter_utils.py +++ b/monai/utils/jupyter_utils.py @@ -10,8 +10,8 @@ # limitations under the License. """ -This set of utility function is meant to make using Jupyter notebooks easier with MONAI. Plotting functions using -Matplotlib produce common plots for metrics and images. +This set of utility function is meant to make using Jupyter notebooks easier with MONAI. Plotting functions using +Matplotlib produce common plots for metrics and images. """ from enum import Enum diff --git a/tests/test_nifti_endianness.py b/tests/test_nifti_endianness.py index d8adb1efb2..b725e2462c 100644 --- a/tests/test_nifti_endianness.py +++ b/tests/test_nifti_endianness.py @@ -1,3 +1,4 @@ +import os import tempfile import unittest from typing import TYPE_CHECKING, List, Tuple @@ -7,16 +8,20 @@ from parameterized import parameterized from monai.data import DataLoader, Dataset, create_test_image_2d +from monai.data.image_reader import PILReader from monai.transforms import LoadImage, LoadImaged from monai.transforms.io.array import switch_endianness from monai.utils.module import optional_import if TYPE_CHECKING: import nibabel as nib + from PIL import Image as PILImage has_nib = True + has_pil = True else: nib, has_nib = optional_import("nibabel") + PILImage, has_pil = optional_import("PIL.Image") TESTS: List[Tuple] = [] for endianness in ["<", ">"]: @@ -49,6 +54,16 @@ def test_switch(self): # verify data types output = switch_endianness(data, ">", "<") self.assertEqual(type(data), type(output)) + @skipUnless(has_pil, "Requires PIL") + def test_pil(self): + tempdir = tempfile.mkdtemp() + test_image = np.random.randint(0, 256, size=[128, 256]) + filename = os.path.join(tempdir, "test_image.png") + PILImage.fromarray(test_image.astype("uint8")).save(filename) + + loader = LoadImage(PILReader(converter=lambda image: image.convert("LA"))) + _ = loader(filename) + if __name__ == "__main__": unittest.main()