diff --git a/tests/test_patch_extraction.py b/tests/test_patch_extraction.py index 5f7441f20..2609b9a48 100644 --- a/tests/test_patch_extraction.py +++ b/tests/test_patch_extraction.py @@ -663,3 +663,23 @@ def test_mask_based_patch_extractor_ndpi( len_region1 = len(patches) assert len_all > len_region2 > len_region1 + + +def test_invalid_points_type() -> None: + """Test invalid locations_list type for PointsPatchExtractor.""" + img = np.zeros((256, 256, 3)) + coords = [[10, 10]] + msg = "Please input correct locations_list. " + msg += "Supported types: np.ndarray, DataFrame, str, Path." + with pytest.raises( + TypeError, + match=msg, + ): + patchextraction.get_patch_extractor( + "point", input_img=img, locations_list=coords, patch_size=38 + ) + + patches = patchextraction.get_patch_extractor( + "point", input_img=img, locations_list=np.array(coords), patch_size=38 + ) + assert len(patches) > 0 diff --git a/tiatoolbox/tools/patchextraction.py b/tiatoolbox/tools/patchextraction.py index 704e70e40..21fcb4eb0 100644 --- a/tiatoolbox/tools/patchextraction.py +++ b/tiatoolbox/tools/patchextraction.py @@ -10,7 +10,7 @@ from tiatoolbox import logger from tiatoolbox.utils import misc -from tiatoolbox.utils.exceptions import MethodNotSupportedError +from tiatoolbox.utils.exceptions import FileNotSupportedError, MethodNotSupportedError from tiatoolbox.utils.visualization import AnnotationRenderer from tiatoolbox.wsicore import wsireader @@ -772,7 +772,12 @@ def __init__( pad_constant_values=pad_constant_values, within_bound=within_bound, ) - self.locations_df = misc.read_locations(input_table=locations_list) + try: + self.locations_df = misc.read_locations(input_table=locations_list) + except (TypeError, FileNotSupportedError) as exc: + msg = "Please input correct locations_list. " + msg += "Supported types: np.ndarray, DataFrame, str, Path." + raise TypeError(msg) from exc self.locations_df["x"] = self.locations_df["x"] - int( (self.patch_size[1] - 1) / 2, ) diff --git a/tiatoolbox/utils/misc.py b/tiatoolbox/utils/misc.py index 7c1c349e7..1e02a3ce0 100644 --- a/tiatoolbox/utils/misc.py +++ b/tiatoolbox/utils/misc.py @@ -531,7 +531,7 @@ def read_locations( out_table = pd.read_json(input_table) return __assign_unknown_class(out_table) - msg = "File type not supported." + msg = "File type not supported. Supported types: .npy, .csv, .json" raise FileNotSupportedError(msg) if isinstance(input_table, np.ndarray): @@ -540,7 +540,9 @@ def read_locations( if isinstance(input_table, pd.DataFrame): return __assign_unknown_class(input_table) - msg = "Please input correct image path or an ndarray image." + msg = "File type not supported. " + msg += "Supported types: str, Path, PathLike, np.ndarray, pd.DataFrame" + raise TypeError(msg)