From 7fc9d063c4795f679f75966c59e3651ffa66a537 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 5 Apr 2022 02:16:52 +0000 Subject: [PATCH 1/7] Fix a logical error in level verification Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- monai/data/image_reader.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index 502c6fb93b..edce03810b 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -820,7 +820,8 @@ def get_data( """ # Verify inputs if level is None: - level = self._check_level(img, level) + level = self.level + self._check_level(img, level) # Extract a region or the entire image region = self._extract_region(img, location=location, size=size, level=level, dtype=dtype) @@ -845,8 +846,6 @@ def get_data( return patches, metadata def _check_level(self, img, level): - level = self.level - level_count = 0 if self.backend == "openslide": level_count = img.level_count @@ -858,8 +857,6 @@ def _check_level(self, img, level): if level > level_count - 1: raise ValueError(f"The maximum level of this image is {level_count - 1} while level={level} is requested)!") - return level - def _get_image_size(self, img, size, level, location): """ Calculate the maximum region size for the given level and starting location (if size is None). From 791a4792f8cc3a1508e13cade3ad4fbbbaa4c75f Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 5 Apr 2022 13:03:28 +0000 Subject: [PATCH 2/7] Update input level verification Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- monai/data/image_reader.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index edce03810b..cea4992067 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -821,7 +821,9 @@ def get_data( # Verify inputs if level is None: level = self.level - self._check_level(img, level) + max_level = self._get_max_level(img) + if level > max_level: + raise ValueError(f"The maximum level of this image is {max_level} while level={level} is requested)!") # Extract a region or the entire image region = self._extract_region(img, location=location, size=size, level=level, dtype=dtype) @@ -845,7 +847,7 @@ def get_data( return patches, metadata - def _check_level(self, img, level): + def _get_max_level(self, img): level_count = 0 if self.backend == "openslide": level_count = img.level_count @@ -854,8 +856,7 @@ def _check_level(self, img, level): elif self.backend == "tifffile": level_count = len(img.pages) - if level > level_count - 1: - raise ValueError(f"The maximum level of this image is {level_count - 1} while level={level} is requested)!") + return level_count - 1 def _get_image_size(self, img, size, level, location): """ From 1f1551b4d58df2df67895355298d5f8182443af9 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 5 Apr 2022 15:09:13 +0000 Subject: [PATCH 3/7] Add docstring and change to max_level Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- monai/data/image_reader.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index cea4992067..21c2fef3d9 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -847,16 +847,23 @@ def get_data( return patches, metadata - def _get_max_level(self, img): - level_count = 0 + def _get_max_level(self, img_obj): + """ Return the maximum number of levels in the whole slide image + Args: + img: the whole slide image object + + Returns: + maximum number of existing levels in the whole slide image + """ + max_level = -1 if self.backend == "openslide": - level_count = img.level_count + max_level = img_obj.level_count - 1 elif self.backend == "cucim": - level_count = img.resolutions["level_count"] + max_level = img_obj.resolutions["level_count"] - 1 elif self.backend == "tifffile": - level_count = len(img.pages) + max_level = len(img_obj.pages) - 1 - return level_count - 1 + return max_level def _get_image_size(self, img, size, level, location): """ From a6056333c19356cf760164fa7820c8f745a49296 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 5 Apr 2022 15:14:16 +0000 Subject: [PATCH 4/7] Remove max level initial value Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- monai/data/image_reader.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index 21c2fef3d9..cc0054876c 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -855,15 +855,12 @@ def _get_max_level(self, img_obj): Returns: maximum number of existing levels in the whole slide image """ - max_level = -1 if self.backend == "openslide": - max_level = img_obj.level_count - 1 - elif self.backend == "cucim": - max_level = img_obj.resolutions["level_count"] - 1 - elif self.backend == "tifffile": - max_level = len(img_obj.pages) - 1 - - return max_level + return img_obj.level_count - 1 + if self.backend == "cucim": + return img_obj.resolutions["level_count"] - 1 + if self.backend == "tifffile": + return len(img_obj.pages) - 1 def _get_image_size(self, img, size, level, location): """ From 9c1c1c44c88fd6b86521f1117e23ad32b94c5c7a Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 5 Apr 2022 15:18:17 +0000 Subject: [PATCH 5/7] new line in docstring Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- monai/data/image_reader.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index cc0054876c..0a29d4d079 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -848,7 +848,8 @@ def get_data( return patches, metadata def _get_max_level(self, img_obj): - """ Return the maximum number of levels in the whole slide image + """ + Return the maximum number of levels in the whole slide image Args: img: the whole slide image object From ec3d755f8beddd48580f575dc890bf65eb0a7084 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 5 Apr 2022 15:19:05 +0000 Subject: [PATCH 6/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- 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 0a29d4d079..e7bc9a6d88 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -848,7 +848,7 @@ def get_data( return patches, metadata def _get_max_level(self, img_obj): - """ + """ Return the maximum number of levels in the whole slide image Args: img: the whole slide image object From 8b570247e519bb7b26c52699668ceb71169781e9 Mon Sep 17 00:00:00 2001 From: Behrooz <3968947+drbeh@users.noreply.github.com> Date: Tue, 5 Apr 2022 16:03:30 +0000 Subject: [PATCH 7/7] Remove returns in docstring Signed-off-by: Behrooz <3968947+drbeh@users.noreply.github.com> --- monai/data/image_reader.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/monai/data/image_reader.py b/monai/data/image_reader.py index 0a29d4d079..d486cda63b 100644 --- a/monai/data/image_reader.py +++ b/monai/data/image_reader.py @@ -853,8 +853,6 @@ def _get_max_level(self, img_obj): Args: img: the whole slide image object - Returns: - maximum number of existing levels in the whole slide image """ if self.backend == "openslide": return img_obj.level_count - 1