From 92295487664113ff3ebc20ba9ef040f95b242d36 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 21 Sep 2021 13:30:04 +0000 Subject: [PATCH 1/8] Update cucim dependency for cucim transforms Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- requirements-dev.txt | 2 +- setup.cfg | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ed8739ded8..a3aa11bc1c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -31,7 +31,7 @@ Sphinx==3.5.3 recommonmark==0.6.0 sphinx-autodoc-typehints==1.11.1 sphinx-rtd-theme==0.5.2 -cucim~=0.19.0; platform_system == "Linux" +cucim~=21.8.2; platform_system == "Linux" openslide-python==1.1.2 pandas requests diff --git a/setup.cfg b/setup.cfg index f7ed90a14a..c7157956f3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -40,7 +40,7 @@ all = tqdm>=4.47.0 lmdb psutil - cucim~=0.19.0 + cucim~=21.8.2 openslide-python==1.1.2 pandas einops @@ -68,7 +68,7 @@ lmdb = psutil = psutil cucim = - cucim~=0.19.0 + cucim~=21.8.2 openslide = openslide-python==1.1.2 pandas = From 0a4da1c367ed09f1a9b947519e089bf9cb3eb835 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 21 Sep 2021 23:39:08 +0000 Subject: [PATCH 2/8] Skip rgba test if cucim>0.19.0 Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- tests/test_cuimage_reader.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_cuimage_reader.py b/tests/test_cuimage_reader.py index 2cbfaec113..cbf1454e20 100644 --- a/tests/test_cuimage_reader.py +++ b/tests/test_cuimage_reader.py @@ -21,7 +21,7 @@ from monai.data.image_reader import WSIReader from monai.utils import optional_import -_, has_cim = optional_import("cucim") +cucim, has_cim = optional_import("cucim") PILImage, has_pil = optional_import("PIL.Image") FILE_URL = "http://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/CMU-1.tiff" @@ -112,6 +112,7 @@ def test_read_patches(self, file_path, patch_info, expected_img): @parameterized.expand([TEST_CASE_RGB_0, TEST_CASE_RGB_1]) @skipUnless(has_pil, "Requires PIL") + @skipUnless(cucim.__version__=='0.19.0', 'Skipped for cicum>0.19.0') def test_read_rgba(self, img_expected): image = {} reader = WSIReader("cuCIM") From 45750c966f8e9cf44e4e3393d42bab03f0279e83 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 21 Sep 2021 23:57:59 +0000 Subject: [PATCH 3/8] Fix format Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- tests/test_cuimage_reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cuimage_reader.py b/tests/test_cuimage_reader.py index cbf1454e20..3bb0ffe7ef 100644 --- a/tests/test_cuimage_reader.py +++ b/tests/test_cuimage_reader.py @@ -112,7 +112,7 @@ def test_read_patches(self, file_path, patch_info, expected_img): @parameterized.expand([TEST_CASE_RGB_0, TEST_CASE_RGB_1]) @skipUnless(has_pil, "Requires PIL") - @skipUnless(cucim.__version__=='0.19.0', 'Skipped for cicum>0.19.0') + @skipUnless(cucim.__version__ == "0.19.0", "Skipped for cicum>0.19.0") def test_read_rgba(self, img_expected): image = {} reader = WSIReader("cuCIM") From c35a9dc135a56dc57b3af933e82b36f97aec9dc5 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 21 Sep 2021 23:59:18 +0000 Subject: [PATCH 4/8] Update skip Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- tests/test_cuimage_reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cuimage_reader.py b/tests/test_cuimage_reader.py index 3bb0ffe7ef..7176ae8e52 100644 --- a/tests/test_cuimage_reader.py +++ b/tests/test_cuimage_reader.py @@ -112,7 +112,7 @@ def test_read_patches(self, file_path, patch_info, expected_img): @parameterized.expand([TEST_CASE_RGB_0, TEST_CASE_RGB_1]) @skipUnless(has_pil, "Requires PIL") - @skipUnless(cucim.__version__ == "0.19.0", "Skipped for cicum>0.19.0") + @skipUnless(has_cucim and cucim.__version__ == "0.19.0", "Skipped for cicum>0.19.0") def test_read_rgba(self, img_expected): image = {} reader = WSIReader("cuCIM") From 3071e01ca907082dcbe39b5f3fdec673edb7a48c Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Wed, 22 Sep 2021 00:07:24 +0000 Subject: [PATCH 5/8] has_cim to has_cucim Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- tests/test_cuimage_reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_cuimage_reader.py b/tests/test_cuimage_reader.py index 7176ae8e52..cd8b5e9e65 100644 --- a/tests/test_cuimage_reader.py +++ b/tests/test_cuimage_reader.py @@ -21,7 +21,7 @@ from monai.data.image_reader import WSIReader from monai.utils import optional_import -cucim, has_cim = optional_import("cucim") +cucim, has_cucim = optional_import("cucim") PILImage, has_pil = optional_import("PIL.Image") FILE_URL = "http://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/CMU-1.tiff" @@ -83,7 +83,7 @@ class TestCuCIMReader(unittest.TestCase): - @skipUnless(has_cim, "Requires CuCIM") + @skipUnless(has_cucim, "Requires CuCIM") def setUp(self): download_url(FILE_URL, FILE_PATH, "5a3cfd4fd725c50578ddb80b517b759f") From d17ab944073fb531f65ef5964ba419e3f98ae682 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Wed, 22 Sep 2021 15:55:06 +0100 Subject: [PATCH 6/8] fall back to openslide Signed-off-by: Wenqi Li --- monai/data/image_reader.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index cd1486d6d3..3e4cab0ffc 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -673,8 +673,11 @@ def __init__(self, reader_lib: str = "OpenSlide"): if has_osl: self.wsi_reader = openslide.OpenSlide elif self.reader_lib == "cucim": - if has_cim: + if has_cim and hasattr(cucim, "CuImage"): self.wsi_reader = cucim.CuImage + else: + warnings.warn("Please check the cucim installation. Defaulting to use openslide.") + self.wsi_reader = openslide.OpenSlide else: raise ValueError('`reader_lib` should be either "cuCIM" or "OpenSlide"') From ca3a094c4ed0e6a9ce39c50a7bceeee5d5ab5952 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Wed, 22 Sep 2021 16:28:12 +0100 Subject: [PATCH 7/8] update versions Signed-off-by: Wenqi Li --- monai/data/image_reader.py | 3 +-- requirements-dev.txt | 2 +- setup.cfg | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index 3e4cab0ffc..be583fc375 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -676,8 +676,7 @@ def __init__(self, reader_lib: str = "OpenSlide"): if has_cim and hasattr(cucim, "CuImage"): self.wsi_reader = cucim.CuImage else: - warnings.warn("Please check the cucim installation. Defaulting to use openslide.") - self.wsi_reader = openslide.OpenSlide + raise ImportError("Please check the cuCIM installation.") else: raise ValueError('`reader_lib` should be either "cuCIM" or "OpenSlide"') diff --git a/requirements-dev.txt b/requirements-dev.txt index a3aa11bc1c..1b9ae52ae1 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -31,7 +31,7 @@ Sphinx==3.5.3 recommonmark==0.6.0 sphinx-autodoc-typehints==1.11.1 sphinx-rtd-theme==0.5.2 -cucim~=21.8.2; platform_system == "Linux" +cucim>=21.8.2; platform_system == "Linux" openslide-python==1.1.2 pandas requests diff --git a/setup.cfg b/setup.cfg index c7157956f3..eddb898b0d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -40,7 +40,7 @@ all = tqdm>=4.47.0 lmdb psutil - cucim~=21.8.2 + cucim>=21.8.2 openslide-python==1.1.2 pandas einops @@ -68,7 +68,7 @@ lmdb = psutil = psutil cucim = - cucim~=21.8.2 + cucim>=21.8.2 openslide = openslide-python==1.1.2 pandas = From a102ab71679f5694fac20d70a5d2031b4261a95f Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Wed, 22 Sep 2021 16:37:05 +0100 Subject: [PATCH 8/8] skip tests when cucim is not available Signed-off-by: Wenqi Li --- tests/test_cuimage_reader.py | 1 + tests/test_lesion_froc.py | 3 ++- tests/test_patch_wsi_dataset.py | 3 ++- tests/test_smartcache_patch_wsi_dataset.py | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/test_cuimage_reader.py b/tests/test_cuimage_reader.py index cd8b5e9e65..934afe4771 100644 --- a/tests/test_cuimage_reader.py +++ b/tests/test_cuimage_reader.py @@ -22,6 +22,7 @@ from monai.utils import optional_import cucim, has_cucim = optional_import("cucim") +has_cucim = has_cucim and hasattr(cucim, "CuImage") PILImage, has_pil = optional_import("PIL.Image") FILE_URL = "http://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/CMU-1.tiff" diff --git a/tests/test_lesion_froc.py b/tests/test_lesion_froc.py index 2454de88fa..04b4cb1355 100644 --- a/tests/test_lesion_froc.py +++ b/tests/test_lesion_froc.py @@ -19,7 +19,8 @@ from monai.apps.pathology.metrics import LesionFROC from monai.utils import optional_import -_, has_cucim = optional_import("cucim") +_cucim, has_cucim = optional_import("cucim") +has_cucim = has_cucim and hasattr(_cucim, "CuImage") _, has_skimage = optional_import("skimage.measure") _, has_sp = optional_import("scipy.ndimage") PILImage, has_pil = optional_import("PIL.Image") diff --git a/tests/test_patch_wsi_dataset.py b/tests/test_patch_wsi_dataset.py index f775f28376..0d08d6b946 100644 --- a/tests/test_patch_wsi_dataset.py +++ b/tests/test_patch_wsi_dataset.py @@ -21,7 +21,8 @@ from monai.apps.utils import download_url from monai.utils import optional_import -_, has_cim = optional_import("cucim") +_cucim, has_cim = optional_import("cucim") +has_cim = has_cim and hasattr(_cucim, "CuImage") _, has_osl = optional_import("openslide") FILE_URL = "http://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/CMU-1.tiff" diff --git a/tests/test_smartcache_patch_wsi_dataset.py b/tests/test_smartcache_patch_wsi_dataset.py index c484e5fc69..af60d23cfc 100644 --- a/tests/test_smartcache_patch_wsi_dataset.py +++ b/tests/test_smartcache_patch_wsi_dataset.py @@ -21,7 +21,8 @@ from monai.apps.utils import download_url from monai.utils import optional_import -_, has_cim = optional_import("cucim") +_cucim, has_cim = optional_import("cucim") +has_cim = has_cim and hasattr(_cucim, "CuImage") FILE_URL = "http://openslide.cs.cmu.edu/download/openslide-testdata/Generic-TIFF/CMU-1.tiff" FILE_PATH = os.path.join(os.path.dirname(__file__), "testing_data", "temp_" + os.path.basename(FILE_URL))