From 67712c5496d9e00b29d0641341427bb5aa544374 Mon Sep 17 00:00:00 2001 From: Nic Ma Date: Thu, 11 Nov 2021 11:32:25 +0800 Subject: [PATCH 1/3] [DLMED] add dep check Signed-off-by: Nic Ma --- monai/data/image_reader.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index 438b195ce7..fb1208282e 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -37,6 +37,9 @@ Nifti1Image, _ = optional_import("nibabel.nifti1", name="Nifti1Image") PILImage, has_pil = optional_import("PIL.Image") +OpenSlide, _ = optional_import("openslide", name="OpenSlide") +CuImage, _ = optional_import("cucim", name="CuImage") + __all__ = ["ImageReader", "ITKReader", "NibabelReader", "NumpyReader", "PILReader", "WSIReader"] @@ -685,12 +688,16 @@ class WSIReader(ImageReader): def __init__(self, backend: str = "OpenSlide", level: int = 0): super().__init__() self.backend = backend.lower() - if self.backend == "openslide": - self.wsi_reader, *_ = optional_import("openslide", name="OpenSlide") - elif self.backend == "cucim": - self.wsi_reader, *_ = optional_import("cucim", name="CuImage") - else: + + @require_pkg(pkg_name=self.backend) + def _set_reader(backend: str): + if backend == "openslide": + return OpenSlide + if backend == "cucim": + return CuImage raise ValueError('`backend` should be either "cuCIM" or "OpenSlide"') + + self.wsi_reader = _set_reader(self.backend) self.level = level def verify_suffix(self, filename: Union[Sequence[str], str]) -> bool: From 8e4e276554ddbddc53400ec8d89239629be73cc7 Mon Sep 17 00:00:00 2001 From: Nic Ma Date: Thu, 11 Nov 2021 16:07:23 +0800 Subject: [PATCH 2/3] [DLMED] fix typo Signed-off-by: Nic Ma --- monai/data/image_reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index f80061f50f..ee6ca9f0f4 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -701,7 +701,7 @@ def _set_reader(backend: str): return OpenSlide if backend == "cucim": return CuImage - if backend = "tifffile": + if backend == "tifffile": return TiffFile raise ValueError("`backend` should be 'cuCIM', 'OpenSlide' or 'TiffFile'.") From ff6ac6d5f67a858f9e3c4853bb01c7bb73a6e8c6 Mon Sep 17 00:00:00 2001 From: Nic Ma Date: Fri, 12 Nov 2021 01:51:54 +0800 Subject: [PATCH 3/3] [DLMED] update according to comments Signed-off-by: Nic Ma --- monai/data/image_reader.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index ee6ca9f0f4..4830b56aa8 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -694,20 +694,20 @@ class WSIReader(ImageReader): def __init__(self, backend: str = "OpenSlide", level: int = 0): super().__init__() self.backend = backend.lower() - - @require_pkg(pkg_name=self.backend) - def _set_reader(backend: str): - if backend == "openslide": - return OpenSlide - if backend == "cucim": - return CuImage - if backend == "tifffile": - return TiffFile - raise ValueError("`backend` should be 'cuCIM', 'OpenSlide' or 'TiffFile'.") - - self.wsi_reader = _set_reader(self.backend) + func = require_pkg(self.backend)(self._set_reader) + self.wsi_reader = func(self.backend) self.level = level + @staticmethod + def _set_reader(backend: str): + if backend == "openslide": + return OpenSlide + if backend == "cucim": + return CuImage + if backend == "tifffile": + return TiffFile + raise ValueError("`backend` should be 'cuCIM', 'OpenSlide' or 'TiffFile'.") + def verify_suffix(self, filename: Union[Sequence[str], str]) -> bool: """ Verify whether the specified file or files format is supported by WSI reader.