From 20d7f1eac74b722e2b005ef26094ce56da3e1726 Mon Sep 17 00:00:00 2001 From: mooniean Date: Mon, 12 Feb 2024 14:20:17 +0000 Subject: [PATCH 1/6] added processing when transformations are present. need to add documentation to explain how it works. added random seed --- src/caked/base.py | 2 +- src/caked/dataloader.py | 29 +++++++++++++++++++++++++---- tests/test_disk_io.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/caked/base.py b/src/caked/base.py index 646ac00..6c58989 100644 --- a/src/caked/base.py +++ b/src/caked/base.py @@ -25,7 +25,7 @@ def load(self, datapath, datatype): pass @abstractmethod - def process(self): + def process(self, paths, datatype): pass @abstractmethod diff --git a/src/caked/dataloader.py b/src/caked/dataloader.py index cbdd1a0..792c9da 100644 --- a/src/caked/dataloader.py +++ b/src/caked/dataloader.py @@ -15,6 +15,9 @@ from .base import AbstractDataLoader, AbstractDataset +np.random.seed(42) +TRANSFORM_OPTIONS = ["rescale", "normalise", "gaussianblur", "shiftmin"] + class DiskDataLoader(AbstractDataLoader): def __init__( @@ -24,11 +27,13 @@ def __init__( training: bool = True, classes: list[str] | None = None, pipeline: str = "disk", + transformations: str | None = None, ) -> None: self.dataset_size = dataset_size self.save_to_disk = save_to_disk self.training = training self.pipeline = pipeline + self.transformations = transformations if classes is None: self.classes = [] else: @@ -69,10 +74,27 @@ def load(self, datapath, datatype) -> None: if self.dataset_size is not None: paths = paths[: self.dataset_size] - self.dataset = DiskDataset(paths=paths, datatype=datatype) + if self.transformations is None: + self.dataset = DiskDataset(paths=paths, datatype=datatype) + else: + self.dataset = self.process(paths=paths, datatype=datatype) - def process(self): - return super().process() + def process(self, paths: list[str], datatype: str): + if self.transformations is None: + msg = "No processing to do as no transformations were provided." + raise RuntimeError(msg) + transforms = self.transformations.split(",") + rescale, normalise, gaussianblur, shiftmin = np.in1d( + TRANSFORM_OPTIONS, transforms + ) + return DiskDataset( + paths=paths, + datatype=datatype, + rescale=rescale, + normalise=normalise, + gaussianblur=gaussianblur, + shiftmin=shiftmin, + ) def get_loader(self, batch_size: int, split_size: float | None = None): if self.training: @@ -130,7 +152,6 @@ def __init__( self.rescale = rescale self.normalise = normalise self.gaussianblur = gaussianblur - self.rescale = rescale self.transform = input_transform self.datatype = datatype self.shiftmin = shiftmin diff --git a/tests/test_disk_io.py b/tests/test_disk_io.py index d7df678..d9a3e6a 100644 --- a/tests/test_disk_io.py +++ b/tests/test_disk_io.py @@ -18,6 +18,8 @@ DISK_CLASSES_MISSING = ["2b3a", "1b23"] DISK_CLASSES_NONE = None DATATYPE_MRC = "mrc" +TRANSFORM_ALL = "rescale,normalise,gaussianblur,shiftmin" +TRANSFORM_SOME = "rescale,gaussianblur" def test_class_instantiation(): @@ -127,3 +129,33 @@ def test_get_loader_training_fail(): torch_loader_train, torch_loader_val = test_loader.get_loader( split_size=1, batch_size=64 ) + + +def test_processing_data_all_transforms(): + test_loader = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL, + dataset_size=DATASET_SIZE_ALL, + training=True, + transformations=TRANSFORM_ALL, + ) + test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) + assert test_loader.dataset.normalise + assert test_loader.dataset.shiftmin + assert test_loader.dataset.gaussianblur + assert test_loader.dataset.rescale + + +def test_processing_data_some_transforms(): + test_loader = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL, + dataset_size=DATASET_SIZE_ALL, + training=True, + transformations=TRANSFORM_SOME, + ) + test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) + assert not test_loader.dataset.normalise + assert not test_loader.dataset.shiftmin + assert test_loader.dataset.gaussianblur + assert test_loader.dataset.rescale From 392aacd916704e884a312ea68bc15faf2dff7575 Mon Sep 17 00:00:00 2001 From: mooniean Date: Thu, 15 Feb 2024 13:58:03 +0000 Subject: [PATCH 2/6] revamped the dataset instantiation test --- tests/test_disk_io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_disk_io.py b/tests/test_disk_io.py index d9a3e6a..ee8a9f1 100644 --- a/tests/test_disk_io.py +++ b/tests/test_disk_io.py @@ -35,7 +35,7 @@ def test_class_instantiation(): def test_dataset_instantiation(): - test_dataset = DiskDataset(paths=["test"]) + test_dataset = DiskDataset(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) assert isinstance(test_dataset, DiskDataset) From 67ee80b916a8b8e0f7f5f7d93a4139f17d0ee42f Mon Sep 17 00:00:00 2001 From: mooniean Date: Fri, 16 Feb 2024 12:02:48 +0000 Subject: [PATCH 3/6] added mnist tests, corrected some tests on mrc too --- tests/test_disk_io.py | 98 ++++++++++++++++++--------- tests/testdata_npy/2_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/2_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/5_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/__init__.py | 0 tests/testdata_npy/a_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/a_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/affinity_an.csv | 37 ++++++++++ tests/testdata_npy/classes.csv | 1 + tests/testdata_npy/d_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/d_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/e_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/i_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/j_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/l_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/s_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/2_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/2_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/5_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/a_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/d_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/i_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/j_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/s_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/u_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/v_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/test/x_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/u_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_1_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/v_9_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_0_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_10_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_2_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_3_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_4_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_5_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_6_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_7_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_8_img.npy | Bin 0 -> 32896 bytes tests/testdata_npy/x_9_img.npy | Bin 0 -> 32896 bytes 136 files changed, 103 insertions(+), 33 deletions(-) create mode 100644 tests/testdata_npy/2_0_img.npy create mode 100644 tests/testdata_npy/2_1_img.npy create mode 100644 tests/testdata_npy/2_2_img.npy create mode 100644 tests/testdata_npy/2_3_img.npy create mode 100644 tests/testdata_npy/2_4_img.npy create mode 100644 tests/testdata_npy/2_5_img.npy create mode 100644 tests/testdata_npy/2_6_img.npy create mode 100644 tests/testdata_npy/2_8_img.npy create mode 100644 tests/testdata_npy/2_9_img.npy create mode 100644 tests/testdata_npy/5_0_img.npy create mode 100644 tests/testdata_npy/5_10_img.npy create mode 100644 tests/testdata_npy/5_1_img.npy create mode 100644 tests/testdata_npy/5_2_img.npy create mode 100644 tests/testdata_npy/5_3_img.npy create mode 100644 tests/testdata_npy/5_4_img.npy create mode 100644 tests/testdata_npy/5_5_img.npy create mode 100644 tests/testdata_npy/5_6_img.npy create mode 100644 tests/testdata_npy/5_7_img.npy create mode 100644 tests/testdata_npy/5_9_img.npy create mode 100644 tests/testdata_npy/__init__.py create mode 100644 tests/testdata_npy/a_0_img.npy create mode 100644 tests/testdata_npy/a_10_img.npy create mode 100644 tests/testdata_npy/a_1_img.npy create mode 100644 tests/testdata_npy/a_2_img.npy create mode 100644 tests/testdata_npy/a_3_img.npy create mode 100644 tests/testdata_npy/a_4_img.npy create mode 100644 tests/testdata_npy/a_5_img.npy create mode 100644 tests/testdata_npy/a_6_img.npy create mode 100644 tests/testdata_npy/a_7_img.npy create mode 100644 tests/testdata_npy/a_8_img.npy create mode 100644 tests/testdata_npy/affinity_an.csv create mode 100644 tests/testdata_npy/classes.csv create mode 100644 tests/testdata_npy/d_0_img.npy create mode 100644 tests/testdata_npy/d_1_img.npy create mode 100644 tests/testdata_npy/d_2_img.npy create mode 100644 tests/testdata_npy/d_3_img.npy create mode 100644 tests/testdata_npy/d_4_img.npy create mode 100644 tests/testdata_npy/d_5_img.npy create mode 100644 tests/testdata_npy/d_6_img.npy create mode 100644 tests/testdata_npy/d_7_img.npy create mode 100644 tests/testdata_npy/d_8_img.npy create mode 100644 tests/testdata_npy/d_9_img.npy create mode 100644 tests/testdata_npy/e_0_img.npy create mode 100644 tests/testdata_npy/e_10_img.npy create mode 100644 tests/testdata_npy/e_1_img.npy create mode 100644 tests/testdata_npy/e_2_img.npy create mode 100644 tests/testdata_npy/e_3_img.npy create mode 100644 tests/testdata_npy/e_4_img.npy create mode 100644 tests/testdata_npy/e_5_img.npy create mode 100644 tests/testdata_npy/e_6_img.npy create mode 100644 tests/testdata_npy/e_7_img.npy create mode 100644 tests/testdata_npy/e_8_img.npy create mode 100644 tests/testdata_npy/e_9_img.npy create mode 100644 tests/testdata_npy/i_10_img.npy create mode 100644 tests/testdata_npy/i_1_img.npy create mode 100644 tests/testdata_npy/i_2_img.npy create mode 100644 tests/testdata_npy/i_3_img.npy create mode 100644 tests/testdata_npy/i_4_img.npy create mode 100644 tests/testdata_npy/i_5_img.npy create mode 100644 tests/testdata_npy/i_6_img.npy create mode 100644 tests/testdata_npy/i_7_img.npy create mode 100644 tests/testdata_npy/i_8_img.npy create mode 100644 tests/testdata_npy/i_9_img.npy create mode 100644 tests/testdata_npy/j_0_img.npy create mode 100644 tests/testdata_npy/j_10_img.npy create mode 100644 tests/testdata_npy/j_1_img.npy create mode 100644 tests/testdata_npy/j_2_img.npy create mode 100644 tests/testdata_npy/j_3_img.npy create mode 100644 tests/testdata_npy/j_4_img.npy create mode 100644 tests/testdata_npy/j_5_img.npy create mode 100644 tests/testdata_npy/j_6_img.npy create mode 100644 tests/testdata_npy/j_7_img.npy create mode 100644 tests/testdata_npy/j_9_img.npy create mode 100644 tests/testdata_npy/l_0_img.npy create mode 100644 tests/testdata_npy/l_10_img.npy create mode 100644 tests/testdata_npy/l_1_img.npy create mode 100644 tests/testdata_npy/l_2_img.npy create mode 100644 tests/testdata_npy/l_3_img.npy create mode 100644 tests/testdata_npy/l_4_img.npy create mode 100644 tests/testdata_npy/l_5_img.npy create mode 100644 tests/testdata_npy/l_6_img.npy create mode 100644 tests/testdata_npy/l_7_img.npy create mode 100644 tests/testdata_npy/l_8_img.npy create mode 100644 tests/testdata_npy/l_9_img.npy create mode 100644 tests/testdata_npy/s_0_img.npy create mode 100644 tests/testdata_npy/s_10_img.npy create mode 100644 tests/testdata_npy/s_1_img.npy create mode 100644 tests/testdata_npy/s_2_img.npy create mode 100644 tests/testdata_npy/s_3_img.npy create mode 100644 tests/testdata_npy/s_4_img.npy create mode 100644 tests/testdata_npy/s_5_img.npy create mode 100644 tests/testdata_npy/s_6_img.npy create mode 100644 tests/testdata_npy/s_8_img.npy create mode 100644 tests/testdata_npy/s_9_img.npy create mode 100644 tests/testdata_npy/test/2_10_img.npy create mode 100644 tests/testdata_npy/test/2_7_img.npy create mode 100644 tests/testdata_npy/test/5_8_img.npy create mode 100644 tests/testdata_npy/test/a_9_img.npy create mode 100644 tests/testdata_npy/test/d_10_img.npy create mode 100644 tests/testdata_npy/test/i_0_img.npy create mode 100644 tests/testdata_npy/test/j_8_img.npy create mode 100644 tests/testdata_npy/test/s_7_img.npy create mode 100644 tests/testdata_npy/test/u_6_img.npy create mode 100644 tests/testdata_npy/test/v_4_img.npy create mode 100644 tests/testdata_npy/test/x_1_img.npy create mode 100644 tests/testdata_npy/u_0_img.npy create mode 100644 tests/testdata_npy/u_10_img.npy create mode 100644 tests/testdata_npy/u_1_img.npy create mode 100644 tests/testdata_npy/u_2_img.npy create mode 100644 tests/testdata_npy/u_3_img.npy create mode 100644 tests/testdata_npy/u_4_img.npy create mode 100644 tests/testdata_npy/u_5_img.npy create mode 100644 tests/testdata_npy/u_7_img.npy create mode 100644 tests/testdata_npy/u_8_img.npy create mode 100644 tests/testdata_npy/u_9_img.npy create mode 100644 tests/testdata_npy/v_0_img.npy create mode 100644 tests/testdata_npy/v_10_img.npy create mode 100644 tests/testdata_npy/v_1_img.npy create mode 100644 tests/testdata_npy/v_2_img.npy create mode 100644 tests/testdata_npy/v_3_img.npy create mode 100644 tests/testdata_npy/v_5_img.npy create mode 100644 tests/testdata_npy/v_6_img.npy create mode 100644 tests/testdata_npy/v_7_img.npy create mode 100644 tests/testdata_npy/v_8_img.npy create mode 100644 tests/testdata_npy/v_9_img.npy create mode 100644 tests/testdata_npy/x_0_img.npy create mode 100644 tests/testdata_npy/x_10_img.npy create mode 100644 tests/testdata_npy/x_2_img.npy create mode 100644 tests/testdata_npy/x_3_img.npy create mode 100644 tests/testdata_npy/x_4_img.npy create mode 100644 tests/testdata_npy/x_5_img.npy create mode 100644 tests/testdata_npy/x_6_img.npy create mode 100644 tests/testdata_npy/x_7_img.npy create mode 100644 tests/testdata_npy/x_8_img.npy create mode 100644 tests/testdata_npy/x_9_img.npy diff --git a/tests/test_disk_io.py b/tests/test_disk_io.py index ee8a9f1..7a2d08c 100644 --- a/tests/test_disk_io.py +++ b/tests/test_disk_io.py @@ -4,28 +4,34 @@ import pytest import torch -from tests import testdata_mrc +from tests import testdata_mrc, testdata_npy from caked.dataloader import DiskDataLoader, DiskDataset ORIG_DIR = Path.cwd() TEST_DATA_MRC = Path(testdata_mrc.__file__).parent +TEST_DATA_NPY = Path(testdata_npy.__file__).parent DISK_PIPELINE = "disk" DATASET_SIZE_ALL = None DATASET_SIZE_SOME = 3 -DISK_CLASSES_FULL = ["1b23", "1dfo", "1dkg", "1e3p"] -DISK_CLASSES_SOME = ["1b23", "1dkg"] -DISK_CLASSES_MISSING = ["2b3a", "1b23"] +DISK_CLASSES_FULL_MRC = ["1b23", "1dfo", "1dkg", "1e3p"] +DISK_CLASSES_SOME_MRC = ["1b23", "1dkg"] +DISK_CLASSES_MISSING_MRC = ["2b3a", "1b23"] +DISK_CLASSES_FULL_NPY = ["2", "5", "a", "d", "e", "i", "j", "l", "s", "u", "v", "x"] +DISK_CLASSES_SOME_NPY = ["2", "5"] +DISK_CLASSES_MISSING_NPY = ["2", "a", "1"] + DISK_CLASSES_NONE = None DATATYPE_MRC = "mrc" -TRANSFORM_ALL = "rescale,normalise,gaussianblur,shiftmin" -TRANSFORM_SOME = "rescale,gaussianblur" +DATATYPE_NPY = "npy" +TRANSFORM_ALL = "normalise,gaussianblur,shiftmin" +TRANSFORM_SOME = "normalise,gaussianblur" def test_class_instantiation(): test_loader = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_SOME, + classes=DISK_CLASSES_SOME_MRC, dataset_size=DATASET_SIZE_SOME, save_to_disk=False, training=True, @@ -34,8 +40,13 @@ def test_class_instantiation(): assert test_loader.pipeline == DISK_PIPELINE -def test_dataset_instantiation(): - test_dataset = DiskDataset(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) +def test_dataset_instantiation_mrc(): + test_dataset = DiskDataset(paths=TEST_DATA_MRC, datatype=DATATYPE_MRC) + assert isinstance(test_dataset, DiskDataset) + + +def test_dataset_instantiation_npy(): + test_dataset = DiskDataset(paths=TEST_DATA_MRC, datatype=DATATYPE_MRC) assert isinstance(test_dataset, DiskDataset) @@ -45,34 +56,50 @@ def test_load_dataset_no_classes(): ) test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) assert isinstance(test_loader.dataset, DiskDataset) - assert len(test_loader.classes) == len(DISK_CLASSES_FULL) - assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_FULL)) + assert len(test_loader.classes) == len(DISK_CLASSES_FULL_MRC) + assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_FULL_MRC)) -def test_load_dataset_all_classes(): +def test_load_dataset_all_classes_mrc(): test_loader = DiskDataLoader( - pipeline=DISK_PIPELINE, classes=DISK_CLASSES_FULL, dataset_size=DATASET_SIZE_ALL + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL_MRC, + dataset_size=DATASET_SIZE_ALL, ) test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) assert isinstance(test_loader.dataset, DiskDataset) - assert len(test_loader.classes) == len(DISK_CLASSES_FULL) - assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_FULL)) + assert len(test_loader.classes) == len(DISK_CLASSES_FULL_MRC) + assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_FULL_MRC)) + + +def test_load_dataset_all_classes_npy(): + test_loader = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL_NPY, + dataset_size=DATASET_SIZE_ALL, + ) + test_loader.load(datapath=TEST_DATA_NPY, datatype=DATATYPE_NPY) + assert isinstance(test_loader.dataset, DiskDataset) + assert len(test_loader.classes) == len(DISK_CLASSES_FULL_NPY) + assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_FULL_NPY)) def test_load_dataset_some_classes(): test_loader = DiskDataLoader( - pipeline=DISK_PIPELINE, classes=DISK_CLASSES_SOME, dataset_size=DATASET_SIZE_ALL + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_SOME_MRC, + dataset_size=DATASET_SIZE_ALL, ) test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) assert isinstance(test_loader.dataset, DiskDataset) - assert len(test_loader.classes) == len(DISK_CLASSES_SOME) - assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_SOME)) + assert len(test_loader.classes) == len(DISK_CLASSES_SOME_MRC) + assert all(a == b for a, b in zip(test_loader.classes, DISK_CLASSES_SOME_MRC)) def test_load_dataset_missing_class(): test_loader = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_MISSING, + classes=DISK_CLASSES_MISSING_MRC, dataset_size=DATASET_SIZE_ALL, ) with pytest.raises(Exception, match=r".*Missing classes: .*"): @@ -86,14 +113,14 @@ def test_one_image(): test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) test_dataset = test_loader.dataset test_item_image, test_item_name = test_dataset.__getitem__(1) - assert test_item_name in DISK_CLASSES_FULL + assert test_item_name in DISK_CLASSES_FULL_MRC assert isinstance(test_item_image, torch.Tensor) def test_get_loader_training_false(): test_loader = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_FULL, + classes=DISK_CLASSES_FULL_MRC, dataset_size=DATASET_SIZE_ALL, training=False, ) @@ -105,7 +132,7 @@ def test_get_loader_training_false(): def test_get_loader_training_true(): test_loader = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_FULL, + classes=DISK_CLASSES_FULL_MRC, dataset_size=DATASET_SIZE_ALL, training=True, ) @@ -120,7 +147,7 @@ def test_get_loader_training_true(): def test_get_loader_training_fail(): test_loader = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_FULL, + classes=DISK_CLASSES_FULL_MRC, dataset_size=DATASET_SIZE_ALL, training=True, ) @@ -134,7 +161,7 @@ def test_get_loader_training_fail(): def test_processing_data_all_transforms(): test_loader = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_FULL, + classes=DISK_CLASSES_FULL_MRC, dataset_size=DATASET_SIZE_ALL, training=True, transformations=TRANSFORM_ALL, @@ -143,19 +170,24 @@ def test_processing_data_all_transforms(): assert test_loader.dataset.normalise assert test_loader.dataset.shiftmin assert test_loader.dataset.gaussianblur - assert test_loader.dataset.rescale -def test_processing_data_some_transforms(): - test_loader = DiskDataLoader( +def test_processing_data_some_transforms_npy(): + test_loader_transf = DiskDataLoader( pipeline=DISK_PIPELINE, - classes=DISK_CLASSES_FULL, + classes=DISK_CLASSES_FULL_NPY, dataset_size=DATASET_SIZE_ALL, training=True, transformations=TRANSFORM_SOME, ) - test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) - assert not test_loader.dataset.normalise - assert not test_loader.dataset.shiftmin - assert test_loader.dataset.gaussianblur - assert test_loader.dataset.rescale + test_loader_none = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL_NPY, + dataset_size=DATASET_SIZE_ALL, + training=True, + ) + test_loader_none.load(datapath=TEST_DATA_NPY, datatype=DATATYPE_NPY) + test_loader_transf.load(datapath=TEST_DATA_NPY, datatype=DATATYPE_NPY) + assert test_loader_transf.dataset.normalise + assert not test_loader_transf.dataset.shiftmin + assert test_loader_transf.dataset.gaussianblur diff --git a/tests/testdata_npy/2_0_img.npy b/tests/testdata_npy/2_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..c117bb301ff3e565fe50bfe1bb1c1e71defad785 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/2_1_img.npy b/tests/testdata_npy/2_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..8f4df77a4acaca674ed20d446f66610ec7a1603d GIT binary patch literal 32896 zcmeI3dpuQH8^={@q?9Dn5K)RsQX$ppedO(;Qkj$}W#rn>4XH$g!VD(SOUktp$|cj~ zjIbzOP@>%L&dE6k$KFvBDZGb1Z|@)PXJ%?@VtSwb&;FeKS!b=af4^sapSAYdJ80de zwfe?Ggq(y9D_K}NnA9_X(_45D_QNaceFR#ZMw(a!m{uB3Nt$gOTl#q8?(KZ zg5S!T>MHV@>N8a2UFHAeAu7~=JR^ASQvh|qIKVi-aey2^4j>1R1IPj70CE61fE+*$ zAP0~G$N}U4asWAi96$~r2ap5E0ptL306BmhKn@@WkORm81R1IPj7 z0CE61fE+*$AO{8`2f7Yd`OC+*kn7{ZXd~BVvPp55pV&x>h`(9$=pR)yeizX{a0frX z+sZ|7@~V(DfV`{pf^~*rPg_ewSZwUd#dIJDhEE zCpAI)15J&bHI)QWL1$l`zw8&wo# zLX%KGg_VKBn+R*;WSuIX$HXR|z1`&SV^9mx3)JQ{0$=piF*w7AfX(Btma5ah2~Vh< z9!f)8s*UzP&(V;xZHuv|Bn>tuubS*rXt-~-j%O;t2l-VC4qWRa}R2iEetJ zah7H->}I+xj$T25a<|pPP~}#LYTFRIE2IIk>Q{6qwMLV;(*38uT3$y?4YS&2Pver) z7cH|R&02`LFrK=BjX?Ni{l*E3U&Wh~aIq=@@HgT*nu z(QkbgjDL~#HqX~mG}QAp_MDP9|28gurykV#_jMlZ`s}?u?|VD9cye%&565+P>pKp( z8;VcOV26{lslr@`L%1#+>^^>I{}e`yopM5uU-ZwlESB6VcphLj=4G`z|DFFv%pKNI zT?M3PrBmCm9q9ju>O0uWU)kz>vib);3B53Kv93WGa1O=Ty)>u5#9m0pmDL24TFJa; z=2c{w)HprTakFGjT~ko*AJ@!Gg9#omUk^E?Q!}SREU}HcF@Jxl%B3 zl~UIYl`5c)?laBzXOn^MFSg&Oz^CJZdf8rO$1V;LA6;X6K=cXZ^cc;%YfD3LoAdK~ zCS2G%^z!KOLHWdU8zbtQDhmDY55P~S|3JmFwpI7SlgTY4itfC;+&PlOxK(#EJZNBy z3rrASEtv1S&4aUW8=j1mbkMljg1&ztzDrG!+b^j`5tB6=a`!DQ7VICEJj|^Y>>n8C z+BM&#Kr4hP6joXb`-FEIDIDdZ?_Y@Tb0xb^p2`&L7l)_4xID9gJl0d)Qk35WQY*vP z*k;hsysu!jbv_Rm0n@HdXS0Zr#mu>LYjAxxP<;N>?Plsq2{9Orvbf{S}3ieN=d z!VSU3Fcd}{NKTTaK-clIQBu%7qORhlEmHOV`-KB_KiF=c0)IUJbee5=`glY$5%L;8 za#Ly$1TPz6vv6%QuznqW>*`VpqIR%cqx_R$iidCIQWrtF{^O79#d3WL3|^gXWoh|F z2l2@>2`-&-HIEoA{4sCgP7V|v%~{5^r{FAOw`b?fBCwqQ(9x^Ak$6lQnkQL_dH(Mn z*J>5s;%8JT5-ajt-K?aN__*uVbsla2#qn&hY&QzDof_6Ib*=%avBh%1%zARhKv?t~ zjd}j>?z`Of&3*}*G%@tPX%gYVCR&%Cl&5Vi1;vT?UrAU{kTObUe8USiVaAB!ggn|AXQjG>y}s}6f0l!8@7-O zFZCD=%Pg88eftvs_GKL4c~ASva@#fZ|8x0YP&?aZ4Mh~ge2t_V%SmdYo^IiHISpfS?rd5A-GT0bPwr>gZn{2TbMg@2y=7T>PtRl zM8z*UG0TTVJn!`AJSoBF#Gfm^gkx`Y__Am+JGeWj&YDex9mlybg;|gyO`BY7DTNf7 zC2lEmZbM=3Pp#MM5=nvo(ARgy7LoJP1`|)2*Ahl?k#uTRBbhGa9Dn*4uKPciZ`e+s z0)PGd2z5rCG0t$DAqS8H$N}U4asWAi96$~r2ap5E0ptL306BmhKn@@W{=Yf!Z)eJy A&j0`b literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/2_2_img.npy b/tests/testdata_npy/2_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e160dc6a269eb2ac3ed3e5decee47468a03edc31 GIT binary patch literal 32896 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 EpZ4IMNdN!< literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/2_5_img.npy b/tests/testdata_npy/2_5_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..b25c09539ee1e6907f9b92ce6fb72b6be3631f4f GIT binary patch literal 32896 zcmeI3do-2V8^;w&VT}+HCn_P5Td0vor5MT2=rV;uMegLDQc|JIuZRlOq+cabIw^Hb z#&%B!A;Q6NJ)Fb2yo$*sQ$K0dA2Vy#YK=8R)_(ta*ZZ!u&))CzeZHS(?|t4k)^h76 zs~yw$0{IRq?{)Iq8>tyD(c%H&RIk;Yh`ZWyURg31=fNb)gOlOI zal^myP%Z_8=x@4^5D^p|P*RNI1<&jH+1Ek#fBF^oRCR%a;*(`}o^ha9+~8EDHUX4i zz588B1Tee;geqBT`N`oI$nX zSA==c%v6k0lnk9H`*F3)LXJn-99xB z3LQz({dPQHq#3Gj>f->bA|!faXA6+)wVs}ZTtpIyzb5~-4b|+4+UU5Sg}$4gG;5AH z2Zj7pBFfjmLj~LSZ{f4$A`(f%J~@MiB>A7*JN>u?3T(Kb()03R;+T(;?$ zYyApD(rA5w<~_I`Oi(@WzCcZ8WOSo2?yAMn+SgH8?dymIUY!tp$$+X5QVAP8LbN1} z=qOEIxRK||`D&dm8|(P{R*u$_v@Ll%rZW-b9y-VtOG3nqkbc{%^l z`lhe`-HGzaRPFb+=?9Ab0D(YHqdH5CjcnQ%jR*)59f>ih3!ivX6sd=uH|N$1F=~D zKgRD{zm5qliQU)CL9JZFYJ$)U~!JtQ1pQwIFsNr!za8M6=uvXU!a87 zf#15`pU0nmiMSkHOQ86eN720=O=zTZHDkd|#uwjHH0mUZwd>Z98|KyqW^4MAp|QAsTmU-uwb^DKFsU^JH1%~syYQIktBTHwd?EG zl~~`&q3>Vm;4&OoK}{!+WOwZ^{3olC%eo?O+Wt<^O)bs7=f;CzX}N$bl{$DVJCv6x z#h9}5-M@;@RKKqovGL%Vs?mMq+)UAH%``Z)DuLu~M}UB3Zp?QDozQ&ESx~623TdX7 z%z53)!}^aU#KiM@ym`52gr`U!WT7Yxi%^rr`B3=Y$mH@-0$fs#@vUa}fCD8eds@*A z*x$51OkWi9e!TIXEbY5SLQ@|K7xA{PfLF!Us7&zba)D$v7!|IoWo{%uN?EM_ids7) zin8A8&~crgEPfsDIQ%#I(55kXXzhy?>6*qZ$N`o_F0^C6sDN)^O82apEF*+O_ug1hv&>2`7aY082UfpN!9}Shpe;JiahX%mDN33J6h-G z$w+6KRv`1e!keWJNr;I3*m^3mjrn9F>KYHYajVTRoh ztgy~i#C9L~I>o(s0IUdfw_f~Sz-Z-Vk!Tc&T za(h?krDL5?v%RWf$bFRe?%f%?p4EW%T3OC2zYe57my*^y@Mqq0Y(4o^dpO90y!Q=S z+Kny>*tKnQ??h5NHdk`f+EAFyg~PLGjVO%&xShUD4NCc`)1UhIInvE5@bB}jMzy2{ zjgsYfy*OSyzqY-hb+o9T41rSa7wV1-(2-0ZRn&D+8*HGZm)7wU5MQa*zt)%oBDT(v za}U-+?vgUQRM$ihd;M&FzGo)1-kxE7;?Z;HO_eN_+)*=nR*`C|st2;RoKv}X6FAUk z+O*7Q1>@^Sr`5k|19PW$DU~-nV5w?=)pNhm{b4R|Aa5-b#2O8<`jQ(!z0%M%jYh}o zhcN;F`TfDQ7fse&4PYZH-Et5%%LbJr^A}3reCr!;%qeCL74>HkiEL-UTnK3r?S-wgRIhJlQt5 z7R+A0bJKiM41C%r40pSE10_{@2mNUgnsHOM+_$(9IUl=PYSY|}_5YXjx9^SBrRi|c zHmmgcrPONV@20}{mRtpu8fOiuR=Q`xN)^9poIoLwND-+*on1|@nD z?dZ76uysW!3o+^r32TY`c|I`q7?a?CX*`aP5%}lp363+4GtM*YGt2?Z0n7o+0n7o+ h0n7o+0n7o+0n7o+0n7o+0n7o+0n7o+fvLoS{{wm8n7jZ0 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/2_6_img.npy b/tests/testdata_npy/2_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..2b66dc2b269bcd333cc21f9d75d9d518c3ce0f4c GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/2_9_img.npy b/tests/testdata_npy/2_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..3297f694f0dfcd382732e1ec33108fd8a847c182 GIT binary patch literal 32896 zcmeI3dsIwoAIHZnL~`O)u1&cV=1`=P%P-Z!so@Zbyr-mldg+u)rH+aC=TT@qu#njcA&SLs8|KcIf=sntyoZpTB83*D6;scTggad>Fgad>Fgad>Fgad>F zgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>Fgad>F zgad>Fgad>Fgad>Fgad>Fgae<017Z(JoJA&uOvxFF=WHD%fs)T&^(3_aD%O^d*dRxIGDTWzeyj-m;z}(f`G#%p@G#pUunvh!p z8D(YtFs=?ZyLSzLHn#~f%l*F76t}|SvhHK`trX;}8}1i9vju{KXLYFbdkp6^4RwRM zuApK}(&dm+A)fGOh`)EDiBG;VpNyI=@$J4NLe5d~f&7hez`nNU-%n2qfM2#aKqQfX z^YsZ0&Sz-2rqgD>p->9Ehim8U%94QAPL9y)m;~|`PD`guq+sgO9%PHg=m>*4OppQ22MKSG;spJ4x_W5NRjhY?Vx0AAg;nubM}SYhLKYL{aHyxc)cJ`U2BXGia`DBm=OsS#wYF0h??JkY;uvKvr(vn(U8fvd31t1W@Rpf~hgQeK?!0CY z{XaIIvU=Sm;lPfRWD4E+YReM5is5COcgj8;DfIRymxi1nyS(ik@-fA0sq^)dWIZ6O zI{#_hv#I41v*WOR*SV~Dzy6_r?mWFUNwp_{{#V|iV7*W0%%9%3_YbnWACvX|sr&zD zfl(EOhWTq2B)>^|w{Ccw_dCM4kCkc2HQF$7Z1Kr=Jop0ho~)1W*B*Z|Bt$#cOE9KJ zvD-hO=mYon4`>y|?rwp$sm{?#?EH7WAo_nZO) zjkBciJVm&}I;jLWi>?f2y0;MhdxeqxbxMdpZc?{8jgdOP4-8yZhV};5g_ZOld7s^u zDP8us9>lJ%Ufj&8B)Weix|f`Mc*ob#EOQqhCTPlA-{ny7-^~uj zLnexWuR80v&2+^4PPS$2c9Qp>i^qL+pQEU|jG;xLRcHur&A2KoIpoE24627YI=nUF zF%)nvO)X8_(gKX|Fplp?5P*|i8RD9dcw^Mvvxk#frW;1!7+t>Q^Rr{kV$Aw>< zCPiWV1=YH=Y8+{0K2k-Ys%IYGw8bcnf;+B0)|XGT!1jajW~XNIpp5^pT0>iiTVJqr z+p9^Q_mwVv-7ZxcXSb@S4wD!fF4wGgA6-kWi%m@hz+UomjM-rd*zEo`hT39aUh>yn z7l+`UW4S)QT}0OLy~4;|-6quB*YRW}jrK9qG%6o7{sSOPvmM^$Y7hlJc?^bYkpXhl%Kt}uh{~mXVK|5=XCyhJJb_{YhYeFsY zChyeRo1kCrsa-u=0*~*iH0L=}z&f9_Wf{8$LWNm=x--hLcu9xT)FY%`BkTUjNedhA zqa(q`zO4$zg%2Uq#*k$=PzoZ;`d@+$(h%w8bT2}=1%~`Q)I!Il6u8yNlhqfOpx0Ec zP4J^y+&{0&#jT|Q+3V#~m0ZQ>>@%@8TTI^DkQHBOS#G^r`do;jG40ReBti&GGtfDZ zNkeb^JIPT$UHM0Vk+AXQbeU-(@9*}zf@Ew2#bNH!dH->HI_0)TT zb%lAl70!)6vbk=r1VX#|jfh_-2Db-pSN}Ov1g2*z?Z-2OkQgC1%li5Sc&fi7QSv)k zPkb)@-`__+$!4fm9*yU-kLOKMX~vr#opTp$6=1eyoaw2+O5{dGS!KHvAV*b~bEGQ+ z3RYVx$QHek4%33VL^968SosFcdQ;v=8yNf z$m%(5oX^Qv|5nU-P&)2Hbt5K^U!(GyT`d-e^nX>TSc)ZY!lYSsr*YH$V{)BNd5}{r zS~1xFCfP^y3NCy5M_KhLiTmvc5Wf*05Fd~{ARHhZARHhZARHhZARHhZARHhZARHhZ SARHhZARHhZARPEq4*U;xz@;z% literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/5_0_img.npy b/tests/testdata_npy/5_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..066b26d00d33a7c41cf691981b6f41db8ae51181 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/5_1_img.npy b/tests/testdata_npy/5_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..16867148e2d992378032a2b39e44650b2f1946be GIT binary patch literal 32896 zcmeI(c~H}58V7KscotN=IF_xr9w?#$Dxy*!R4O8fQQ4>nQ;|bOG29|vpb>Au60H{+ z1rHR~6hu*u7rCqy5rqIMM*<;t@-GbWiC?=t=$FM~9?E=>fFohyLrfIYw-;2fX>=m0u^4xj_*06KsU zpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_* z06KsUpabXtI-rgYw65P{a6ns1oQx_DUtHfn>~6ZZGXkCy-W2x&0-<~3e=a1j9sjY#$5GI&Loq9&}eU{Ix9+XDd8{0>l z|0@R)9ym=Ad2wOqHRthb-T2_6Y)xIzPYgq6UR+?xQ9{?BlSBRCaYVcYKhanKv}&ut z0hx7}znbL#mc}{%(<&KZWzBG$b+`Nv^Xnke-bdF9#kHVt?QoELAt@1rL{X=0{dxe{MzxA!0SJZ0R<(%dvjQ4>B)PL zV`UWeh$N74r^_6Um_8(#JKEL{C(q=Wu<#jggxlWQLH4^h@_G2zTzWR}@4 zuRDJYCTF72|(!4R02cQl~;M`!QMF`3rcX7M9Z*fTfI1z3j@zeE+8T_S6RkzcS;By_C>| z`)iIhWq!>6!I@Ly0wJ8VFRUwyZNU6{Y5scj=s~u(dW=uYy5|UR(!cHVKV*VfIrMDe<^&ytlZI8fwh%8HR zNe-&5qXrG}kpbtaqw0=FeUEcr$mr{rlBFQF*Y%S#L}F6Z^ppOqts*jqd0l#JrHo9s zKfGw=SJ)qQ?M-_LJLEJs4>G?Fp}&14hoq_yle%Up*lrlKIafCoBC2?I^TwPdEq$Lo zEBmz!rdF9=@5gKapXJ)R+h$9l*x&NfJm@&@BOYrqFkAp(mgX&nZ@HjxFwxaa#|4HS zNIs|EmrEkT-{op<5EGTnP}aCi?8E2o!%PWdl24ge+a^jl<-9)7 zZ9Pm1s0vm^9SC~jajIN#U z#ulad8k!D)9Wm=gL3SQZLd$N)e;EyDNkVBEmj%d$enOHu0ajW}tBE zeX!HKR(espm*?$3NNHJ`>DaVJV!LAcBalDBi;fpa>F?)L}QzGabCDN16; zIC^w*g@8mH4h!LwUxK0O)Ux?>VRsJ(SDt5tCdxoR%uDx*|0B4kEZ=lD2+t#at{!}N z-g^pWQjwS%&QSmMA*R0JXt0s=|8(|`1S?A+kqu3 z!w1yEKlXf zrAYRO_T-!84P+fNHa^k2y&?0lYbv@yG!Ola+IcH!}#-*;dy zKCKte? z_%6XINeSy5_X_6(l!59zKlHMx7~StG?q5I8mjgnBetst>QTsi^4bL?a={|Yd?k|Nz zGoItmER&Jr&If$3d^7T9su)dzWRFT1j zH(K^VuZ+rx#svAui8nEKb?KipuW0q^N;%278`Vggl|eX_uUN0I*1&***TW}P^WnRF z=@F&PjnFhKD5C!)DGZ&RT0J#V0masadTx6uU|xvS%YLYY)$cuY>0gMzF680ve)paM zQ`saOd#H$%T$s{_eNcpR-W9m|JLj4+|IDda2`P^j?+|lph_+6hJlCRvB%DcZ=IB(B z@7wDcOAUDBVSa$tY-uBLSNi_)C>rNkUFI2IN9PKt|D0h?m=pFC=M)`42hag@03ARF b&;fJ+9Y6=r0dxQzKnKtPbO0StZwGz@q*=PL literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/5_2_img.npy b/tests/testdata_npy/5_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..1cb414c36a7539040770a75d0804c87c05d0884b GIT binary patch literal 32896 zcmeI3c|6oxAIFEZ*^(=&Tldn%*ph@K`Ff0lfSGmLU;PtvaUfq|vJ?c60&w0(6`TgenKA+Edf6tuxP4IG4W0T+b zNP9{9$+nwz**KGRq{+IQwaF^dEhK=Mq3YMA`a`FA~y#{_iIleUa(D6k+OcW43*G>2SY2>7&oO0~{F!7&yDd>GXgM)-GSk$G-=l|Q6|1ysa0}9TTQMs_tmGSWI zLnbV?9n*C=p9Y4JCKgHus=@G`K23{J45SXDah2oNz-p^$N>VAsh&nQ1;?FrW)Lvn5 zPF;b(z7G@MdxydMe;)GRXB`#7MTY7=mv$Ie_WSSJ+>x-(ivY`qE_b3%(LtNCqj0Uz z3m~P*<+dxj?Vzi+;L zZ>?Z#l2FYZHcAtEN(nE$+wXtM#O+g695^5sWgUNW5d$gem zw(!M)Z9`m`U>dtW2WHiBW$NKosQZIvRH@(4{SQw{zpqq2^yB-+iQ66pzWh3ba`d=& zLFzpuAROJfV=M!brT3hZ3FU%t4I%E@^Op8D;U_DLKhx-;am$i-@uoltP%Zh8m^%X0G?MQR~4IQ7Ze zFb-({B5+}WBn#rln$7h)Lx=VRw^}-H|F0`+)8=1aG(k{qDiLo>h4wjqs^H)}d@aBK`Z>Q}Jf68Vhk+gi%*j=m!T`E@XOu7yu)h89EKVf@((KCb z|4XnOo~V5&;5aiNvfJe{bqW_;m-&Y7izXmqdFH+&8NByb@C#?evBB}B41Eoa1CcFq z9tQpdXjp5^3cNnBPh4>4ZONDiyziS{3iD&$dw@9Qn#%q?bkrnkUPYAR9Q@UvfBHFn z&dkP{T?AS=d9kyF@10+NG&I31qB1lc$$747oOVY`6`aQePf+Kt!I0ZfuMM=TPnx-WWD*P_4t1~|MV*oJ0&Otijpo z=I-;9iHz4w(6wxt9 z2YfrRb8OS{5d^w-?`FJO5eu0YMNZC1szYk?QiPHl^Wlh_-7I?vE^zJm6i@CUAhYxR zVx3Wqz?~^MFW#vN``;VDFTc(kEY~k)YX-4--|zMoC{G%Hun{c{mn&^LS&S}F8yyNg zD^PBPuD~hZrXl;%Dj9x+af3h$*g6z(XAYvi3=7}2tsZI=h-#1jXW1wPJ|6#w{ROS%W@Zre}WyZAc@WESrtms&E=|E2WvvJ1%&)yqUm z$DAtDL>T?`AbYi<=@q`05I{;<@{voipAVBBG05&dNT9Y}KT}r= zYj(f&|L~w5*Z+30e@ z%jZ6bc7sWwEnfc*H~)q@9>-rtQ?y>Y*O_)Zal#AWkzvYkGzzwsdl7~+hN`}_1e z?`2}yBE&{|T~sI2$u-D?(0c8rdkw^76Q=r@Gl5ZW_uMj$09C6UQ31!9KoVL;E6h(q zdzI_B>-Yxtk^0Vu+a3kJUL9DJAYxwR%taFm6gAp?dHX*Le|UT+;we%U+z{Ths2=T1 zTG7!KO-B+7M%~+~Q-N5b65E}ZQqf@%)`}H2X{aW5V?-tQE^P3SI<2T%4U}0GDgJIO z5U!?rl3fT`YUR_J+{p$py9VKdn=^oFCAIAc(TL(+j(HV$VDMbw9DLmzkm_$FlHTRR zwE28(p%M)sJbxs4-E( z4FV=#tO$$=;X+&Uo4~9bCLBIiR@OSI0%C(HiHTCh=#_u{vWcE-yw2+l_Sc)=e|H{j zpiXJ-_D3%#O`O37`_6`TX{{#6O7;~HUBp|*b=(jo z-Dkt2Kc=k=6nqK7kEflL=`KW8ldc?lq>k?=`@8!8uiq!=5xKl2hmH=9h(?~`h=3{YkA)4}I?4|QLb$C7x)A>BqJZU5@KmX8* zK-JgU-x`pFbb;} literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/5_3_img.npy b/tests/testdata_npy/5_3_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..6832488e63c8f613f0769612a7d030af5c81a54e GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/5_5_img.npy b/tests/testdata_npy/5_5_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..092411ea5b3b115a35a37dc77329d45c2c59e8c7 GIT binary patch literal 32896 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 S4xj_*06KsUpaWl*1OEo0L8SNq literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/5_6_img.npy b/tests/testdata_npy/5_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..451f4b75348fe8a4f9b63396b8db06a3b6b879d3 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/__init__.py b/tests/testdata_npy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/testdata_npy/a_0_img.npy b/tests/testdata_npy/a_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d905c830bf902214443b3f359ae92153675fd43d GIT binary patch literal 32896 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�UP!k!~<}^~=oBul93AvXx-UW}7Nh?P_q5Xl+E&r{PE);aMGZ<28o-?Ae2_M$f zB#bmH#mwhpzP?g^87gMwPFVV&3@)5LuV8N^$huje+ z&HiHO81=Z?(X|OWe4Z?F_^KX!@9GE5=hQ>-+It=f^3A>Z=kt;+9>{71c>xVEvp1}?=!oXvSHL0R1|jniF$zV+mAZf^Qsh3FX_A?P$1!?ZJ+5F$+O;#e_8jX#?Us^QT8k@9y7rV*4Lv`dd5WiDIyp* zV&6Zx&MdrY&3kvfvk}a697`3LI?U22GU(L!^mY2Rmyfky7O=SCk3kxF=1s^^cRqT^ zyKnwir;$=zuP+47V(m$yt(3p4^FQ2QUFFDQ23u-h?UelV^xytU=Vv!cFc9Dp zyPNxa6}aWP9TQCX^xWUyM^obxPpgG2TGk)o@xLwa{r;Z!rQ;lo+aFqIFZJb|SJR%! zl>hs>$?EK*=lD*oki~~TK<89lUT;1+=Gig(Q&^|MdKYK{4rM|q?w+`T8kV?g95gt{Os2r*I^l@ZW zr~mhHyfcOkAFo-DRgLViOKyGpa{|LxUc2tj2TA2;B_RqxE=u^2YJUScO)CxHCt+Iq@S^{~)dt<~C=fu6cb9k`;Gwx&|R zM@x_C<(%V`zpVQ$)$NJt)(8n^ir6{B23104t-4U6&cM~Un*0M-S%_sO*l0yJfZR;m zmWgUvpjufG>d}^i9xX@A?7l0)!a(zC2geMYo$6okro0GR<2{phTZte>XW8bzOGI#V z)9$)mE%6}NX@6F?Djfyq#ujo?`}P3`pJ_c`m0pX3a|2GtFQNQpo&Wps^1Hm;`B%$v zZ(d?px^E36Tk^IWRy4z0J*$wAn=Irz4CeWoOQ2wLQpwXHVyMbIrylT70%rV|THozr z!9{1KDC{5u16IuTJ*z5$8{-cxw0)Znvwl;So2VefSEqPmw>Q+GiIV+Nc8|25x)15| zpEB0E1SdViys?iQ<||PC@AHuLdD7xjiqSp{<^?~Gja*)h0fTg60<)vQFIi~p|DqCx ziXBb;=L;d3>*R9EgMn1Tv9kw+Fc56^z(>Pe2>PRpv2ABQWlzkVM?`O7-@565!}y1Gbk zi^aKyOSa@2i!l1JZrEsSz-=41p6}mKk7*Wa@{Y$FvFv)G$GE2=v{i~Th%lwxKCB~M zcUPcqpNZ;0^`L&B=Ybp`2gm_(fE*wP$N_SI93ThC0djyGAP2|+a)2Bl2fic+{snBj Bvbz8P literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/a_1_img.npy b/tests/testdata_npy/a_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..786041c98fcb35469360df96763cb16058929cfe GIT binary patch literal 32896 zcmeI(c{J2}9|!Q!s%}Y9T&X4xhi-_ppl+YhBB@8}cB8bACAUQrEtVG1;^ID8Mx<0j zS3)J?7V@2VP&pPww=u+p+nW0NPO#L6X(UiWeli>Ki0$2y^1MCBw2j~DgfDWJo=m0u^ z4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo z=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*z~^#c6jY7XI4&Yn`A_`A zJlaTh?XS-kF`LOs+R&3{*YOC`%zmcNs}B7C_`ZO?o<5aJSUn`dv4hALk^J-gI>NeG zm2r9UIZ)KeebJlE1-@5R9wSHy7ToAtbayEXQ@NFOwo3#G@)w_Lh}wWU*KMuo6%No# z7p+#H-i9K7{`tt<1|s!Kd^aXYg8lG?^~1jmITcE$CB%JA>n)ejT*4|X>(+FRAkld}jXqa9jiOUGeaSaj> zNsO7Ng~}i2uSfRK1v<|p#4ld+?Wv_zN6?zuyDyqo`>n=I!KS;DZa^dz*=c+2-dn_yXctoZ$GxRyyds^f-)7Mz2JKs#jyO zU@H^cw$}%GR*0cOpkm*XCjr*EliIWWLV>RCy6@Ti!5_E(JaK$qfiHhOxhZji>5qwz z$*P^JE+6?>FyO$_O_Rn3&MJr9a`!ma8R9|r73ThRC|8hK6uG}A2$C8renT4!M zPZ3eeJDZ!nvXKM?8m_3lkxfKdmUelX<)HcaK-q3@9`H-OrYF5^hsSXfqx0lDfZ<~D z=(qJ^puG*V>gkr%aanIHg3RBCrEegjetQF2?-(>hc+{=ghX$QEgHw(e2&b zQgm2MZg-fg?00%f_^PZi(!=?n8)uO5jNS~db(a@^mn;CMs_uyjcf_zme`L4oT`2^+ zp9$wU2w~}tF|_k8EkF&iTiM=L2L>zl{j+L)F{JD`*gDHn0B`FaCM^s8&ie_~@vIazyrWBn>|BV?-`cTP8zz{?KepV}*i z$G=2otfOia(!NQkmUQ29hmZZ@QTL{-)qwc~?KIx5|La*x*61$>Klk_oS z@^T*Qgi2Q((AmP^xeGpc5PE=@9q-5^jmmqjl)GU5pDX`7Lp{ydSM?;JJU;5=(N;Lb z;HjU|kOCv5gyFZL9WLpcYcaT4WaiMhQ&vGMSu`q*791=hUR8F}#07tzo4jqm(D6N35o*X^$wJ9970CGG8GQ|-$9O~alJ%*&-~ z41^|h0mL)j9TV<(LNe?Ej{b=7 zCI(^Cbg1cCn16rW{;H8NF?XbrdMlCdWg88D`(z*=p-!OO*8A;{a?LYOFQ<$Q_Iy;W z>8ouLWcLj>(qj&p2nlO_i@~tnOtR2iX>m^iAJnq8?bodSF#qk3XtS4XeF*f`SushO z_#9xcb^cWQY47BHYn{j^iU)JT{f>}<{MBtD=B`Q>f#(bFkcHVr@Zyf&(%caKf9-=y zy=7A(&WK6Kk~rEp^ERT$t4-QrnL+%xd>{YJW{6#~@m<4}W-z8TDBXPW;rjq5*FehF zYt^8*#cFcwYRvyrPe+&VgGk*&^bT#xZgJ_Y7DN5UoANkSl~;j%kY>Go{e0bt9}owjSjFP&zxjO8}BtIU}Ro zgir-%94;$Mpl01}k~m3rU$4Kl`j~kKaDpxukE7MY+Np^~$tKlg`_1$oS0^zEw&$v_ z7F7M)5!vC_4Z*Nm9{ULvr#I=^&>hwSfurg6AQ*Tj(EY+19}i3c>lb+acQ zXF^f_sb z!G1p6?|lUZ|9ts&LCFX+Hz}E3yY00mw}s3rzAuTKSx+|VTO?%$HIiA~iVK`Yt;AQU zI!`|a=PmZv$MqN13+weU9$~*=zhJ)%{`!sc1?LOS7o0EX06KsUpabXtI)DzK1Ly!c NfDWJo=)k9O;CDX@l$-zn literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/a_2_img.npy b/tests/testdata_npy/a_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..096b9dc83b65f77c541010140de99c24e37f7b37 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/a_4_img.npy b/tests/testdata_npy/a_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..5b7489cb3cef0faddca5d3f8e7d67183bb00903f GIT binary patch literal 32896 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 N=m0u^4tz-megj!xobUhu literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/a_6_img.npy b/tests/testdata_npy/a_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..4c797ea73c1ad9048702b51bf50a6faa82fa84a7 GIT binary patch literal 32896 zcmeI3dr(u?7RD(GJ^&kO3u&b_C>m7oq6KQTxhwka@OAa z`_}&L$C(q)TK=ia7jI|;YwTpM^VzyKkU5*d{AB$srWu2|-ajxX&};K*|G;%Veb?>0 zzS`=ezP{DhE5Jv6Zfb35#;~@WV#Ww%yx=ifqyK0p_}ixd>VSEGd4T-@Ie;8M4j>1R z1IPj70CE61fE+*$AP0~G$N}U4asWAi96$~r2ap5E0ptL306BmhKn@@WkORm81R1IPj70CE61fE+*$AP0~G$N}U4asWAi96%2IKRJ*z$LUSZ1r?bin_}2> zSw;-vg7U7Opvc(7aH#QA;rEUG9d77xC$1@7lXaIOk!D*g1g1*zpP#EjC2VYT&RV0#aK9m8xD(Cd^y*c$fP5juUpJ&UJ+5NEg_Q@W*jUFk&q=mvh3{(#3XxV71Q~Kn4HL1{bkN9 ziYyD`rHzPs{=9gwd0X01LlNohoRK@$u^Jv4#5fzJQ9#?hf3@m-3lx-2%iqYv`N7M| zXGiZ<7gF7&#B%l}C)u`QQe+vxj(R8o&$MC7m7Nk8^H4L=FS-@lA9Zmv3mYL|YlH5& zQQ2Vc!#ye%H52|X(Py;070=yoOWDCYlI*S!&)x)&rAZ2~Zps!5xa#rXf$l{bbp-gU zg1v0GZOy3dF$d1R5H&nMQ8%c}b1OKJDEl9n`OnT>?tB zl~IHizrvnrEG2YK+vK}GzYTdWchXmy_C^H<*NHWl6mi-mzq-5w!?$JCtFs%(0uZ*y#>HWqqP z#Co^mxL@|SkddDmemU1k3d!u+3pwibVo#oTq*sg>;&f)0OzdfWW}KI;+fXSlKE?mi z2UZH=e0PTOnqmEb??KGwwN~v4m}Obbb=V>V{>DU3JySwHDq3!4bVNm3ui6(6zo8^- z?R{Tw%M+7UhZ2vo);Wa#rHf$%PXu;)C9wy(6=0_NK@_)53hudQSM&GOJ=4E6uD)HH z$6OjH-=)6guI)?;vI;oObN2oOk4H+~O4rGs`TS7v<7Ks@(sx1rXJ79c^M;%- z?#Ya1dWeAG6Mj!WpMv?RQqL&$`aGok^T}^{Hx8=%{*o@^Vi5jX- z8(1r#Ld4a|XB7|p|7Gd(cPU3FZrhqFM=4=|Mcy(e34C%yb7JLT3V8f?WaRS}sGa-c z;t;LD$MN6vTA{VSU|gP(tWeqSv?!F4HCMTT!)%LSg1g?i@(vXwWO^^4iIk8)_ZJ>E zuK-_uPIBFCG0^XR7nY{wGcgt?{8$PN@o5P*mfyIriKAl4+k#^%FtNCI*zS~i9dMs^qSL<`R&*HW8(*v@3pIKI8&@jH z@wLS~Z|~px6r|0|TeVX~_@|9!m&qH6UZ|0IN|FBR~A0^yBDU`u zN+7j&i~XviW)jKJGruKkA}%|l)|{DGPs}#d?4b$Dh;A(1*VRe^MqPQoE)IO+`}`aO zy(SGY6hwSKtM%M%5@6mqhj9vh|Eqm}y8QcJ53}gZs357)!@pTlD1zO!x$jS4$bfA- ze*8{}5;$ub9B52AWC*{T(`>JvFWx%2QjabL_DS~!Tem0UdVgFs=R4h9_uRNEg%PzL zSGu`k!prH_P6|NZpVs|VJ8vt!c4YCw7NTD|?ycmSI%08rT6WonTxho!>}WU12j7lN z-m1%0z}*+Je+T0>u#1ax6;@B?d6wEodkdxN_rBAOoJW*45&CRerOrI`{Z;dMu=;!^ zH?Uphp&r+#JH2yRNs$}PqD^vpC2`)@GQ9g}1+iQxoLAu8GBCckX4d&<-)sZA&iNnA zv+GF!&-8eN4*EWr&ae7?9Y0;!!s`@CKADu2p4&RB?EQkL^~qe`t7|)~l{nw2cpS%;4ft>A!>QaTy+P<@UwpWU zjlMsv+fX}ic6nqozE@199vdC>K};3#T^jhPc`N!p)O;SSJ(p<(Rwn7c-wzn>Vbr4j>1R1IPj70CE61fE+*$AP0~G$N}U4asWAi96$~r2ap4=4+s7S DE|jT@ literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/a_7_img.npy b/tests/testdata_npy/a_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..f9572d2c943c37fffa8c05a9e13317d4531a84e3 GIT binary patch literal 32896 zcmeI)dsIyO9suz1IEXldEGZJFl+#GAlsdyV&qk^{mz+BYm0n&+E6HcB6AQ+Tb;G0wYY9r?p;UsJOAvp_n!URdw(CF{oAuv zh1xE&VK47P`v>hOJ!cp1wO)GW+ImdanR*OuJ=e`%K3!Fv`gMHqqNx?}9 zvN7VQ%I=(U!ZI8?G$gtX3Pm?xFS2O>y93X%RNeUCo_4hTNE;tsaIU>fs7V7W*R}#l zZ8g?IFR6!cwMD^#b18(+$|w)76@x2Blo`WP0L!Gz!c$iU0Ts6=%y3dbxV$at&8m18}8W%W=#eCxpcZ3?oYu}tKoFCIi@63*=4_3e`{gWz?lNfAR8P^?aCU_EO9 z$t6P_uPr%1mk+-aE)tSZzmdO8=ixk}t1P~v|BqqvO*l9FF{SM11zs=vsf>`45J3BsQMS8J735^y(CrUbDM-z_5Z8_4vtI33d>#6SZx1vnOecd53V|mp4dK|eU{MGd}h7*mI9f4=CA=Ja%d9j&XPvt{8118<~h>SxVXPF z0`EV6KNJ@Wr-MX>g)rcpeaI3c8Eik1d+)ls0!((~sfT(~ za9}vYZ`XMWvW%8I2U=zt9|fs7L~B`lfzC!U`z8>|ih}@Bwfa zw8p+@FNgfd-4A*5?>XlGOXd09aax|gDvha< z6YXc=kE^LN!WqNaGGV1$nU6EgeHRv0)q``wk>jG+a^hx7Yq4>yC)RD6&6E~JsuopG z8I#;Vl64E>1+6t?5}}taxhf#E*TSRg&WFGf`ksaZ8g{06(=9Pj~%WF-22{0iUJ zt8gYxsO6Q?@%~*~<}R8^L9(|qudVnFc{t_Fyqw7H-}OHA{N<9j=ZCHl5lN|*N3Kry z^S*1Gj{aZknmKoXmWZSsvY+jsjeY;A@%`NIOK#W==IJU(Vu4=&A+jUv_f0YzI@pzh|C>WA+{R$ve{LQ>_c+55{4mpI1z|e>_1Kj$6sfLfQUg;ikfiFw z&>!6ELBoX8=ohU3|EY&BUpXfP3-#Y8^WqX=z%|C`d5=p8Eg<(%>W*4ctakX0;XaDQ zw_j$jX|5*+%v8k#s%i+U-!T8DCTU9N?Z+;&wc&OD&a>TjrDp6xJ~47QEfe4Pd|y8I z{_(iZ2z1X6E7?I8V`Dq|`+5Aj#K2e>^y-m&wy6xv#S_^Edpq6-AF5Ub?p8p8&@nwY zrVgU_=Gue`pTM4xSN59a)&e(r?l&u^JO;az3*m8Lbr7`t{*2q-HG-!Oy~W+GJMZ+E z*|#3(RD-0XU=WprzwiE8>o97vZ`E7}G2ses1&`O~fuQh8pWBQEXdctNggLDq0=&U$ zy;%c{Jv95I?}|pS*WTn<^K&gYJhF1P6PEyY+ob^C*%fe(vDzoqulqgET8DA@hrbn* z@ackxO-r%w|E&3c_qwzgnSPoA8Ob+l6$eduNCYug4{C>ZEW^H^P`rUp>|5eO$33Yf z)(aS^rwv8KAv<;uyv|elpKSGGbKrO}u;YeZ^Rbo@i{lhS-h%VJcjNrEujiVoc?9~3 zi7`JV@}iSanSTq57EPPYmkDj)_(e};IN$r)^ZcRfH=422sbPwgxF3DHx7xZ4tXntf zF*Rh6sj<{-FWygQ1iIg& qFdi5WtOx7|bO0Sd2hag@03ARF&;fJ+9Y6=r0dxQzKnMPR9rzdSn4|Up literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/a_8_img.npy b/tests/testdata_npy/a_8_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..20a3e8c62fe2988dd5600e7e96e788d7fea0fdb4 GIT binary patch literal 32896 zcmeI(do-2#8V7KxbQv{W$YoSJQ;AH>jEUs*bff5o=qRNWx=@6qqLihP9CadA7iy|e zQ|aQCgh%C886ozT+}Z4#_Z4bLm$Nx5)~a>ZX`NYXPo4F=|Gewnd+q&O@AG}$&;I>> zmhh#vODtFRlk<_=qvho6wZT)%n4@LlVx*y@m>=j&94NvM(R-?{8es$IPSxpNy-YpG^0scw4vY8 zr;u9w$egRhK*}|T6a4Wkq*}`F3J$D?OGkDpy&97Zx|$PawgqINNaw(UlxfA-vS#hp zwCNeBKfp3Lsgeu&3i%gL_zNJV|E58zw;6cYD6zHJ$AVmWSHj$ZC!s2+a$QTDh#dG# z9JqI^^KjT57Drr{-}5(K63XS}%*#%A1jg??c#m8QQ8O$j%e0Pc-$;B~}me6~bKK*;CA7tAPf41JU4^7_IZg>GK zwU=DEI7ZUzK!bC_zJl<3$Tu;+Q*r-eNB-=%^!d-DPZSknIo^05%lt=n`Tj%Lo4=g# zns;}0?1Yqgu2K8cDgQ6EUtegeaKgt+=M7_03)7~E@t15v#b?|`ocqo2#N$8JVPWRo zA�UP!k!~<}^~=oBul93AvXx-UW}7Nh?P_q5Xl+E&r{PE);aMGZ<28o-?Ae2_M$f zB#bmH#mwhpzP?g^87gMwPFVV&3@)5LuV8N^$huje+ z&HiHO81=Z?(X|OWe4Z?F_^KX!@9GE5=hQ>-+It=f^3A>Z=kt;+9>{71c>xVEvp1}?=!oXvSHL0R1|jniF$zV+mAZf^Qsh3FX_A?P$1!?ZJ+5F$+O;#e_8jX#?Us^QT8k@9y7rV*4Lv`dd5WiDIyp* zV&6Zx&MdrY&3kvfvk}a697`3LI?U22GU(L!^mY2Rmyfky7O=SCk3kxF=1s^^cRqT^ zyKnwir;$=zuP+47V(m$yt(3p4^FQ2QUFFDQ23u-h?UelV^xytU=Vv!cFc9Dp zyPNxa6}aWP9TQCX^xWUyM^obxPpgG2TGk)o@xLwa{r;Z!rQ;lo+aFqIFZJb|SJR%! zl>hs>$?EK*=lD*oki~~TK<89lUT;1+=Gig(Q&^|MdKYK{4rM|q?w+`T8kV?g95gt{Os2r*I^l@ZW zr~mhHyfcOkAFo-DRgLViOKyGpa{|LxUc2tj2TA2;B_RqxE=u^2YJUScO)CxHCt+Iq@S^{~)dt<~C=fu6cb9k`;Gwx&|R zM@x_C<(%V`zpVQ$)$NJt)(8n^ir6{B23104t-4U6&cM~Un*0M-S%_sO*l0yJfZR;m zmWgUvpjufG>d}^i9xX@A?7l0)!a(zC2geMYo$6okro0GR<2{phTZte>XW8bzOGI#V z)9$)mE%6}NX@6F?Djfyq#ujo?`}P3`pJ_c`m0pX3a|2GtFQNQpo&Wps^1Hm;`B%$v zZ(d?px^E36Tk^IWRy4z0J*$wAn=Irz4CeWoOQ2wLQpwXHVyMbIrylT70%rV|THozr z!9{1KDC{5u16IuTJ*z5$8{-cxw0)Znvwl;So2VefSEqPmw>Q+GiIV+Nc8|25x)15| zpEB0E1SdViys?iQ<||PC@AHuLdD7xjiqSp{<^?~Gja*)h0fTg60<)vQFIi~p|DqCx ziXBb;=L;d3>*R9EgMn1Tv9kw+Fc56^z(>Pe2>PRpv2ABQWlzkVM?`O7-@565!}y1Gbk zi^aKyOSa@2i!l1JZrEsSz-=41p6}mKk7*Wa@{Y$FvFv)G$GE2=v{i~Th%lwxKCB~M zcUPcqpNZ;0^`L&B=Ybp`2gm_(fE*wP$N_SI93ThC0djyGAP2|+a)2Bl2fic+{snBj Bvbz8P literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/affinity_an.csv b/tests/testdata_npy/affinity_an.csv new file mode 100644 index 0000000..3f27c53 --- /dev/null +++ b/tests/testdata_npy/affinity_an.csv @@ -0,0 +1,37 @@ +a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,5,6,7,8,9,0 +1.000000000000000000e+00,1.425055461162577641e-01,2.392928993504066515e-01,1.576318739034099359e-01,4.846533962440909837e-01,5.727118309152134934e-02,-2.819013017223215289e-01,1.415557371842093293e-01,4.979436474475029684e-02,2.024424995555631490e-01,-2.484518864088098855e-01,1.080083254202179877e-02,-5.978583630537492866e-03,3.480759343899105795e-01,3.812650606316323465e-01,-1.892209516003591219e-01,-1.844068488946366546e-01,6.811714604770646719e-02,4.775246783227119485e-01,1.219230379099219830e-01,-3.342796104984711025e-01,-3.195902936731485067e-01,1.777785243866439879e-01,-2.589723482340413607e-01,-2.993404471933767130e-01,2.141166292534731896e-01,-6.113718805023315994e-03,-4.242519414350420792e-01,-4.187812804746198214e-01,9.048856080138079072e-02,-4.033947800796588989e-01,-3.128419962836910262e-01,-2.903060860016439815e-01,-4.457520856439010082e-01,-4.438566869232065670e-01,-4.108190091876950945e-01 +1.425055461162577641e-01,1.000000000000000000e+00,-2.964906590415816723e-03,7.096369780362994373e-01,1.714154662390097172e-01,-1.220268224100484744e-03,5.216920223305321347e-02,7.131955787323489560e-01,9.751251885011680276e-02,4.128374812488977419e-02,4.798824402636481246e-02,-5.889907471198663202e-02,9.152403859565694244e-02,3.378886422315144911e-01,1.557656508096825210e-01,1.560064407452156354e-01,1.472745090214614416e-01,-4.048526646245931282e-02,1.507444650677172149e-01,-1.413912054072723468e-01,-9.340615094855042599e-02,-1.141733914701501540e-01,-1.579914714393626518e-02,-5.905752574150979761e-02,5.435075071856110274e-02,6.645162680051042159e-02,-2.606472387027869431e-02,-1.007996576258018973e-01,-7.914196207444246234e-02,7.491842746465415814e-02,-3.338908883967484087e-03,4.976196053497072835e-02,7.505746755943509818e-02,-9.666646651082011488e-02,-4.847160690506036040e-02,-2.806910283784880278e-02 +2.392928993504066515e-01,-2.964906590415816723e-03,1.000000000000000000e+00,2.637346887606739632e-02,1.118696564220506007e-01,2.339227259129730285e-01,-2.834331234801410471e-01,-1.126133057110778601e-02,1.305713052463332025e-01,3.715673231303333601e-01,-3.967713562269725713e-01,1.332197622218282973e-01,-6.502001624877773445e-02,2.248995276484364592e-01,3.874260349908276169e-01,-2.560773115273633493e-01,-2.395590054296403704e-01,2.620814238145013908e-01,2.956818303374411094e-01,3.717690874821468761e-01,-5.060747408849377571e-01,-5.151792355276925139e-01,1.482647706305129098e-02,-4.055307089287383260e-01,-4.342545108216526728e-01,3.458610390662291145e-01,1.518982324928359606e-01,-4.341300266718715051e-01,-4.334446487843672813e-01,1.203411082653014219e-01,-4.524706875979347398e-01,-4.015538993794938172e-01,-3.314623952987800770e-01,-4.737132100395406997e-01,-5.278465585019820328e-01,-4.872286035816020267e-01 +1.576318739034099359e-01,7.096369780362882240e-01,2.637346887606739632e-02,1.000000000000000000e+00,1.795497869597966201e-01,2.682766082028764654e-02,5.448019208271093206e-02,6.818016251801539696e-01,1.136221625201307983e-01,7.006617340061149779e-02,3.145770216285070919e-02,-3.782900365654273678e-02,9.517075940923902522e-02,3.527086054525927494e-01,1.772788395245746829e-01,1.537710680579530420e-01,1.468079246636491142e-01,-1.768242711643264187e-02,1.724882103040350501e-01,-1.128978900613621938e-01,-1.172921951434537924e-01,-1.354721190814671683e-01,-8.633432177170385913e-03,-7.397955185328664029e-02,3.623522234360387895e-02,8.910868812049299592e-02,-4.670205664611293273e-03,-1.089837758239962096e-01,-8.774890392370204850e-02,9.248596938663355971e-02,-1.676147506669156684e-02,3.479139453577084762e-02,6.684185149764376721e-02,-1.059731818361673295e-01,-6.552055788420174665e-02,-4.567264519628744246e-02 +4.846533962440920940e-01,1.714154662390101613e-01,1.118696564220515999e-01,1.795497869597966201e-01,1.000000000000000000e+00,-5.455707523816188953e-02,-2.914064783045107188e-01,1.778335887072179933e-01,-3.439275583101641942e-02,1.001852325247333253e-01,-2.084786877151454387e-01,-9.680340046578073121e-02,-2.063683960658191374e-02,3.455276923300936165e-01,2.839842006454207368e-01,-1.905681795081437535e-01,-1.901756704075516780e-01,-1.458222399732655994e-02,3.805379939083886054e-01,-1.836893157056462833e-02,-2.631067483351263725e-01,-2.408460038317024043e-01,8.398602955333789311e-02,-2.215111921651364835e-01,-2.526301021806578451e-01,8.984151902969739201e-02,-1.128774646236294643e-01,-4.157064149286922028e-01,-4.093129553529861742e-01,-5.918833248908850209e-03,-3.737346757462844948e-01,-2.815164571379686898e-01,-2.643805462043546939e-01,-4.306972534123241214e-01,-3.975071377800658556e-01,-3.761738396817011498e-01 +5.727118309152079423e-02,-1.220268224100040655e-03,2.339227259129734726e-01,2.682766082028764654e-02,-5.455707523816188953e-02,1.000000000000000000e+00,-1.846379853031707707e-01,-7.534479780737957100e-03,2.174638356126638028e-01,3.355200039658382538e-01,-4.075766680219037319e-01,3.755682188149062073e-01,-2.073841769042579219e-01,3.509054056127547394e-02,1.296442393192599463e-01,-1.646593313568021077e-01,-1.484603158557944447e-01,4.222487607376468333e-02,1.627611823534992341e-01,3.873041838864030861e-01,-5.617211678386857532e-01,-5.747899694180205188e-01,-2.122967975743337288e-01,-4.950478508584543746e-01,-4.217962033719344639e-01,2.548830075066002010e-01,4.265044068992712711e-01,-3.910023349804516712e-01,-3.695886226188576096e-01,2.339784652910598117e-01,-3.887582302624499331e-01,-3.577701472813514805e-01,-3.009556129782433587e-01,-3.921174989575610947e-01,-4.535721472185150205e-01,-4.343061937653631688e-01 +-2.819013017223215289e-01,5.216920223305321347e-02,-2.834331234801410471e-01,5.448019208271148717e-02,-2.914064783045107188e-01,-1.846379853031707707e-01,1.000000000000000000e+00,4.894953735536222705e-02,-9.196544901650249848e-02,-3.010465553522658766e-01,1.874490557222543430e-01,-3.147549707331771529e-01,4.226601968848731072e-02,-1.518095710597235914e-01,-2.747241299249210122e-01,2.650515336894526675e-01,2.823045318132274550e-01,-1.028290829803564232e-01,-2.481243022328960546e-01,-3.457469528582575169e-01,-2.410407404322265634e-01,-2.516285905265647216e-01,-3.467082786879471801e-01,-2.836933650298711918e-02,1.715440925684990070e-01,-1.504778662496313313e-01,-1.656598266619335735e-01,1.970144973552757639e-01,2.688950933348708272e-01,7.490780159054910570e-03,2.492832496957599897e-01,2.929590607257994694e-01,3.026056969366489602e-01,2.649517183924033903e-01,6.422635422828781859e-02,1.202921544139330390e-01 +1.415557371842093293e-01,7.131955787323489560e-01,-1.126133057110778601e-02,6.818016251801539696e-01,1.778335887072185484e-01,-7.534479780737957100e-03,4.894953735536222705e-02,1.000000000000000000e+00,8.767361698080289312e-02,3.467765603923111950e-02,5.156536405337230899e-02,-6.673141056085718503e-02,8.048728156970952341e-02,3.339397809990182209e-01,1.443078412832187185e-01,1.517570542735711125e-01,1.427812637653134153e-01,-4.582973292056391479e-02,1.552683618742728422e-01,-1.478097987383539813e-01,-8.761224255218702517e-02,-1.049230459634367119e-01,-3.099674746315583818e-02,-5.631574217314838648e-02,6.054712473035184228e-02,6.205863617821794076e-02,-3.408675475910971642e-02,-9.989027039250886197e-02,-7.943153680690895335e-02,6.178394244166196536e-02,-2.144621199229312936e-04,4.993459656975252070e-02,7.691957596975962375e-02,-9.693765733875547852e-02,-4.203176531999863741e-02,-2.665953853919633687e-02 +4.979436474475074093e-02,9.751251885011735787e-02,1.305713052463332025e-01,1.136221625201307983e-01,-3.439275583101641942e-02,2.174638356126638028e-01,-9.196544901650249848e-02,8.767361698080289312e-02,1.000000000000000000e+00,1.790425910396787890e-01,-2.457269909087969051e-01,2.701303414412895565e-01,-8.347175338330314887e-02,8.826170102198538370e-02,1.107871374848623525e-01,-5.969692616904542781e-02,-4.175727009720686667e-02,5.261465277681609543e-02,9.502782414068733363e-02,9.751016628162023636e-02,-4.360019211485719470e-01,-4.774214893513133440e-01,-1.257313580474024306e-01,-3.626225653386530023e-01,-2.680260603628530358e-01,1.906533290876255560e-01,3.134283174312938458e-01,-2.602499973794165644e-01,-2.205637925646708464e-01,1.544133923543256071e-01,-2.386992486331356300e-01,-1.978654808459641146e-01,-1.559597840325033236e-01,-2.679205883102966368e-01,-3.614869969849490161e-01,-3.182824378897488593e-01 +2.024424995555631490e-01,4.128374812488977419e-02,3.715673231303333601e-01,7.006617340061205290e-02,1.001852325247333253e-01,3.355200039658382538e-01,-3.010465553522658766e-01,3.467765603923111950e-02,1.790425910396783449e-01,1.000000000000000000e+00,-4.332779267882131968e-01,2.835487893040518070e-01,-1.620904739276247675e-01,1.712872227807560321e-01,3.073510647806536600e-01,-2.036403272954099286e-01,-1.932363147748958898e-01,6.062999310453209834e-02,2.681096306698715903e-01,3.420900769833548072e-01,-5.112786649751959178e-01,-5.313010433590905635e-01,-7.039500078667715322e-02,-4.778509542687208178e-01,-4.491274630659150002e-01,1.944220571599573066e-01,2.014254909021436779e-01,-4.675111637727538128e-01,-4.572763705132261158e-01,1.227597283905743630e-01,-4.567291515107945177e-01,-4.153925759364081038e-01,-3.601436427958930597e-01,-4.870120049319917044e-01,-4.993243100520587952e-01,-4.759005557607187686e-01 +-2.484518864088094414e-01,4.798824402636547859e-02,-3.967713562269725713e-01,3.145770216285070919e-02,-2.084786877151454387e-01,-4.075766680219037319e-01,1.874490557222537879e-01,5.156536405337330820e-02,-2.457269909087969051e-01,-4.332779267882131968e-01,1.000000000000000000e+00,-4.689914299694877275e-01,4.767389441868974398e-02,-1.375926186929510298e-01,-3.165743366974185236e-01,8.411207059819891807e-02,8.326794899123368676e-02,-2.224486423929323831e-01,-2.605910893176506260e-01,-4.905222069972363652e-01,5.286131005948768724e-02,5.165016595100380137e-02,-2.964853423972177993e-01,3.475291305234983197e-01,5.108655702209284888e-01,-2.456399714607242490e-01,-3.772293067386283116e-01,2.418641700285392160e-01,2.737261400958441726e-01,-2.114758095223208123e-01,3.231970873676248690e-01,4.228222973296521525e-01,3.585444862026099244e-01,2.535010002781984406e-01,1.915966595834954767e-01,2.577366853966545079e-01 +1.080083254202179877e-02,-5.889907471198640998e-02,1.332197622218282973e-01,-3.782900365654273678e-02,-9.680340046578073121e-02,3.755682188149062073e-01,-3.147549707331771529e-01,-6.673141056085718503e-02,2.701303414412895565e-01,2.835487893040518070e-01,-4.689914299694877275e-01,1.000000000000000000e+00,-3.284143789607909536e-01,-1.033144450981948737e-02,9.185764398928442098e-02,-2.631516717869935018e-01,-2.526505556106839467e-01,-1.339471950551012203e-01,9.051324518544578979e-02,2.430988189246393594e-01,-5.764576445816096406e-01,-5.964021205288936311e-01,-2.276006294777221939e-01,-5.411545121981617967e-01,-4.756781597626591473e-01,1.610097823585509014e-01,4.314821560656006971e-01,-4.639933294798692653e-01,-4.430780517276031727e-01,8.443601827461344467e-02,-4.498060982365474914e-01,-4.322704601598890140e-01,-3.971468063931336001e-01,-4.649199889832640320e-01,-5.125779494843480943e-01,-4.935863749043056803e-01 +-5.978583630537492866e-03,9.152403859565694244e-02,-6.502001624877773445e-02,9.517075940923902522e-02,-2.063683960658191374e-02,-2.073841769042579219e-01,4.226601968848731072e-02,8.048728156970952341e-02,-8.347175338330359295e-02,-1.620904739276247675e-01,4.767389441868974398e-02,-3.284143789607909536e-01,1.000000000000000000e+00,6.808464314763640335e-02,9.538973888641444354e-03,4.239743053435551801e-02,5.642305639322331423e-02,1.729096727365653230e-01,-6.552946289011885028e-02,-2.067351110421682403e-01,-2.466104222461578122e-01,-2.565515368077131431e-01,6.431875060332825633e-02,-1.463695266692277563e-02,-4.039716634289836072e-02,-4.282786545115002674e-02,-2.352052965804529716e-01,-1.095368499653925909e-01,-8.539799894185651219e-02,7.321153868323593272e-02,-1.115642137245871357e-01,4.129576661775602453e-02,5.978049877674529444e-02,-1.387396676722989497e-01,-2.231515071176126686e-01,-1.315069571497706757e-01 +3.480759343899105795e-01,3.378886422315144911e-01,2.248995276484364592e-01,3.527086054525919723e-01,3.455276923300936165e-01,3.509054056127480781e-02,-1.518095710597235914e-01,3.339397809990182209e-01,8.826170102198538370e-02,1.712872227807560321e-01,-1.375926186929510298e-01,-1.033144450981904328e-02,6.808464314763640335e-02,1.000000000000000000e+00,4.369428617097236289e-01,-7.768838054177851227e-02,-7.737927136110989146e-02,8.622069977642132788e-02,3.378128591563313021e-01,2.864158401466976311e-02,-1.844173142308396240e-01,-2.098980783447346177e-01,1.203957510306864487e-01,-1.534219100947948888e-01,-1.724715774195082485e-01,1.944772389761239006e-01,7.936278091389414868e-04,-2.974708661270262233e-01,-2.866483747280963446e-01,8.254758595325006887e-02,-2.421188231495945420e-01,-1.724646156893347992e-01,-1.338887701180195844e-01,-3.136673627720245605e-01,-3.165330253143818773e-01,-2.772266732592199023e-01 +3.812650606316323465e-01,1.557656508096825210e-01,3.874260349908276169e-01,1.772788395245746829e-01,2.839842006454207368e-01,1.296442393192593912e-01,-2.747241299249210122e-01,1.443078412832187185e-01,1.107871374848627966e-01,3.073510647806536600e-01,-3.165743366974178574e-01,9.185764398928442098e-02,9.538973888641444354e-03,4.369428617097236289e-01,1.000000000000000000e+00,-2.009224668843723194e-01,-1.950068834823821540e-01,1.190544487803127938e-01,3.391759573032777642e-01,1.968702635540212631e-01,-3.793676342810397006e-01,-3.989079482345017080e-01,1.861797052593016089e-01,-3.265751368207916450e-01,-3.582480054268020186e-01,2.354687435018543162e-01,6.767989692679199365e-02,-4.301247548785298580e-01,-4.181104997779825361e-01,1.280770922625984465e-01,-4.042746257949267896e-01,-3.332565591931047067e-01,-3.002717859113985810e-01,-4.436789863283396862e-01,-4.704454579891999000e-01,-4.316928373108823713e-01 +-1.892209516003591219e-01,1.560064407452156354e-01,-2.560773115273637934e-01,1.537710680579530420e-01,-1.905681795081437535e-01,-1.646593313568021077e-01,2.650515336894526675e-01,1.517570542735711125e-01,-5.969692616904542781e-02,-2.036403272954099286e-01,8.411207059819891807e-02,-2.631516717869935018e-01,4.239743053435585107e-02,-7.768838054177762409e-02,-2.009224668843714312e-01,1.000000000000000000e+00,6.937674127760489196e-01,-1.595336178482733569e-01,-1.883416973058695820e-01,-3.330982103503705716e-01,-1.249198637006425638e-01,-1.789848164332694669e-01,-2.421408698621816402e-01,-1.319046686182774319e-01,1.180492960380672418e-01,-1.820396061100473251e-01,-1.790347820105371301e-01,4.008271684524422618e-02,4.930016973399775626e-02,7.469849607518497248e-02,7.067212433597391819e-02,1.613435733620532941e-01,1.806723783433002994e-01,3.400513687168693622e-02,6.555194058329449902e-02,1.394415047516841533e-01 +-1.844068488946366546e-01,1.472745090214614416e-01,-2.395590054296399263e-01,1.468079246636491142e-01,-1.901756704075516780e-01,-1.484603158557944447e-01,2.823045318132274550e-01,1.427812637653134153e-01,-4.175727009720686667e-02,-1.932363147748954457e-01,8.326794899123368676e-02,-2.526505556106839467e-01,5.642305639322331423e-02,-7.737927136110944737e-02,-1.950068834823817099e-01,6.937674127760489196e-01,1.000000000000000000e+00,-1.320893117679982076e-01,-1.808411339168365384e-01,-3.155008056419177365e-01,-1.485960344993109139e-01,-2.022643299665283223e-01,-2.415065501303803597e-01,-1.352333322282646133e-01,1.099637564413850077e-01,-1.636191794421453238e-01,-1.611822006182410671e-01,4.866931223373660576e-02,5.927176739521755611e-02,9.321033961246383281e-02,6.794315276834661521e-02,1.619134804321595844e-01,1.905542792862157109e-01,3.810212588499117814e-02,4.908029926837842449e-02,1.277378168503836564e-01 +6.811714604770602310e-02,-4.048526646245931282e-02,2.620814238145013908e-01,-1.768242711643264187e-02,-1.458222399732655994e-02,4.222487607376468333e-02,-1.028290829803564232e-01,-4.582973292056435888e-02,5.261465277681609543e-02,6.062999310453254243e-02,-2.224486423929323831e-01,-1.339471950551012203e-01,1.729096727365653230e-01,8.622069977642099481e-02,1.190544487803127938e-01,-1.595336178482733569e-01,-1.320893117679982076e-01,1.000000000000000000e+00,1.134061254229545845e-01,1.423006140012856857e-01,-4.471832619824722688e-01,-4.517994929063648968e-01,-5.908186824435102125e-02,-2.284072689448064519e-01,-2.897907970473057038e-01,2.362193574638840055e-01,-1.196259810258215595e-02,-2.490443866728926370e-01,-2.520561952523983074e-01,1.150671226763451127e-01,-3.083058869107613287e-01,-2.334191173776050121e-01,-1.257497069143829194e-01,-3.297032801134238689e-01,-4.404532943033525605e-01,-3.719684809343839493e-01 +4.775246783227119485e-01,1.507444650677172149e-01,2.956818303374411094e-01,1.724882103040350501e-01,3.805379939083886054e-01,1.627611823534992341e-01,-2.481243022328960546e-01,1.552683618742728422e-01,9.502782414068677852e-02,2.681096306698715903e-01,-2.605910893176510701e-01,9.051324518544534570e-02,-6.552946289011885028e-02,3.378128591563313021e-01,3.391759573032777642e-01,-1.883416973058695820e-01,-1.808411339168365384e-01,1.134061254229551396e-01,1.000000000000000000e+00,2.096803473398027862e-01,-3.623422793593698010e-01,-3.419815725055177502e-01,2.514765562500831386e-02,-2.697184128791012547e-01,-2.988648331994929741e-01,3.139372459678041460e-01,8.489516021770615595e-02,-3.947372748506092766e-01,-3.960487333395632525e-01,8.710957731431179241e-02,-3.748353431924931201e-01,-3.113659572851692481e-01,-2.584047869415926346e-01,-4.269162446397096744e-01,-4.296996255284002419e-01,-4.044574950263475355e-01 +1.219230379099219830e-01,-1.413912054072723468e-01,3.717690874821468761e-01,-1.128978900613630820e-01,-1.836893157056418424e-02,3.873041838864030861e-01,-3.457469528582575169e-01,-1.478097987383539813e-01,9.751016628162023636e-02,3.420900769833548072e-01,-4.905222069972363652e-01,2.430988189246388043e-01,-2.067351110421682403e-01,2.864158401466976311e-02,1.968702635540212631e-01,-3.330982103503705716e-01,-3.155008056419177365e-01,1.423006140012856857e-01,2.096803473398027862e-01,1.000000000000000000e+00,-5.991013290202911179e-01,-5.987253984859772782e-01,-1.345484922723687582e-01,-5.106471771168019647e-01,-5.234113660870156615e-01,2.906583608924176998e-01,2.576635145365057111e-01,-5.084232223071427637e-01,-5.032575985156899634e-01,1.511826573118110195e-01,-5.244879169625522586e-01,-4.831029780609086277e-01,-4.264529257307247967e-01,-5.325491490082980839e-01,-5.874084755985886641e-01,-5.598714070902901518e-01 +-3.342796104984711025e-01,-9.340615094855042599e-02,-5.060747408849377571e-01,-1.172921951434537924e-01,-2.631067483351268166e-01,-5.617211678386857532e-01,-2.410407404322265634e-01,-8.761224255218702517e-02,-4.360019211485723911e-01,-5.112786649751959178e-01,5.286131005948724315e-02,-5.764576445816103067e-01,-2.466104222461578122e-01,-1.844173142308396240e-01,-3.793676342810397006e-01,-1.249198637006425638e-01,-1.485960344993113580e-01,-4.471832619824729349e-01,-3.623422793593698010e-01,-5.991013290202911179e-01,1.000000000000000000e+00,4.057458912646870752e-01,-3.844858846354120008e-01,5.228536825815677247e-02,1.002798758583048899e-01,-4.607345446931105926e-01,-5.565126741145391964e-01,-2.195000123789172530e-01,-2.332604557161284120e-01,-4.292805043314613656e-01,-1.004447094716738320e-01,-5.067785292306981049e-02,-9.316357319727708308e-02,-2.351632301729966734e-01,-3.414728749611906089e-02,-2.686435815014887041e-02 +-3.195902936731485067e-01,-1.141733914701501540e-01,-5.151792355276925139e-01,-1.354721190814660581e-01,-2.408460038317028484e-01,-5.747899694180198527e-01,-2.516285905265647216e-01,-1.049230459634367119e-01,-4.774214893513133440e-01,-5.313010433590905635e-01,5.165016595100480057e-02,-5.964021205288936311e-01,-2.565515368077131431e-01,-2.098980783447346177e-01,-3.989079482345017080e-01,-1.789848164332690228e-01,-2.022643299665283223e-01,-4.517994929063648968e-01,-3.419815725055177502e-01,-5.987253984859772782e-01,4.057458912646870752e-01,1.000000000000000000e+00,-3.756124691284623562e-01,1.007862186138943628e-01,1.086049103127718629e-01,-4.567423331380191520e-01,-5.760632578678630544e-01,-2.505796294897866261e-01,-2.676081912000700669e-01,-4.413949019203351476e-01,-1.170721307983551007e-01,-8.615511936001829518e-02,-1.297586095330933720e-01,-2.573728754957931297e-01,-3.372987797344362271e-02,-6.457246132569238739e-02 +1.777785243866439879e-01,-1.579914714393626518e-02,1.482647706305129098e-02,-8.633432177171274091e-03,8.398602955333822617e-02,-2.122967975743341729e-01,-3.467082786879471801e-01,-3.099674746315583818e-02,-1.257313580474024306e-01,-7.039500078667715322e-02,-2.964853423972177993e-01,-2.276006294777228600e-01,6.431875060332825633e-02,1.203957510306864487e-01,1.861797052593016089e-01,-2.421408698621816402e-01,-2.415065501303803597e-01,-5.908186824435102125e-02,2.514765562500831386e-02,-1.345484922723687582e-01,-3.844858846354120008e-01,-3.756124691284623562e-01,1.000000000000000000e+00,-2.862483229712211585e-01,-3.546470524596521123e-01,-3.458800230725134206e-02,-2.341054258690913326e-01,-4.609587556436072209e-01,-4.489004059457781803e-01,-2.280746122914911744e-02,-4.509296551869208525e-01,-3.544381051767833135e-01,-3.594616159726311544e-01,-4.727918423145256455e-01,-4.971233770514382755e-01,-4.491061908413653825e-01 +-2.589723482340413607e-01,-5.905752574150979761e-02,-4.055307089287383260e-01,-7.397955185328664029e-02,-2.215111921651364835e-01,-4.950478508584543746e-01,-2.836933650298711918e-02,-5.631574217314838648e-02,-3.626225653386530023e-01,-4.778509542687208178e-01,3.475291305234983197e-01,-5.411545121981617967e-01,-1.463695266692233155e-02,-1.534219100947948888e-01,-3.265751368207916450e-01,-1.319046686182774319e-01,-1.352333322282646133e-01,-2.284072689448064519e-01,-2.697184128791012547e-01,-5.106471771168024087e-01,5.228536825815677247e-02,1.007862186138943628e-01,-2.862483229712209365e-01,1.000000000000000000e+00,2.718898512985250537e-01,-2.612143992673729986e-01,-4.692039099254727841e-01,8.186517679982963092e-02,5.060174156284469316e-02,-3.176604040667210249e-01,1.078567714541756040e-01,1.517786246324085431e-01,1.469647312092616787e-01,1.430416958213431844e-02,-2.063399292128664797e-02,6.419411803566654751e-02 +-2.993404471933760469e-01,5.435075071856054763e-02,-4.342545108216526728e-01,3.623522234360387895e-02,-2.526301021806578451e-01,-4.217962033719344639e-01,1.715440925684994511e-01,6.054712473035184228e-02,-2.680260603628530358e-01,-4.491274630659150002e-01,5.108655702209284888e-01,-4.756781597626591473e-01,-4.039716634289836072e-02,-1.724715774195086926e-01,-3.582480054268026848e-01,1.180492960380672418e-01,1.099637564413850077e-01,-2.897907970473057038e-01,-2.988648331994929741e-01,-5.234113660870156615e-01,1.002798758583043348e-01,1.086049103127718629e-01,-3.546470524596521123e-01,2.718898512985250537e-01,1.000000000000000000e+00,-2.987606107035727376e-01,-4.001348368132808808e-01,2.700798062352732787e-01,2.730705280038264737e-01,-2.602544423911470339e-01,3.733358806912083772e-01,3.913831957984418297e-01,3.587867213937423472e-01,2.655536327553942311e-01,3.406276696883135946e-01,3.553166717158346977e-01 +2.141166292534731896e-01,6.645162680051042159e-02,3.458610390662291145e-01,8.910868812049299592e-02,8.984151902969739201e-02,2.548830075066002010e-01,-1.504778662496313313e-01,6.205863617821794076e-02,1.906533290876255560e-01,1.944220571599573066e-01,-2.456399714607242490e-01,1.610097823585509014e-01,-4.282786545115002674e-02,1.944772389761244558e-01,2.354687435018548713e-01,-1.820396061100473251e-01,-1.636191794421453238e-01,2.362193574638840055e-01,3.139372459678047012e-01,2.906583608924170337e-01,-4.607345446931105926e-01,-4.567423331380191520e-01,-3.458800230725045388e-02,-2.612143992673729986e-01,-2.987606107035727376e-01,1.000000000000000000e+00,2.777809333849441398e-01,-2.810319201684678969e-01,-2.860858775611299087e-01,1.854270020195346591e-01,-3.156800177207490510e-01,-2.642262458424293747e-01,-1.902541358825131645e-01,-3.381714943739200230e-01,-4.325309447175544886e-01,-3.753360717339795372e-01 +-6.113718805023315994e-03,-2.606472387027869431e-02,1.518982324928359606e-01,-4.670205664611293273e-03,-1.128774646236294643e-01,4.265044068992721593e-01,-1.656598266619335735e-01,-3.408675475910971642e-02,3.134283174312944009e-01,2.014254909021436779e-01,-3.772293067386283116e-01,4.314821560656006971e-01,-2.352052965804529716e-01,7.936278091389414868e-04,6.767989692679199365e-02,-1.790347820105375742e-01,-1.611822006182410671e-01,-1.196259810258215595e-02,8.489516021770615595e-02,2.576635145365057111e-01,-5.565126741145391964e-01,-5.760632578678630544e-01,-2.341054258690913326e-01,-4.692039099254727841e-01,-4.001348368132808808e-01,2.777809333849441398e-01,1.000000000000000000e+00,-3.448653873449782914e-01,-3.202893743529320325e-01,2.160057049986188193e-01,-3.508223701140411599e-01,-3.209538354933054727e-01,-2.765199267550848550e-01,-3.519189541548051192e-01,-4.512305598393553385e-01,-4.131611503461356527e-01 +-4.242519414350420792e-01,-1.007996576258018973e-01,-4.341300266718715051e-01,-1.089837758239962096e-01,-4.157064149286922028e-01,-3.910023349804516712e-01,1.970144973552757639e-01,-9.989027039250886197e-02,-2.602499973794154542e-01,-4.675111637727538128e-01,2.418641700285381058e-01,-4.639933294798688213e-01,-1.095368499653925909e-01,-2.974708661270262233e-01,-4.301247548785298580e-01,4.008271684524478129e-02,4.866931223373660576e-02,-2.490443866728926370e-01,-3.947372748506092766e-01,-5.084232223071427637e-01,-2.195000123789172530e-01,-2.505796294897866261e-01,-4.609587556436072209e-01,8.186517679982874274e-02,2.700798062352732787e-01,-2.810319201684678969e-01,-3.448653873449782914e-01,1.000000000000000000e+00,5.119704814366159429e-01,-2.577910432649321848e-01,3.832358512519784544e-01,3.367173371188891817e-01,4.159330431522895166e-01,3.929106487968017092e-01,2.168248455620988002e-01,3.424275603887143582e-01 +-4.187812804746198214e-01,-7.914196207444246234e-02,-4.334446487843668372e-01,-8.774890392370204850e-02,-4.093129553529861742e-01,-3.695886226188576096e-01,2.688950933348708272e-01,-7.943153680690895335e-02,-2.205637925646708464e-01,-4.572763705132261158e-01,2.737261400958441726e-01,-4.430780517276031727e-01,-8.539799894185651219e-02,-2.866483747280963446e-01,-4.181104997779825361e-01,4.930016973399775626e-02,5.927176739521755611e-02,-2.520561952523983074e-01,-3.960487333395628085e-01,-5.032575985156892973e-01,-2.332604557161288561e-01,-2.676081912000696228e-01,-4.489004059457781803e-01,5.060174156284469316e-02,2.730705280038264737e-01,-2.860858775611299087e-01,-3.202893743529320325e-01,5.119704814366159429e-01,1.000000000000000000e+00,-2.352371062257676559e-01,4.459653245261053778e-01,4.079556024726600505e-01,4.056510263360995072e-01,5.304252859641966911e-01,1.978777860257063814e-01,2.842393644564050748e-01 +9.048856080138079072e-02,7.491842746465415814e-02,1.203411082653014219e-01,9.248596938663411482e-02,-5.918833248908184075e-03,2.339784652910598117e-01,7.490780159054910570e-03,6.178394244166196536e-02,1.544133923543256071e-01,1.227597283905743630e-01,-2.114758095223212564e-01,8.443601827461344467e-02,7.321153868323593272e-02,8.254758595325006887e-02,1.280770922625984465e-01,7.469849607518586065e-02,9.321033961246327770e-02,1.150671226763451127e-01,8.710957731431179241e-02,1.511826573118110195e-01,-4.292805043314613656e-01,-4.413949019203351476e-01,-2.280746122914911744e-02,-3.176604040667210249e-01,-2.602544423911470339e-01,1.854270020195346591e-01,2.160057049986188193e-01,-2.577910432649321848e-01,-2.352371062257676559e-01,1.000000000000000000e+00,-2.655164244022309994e-01,-1.570366409132459840e-01,-1.374622119533948084e-01,-2.623537437402072570e-01,-3.489102508033996575e-01,-2.730685687594516242e-01 +-4.033947800796588989e-01,-3.338908883967928176e-03,-4.524706875979342957e-01,-1.676147506669156684e-02,-3.737346757462844948e-01,-3.887582302624499331e-01,2.492832496957593236e-01,-2.144621199224872043e-04,-2.386992486331356300e-01,-4.567291515107945177e-01,3.231970873676248690e-01,-4.498060982365474914e-01,-1.115642137245871357e-01,-2.421188231495945420e-01,-4.042746257949267896e-01,7.067212433597391819e-02,6.794315276834661521e-02,-3.083058869107613287e-01,-3.748353431924931201e-01,-5.244879169625522586e-01,-1.004447094716747202e-01,-1.170721307983551007e-01,-4.509296551869208525e-01,1.078567714541756040e-01,3.733358806912083772e-01,-3.156800177207490510e-01,-3.508223701140411599e-01,3.832358512519776772e-01,4.459653245261053778e-01,-2.655164244022312214e-01,1.000000000000000000e+00,4.588347680296082087e-01,4.040661868965125247e-01,4.791913049729111806e-01,3.188247607793415206e-01,3.564919482449948607e-01 +-3.128419962836910262e-01,4.976196053497072835e-02,-4.015538993794938172e-01,3.479139453577084762e-02,-2.815164571379686898e-01,-3.577701472813514805e-01,2.929590607257994694e-01,4.993459656975252070e-02,-1.978654808459641146e-01,-4.153925759364076598e-01,4.228222973296521525e-01,-4.322704601598890140e-01,4.129576661775546942e-02,-1.724646156893343552e-01,-3.332565591931055948e-01,1.613435733620532941e-01,1.619134804321595844e-01,-2.334191173776050121e-01,-3.113659572851692481e-01,-4.831029780609081836e-01,-5.067785292307025458e-02,-8.615511936001785109e-02,-3.544381051767833135e-01,1.517786246324085431e-01,3.913831957984418297e-01,-2.642262458424293747e-01,-3.209538354933054727e-01,3.367173371188891817e-01,4.079556024726600505e-01,-1.570366409132455399e-01,4.588347680296082087e-01,1.000000000000000000e+00,4.464407394667464501e-01,4.048214813798584055e-01,2.659384227900561948e-01,3.738698203996695391e-01 +-2.903060860016439815e-01,7.505746755943509818e-02,-3.314623952987800770e-01,6.684185149764376721e-02,-2.643805462043546939e-01,-3.009556129782435807e-01,3.026056969366489602e-01,7.691957596975962375e-02,-1.559597840325033236e-01,-3.601436427958930597e-01,3.585444862026099244e-01,-3.971468063931336001e-01,5.978049877674529444e-02,-1.338887701180195844e-01,-3.002717859113985810e-01,1.806723783433002994e-01,1.905542792862157109e-01,-1.257497069143831414e-01,-2.584047869415926346e-01,-4.264529257307247967e-01,-9.316357319727708308e-02,-1.297586095330933720e-01,-3.594616159726311544e-01,1.469647312092616787e-01,3.587867213937423472e-01,-1.902541358825131645e-01,-2.765199267550848550e-01,4.159330431522895166e-01,4.056510263360995072e-01,-1.374622119533948084e-01,4.040661868965125247e-01,4.464407394667473383e-01,1.000000000000000000e+00,3.286425859503409042e-01,2.367207294258614203e-01,3.404818619529973445e-01 +-4.457520856439010082e-01,-9.666646651082011488e-02,-4.737132100395406997e-01,-1.059731818361668854e-01,-4.306972534123241214e-01,-3.921174989575610947e-01,2.649517183924033903e-01,-9.693765733875547852e-02,-2.679205883102961927e-01,-4.870120049319917044e-01,2.535010002781991068e-01,-4.649199889832640320e-01,-1.387396676722989497e-01,-3.136673627720245605e-01,-4.436789863283396862e-01,3.400513687168693622e-02,3.810212588499051201e-02,-3.297032801134232027e-01,-4.269162446397096744e-01,-5.325491490082980839e-01,-2.351632301729966734e-01,-2.573728754957931297e-01,-4.727918423145256455e-01,1.430416958213431844e-02,2.655536327553936760e-01,-3.381714943739206891e-01,-3.519189541548051192e-01,3.929106487968017092e-01,5.304252859641966911e-01,-2.623537437402072570e-01,4.791913049729111806e-01,4.048214813798591827e-01,3.286425859503409042e-01,1.000000000000000000e+00,2.244234906011861597e-01,2.779888330547390929e-01 +-4.438566869232065670e-01,-4.847160690506036040e-02,-5.278465585019820328e-01,-6.552055788420174665e-02,-3.975071377800658556e-01,-4.535721472185150205e-01,6.422635422828781859e-02,-4.203176531999863741e-02,-3.614869969849485720e-01,-4.993243100520587952e-01,1.915966595834964759e-01,-5.125779494843480943e-01,-2.231515071176126686e-01,-3.165330253143818773e-01,-4.704454579891999000e-01,6.555194058329505413e-02,4.908029926837798040e-02,-4.404532943033525605e-01,-4.296996255284002419e-01,-5.874084755985886641e-01,-3.414728749611906089e-02,-3.372987797344362271e-02,-4.971233770514382755e-01,-2.063399292128664797e-02,3.406276696883129285e-01,-4.325309447175544886e-01,-4.512305598393553385e-01,2.168248455620988002e-01,1.978777860257063814e-01,-3.489102508033996575e-01,3.188247607793415206e-01,2.659384227900567499e-01,2.367207294258614203e-01,2.244234906011861597e-01,1.000000000000000000e+00,4.431648470398336093e-01 +-4.108190091876950945e-01,-2.806910283784880278e-02,-4.872286035816020267e-01,-4.567264519628855268e-02,-3.761738396817011498e-01,-4.343061937653631688e-01,1.202921544139330390e-01,-2.665953853919633687e-02,-3.182824378897495254e-01,-4.759005557607187686e-01,2.577366853966545079e-01,-4.935863749043056803e-01,-1.315069571497706757e-01,-2.772266732592199023e-01,-4.316928373108823713e-01,1.394415047516834871e-01,1.277378168503831013e-01,-3.719684809343839493e-01,-4.044574950263475355e-01,-5.598714070902901518e-01,-2.686435815014887041e-02,-6.457246132569238739e-02,-4.491061908413653825e-01,6.419411803566654751e-02,3.553166717158346977e-01,-3.753360717339802033e-01,-4.131611503461356527e-01,3.424275603887143582e-01,2.842393644564057409e-01,-2.730685687594516242e-01,3.564919482449948607e-01,3.738698203996703162e-01,3.404818619529973445e-01,2.779888330547390929e-01,4.431648470398336093e-01,1.000000000000000000e+00 diff --git a/tests/testdata_npy/classes.csv b/tests/testdata_npy/classes.csv new file mode 100644 index 0000000..461e3c0 --- /dev/null +++ b/tests/testdata_npy/classes.csv @@ -0,0 +1 @@ +a,e,i,j,z,s,u,v,d,2 diff --git a/tests/testdata_npy/d_0_img.npy b/tests/testdata_npy/d_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..362931f337cce39559749adcc2b342fd20b7f0bf GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/d_5_img.npy b/tests/testdata_npy/d_5_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..ae5d00482fc9c65013d4b6675c8b8d54177d3bb8 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/d_6_img.npy b/tests/testdata_npy/d_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..1a07fd635353cb077cdb2f1d985cb2e3e9ae05ab GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/d_8_img.npy b/tests/testdata_npy/d_8_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e50f74cd6295c1b214f57fcf4f8f18e50dd559df GIT binary patch literal 32896 zcmeI2eK=HU8^9^5wb|EKvDqvep|n|1qr7e@+6ZO)(#l6sDrtO`sFtPH8_m=G6LF>0{r6w*IiLy3*x+YoGb&Tprgs&pG$+etzeEp6C2% zz0PX2ow(Ruu>egMSMRM}nu}F6jkZxVbyPLC?eX&Qa`tfComOm-6q2EJ;dcn>;dcn>;dcn>;dcn z>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn z>;dcn>;dcn>;dcn?1A^y1AThz>Tj>Np&rFU>Bn5l(dv#f)g9ZjP)qZn4cRKK_`CTb zupe%I2Zr{Z;Ti?Oq{-U@Tbv1KiTiDKPrVRKBC1yXyeR|o|G@cEtZR#H0}IirKbXvb zwFHC?@7^sp;R>r?=aO?TtR?|(Kc4Ag9r*w zpb{tRGR%J{kzOCi_ch;`Ht~@b%mzfimwqtAkbs_}Ci<)d5v-0&iBmqp#QZ;S{xQ`? zr{>wPkwTdY!%ByMxP}?Wt2rW|dv`ZXYH!5+KXCqKPqf(vw05*MJA8Jh3IVoSy&Ywm z1gKt!lX{%ciur%w{QWc(=NW&>N3qER{vomiJl|Wjv~VXm4>++b*`u0^`M>A z#JVv5|5N_6srSyF_@fP}miXKXpYtQCk33k%x^y4>eG@IYS3BUr8IefNUjX!!+9RpC zJdjCEu(jP+2iXcw2h#NDh{a!fUuqT?8R$)wk(@)Ig{+TlHWzk6Pr^gt^(X=y>L_uN z3k0C$Kl|j8i-MQ=@>kyA<6s2FZ(h(a={LJu@RRrPAo0zl1NPcnk``DQT2p0eO&6HarV9mR&EK?wavg(+vYy$$OoL{<( zkZpwD4Jq7N=?_q$#ZJdHscqmD{7BraRs=E{^8HVJ1@Q2APN`0?ZY*Z87; zcKEYHnIc5Zs!HE;p%j(u=Bx^oYln>?JL4p(M8keAB;Y_fccxxF2m0qE7cH1k4petb ziF(CEL=SXiOwdn2XQ!xSZWyS5oyHAeu|JS?onwZzc`hH~Ry0q@rLaMw?g4#sU@l>7eSG?a7|CP0J0Ms*R8hXVE+Fj{>J$+pRPO8g1FY6OOsZ%!c)f(Cx`1Ict}$# z?oAZ}HGIWM<%&XZR||KFwrN9>)r_sCye@R(uARSomS_YwPc^HrX5Zr@F;0-t)jVrN z{UUk4a5WG3$D->6YY3o!S9R!C76H_orKw#{1kj(oD4V6+GU7Ua7YpF!tI^X0I2+eKFrB`O_T_II@C-AQpbDJHPub=06nBcR$WY<78nl$>QLhIuvS6VQ7BMc{%P) zdN~sUPc}pG(%<*n&0vq2OA@i8Ty&0y(rc;C)1>Jy`w6+cKBu~f+y^XJF>rTR-kAFt z?KyG#U<5|ymD`amF3Tk=QS05jPefBXUvk+Pom4QdngKbx#6MTn=@>H?xd|;kbF@V$ zQ2MN}js7E=$`NiDNFadnOjo{qGFe}G9J;*^qK5nboBPE4{+{1hKZeD3C5++#m+7uEqD(x}1e0@vLPST$&VR>@n>kx*38XdehY2_O9-zDut66$t z1ekUr)hl#zAK2~GmpM)>%zvEuTT8@v1+iMuO$`}~Q;DzqzkY+F>>6GhC`^hs{57f* zz47=S<^Hve>}MsC^Tr;vjg~GF&BNCt^Q>=CjDM0m0Z#FRKEsiX`HvF6vBrP2^QTU> z(L5{9Lw8Thc{Aa~J{-wK|DM&8bUkvNKAPs^V>tssn2;sq`wCd`kYFu=p$a}KQqc>mw zTjp%v=bI`*xl2L{%m>$ZU9I+0YWX0SaVb97j$HrEp>!g4LxAc-vZ{rpGGu$*)PXKUS+#t7%1j>mBqOMz zVj2(q)HLsY=5s!hnrabD=#Q)i-nL(S-e3eq)@e8{I4(FZ@VLMpz#hOJz#hOJz#hOJ gz#hOJz#hOJz#hOJz#hOJz#hOJz#hOJ7(WmE7xnA+Z2$lO literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/d_9_img.npy b/tests/testdata_npy/d_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..333ff772a79d2dd958519214c48cb9e342ff6df2 GIT binary patch literal 32896 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 Kz#JH@9QXrsjmeAv literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_0_img.npy b/tests/testdata_npy/e_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..8b807c37e1bad5bead9a5ceaae66661a16144cfa GIT binary patch literal 32896 zcmeI)do+~$8V7LE1+_blWRtdZbxFEus?F+2MRp=0MJi;Jlr-#ig_7uoLfAP;E+wQQ zmCEHeA)}H#y0{D`cf*W%RVtTV4%VWzcB{3H&dJeU&-;gW&6xKx&-49#-ru~lIAgTV z(AZ*_$X*dQWjngdR)+G=O3K>yiT z{aA&jsjfuRR8?2fH}Z%fDWJo=m0u^4xj_*06KsUpabXt zI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsU zpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsU{I?FQF^PF*`H>>CY*$X3e~%)$H@uGq z{!Eb#9cwZpG8>8I)_~9lRUE>+I&UIdqk;&_f);X5@bK^6dkg>l=kKk-iwLu|d{TGY zGWxzoC2{U(Xkg^zz*%PfxqE>%kn3NRJl?wowlgxsb}8`S;>>(0f7NDia(3)A)o%bc z;Rn(7J_e(TJ1GSVUl3vE+QNxJjhK%io)4DO$M!A_9$_9gifHBBCd0LF3uJ<7A@kH? zuVA2Htl-kE5e^jC&Eh_u63d6%?8zHdop@kYeoIAmax=(zirS?HP~biGu#c)oGpL!2 zf9pHH4w&}7OLsi^7u*TixXSrb6Xsxu<)EueI=a?NNR-Ovl;(zB1*NfthRR!cV7`Mf zWmFgiCs|_80v-5ZT`3-H9nAuj0B=Ko$qZ5%>m~E>1&g=}9V2#ovk3crl6=vFTfjLP zm*H<#1-3dz(yW;RkO^@+IIlzq!L7_6b~ii+*@PX(^*rh@2mj|BY_jtF%|(|Y!a5)8 zhi0WD+=D}hl>#W3RFjb&NI{b6G@meMJ_z22(dfw~ME!c;eS;&7)t&b`H zv;Fjz1^<7{H?Pah`@{3r>(r6T6}GM7*NUOH?o0}l3iaeVCpCe!>OA&w?NBm9zN%#H zd*Oi3CuOA8PS=ELa?j&H-e@Bp@altp)QX{?7G4|vF{b-xwIr8!vyQZ@rTV%?ex4`H zK~Dv~-F(u$GfO%)J&(LQKpn1p!t3w9v0>VRGinu}GKV&mGqGmCeedg=aMSZ-tv7sP zUG>!G?y11QbK;uxV9eRcMW8sH z9>p~m_V@o!U443jCl}aRYcE6=ut@kKq0?Nqa?;9mZ56(&CeBfexw=UWM6lJ_>70Y$ zi~VbGRQXBaf{?5@prsq<#v;$9%^!@kpdcJpx0b00z>~ZPonLqz>cV7x|5$|Mf3S1x z#7e&VWF8-uMxT&OrT#=Brgb!Yv({yfR6)<(Ymx_*LgNWZ<6ofWJzjriiKe@F;`%2F-ZM1ez%(> zS!=01g^SX|&iX$4-`&q|uN?IxFsF&!dAKhmol`A$IJcEj3_oa<^4`x<7h*F4n&r>$QG;ALiz{4QI5eJ z!do?AL01aS&%UdpxE0T5tEyqew))V$Nfv{qH+3nMxg( zV^B+^&YwR(ui8Z6I3SJhH4RTh~3)Ra>@a(qv6)7*ss@1yp*$JgYu-;g-z4Obt z={p}>_f%l;t~=*uZ3@Y_MUiD0k#vg*e3B;=FO;ii60>!5{hUKppeUs|v$~BBEs4?g z&gK*_EE-$h5DE%Z!u9s}2tYfTw@+S%2h)NCaakK0A;Mf_xsWFWMG4-IiDuoO`{Tz& zjL$p_Cpl4ezpUotyrMVYgV*1Ij;CK5c4f7MQ^a^#wtd)%T9R)eShSaxL;TbwD=YMi zfaB-6{z`l!EJ@YrI#(tDSNHsn#?g)7#mdf&TG0Thm~S;B?KTcA+xsj zT|V}Gi1&StqMGo!itzEI-s zE?Ew`KhXMq@2~&Ua%WXz6wd#?_deqJ_f%l$Uazq~*dNR%j!$#|9Y6=r0dxQzKnKtP UbO0Sd2hag@03ARFzP$tg1{ny0H~;_u literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_10_img.npy b/tests/testdata_npy/e_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..1b255a6eb26d2133aa49a0bd016692a7bbb33005 GIT binary patch literal 32896 zcmeI(dpwl+9tUtqHFccRbV`y)$Ze&zQwaHv%jS|69jU~k!kkUfWJ`){7i%feM2bqN zb%{b3CHo_#sN8QE31eKw%siH^s@*fZUezDFUaytTwtHUR=bz{0dCl|u%=i2Gy?@U$ z2K&oZE9};ek=QP=OMRoqwhb(G10{7MPknW5C3R09mLJP~i>nW7qsQR!W$xbFJjBPh zG2MMV#6N53F49)gU8Je46sYup+a!sht(V|_umV^I%mL;A=K(r^4xj_*06KsUpabXt zI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsU zpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI`F9+IN>;bq52ge3GvWb>z>d} zgrD7T?U(H&#+Pk_=ySS=A>H^Nvu_LW|Ko=m^w-O&sg7)b(QH16Z#9@x-d{v!#kA#C zE@=eG%-m-*Nj^Ai>xgvmqCn~zU6?n0=fmq+BxZbHEIO6fpV4^Dp zyOUqn)-|+3FpGWIzB~;W{qoO(jY>#Lzvs&v4!6i%nRe6cv$r5ZDrLN-dmFgDDxzI_ zC4jQkwQSo|3PRc5<~k0|;LkQw4KHgWf8RO14DMqNKGpjDcHGzY8(HOtI>?&L6St&S zHbCUG@k&bhLU0f~O6RrrfUoNGpsOn9$PFr_TP~}U?C+v5ub)FB!{rVt1hfpU8phPT|xWQ;M|gTc{<^ zxkOl8D=*`MZa6YcQ17Klfv+&1r`K`~8nP|Ue`C-^UhUE=><#<<>o=24-SAo2LJ|ft zmT6_Rg3a0EW8NfDpx^K^%3ZA!7FC2iReQ)GOZ!Y&=hA=wb>HR|_k$Jq@cT-?ct*5z zco(6m$z1(8t`1VnRm_TOL=ZgSeeskj4?GJt1-{a2BxBZ@?=zi0^8V104_QxrBP6lj zL9`mXB50v0Ih33bg5|lY`kH1DFx=Oyvy;ssw^&Ik@kD?Q3YCcInBwHF(tq#z8iMJ8P|c4 z_HVSW582>Do-D2;zO)Jky{z+HUo6|{&d<*_!1k94GE?r>6MwS>^8;m@$(kyoA9iSR zNV}WWY?fgIsgThR^gmid8q}P$Ee#(Ky0ZCKr&kn`;DB64ws zyzh&^`vpfSj1LB})lF^|JXpYV^KD{wf^;`8Y1u|T7=68|{-Ue!T_1<)D|Ta~d#QnM z^W@ey!}YX8wt^y;44wZQzb76atiZ4PH`=<`BpqgNN~|WA5}&GG84!)Qf2GBieSQ)Y zG#@M(m=M8-zLnNvqEU39STr*5c@Ri$aj7>6p=N z>Pt@j%bqN`S3|;Ow}kyt#>f5-HT2{6dAOX|IV(h*|A|8qDiZ_FEOk5!T;3ZlE|;@Wp?%S zyqo`_78jS(K5K{VidR%~Y2y30q3w^$C5|^(f&YEIr}~twU?p^sQ-(ILmmKH5>%WeQ zjZAz>H@sL^I54Y&gZ=+M&42Ioo$d!Lgk(*OesXo5cwHXc#P@OWx6OPdKNmrJKG!YE zssc)`bJRjBM*jRibiF?y$2iVl1xD^gweX%ze>+8XTUaJCOIwNe@&N0nDnh7uwj<*d zq2Oz``-)oPb%Fk~^pv!d)ueZ^VS&yla=^;k|BZ=>kf?WOME!EMjm(*-81?2fmjsSy za4sLfe0{1MPtGW*q3;!u3Rmqu5flQ=Xk77&>i5rgGdr?h=U?c8g7V$V$KQ=2P5WdL zoGIKAqw0NT9;e(`R(>djg-T|8K{g%rT)W8*~!-23|CwmqXi3 zN897K-hVDI6V6`=u>P%^p$;;&WCh7V2>FI}vHS+ypw zmagN$C8gHsS@XL=lBHc#q|*tKr8#QH?zIA4Q~Anwb~PX&>7(eU5dbY0cC~NKs3Uid zO6oo;5r0pt)8%G)_V9m4{#fq=uQOPI4|nB3!2*8l9*V5W$ypn>R7m7*ziD%95|9Hw z>P$*>#QQeP*XZ(v^~3s&#wW}V<_Gih;p;ojADllpe{lYw1Ly!cfDWJo=m0u^4xj_* O06KsUpaZ|{z<&XeOJo56 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_1_img.npy b/tests/testdata_npy/e_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..4c795818af52e046fe524d2602d4f7832377107f GIT binary patch literal 32896 zcmeI)do-2#8VB%Qagt6`E~7>glZM6~HKnMDXIC=D?dYmxT*jtN2FYzgxpZ+tRFV>@ zrd$$EuDj%?q;XP%luMzFZDU^x9hY1NYaN|Gj%8}is;u?wf8J&9ZU5f)dA`5T`+Hx@ zK4rSi#BApjiWkLKm2SV!&RunllImIqZB?q0s)MV$hr6wdwW~Ybe&l(5TjzcD!_V(y z*t*#d|E#u3ld7~za|u<+U+Fy`l9bWMOM=^x3Sb>D2bcq#2j~DgfDWJo=m0u^4xj_* z06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^ z4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*z{hgnQm}>d>tH@nu%@!g9699g zzn7gVN^Byvvg&uNb=c&9WYcPu6h8ic{AhzFUrtZQ`OZmRz#~*MLtnC}oGdH;UMtq+ z3D6Eb6Z~+q4OBXhwubn}`IYNyV8SZXyQ$OQ%E}E`_{@L&cuH9MHCVIpvg= z07_215Eu6rL7(;WOIh+ls45HP?_+Yoi5lAN-^~S=#+i-Z6$l}xCeXy`t`N9gQV}Qh zn!q5Bo^-tKA<T zm~D8o&U7}|JW&c=%eV~&*;5k~+Dk}DRDKjgyOdDQqiV(at$e_oA%K|sPZ&qCO2Eo3EV`50Ob*ot#3b(@zi-?E+ZQCcl~4pFf(n&% zuz96DrNX8SQcRc7Uk&HL?8SkKV9V#A;Mb!)mCM5Zf295!IDf4ycSl6__pdWrDEo{Y zDp?ckRoM)4_|p2W4kC!k=yH?ku7Tuzn+nt`n@I38Euo?C&!4{sPHQvOmvTtqIj^`V zZW*Y(?4a8Ph@h)sL!xdg4g=17OG4-&abAjlzVD-lG5mc{X*~-PTtz|>@VWZIjxWne z-Mvi7@059PexNH>u6!I78OLS@UCFdTV>ue*-y zQ~#|royjJVxhh5XN*l-evi73QP{flKh*=l5Xtzrh8KhmXy1lcJuww5wNB^UNxMiD4 zX7XwYt*-XKmYGjUp5s)n@>L~7X|Eo$byqT>*cUEmO67tciqOF5CXm}$@QwFptxyt^Qs#VwH}?L~afaP^*R7>y+^m=$ zKJd*ebt@0oVE;dG|Fss()HR$TAPtFX84rd8@7zCHjA4*iisD=D0qr#3mA*Nd_$irQn}493n5D&+a4YJGbbNP5-N_b`F)KLl z%$0XvUrdy5e0`(>6MNF|dcC-n3lG|U)MxqT{LefNnw$Ntb|CRFQcO(gs3P%s>PAl6 zn@Gq|W$h+PJ8{?dW2{cWb^Bz`nZYs%>lXhepsf&kTFJfbKO3Zj-M+0O12#<0ZYP|d zlfBR5?!TeI`p?L};a>Ec$Ad{^AxNbj*>dQr_FYGE}ox93plZ-OrYTo|PqCN2#T_Atv5LeWrSQS$huRsmm8HNnjom}hYI$!5_FT=~c1J@bW6C5P|tt+}9?CM_U)e^R~CKb=d$ z=RP{eOy`iUmD}&ieZdfa z!#uaL72KC5eYPX38t4CL0LGuEA1WVZc3*RgHTcA@v~{O<=TkC=qQZW9_9;m8?)kz= zMF5YDUKwsk6~W!LA*m-0ir~2J>H>RP5ip_}Z(5xaL0h}j$)A%%ATRHkr4uUzdauNr zpshT}kGsF)dP_4zy5(MNGA@PwQiZP0^k?MB4c)z)GRFUV;)gnJ9A~5gZ}XSs=n=7M znuxHgZy&o>)j}-RWHVwNhwuA}mj+twy$F_4Q{t7 z*_rY6kS72#!)wJ@9Xd{aGbCgmBa8>HWnJHa7z_O#F!Qg~fCS#l>EV6NFF zFCu)|&zqY%c|^)2+9B#J&fCe-Kitoe3cU3V>w)#aJm7pl2hag@03ARF&;fJ+9Y6=r W0dxQzKnKtPbO0Sd2hf54=fEFM4sO8! literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_2_img.npy b/tests/testdata_npy/e_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..f707ef7305c4a3696b4f9a1fb07cbeda04f09a16 GIT binary patch literal 32896 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 Kbm0Hrfqwya8&)m= literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_4_img.npy b/tests/testdata_npy/e_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..14b1a79d59866253c305041dbfb752f0bca36d10 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_7_img.npy b/tests/testdata_npy/e_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..3d1838aec66c9cfbf6a44430ef615d55917aa290 GIT binary patch literal 32896 zcmeI)do+}J9{}+2Zsc^a7DYxiETL@aP3WR85^76wDP1tLx%BEnx?d58>P;!Fby-WI z5T(s_ar;S{EftE~@59U(GxHSX?R|^h;hZ>UJ5FuKZkO}@{qr2p%z2(?zTfZf^ZWkB zA>77sneA#R+D_U&Z8!IA>wUH7GPLJ=7;Eb>v^~6ixBIfTxO)4#x%Zv7WNq5!E;+w# z1Ix!<^0SVifgZ!qKv$1(fboH26s>RK+D{?H;qk=229zOAU5UK3_Rdkq7);S57yH~MEaGQ(&KE-yB@45T)<+BvD zModnRJR^p>`kYipnGP`2eK}Vyycv2AM{h0{HN(_v>0^EEn!%xRiN++}(=C(R3HQ*6f4SxINSIb| z^4)WFL}k?-*MB$OCO+%)_vFe}L-PKsJD(*8f$_7N<*Ogsfwsx}yyBBU0!(!$tIZ;G z;Ul}CI-2plVnQ8B(_P_tbWSVuKTbXcN{1{xR5(KL=XYB5cE*6l1DV%yGdf7^`P~J3 zUW$jz+giDq%(I3fGG_UM0NqtJq+3&M(>>272s@i5{Wyw(?QJEetX>OXN{J|_YF9Z~ z`q(~<$3zD{mVcX4)nZlY)!-v&kgE$24dg#xfA=@pcGZwOPQfw91COV7*S_4!_e=5STI?t@2{QbebukAIW* zp^j@#dH0&vH3RMRWT&=y$HCP6pKBkL)RIT)-ojvCE(y|DbV0M{?R6n7PTk?AVF$@~ zd%i=(zX-VA7el7yQNZ3J3fO;y3t_wH8vdp&nE(F3|MmMt@p>m4Mb~!H=@Dn9Rbtf&Q#bq_Q{PiKw#izkD=SBIp0dv2zH&~nwDE)e;X z&Ul92{8ULF-!~+E;+x~Kj@vU6y#z4g(&m$A!oDr!noLyUdeu-dqkt3 zIS;bd^6S4#m-Ls(jvL*L1>nU}>tSk&$km%ICel3Y1N-Co7yQ4(Yt3G3r>0TFt^UEm z%hi`JDquuQNiZd`3nc$m$BoS_BS(1VTI;Av6?;he?!H2xXvH;O!F#NQtbSDxQ>9kp!EZsnE+lDSqV zCeB&1e)kQD5Rtv^;>k{?FAdpElX|)>M*Skr%9_fm2f~pl3^zw0KWO}X9 z#=_g^!l$11cRim+$*rqKTgu3@wR^3%G*ke4W|y6rK?^WR*}^a{4iw){X-!%{fldwU zN2_raP~4&(^OB2w!@J`8xxW6yPi(Q1)<&Y~3TJ0us3l)L*W1Bg!6A960rtvt4v}%a zl$Ep-_Ya?Ie*f%qTVCnhA2th}|Fdz!_xDBM^XZQ;UzjhfSDdft06KsUpabXtI)DzK U1Ly!cfDWJo=m0u^4xj`72M5w#p8x;= literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_8_img.npy b/tests/testdata_npy/e_8_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..1b255a6eb26d2133aa49a0bd016692a7bbb33005 GIT binary patch literal 32896 zcmeI(dpwl+9tUtqHFccRbV`y)$Ze&zQwaHv%jS|69jU~k!kkUfWJ`){7i%feM2bqN zb%{b3CHo_#sN8QE31eKw%siH^s@*fZUezDFUaytTwtHUR=bz{0dCl|u%=i2Gy?@U$ z2K&oZE9};ek=QP=OMRoqwhb(G10{7MPknW5C3R09mLJP~i>nW7qsQR!W$xbFJjBPh zG2MMV#6N53F49)gU8Je46sYup+a!sht(V|_umV^I%mL;A=K(r^4xj_*06KsUpabXt zI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsU zpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI`F9+IN>;bq52ge3GvWb>z>d} zgrD7T?U(H&#+Pk_=ySS=A>H^Nvu_LW|Ko=m^w-O&sg7)b(QH16Z#9@x-d{v!#kA#C zE@=eG%-m-*Nj^Ai>xgvmqCn~zU6?n0=fmq+BxZbHEIO6fpV4^Dp zyOUqn)-|+3FpGWIzB~;W{qoO(jY>#Lzvs&v4!6i%nRe6cv$r5ZDrLN-dmFgDDxzI_ zC4jQkwQSo|3PRc5<~k0|;LkQw4KHgWf8RO14DMqNKGpjDcHGzY8(HOtI>?&L6St&S zHbCUG@k&bhLU0f~O6RrrfUoNGpsOn9$PFr_TP~}U?C+v5ub)FB!{rVt1hfpU8phPT|xWQ;M|gTc{<^ zxkOl8D=*`MZa6YcQ17Klfv+&1r`K`~8nP|Ue`C-^UhUE=><#<<>o=24-SAo2LJ|ft zmT6_Rg3a0EW8NfDpx^K^%3ZA!7FC2iReQ)GOZ!Y&=hA=wb>HR|_k$Jq@cT-?ct*5z zco(6m$z1(8t`1VnRm_TOL=ZgSeeskj4?GJt1-{a2BxBZ@?=zi0^8V104_QxrBP6lj zL9`mXB50v0Ih33bg5|lY`kH1DFx=Oyvy;ssw^&Ik@kD?Q3YCcInBwHF(tq#z8iMJ8P|c4 z_HVSW582>Do-D2;zO)Jky{z+HUo6|{&d<*_!1k94GE?r>6MwS>^8;m@$(kyoA9iSR zNV}WWY?fgIsgThR^gmid8q}P$Ee#(Ky0ZCKr&kn`;DB64ws zyzh&^`vpfSj1LB})lF^|JXpYV^KD{wf^;`8Y1u|T7=68|{-Ue!T_1<)D|Ta~d#QnM z^W@ey!}YX8wt^y;44wZQzb76atiZ4PH`=<`BpqgNN~|WA5}&GG84!)Qf2GBieSQ)Y zG#@M(m=M8-zLnNvqEU39STr*5c@Ri$aj7>6p=N z>Pt@j%bqN`S3|;Ow}kyt#>f5-HT2{6dAOX|IV(h*|A|8qDiZ_FEOk5!T;3ZlE|;@Wp?%S zyqo`_78jS(K5K{VidR%~Y2y30q3w^$C5|^(f&YEIr}~twU?p^sQ-(ILmmKH5>%WeQ zjZAz>H@sL^I54Y&gZ=+M&42Ioo$d!Lgk(*OesXo5cwHXc#P@OWx6OPdKNmrJKG!YE zssc)`bJRjBM*jRibiF?y$2iVl1xD^gweX%ze>+8XTUaJCOIwNe@&N0nDnh7uwj<*d zq2Oz``-)oPb%Fk~^pv!d)ueZ^VS&yla=^;k|BZ=>kf?WOME!EMjm(*-81?2fmjsSy za4sLfe0{1MPtGW*q3;!u3Rmqu5flQ=Xk77&>i5rgGdr?h=U?c8g7V$V$KQ=2P5WdL zoGIKAqw0NT9;e(`R(>djg-T|8K{g%rT)W8*~!-23|CwmqXi3 zN897K-hVDI6V6`=u>P%^p$;;&WCh7V2>FI}vHS+ypw zmagN$C8gHsS@XL=lBHc#q|*tKr8#QH?zIA4Q~Anwb~PX&>7(eU5dbY0cC~NKs3Uid zO6oo;5r0pt)8%G)_V9m4{#fq=uQOPI4|nB3!2*8l9*V5W$ypn>R7m7*ziD%95|9Hw z>P$*>#QQeP*XZ(v^~3s&#wW}V<_Gih;p;ojADllpe{lYw1Ly!cfDWJo=m0u^4xj_* O06KsUpaZ|{z<&XeOJo56 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/e_9_img.npy b/tests/testdata_npy/e_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..b35a9f7efa0e0e893e1c3ff8618f6a3b3d8d2b82 GIT binary patch literal 32896 zcmeI(eKeG58vyW8YV}E`54|bswXvlrR%4S(Qb;9KOQa$nNfJ^@w$YcbIyRB5Egh9g zWX>uPx~B|DUZ0~u$oGsHGedcWW_RD=oa&D~y>>fovFCdJdCoj@=6>$EuIv8Y_x+ri zsC66HuD6q+_)`w4?{M*T_EG;%Ro%dqrmm@~?z+dv&u6>W);&HuT>7uC+V1J=BE9bG zzTMkJ`dULzS5s9__Zv;s!>S*7jHL`59R$z)5x_WL9bg^cI6w!`0dxQzKnKtPbO0Sd z2hag@03ARF&;fJ+9Y6=r0dxQzKnKtPbO0Sd2hag@03ARF&;fJ+9Y6=r0dxQzKnKtP zbO0Sd2hag@03ARF&;fJ+9Y6=r0dxQzKnKtPbO0Sd2mUSxB5$vrtUOmp@?X~ka(8mc zo!4Jm#Y?zk+@nff<}dB|zxRQ_5C8fr`i`HoNFpYkYE(!2{UQ=U8=*Qjx}F^IJiv%l zODD7$K6{kx*`PV|jrj=fNW}>RxrI0wB4g}+*m9)|7Na6SOJ4+YEpF-b-VuYuqF~+)i3n;`+U1H91rW4I(Kzc`BT#I1 zrpGKf3u?q#{eDO*dNIVjDD3jgbx!4z*vyyqI+iR_x%W_~$cqcQreUjW>O>IVt>|yk z#sg0X4|db3f%-9X8R6^FftF1f$w_!fC=#|~nE4%|aj=pjd0Y(EXSD={qqqe;dw> z*bJHCOZUsSwC2|Lg5Q>!0tdXFbcB|7tE@J%=!OOo|cL8!I!F2H9Pm@ zL);>=FiuVqKyQJ8elW$LaaHhI=^z_)qU|kpIZYouKA*>(K5loCOK$A#RLgu>0kYkv z;tyUFgA*-rmZDQDu%oZUg?c?B3FCCij6202eV;ECzu|u05N1VKM0XyTg$9`(Qf_~j zf99rAPkpmA(7fm4l`^`CD4ppGzogJc)*nwh5NRwRAqRY1g8ii9d)Gp1zl0CxEot^z zlAJ9f3N|HaW3mgt+jvo9@B|UmyA=~}M-e2Q_K1;hEh6KeJQ~56|KWCqdz^=A|5*#= z)_gB$fX&4fH*fYz-S0o7<3CugVP^Nw4bt`gCT4YUF>G^UF3y;A54`YN%I()C+Qj7(*Ll9rbE^LQ{4!MIIo$e{pUY`Fx=aA;HOZ`b(*4^&|E2l= zt7pI1#A44A0`OeI zz9*+XAfo(ef4yGb)>l&FY`0?bGV&X< zHf(DX?gKtoJq7O46TFG#5*FRV`~|1&-FRQasirsE@Zj;h_Moh!!T0AcR|dN4CyI&O z@8wlilr}OmW4?vQrbgo0JUU>M9fznTd*1UL%OaHfrQ`Gb5$(Hde9}N+ShUsQn zxoyzCjV}rOR{A{1(yP;q{r>qvN7Bt7O<7s+G-TJ(C|N${e~9J(ZJkB4Yo~0|7ZJnz zEt_x2Nq_&dG?w8TNC!U?r?|^zb+D-_!%-`p54N?=Ki^Ig1Ix7K(DXhb#2(0d*t(Vv zmoJ6%nO|=PjgbW>qP1&5Q>e@+^DP54ul3~Fr& literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_10_img.npy b/tests/testdata_npy/i_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d83dc8a3f6a4f05c7589018753f76c427095584b GIT binary patch literal 32896 zcmeI(e^8Tk0LSrR2u7Ji9f3+WqH75|@D5xA*f*CVzYn^&Slk?Ij5sE;wza#6ei0Gs zX(<|9(B*lWM_3{i0-;~zyag!&N&^IBG8_mSrw&!_@6O!W-B~Cm&?*l=)QmfDi!uW!Sj8K7)FUZKz=rrxu0arI0?)7c76USyQJR8a{l+Ax-BEes5 zx}#rx6a5+M@4V&LfR$Q1oeO$ox95nNcBZL{X5+7uiOT(xu0^BdNb7sYR{VT|XtSeI z-nt9_9r+o&4>H>0nGwq$)`w4QZE?Fv@?0yL zUlDV^19lkcxq7c#aDZ_KH1)NjAe)KgCCCRp&<-%KhcZHmaGeekXUrdaw7wd7#9ZQBR(4 zGx{^W{;h{fBu`xEqH3c0=tLRUpJ&(3Nv1o|pYi^+U%TkV^8-{}=y$j?lI!0s*W3!e z){p*-_jkP%79H+0M0d9KRys|NE%|TE3bhu>%;?W}|LQo+n}3Fl(5$BqH3fdl^=~?M z#yr(AjQ))Gm$p_Yb5g7{D>besHHzyWcwN++w)MaL0gnHvV;V3#4h@fPKOUeQC7GGM zM-NtU=YcX@qHn8j;JOgj`+MwOQ*vOtg=C&8uA`}3|J+M0PR==_%+G(;``&N+gsZxX z{@O4|(r04Ztu9>uFAv7JmHdtCK<_tx5B=wBwoKQ1^^x?=&coi-+<72B$wd$UJvXra z9f8@s9_ZxiE8T_tSIOH24R<4@}i3#z?|`+pOxT0rY3Qzu~uSKJO1&=~{nZ z#om{2-`7L$IpgyceHKT6-Te{zqA%t*);Ao018@KizyUY_2jBo4fCF#<4!{9800-c} Hay#%Z_jvT? literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_1_img.npy b/tests/testdata_npy/i_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..f0d3032f753838e486401b4244f877f725f7ce2e GIT binary patch literal 32896 zcmeI3ZA?>F7{@zBAVs!0SQwCuGEkItn_~q#%RFoj79eFE>t;w65qTLVg%T=bgUOId z)WzwB%fP(^f<}i$W;zm;=nii!3WZb>3XD=oO_SEX$$~PRV}lyG-xrpVHX03 zJiq7p^_=J2dpzSksVwU;-bcL3n7n*dZfVR`K}=$SI7TRlDNvT~EzK#;R+i@FFWyhd zQK<44?yCxOO7a&zZ%hyg1qq@}Lcu=4zr6T7?{%AET#NwXfIL7Rpbp>xcmN)N2jBsC z03Lt`-~o659)Jhn0eAo&fCu0KcmN)N2jBsC03Lt`-~o659)Jhn0eAo&fCu0KcmN)N z2jBsC03Lt`-~o659$1MUNKV}weLu-Vqde`7ckX%c9)!10+4I$lJeT~Oa*Fa)nUi|C zp4cpNhSA1B68LxI$t@ZSUF-MmGk45x@Mny_+Y~J^B)Vuxe_iAE>n@V9mNnxiSGkDu zgZ+iw+dbsA)1H=H+eNx%I$y1y6f|ymez?5;+M#;LkY! z&6!b-loNeKpfyF7`EvYY&vlHKWf;JpasJg)2T1d?`)N(VpT?|%uBG}ve@}KZe&h`J zGtPgbC+L;%E7$0hU)Ygt{v3baq`ph0>3xt7|G_@P8&-Vp|6X5heIbz>MB_B6Mf`fy zVQ&2|yPr@s+d2yVjMsmJK2v_9*Fu}pcHH&jbNqv~J<{B23-~k6U)Ubnp!V3PkF!ke z{KD~o_riHlRe-{j7HbE8#`(Yc!_-81n1>dA`OU8D0UUqtv={Oq^@!%Pf;yZ7dE>$G zdgW@xs_^*_twi{^LAy4E>jPyc^QWt9I0t5(|Htdg+j1++c)rWS_*5hg4HKua>o8(0&W~SBH2Qbdx6yB+vpBSc3#_xIi zKtI<9C=^$n4;(gtKjZxGI;6ATzI=n07!UgFN$2>Bbwh)u^=9yAod0%n5v}jBQbYOa zOHw`82k<|8?9Rw#EBG_cU#1hS&T~6xT&T7Al1MmPm01vzyt6A NJOB^C1CNFW{sDL@_wfJ# literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_2_img.npy b/tests/testdata_npy/i_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..3b4f1f0d91626991bcb354129de909dc0baac938 GIT binary patch literal 32896 zcmeI(ZA?>F00!W)AagjP8yiCz+uekr*a&2`fKE@s=CThq84d#SA)U0NgFtN+Oj_s0 zOq}e85Mt7~BAZ~uOqoU(ma%b)I4G8FEewq;unOg)Qd$Ej1c41|;2M7-OX|tnKR35Y zn|scC&U4?kY3ch3@5Lp12=WE$kW8s+moj7{7xJ1cDn!VI$nunXl#<+?dCE-b?DKC* za#Yfp=T%t}g>>e8jaVe)#GxJ7ZCodL`P)&bT5_5mD#18@KizyUY_ z2jBo4fCF#<4!{9800-az9DoCG01m(bH~sq#h#?q*(U;6)jFJHZrxQ01%td`3wMGZHJ z=Y~U~oXj5N&shGh;mrJ>PvJ~-bQajCI6@Y6VVQ+2_5RdaK4m8@o0H3%5-cQiBEUcT zX&dD-)n6UBh8{3CZ>$}C+XiZ{pS?lrguSWC*Dds&=fp!digDj(EoY2pb_Uq%@&8w@ zj`g-vH8BIY|GOrb{dJ>nI46@It|oq;*~-1D`sVwfAhxxpUfGLv!1y{)eBz~_&NC59 ztu@!^@0ibDaadZCw#tC~8P8v2F&w%RX`r4&5_o*rKA(T_3epv9Y`u4m`zN#eVEf7b ziiz!3`pTtFqoQSSK7adeZOpIc0p!p4{&x*;W`8H8uJf0i>>~q-UR6Oc{P#lBt1A-X z%g_Vn=84rK*Oe_a)S1YW9fgTw0elb0vQ;hp_A+_^tGUmO%QQY!z3W&L4Nd#k^UCe} zdO$|m3D11=fVp{M^{5`aICNBKrLh+E1>K)~56C&zR4F`#9>8ku4~{F`Fa3|-TKdR} zy_HAew(>n-@~y9qtu!TDnC-1LE2TjFCT;p5zv)i3frAmeTOf$rR9W4)kv`|WYQ2WZdTmGyAw0SleiN9A=D5rvTvORO}1dgV8UR=x+^s=wo< z)1U`DDmgyvb!tq-2SZ2uh^RECK=T&g118$uC{Ycg2R!Wjy8G)Djp8LKsb-SoM}xP$ z%=dt#(_v#lE3cpjxB_JN_rW!5v!*uhY^3>LZ~E({$@_YMV8^;kMl-$_W<3Amf^DC- zboNl~^FI}iw(~teaWh!HEFL|;-Thvy>swXSu<=MhKgl?6Nw0dB?*aSHJR9a2*oXT7 z;|_#J>vjiyZzdX1nvXh|?*Va7sB%AUKo3}~edez3Q@PwD(Dyqd<$j1y9{#1B=(AHi z6eAbuzQDn~*PrRf{%3suyX(5db= literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_3_img.npy b/tests/testdata_npy/i_3_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..4e96572114f2464d8135b14ab69725afd442ab05 GIT binary patch literal 32896 zcmeI(ZA@EL7zglzt4yL9!=R&dX(76Tu(^?fh#hBU;3PS9th`k0s)*vyjx}xBXlXYli)ej;nsUvOeeshy{O^~W zd%vCYJkRfc?@eyQ?(AK!><{1_=9NqG6`D6nB*|ilOqnE!6HAoECEAj_cXEnL@)b+> z)AEWmipBey!aTKN@j5zD8YfPa#>9!=7yrj2nCCn0P@I=`0Q-PGKp$WZ-~b$e18@Ki zzyUY_2jBo4fCF#<4!{9800-az9DoCG01m(bH~+X4=4t@tTd%A>vEvggT7#_FLt^~u`qgu7G3bFrq}*Ne9O~& zi0nD7Xy64W@p^ljGJ}R`d%@F@iQTiPKV$Wu>3_RQdD2ObpV%jI*z6=Dia(XA^DOtl zC3&KXzsW=oRyTbXHi=yDm7k&i;-o*P-sv?tseV;&XG&fd*`P08SlH?!`tfqdjqpj* zu;usdWuj@!J!5nKus-%~ZR?%Sou!T+iR{U=X?n1Itfjpax&N^J!u_QkVE;Lp)jIc$ z*$SoO-_y|aqc@&V!Fg8e{NTEjIf4T@UyJxiI%~{mUd#f(Z2x zvwi=dgDdsA=$7Hr=DiN`vA{Sn`V#lPAE*rwY{{^r{*2ClO8BmjtLJUh{NX3wb%R{) zE2EMtEgNpbeMal|!4Ad7FDaM%)^8_2|EnCi&w5|9R{k>c@jD$kIF-7NjJsoZ1pHZszTu1Kv3Xk_)*83mp vTiOBiIr;#7fH{BzZ~zX#0XP5$-~b$e18@KizyUY_2jBo4fCF$~WjpXU{qya` literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_4_img.npy b/tests/testdata_npy/i_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..92ecc2ae38da3858a102a7bf064dac981c61a37b GIT binary patch literal 32896 zcmeI(e^Aq990%}ab)c~YXSdSu+F^IYjx1=>BD@F3G9*wg0ih9$kX<)z=pdDf9LWk5 z&n^)~;lwLAk-Xb1QjB~SzchuKq0kP{3B%2?F$^kBEP`o#@BFjtkM7~Uf4=wKf6w#& zd|uCIKfe1`C&eeEKET_;dtbahJ2y)!ju43>RZ?+?NUX}y=4mrE89CbZ+0*Z@%-oop zJ@tO>+nJlPr|yHpB_X14$&wIJf#_ep=JC9*5sK^d4qzWp2dD$|0UUq>Z~zX#0XP5$ z-~b$e18@KizyUY_2jBo4fCF#<4!{9800-az9DoCG01m(bH~&4Ks(>=1eg`A8vN+x|BGxOkneyHZd7(42K@j3|Bl>5d6Tp>kK z>SqM656|TP(ZlU?O@hnFpYi`ts-s9Y4whx8} zdGR+Vd#GdW(K+fA*G&F5<{LVC-?Jir#{2(IANxd<+({4iH4Yz849(4f!+P|6`L~wH*U)y7YLL!fDBSU zw_%}wGxvQ^$Oc_N!kT-(58-nF^A5I+uc|H!a}e`qv0LgkaC4xptofGbf`j?>-#-`4 zw)^pOZAVIbyGe1N>Me_gn*-kv-tzx^emC-G{2VaJ+LeVmJ&mj>TW`2OGN#eMeLKRfovj?ee` zc|W%AciUI1(pE~-eRv=7b_r$jf~^+fa8FDfPH{DfCF#<4!{9800-az z9DoCG01m(bH~SkiGU&TaUlZ$wk>Ap9KqZOYP-XpPU zrCO`Cp+95&ua)c82hDR)X-|T|SY@V_uOH`Mxn(Bdr}u43E$JufZf#amz$qGE@qEC= z5WN0-@-z55$g}d{+FPN6G~=3~^=O%${?c(hGUy*C=AE&5XLbK#UE@dK>7SRhsAgJg z;^2U{?63PLKT{RQTgcLA)#VRPJ0{-;1~k~OS9Ln@df?dzPk+v)%KmDf|MHD;{X?Q@ zxvE_E8h0M>O{!w1WF^l3rb?%0^?$^CJ*>%ne4kXuw8n0@GB`Q^t(M;Rto0VmKjZWN z!&uWX{rNW1r0MxR<6W-5`C+4Ydgfj9XS{z|^^$jt%_d?U9jTM|Iw$8pamMFg7VW=@ z{*3qM`5F~Qa-8zs_fv1##r5aK_8W&68_=Ke{wrKL`h)3Bl;04NqzvTxoAOKJitP;( z9z28dOwVD(^ZxJi#n*Q&*QkD@aSMxeG ze4N1bH}6Ot`*~qE`ZL~t+74al;i6ue>y(xi{yH$x+xl-o%lF}}i$*jP&FAdqa z>wtcNvxSGlt?1AA>wuy>xU?(e4iTvow?}q!{Z}mu>)NuQ3;h}IZ|?7m3ae-)l6yO~ ze*|&;56bwtRWG)oKkNOshTHf{E6Ik0lJv1t+;zaj*&7|Db#>^^cz@Go?S~Q1QM%ip z5A`Knf78}WcM5B3h-di>zyJ02_2v1LrmcOUjcTTUYw_!FkXhd~{k6JpfMn=hK64w- zp+DpEpR-Zl6Jm3J?=LDjMLHk9`|)-Uu>SEQ!0z|{&=-BNzcJr%01m(bH~c*`z`(*Q2^J#$ zJVQ}T1f@HWoCEnGl*9+R3|kC#2sVS;!5BCgV_a7tNk?Ox><*59y8dWiU;Agb{k6~c z`Tjii{ciU?y>(K-}>jyvPdmC)yA&8)AKXQ)qLH5^pm@o1BT8)pogno@E4tg+Zg0&pg%roKJ4W@>Cl}a-32uorDCO#Mt2lGRB-x8z*f`L`9fRwqMi?%C-`RKsZu)bH)+wGA>G|4 z{G+@kP1L|Sq)plV8&T}@=qcD`>uz19<@_%CaEAQzQVqH@q`P$)mg`X0Gn!jp9P1*& z6K^zr$z9z2klaxbd)*}AJkMyj(mD$$)`-FKBfefHYBdKwuP>2#pMNF0{eX11-j zbq`2rt=y1w2i+Ogec|_Bl~Ot)3Hxd8d%$x2K3%cK#joxjx--1{!a2~1uf8Zu?WM}i z=T}`W8Jn92oFCyhJZAe~;l9A@*&|^8|5KtPI%1BokKq6ufCF#<4!{9800-az9DoCG f01m(bH~FCF*?!YKP2 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_7_img.npy b/tests/testdata_npy/i_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..7ba9c425c723102ad8028003aa6ea0c670a2fbb0 GIT binary patch literal 32896 zcmeI(ZA?>F7zgmW(1ADmWkcF&sN&iZGoF4YDz(h*Cx-3bYJ0u7uD* za0qIsL^s^JFpN4X+o)Te!(#zOw(?>vsI}e7t6+I)7GpM*IohS%55_NkS`PpF<)ru9 zJ%j4}8rpXlBRqj z6|%|uij353+2n7LR3a8gCBb5WQt*VAFVB5BDMr@}U>?v1=mX>c4!{9800-az9DoCG z01m(bH~gVNifw)$a`!H<1EX@{9Sy)z>`=B+-|ow2$< z&asH5oU31XS?E&&iO0623s{aEU<_)m*6yS{uaWex{WH1T+m()c4L9rHzPs@3t^biKr~l>IeN< zZ+W@EhV`D&zCXWo_k%{;7)=@pY2V> zqm9zrGIJI8o>#a$Ja^@y0py<1x_j0;^@8p1IR!mLe`-_T_EPRWZ@;Xi{fDq7;+W5_(_=^MbZqiw^+H@{} z%YC%%oiM++lW?EW+;0vpk4n?_Qj55GMefN*&vydnUr5YO9)kOf)<4=>R^JtSk#uTa zHOxA~z2}M6kAHZ!y92prwC;lY>*{;dL$qJ`eOPm-gP5QF_KoUd?mf>+hTGo!3+Fqm zt@EDe>5bRrEjwYQzFGQAzbMZAf}|S5Pg*N-&uH#F_4kZ(4{BTIC`YL1?k{IUf_3!8 zsPdSNMOLi$)1>~MKEUXj0rtM%qOPbb`Wm^018@KizyUY_2jBo4fCF#<4!{9800-az R9DoCG01m(bIPhc+{0nJE_^rw&!_@6O!W-B~Cm&?*l=)QmfDi!uW!Sj8K7)FUZKz=rrxu0arI0?)7c76USyQJR8a{l+Ax-BEes5 zx}#rx6a5+M@4V&LfR$Q1oeO$ox95nNcBZL{X5+7uiOT(xu0^BdNb7sYR{VT|XtSeI z-nt9_9r+o&4>H>0nGwq$)`w4QZE?Fv@?0yL zUlDV^19lkcxq7c#aDZ_KH1)NjAe)KgCCCRp&<-%KhcZHmaGeekXUrdaw7wd7#9ZQBR(4 zGx{^W{;h{fBu`xEqH3c0=tLRUpJ&(3Nv1o|pYi^+U%TkV^8-{}=y$j?lI!0s*W3!e z){p*-_jkP%79H+0M0d9KRys|NE%|TE3bhu>%;?W}|LQo+n}3Fl(5$BqH3fdl^=~?M z#yr(AjQ))Gm$p_Yb5g7{D>besHHzyWcwN++w)MaL0gnHvV;V3#4h@fPKOUeQC7GGM zM-NtU=YcX@qHn8j;JOgj`+MwOQ*vOtg=C&8uA`}3|J+M0PR==_%+G(;``&N+gsZxX z{@O4|(r04Ztu9>uFAv7JmHdtCK<_tx5B=wBwoKQ1^^x?=&coi-+<72B$wd$UJvXra z9f8@s9_ZxiE8T_tSIOH24R<4@}i3#z?|`+pOxT0rY3Qzu~uSKJO1&=~{nZ z#om{2-`7L$IpgyceHKT6-Te{zqA%t*);Ao018@KizyUY_2jBo4fCF#<4!{9800-c} Hay#%Z_jvT? literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/i_9_img.npy b/tests/testdata_npy/i_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..30fb4b61a90e160fc53608e132999965b05a4048 GIT binary patch literal 32896 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 Dh!}r) literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_10_img.npy b/tests/testdata_npy/j_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e26437a7147ddbcc40786ec45a452df84377df9a GIT binary patch literal 32896 zcmeI3X;4#F6o7-$vP^Ls#bpG7vWSf+2#S>PDhMO83?i*!Rg^_Rtvmw)MPwo>B2ZC5 zrh_bsDOh(QB3AT<2$cegtcl`A5+Dg7!B7Puqa{&%Kb`46p6C5}lb2uTeD{3!5Upbo$T-~sRecmO;A9sm!32fzd1 z0q_8L06YL501to%zysg`@BnxKJOCa54}b^21K-~sT!Sn$9P zwX@p8-Yen#M{U7U&szb>?A)52FYpYzp$@{Y4!!aYKd{$}i{vvKQBiCceq*>`o=raR zr<$(^T6HEg7t3+Y{fHsGvWFq`;qI{4Gk^+oz-|uwQUN z?h@U4ta?1nHT*&+dd$ErrD=Z#`R5@;p3)U=nwvR7fUaj?955 z9zVpV$v_{j3Hh+h)<=qxhGu@y%OU4LhMILy(u*NaAM-@jJj@n7_&#f4Ct|H^n&#+E z^53G_2UfuRkE+~9!@)a$)A4DLME6~4*V(3 zpJrg=y>e0oj_aA5@3xxc&oaGu-lU@lX~Ty(FlFn2aa8ppCGioCvwy}R`sE*akNDqj zPq)YL!3V&f;`J|IB}t2m=i``Pv+DBlN&c+)%v1b7T7W;r`ImdFzi|2HOH6RRg|(g} ze?cB`@J1?}15$ne)3XQ(CI&^A(EH}yz`x`Ff^86!uRe( z%d;f^BwpDy`-|PcpW^&CTQ()K7t8UU)BCLay-5DHYRBS&*`M|U=>IX*_kqD1rs;2w z$xwKqZeL0%c@AVH@myeUprm~KROkDp_`L194{X}qg~Fv3-Y|ABld ze`Edo!t2)}dA>pvx@ez?$bjUZ5$&~ngGCqAzZNic&jI6t`gnf9&roRW0*6UA$#b9` zCh0B>B^|(@;`}*lS6kkRZb1QQUQ+kH3Y2Sqsn9%AiDny_ZyopWDe$K#|L^9WGU2>e zV2+XZGuO06bmDr$(4~?6|N6Z4o))eg1-u!r5Fc*^{uJe(G}0jVOo08m6fWs0hP_$Z-ai(5|s@(i! zx0Fv&%}Xn@=MP$OnWvRbtXKiwAEVwMU9Wcnl>KTeDPDDjI7UC*ihnQIA#9Fs#)&11 zGC%Y_!K%B0x3eOIIJ|c;f1pi*{|PidH-(|Vm8bgW;DN8#1OEXIM~w{t literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_1_img.npy b/tests/testdata_npy/j_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..585b32968cc90b40d3e453da15bd845642648e1d GIT binary patch literal 32896 zcmeI4Z8X$b7{F8;erOtTaW8F{5E-j4y4`%h@rN|9*2$ANJ_(GhhB^X1@II{XNg`dFGir zlf5coug6A( zaagM7bSH+bg%iWt)*{j3Js&eQ)Q=Gi*YO>IeSkQCIDk9=4}b^21K-~sRecmO;A9sm!32fzd10q_8L06YL501to%zysg`@BnxKJOCa54}b^215?=p z@ukjw($`8j_oz-(@_Z#?yZ;?5Q{d$@yII=HIxyWqN1tYN7a8nTEM`?>{A<&Q!$uzP zC(YBW3n5Jmxe{+GU!Tdbl;MKZI!@HE80p^VPcOGtpwNm=UQV$b1vo5Q*PtuJ{Ol{g zF$E9@q{RUvk!^g8EyYXYYDEoahLC!F^~#BBo>>`hR|+5dRdVV&Xv0tk2&)5H`GwW5 zZpyJmzrSz6f>u7o9)z;@5W}k0;(+@)46Wjl0a2r9 zfxo&ykX!c-6qamWQXs)wduO=#x5*~>yL_^F;r1K}@F$#qUV2QK=1m#Cy@#$~_*4AF zO#SmA?r(hn{>P;EiBSh)nLFyFC`U6QfRjPZf%?beV7Hw3^^?wbvh{_YF4r!}5~1fs z$=bm>6o1$8I?y2j{)E>7IHk?GzZtBUyF_@vmPaW!LyNyom?+96)Ry)HX#QEzJ_(?wcluZvR5fff#j-f!1T4 zz@PB^-_rUr%aSX?ZqZAHw^5cm`B0kPF0*WQJ_h<>mAR^A27uKWO!l zDz967l)8N+DQOkOzvhCZ-LCrq@F$$V(Ad1BmS2aYhWbk)+Ws{M@Uhu)&EQYqPdNV& z>-lkKQ!Zie8oMEHe~SM}kFKv%)}KM@O9!9twDwX6o1o{&{KM`a2||w{~dTdZ|osQbsj7?ea16BH3#@! z-*V7qBb)~#oqw}tJI5?nhQp1-l|E@QWH35g{^?aETJ1-(?8|u@4^aP!t^b##UN!!Q zRdc|gO{cf0&j0xcJUyTPu0-K|F2xMh?*yHH3OeYitsr*&r04f!>vOc3n-SC2gL&)Y zUI$(uL?tV4u>-Cvk>j%aOz{~Z%8hPan_v%fz{&P;s=jZNe8~HcCJ7GO|7eL-b07ZJ zbe&(MyAV%*g^d>#-^Bv$Z=Nu9dyx+hmE9~3Kh9LjdfIq~?Ft?vx2om)s-1h0xT`79>@NvwStPH>KBz!J(?nggS|tjt8D(he zi_x52pPOoV3vq8}7rXQUd=E5L^Lx_!(qwMaw%dS0trFL92f zVHjQR`N6QcZV+v}{&X;;u>%#iXy#{{2=UPqaiczGf%~NUJH@@QdnCVeEUgdkc`0EQ zS(oC2M`#{DSCwPo7j9ZNLhoR`K>P3*t6m&l^xdP*R4Mi_nl@8V2mk-@p>v1(AK!rw huwJXd!F@ygLi|Ghf(O6@-~sRecmO;A9{4Xj@DB>8dIkUh literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_2_img.npy b/tests/testdata_npy/j_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d2cbbde7a27b485802b37a81e533d2bf796c2df0 GIT binary patch literal 32896 zcmeI3X;4#F6vtt}ipyAP5Kw_eD@FkwsEBCM8$*JiVpDJdWTvDn0}J^yol z_kZuaCs?!2o$IZuvsGs&BOox^KZ>!0&TtBHWZ2LdL6K20QM`z6BclQWho8If!lDC* zo<|4sz7HI_pW|R}LwB&BYeU~f|Hx~+j^^>0pI{|05|{~01f~LfCIn*-~ey{H~<^~4gd#$ z1Hb{`!2iVoKWle=i&-*kaNqs11-%syT>fOK`PVY+bR<4HxsHJET{Xf`FF&mc3Z~?+ z9%BQJcdQG&1vz^3P3RrliPXN^-HLOokYetYgymagpg+a*k1u+hN4u%QVZ{%BDwuxn zt-cZhX{I^UE*WQ4oN%Ta-Slh|x-4x6{VAq@B5l|2w)^GSp8Eik6}K;5ulzw1zrDJT~FP!j9?ymgmuCX zd=?+NAG3?H1&Y`adFiCBRKh=ng4rX{4FIK(V53HWW-Mm1r z0raQ1{5Q4AN-IcltAb7IbX6SpW7O))~syL0bJx(}Kbd?0ZOX#b2p- zr@#FT^Vt8dyq53vmpw7x#CP!ur@gWm`@?1!h2OGc#jKqnm?b*bBXZPMl z#60J?{HYV^1K65%0DJ&dbsw2m?TM#*ycd?>@8;zbVq?+=xN3YL_<)f(QMJ8lq~>`F zIxzo|-N_U+=>r`4R?q*dM+QDXBRqBYfg^bxteoj%5F|%zj?WI~AkqhjvQ#0aKY@rq0Go#!M*+u4(JzF}WcAL#=Irp2ZPm4Xi#Z9Qpge`d})!|)_I z3ico1MTU?*z;-7dn|lF#fVS%Tq2pFZOU&AnrRbn6#*pPq`T*0JNx_40-~&E1j@sIf znVFlp={d%EA-%;$=A;ks3aF0F%c}(+pb?h3KA>LsOaB3O2fp1C9^UnW^Z`!J=btql z1s|ZTbv@c~oAMGWZv81o$M&YX9Sv=!=byG{1|OhpdX9FyadkAs@~g$Tb$`kkCY|&FetP^dVfx?$MjKCU>;FQw0a==N z;8)`(uA}`;`hZuVt!p{q-~+Tx&yO9i)%2oRhx>9=_?x|5WhChX!mN4DHM(**7uE!p zy88j{#>D<8n>669*!jznJfa?dX&D{sOmx6EWKhxgQb|i zcjfh8?UmpIw3GwS1`R{b>)pkEu2loePFzJ2iQA-%*h*wmn8R;rYDZNpK{hv{2f0q= z?5-&y5MAeje?`_q6z0=aD(Gy-TdoC3uXhrlzn1EMT5hvxg0~dU=Ga>#&r_muqogO5 zV+fQg5^V2wB~ZqrNckH^4>H_6#_h?X2gp>cMB`%a;n0*N3+;rUyS8&*9mmgLUzTIB z>-q?@T@O&R=MQNuCmx}K(0-G1PSq%L{d40qej`3T@X}ynO*hoJme%?E^0YI3vM?u9 n0s2x@-}mVc?}sBm-E%z97xabvhWZ8$00)2rzyaXEzjNRpCysT0 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_3_img.npy b/tests/testdata_npy/j_3_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..746c83b0184a5964850ff7dae55be75fecab79fa GIT binary patch literal 32896 zcmeI3drXs87>DZ}m}18aR6$l1?WU}OfLIuMKon6fIzcWO!Wu49LBR@$0#Yw1qBsQa zb4~>&40IR;fiMpjMMOXbav7qqRw$R2ug-c0oOFS2sUa~-mW<=uf4-bA{iEmoz3=m! zuW6H<);O;67{v%^>0pI{|05|{~01f~LfCIn*-~ey{H~<^~4gd#$1Hb{`0B`^}037%~ zb3lE*S9D&h6xVZYVyNRC@cT#Qz>?1`#~)s<*F7V{W6!GDhL5Vn2W|SrzTpk1>~%!l zy#x199B)_tv>UCsD9&kr>hBcv1z~;BTA77hFL&Y>Q;jWNH?|<<_6jLfyy4@khgxJP zQZS97exn3i1&v;KjV*)x3CTZi>E_jsUs5>WWV4$zLW)nHQj=O0Jwn0Oj1;~%HPi<# zwm79B`!`%_dQ^9s52*JDNpp4vD*u0>0J=2>@H_6+5}WOtG% z^x|D&`+hhcerWeyOytSQi#m`2ryxf3QxZT~lJ$ROyLC z*fiv6)q*bC`-0@2^{mCcF@G1ht<&h}%{-siQ|d*r&^g>#>>VB|jU zS0~R6$ak(q@{PTl6U}JvyO&H<$la^pd5`e?Q*hjZCQ5=Tx}r<4C;hx1t{a))KN`HR z%1ct#k&9#Z>{J(HO;X3-sS>WdR+;@hSNl;qFANP|y zXz#yTobhK}Lp$V8X#Os}`4;U)V%)JH?@f!C_Wma4gjDn6;QirzNy>emrM5UFqXd^; zwft(52JQVLHQW?^SMWY5IS;pw-~#VNPEHLQ$Hq<|ZLW*UYVr~?8f28IeW*+*4+xP%S z=zH1PGvEDxZf;L|$M%*s9E>uj$}AqB!1Re1>UUD8NmBaE++BtYvfGPyEUAX)J!J!o zobP*BLgs~>Z#pq^`3mm!0ugH6XZFH;RyjI5$04RXJqNRArq7CQ&cxww<^*j$U59o| zJ|A_b|83swx@$$4LN&*pmEHbPjHa#slAFeUw{J%3JbWmhyJ8YcZH87e*3 kbN+?AATQ`wm{;HcZ~!;}8~_dg2Y>^>0pI{|;J@I&UlNRdng9R* literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_4_img.npy b/tests/testdata_npy/j_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e6a263652b7c65a6c57e62a0ef5627e1e5dc3064 GIT binary patch literal 32896 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 RcmO;A9sm!32mU<|{0XnGi@pE= literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_6_img.npy b/tests/testdata_npy/j_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..86e52dd331eb2ed7a27a1360c202ad079a5eb043 GIT binary patch literal 32896 zcmeI(c}$ac7zglbi3d&;Ye2zh#RC}iz*T~v{3>E)%Aiwp$f%TZSR#X37^NP_3@8di z1k^Z(L2w>e@c=~y_ES(n!ckzL6O===(i0RJqRv5GXd)pdOP1KTPycE9CMA8I@ALcg z_r7mQbzlDtYvTw~Bx$>4Kw!APz|w(gxirY$l18-*3KK*K{6c-h1Ob5q$C-X1;eq|f z!+C!E!2Z`(c61umj&4n(?xg<5hapMx=)~|m&;jTJ%mK^+tOIZW8~_Kv0dN2u00+PU zZ~z|NDdXexyDuj{$HxtKObP=;T>7oABq zZ+c4c16Sy~yWj+cV_I_`cqCzprjD6nE?qt z(kG(U$y+jOKi8)gIlXxGaDt(7a9^jXw|}2^J3ley`k@-gU(*ocoaZw(E8Ap~?x8~C zS%u@O6hm_7)b@;Q;gmq`1j~J5ftCNvhc^(@mX$s_WoYhH^RGA7+nj^k36?u)*%dM` zJP}D)JEO@PhUU(o4CH?Lg98LQZ`H)8$MwX7IdWGOY;Oyk;A?e&`v z&KE=O1Y7T{lE}85v3GFAf%}X%kK`!EV{xJTciP;0*~c!F_f$dd1j{}4nRG1ekOX^P zFtGURgdDvM<)*JT*XCZeaN~0 zJTBQ$V8Al|_ximae;*QUKVa3xa2(~>gnd+-+EvzaWRO$n>zt*{owl5N-eP_$iW%`k zTGCb}CR+XaTF=OWp0lqz+L77g6&(~e8RSk7 z@A>cC?D(Be@Z`AJ$;!o2WTG^&aIn$l-n%D{JVhi$iwn%0j?RVqGDPvglaW>Y?9XR- zp>q{k=+=(XzHlMiskPT@eX<|rq#Tza$&s#<=_7`}Z$p%R=t~{NyI;GrOFD4zd!dlz z--@Qwwzk{mYIAq49OXU!wi3xA%A{G1E#UlT>OAXi;kqaEGuVES)!w+3ji1aZr(E8R{n&Q8xwjBNbv(Zs6Y4hM59C5f5A@*0{f~!q&W$7wxby#SVzvVvSo2nFZ(a_u( zY=s4TX8qv%KexK|{qv-UAB(IJt1&0qkV{^B68*YdZeYq(AZE?QW$W)LQAn|A#)?%9 z$SY>QQ!GCZhj2aSP}=LTc+B_4MgEP5s`PO^w?>7QI#!M?&Q~KwtB85x>TrdYDSnhTZtqArL>N1w;*>N%l%^qZ%Sk7*_Vot(Qn7HMXplRa_{h% z@#j@&p+~W8-A_uiWBJOz&yH3hvoH4usp2-oDS0>V{fpa>yN>7n@f=9}j63^IH(-8x z$d6r7H*mc929w|@2_hv3`ugh1ac|I+==eJA{@~;H!|Q<#=#Kxx<+a3)Ws)#jjcd~K z%WIsJcso0H*<}pBs~oOhaD1Qxxi_@% literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/j_7_img.npy b/tests/testdata_npy/j_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..b438698911a79a6282ced7c0c8b9c64a1f0bd2ec GIT binary patch literal 32896 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 E7m721+W-In literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/l_0_img.npy b/tests/testdata_npy/l_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e9386ff7d42592d6b74c1f51b35d0ea5c1bde286 GIT binary patch literal 32896 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 Fz<+%KMQZ>6 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/l_1_img.npy b/tests/testdata_npy/l_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e14dc5222fefa2b973b84e4d52ea97f35e317969 GIT binary patch literal 32896 zcmeI3YfRH;6o(m-SwRf}76Ro`WKb5naH|Z__!hYdaw!BfY=968gM^zPupxxbRoxUA ziUA}bM3~uD#x^&uGG6AmUnWJyP#6@X(yoQFxgiEd27KWE{ofCJC8uASHaX47?|IMD z^yF=EU|0Y@{57pitqW{HZ2H+Wwi}CmG|rXHVX@;<($1&FB%eu16U1)5?;Vqv9=q{= zdVEZ3?8a+57cPh8!hMUw%4N}f=xS{}mM}bTCIC6WIe>Eja{wLy4}b^21K-~sRecmO;A9sm!32fzd10q_8L06YL501to%zysg`@BnxKJOCa54}b^2 z1K_@uvg#f#!!#H=6cI`%z^=Qh60&jkLO=1gk+WX+6UgUcgql%vS~y<4?C z|BQ-D4_6l?NPoq2sNg-|Pbxo6`&v#<841Xr#+l{}=LbF%e}`|Y4tnpMM$Py05(jv| zU(=jPt@pUI&UwBh!=vrC^1Hpt?fL&|cGBa-8_!U5-kjbZTi{PBKTZ4MU+qf8Oci#G z_Nu(*OY!eeDb6L;su07&SM03^{58#)^m^AVHn=k2gLa7MdvG@pIj9VQGze4SSq<(qr2CKL6jd6LWp$Pbs&XI0^ zc4|Xs=8t_?y4y7W7=z-!#1lk2MRp^%iU2`y0`RAsFX?slJ;qkH+{c*rrK`L3r_>&( z?2v!{Q~z-^cjn%%&jNuz=^W|yXE_)WI^8*otNl(d@7AUGN8336UD7a%@~w?)2AzRF z-F!)}*e=;RqgL6PPXVU9>v$dJ)@5>Np|8Un{Z)y)TG1i&# zQb&$E9T##fW`RHH9O?G=flXHZ+3YD)_|0PWpWW0RpnI^%eKcd^KG;9O<`F%>pKiXS z*U3W_wgYdDAQgX~!Bflg^QDe>}tF-2S6Yi2v6?S!*w~ z2M|g#OW09A;kF!R#BXpP4Aae*^g4!pUv;TTE3PZ{E3fjU_!kvtdpv3T4heX|RiiAJ zf6_V9?QfFVk+ME9g7pt21c~~oJpiM1MI|hdp#3_s@{kDNPd8uE>z0)PFG?Jzaq8F= zorIGVf6hY#-vRLyYVPrMD{=?^q;sU(pT|@ZF8x`ChqLas1Pm&-_ds@OB_p~r8H&DE z|9A-QgYDSwe||T2mtaweolLrtodT4oI;ZxY@jEJ{Tew;j**lB+M8b?4{xJV^=j&Ce zn@lxy>Qtz9>^Xl`I6$A93GBT8T>@9&3g;T;8ax0V01to%zysg`@BnxKJOCa54}b^2 Q1KCOyurSS3E+XJo6hv6FVO9iD`Jz*@aZv;%AaWbRh@wTRVp3EDjGHhTWnBz8L@#Sw9Ku6(=IQ7(1@zFm|kZeLvZo={QTj>wVg?%^@w z$l>ea=R?R)MnC&Ff)}W!^Uz7RxaQy7qidS3NHJ@ei8v>xlG7L7sU2b2570vTpKK*O9s}V=AdnO8wD0 zr@?=^`mJmCQC|sJX(hf(OWv~G=&sd{^FQYimHO$@2J-mVt`3zC`0E8i(Vq4(U% z3k-dD?EIj4b>}#Lp1XT;@Y)U%^OvD7Gavk?tKYhMpMv(P!ZZFFl4DW(NWQ9jd=8Af zeh*zGW~jVxkzvq%%z>`*n`&KN{pb9gtQDj**Zp{&DVqbresoM5GOnTl0vAzCD)>*e z&$_xkQI-+*b)$?veD* z{oPL1|7Ojq_yrwgUv>;hH3t8w_F320Cter`A3UTXl`hd`18!^%;3as@wa#UzA~&g5 z{{iMe*EvqMzSx}xWkVtbQQu$J<%FnuUzH}{<_X_vi130YP%rH*&OiB$LS`5h-w<0pyyGJ9Kc!rih);`BhJ=Phv3(bX97!V z=s|g{jd?owbA|WBeJrz&ezhjFnjXkr)nGly<^bLtrfiFrMN!hL-z1Wx6sKl8s%;B|hcJ607H`G7U0q*{f x4}8HF^Nr^l9)Jhn0eAo&fCu0KcmN)N2jBsC03Lt`-~o659)Jhnf&cD-e*xF`ImQ40 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/l_3_img.npy b/tests/testdata_npy/l_3_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d8d73a853ba2764b2e31909d37683a6170cd812f GIT binary patch literal 32896 zcmeI3dr(wW9LJ#)ib@F)P#!J~$qI`(goem)AQXjw5Q8a1VUd@x3B%%JR4~mFm_XwZ z=0M_uWYmDjf`IX?yj|W86B#tn%gV}Q!GyFyO__oFS2MBxvs}OTpEG;so|$ugpWpp_ z_wL+H^YroX`b=GIm)bt_;1Kb)7;`(GxqYauxqxRL8Wj^8Bis=X6%!ot{Je`$Bo29Y zUK}or4te&Ozsg3yTV=CMz>DK4d1$Fk9wQXv^9rC2=mYct?gMxL9)Jhn0eAo&fCu0K zcmN)N2jBsC03Lt`-~o659)Jhn0eAo&fCu0KcmN)N2jBsC03Lt`-~o659)Jhn0eAo& zfCu0KctBM>;1L$%*e&hH`|p#0UY-TDQ=%Z97B@w`7VTub$grs08~jz( z+b_DV!5L&Nv0yHy+m{}-*Zs?JaKw=@vu$_V4D zk!SXyVw(T>g<^?DEknE3-R&)G0)JKIr|h~?a_^q`XA?u0R@|(QZWx&6t}FZeoz$Uz zve&6qV5bZ2%GOua=ka>$j*Nd$N9Pcs@elXe+^ebEu^Q6*->x6=KhMPUhj;uY8u#)<*$$2=Pduy(+`CcaWZn*HeB-1fzAE+{U2$Y zW;3)c`_O~A$bHW74-HuC7qE|^YG(#>v0>wU)4D(yFT~voJ}iDTS$4f%aM}{+1wBO zX~nls7F5$u1-4P5qu{S>eN}y)sK5F`rmu_~Uo7oxSi|PNmiwOpYs3tdju~riZUlc- z=Qz{#IV|$ft~$-omak4t7}N|*Kkuu#xO}8Dw)m$1U`z^U@B|T{H67bl71lXq*#Z|{e+UFsN;FT2cpJ`oZ%k}BY)5fgdlacTV%h4QLHurUn#05UC43&8NzNoMP{AUZ#|GQ4T z_5(G1DMQbPy}EFyVqiM=$9ERJ?;I&7L9Si3?(<#uF(gfz~(8Y2# z_Y=-LjLh5HK{|92C(M!ioaNtXd~s~8W;2NvYL%>?&*pxiRr6b|Rh4u@_l|TuCApsn<|6kw$A9>nqW#IE3_a``Vs(YGxgYVP z3B%8j6TedqyHnoA_r0l{zyt6AJOB^C1MmPm@ZTQz7c{Irpa1{> literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/l_4_img.npy b/tests/testdata_npy/l_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..9d8b78c67ab6710959381aaaf0388db85a44f337 GIT binary patch literal 32896 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 Fz<+%KMQZ>6 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/l_9_img.npy b/tests/testdata_npy/l_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..957cad5f4045431c6a11b600271532132076b907 GIT binary patch literal 32896 zcmeI3Yf#ix9EQPA5V1%|NUjPB#Wq@Ogvf9TTtpIBQzSAJa$&SVuIgxtu5z>FrlgXl zFp5s5cq5cx0`F2jBsC03Lt`-~o659)Jhn z0eAo&fCu0KcmN)N2jBsC03Lt`-~o659)Jhn0eAo&fCu0KcmN)N2jBsC03Lt`-~o65 z9)JgU@xalaP9E{g>!<5a9T~UFPJ?^zBVb;g^{Hz3Z1LSoo%Cp6*pRWQmMBA8!*-6> z5tUn6++^&Dk}0wYZlKTnU|Lrvrapc(KYM{jMf~+GweFq~ySk`Msn2zFMnJTwSasrhfB} z`%eIOR(<;f}yEk7jDUNuBant-#-GfBGMf z`T-Q`a7SBFmVOb;am)k}(y?>yZRwXRVnY0u9dE>?^kD{^eQ_K1$@^EkVvYB&* zb068^%X7P8Z_vpl+J41x@MqOGZ*$fk2yH&$aEBBO#T^U$UEn|W%fvtTNIGboIx}Q% zE%@`sja43_^NA&gyt;{JsPtj9uW;_u60`YPrQ$xlG~MZRcnA2i>YJB2&z2|7Z=R>4 zu?oxFcTIXn&wWPn>A&~aB>l9b02DxWD5L; z3N!NmS)(Q%x6iDRSc5yOzImIY%I*5iYfyjRYv)bpsByw`ziju0XhnA?$*~H$VeAh6 zym4cd$1`O1llC0_eXoJ?_)X~o|Dwrlamz~d_q`VNd{`d@{;c}uZI1Nm67}|^da4QD zSFzVfc>tCl#MMM$rW5uW>tLo|VgOB<=yq$2E1-1nlqabuOocJS%c z^tzj*_G_R0>a7C*A@5wnhKAeJR}xy@T#o(Es&C%rD3vveoY(dDy{7iG@vTlus04}$xP!V5W{H}LBGP7}Pr8|xkW9Ug!O-~o659)Jhn0eAo& WfCu0KcmN)N2jBsC03P^%9{3j}(Lgc) literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/s_0_img.npy b/tests/testdata_npy/s_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..f4651f09a4ae2dd39ae165f7e60bbc5abc97b0e8 GIT binary patch literal 32896 zcmeI(c~Dd5769;|AWLgiWW=o+5CH`(D!5SWL90*{mD-|+bQB2S0*auZXaNOzxKR{D zSwwtAQB<^ufE$Nh_C=H>D1?v%0wkBJMT+=%Kxg`2XRNiR)^q>K|H&b`uBTo zvUhjtf3G{&P@g^5aGE~*d-fY{Dy+e+6X|sz1C$5q1L^}B2jl=bKn{=t{E^kjY(kWf6apf?BDB5{J8sk zZa0J4eeO|L+oia+eQBhhMGLMjc3WoiK!{2h;G!cfKtasRBaW(BsOsY7rDt1%asfrV zM7piiAMbg8j4Hlq)O1da{AY5NDZ49?#~rVBgkKL!zI2+eG?fAUAuVMF{$gO?I(aC* zNetPK`$oEyb%5)Aqh#Ch3}~*Oo}$PkS#t}8EBK?J6&x7@8ODFV&HQYmwm zhc&CiXUSDd$%}u87k7_pPVXMkhGi21*qXjP@S0=3&}j+-5u+OqT`Fk@_Ob-j8>+S8aw5q`+;UU{JYKzeQL?BXKC;3_@rINO8=Y7^|cZ`^J~N${%~3itl_^JJBm4=rwA$cl8oaeOo$ z?&5yQsvXSCdn+$4mV$msuwD9oE-X1dwz9qS&)4apdC-EW&!t%LjESvTS%+)n#2%mT z;GyQ3!;+rwB;@~KqsjjJgxaXkQr$WMhH|2MRnqFgKUqQ5XbS_p%%}@VlUg9#7BkI8 zKEU!*oe2Sp-+bPF)!gO0EaJ_N|Io(eySiS@;t5Z5%p_=Mv0$COZ62aW}t(c=T|za1v+cT=uJFw4fCIQ8|%i1@UwZRzLEY)^?X-#`n%&S9}%G4$7(}f zO0{77M^~V8cV^!4n0DYKRZWTgf`N2(Eyrh_BFOX@a!_w+I^1{xRcA*C$??I$$lme4 z+8=4NkFj?3GMJba5cNr_6pI$LEuYV+MXRrz)YBCCP>{)Sjg4l&u;`rY9%P`RwDt!{ zrU>FV!#I~$*R4T0XZvz8UH|xlVGWbOr{SD*LgrT;JN>q3> zKfLdK*%&g@=ByfnNsIal{%hZYtQ`6L`0Z(^-?!(IT$WXEwSjL`@gcT+XAWkj4d}A{B%}`?-QT5H$PisSvmOG z2ry1}$knY?O>jkfbmYhsDGb|pbXES(9pIqY$+7aTM@w#wU6%6Oi!1AVzHjj-JuY$8 z^y)xk<$RZDV=mSjtg6XfT8dBWgh^MXwPAwR*x7o_>({4_tve^8kHN1osBoyf6iqi9 z304?oKe8U)|7&+ z@A~EEABkY&j)bV02AOa;-{F*@DGyy6uN7ZT>v-*X`)GEVPqeuhS>9WXbJ{NdUU#1c zv-0W+F<9v(+3h-$^V**$tNi@i3z6C=BIVAvh+(Dhvm zR%p0b_vQ=ndPH*iv`6`noBG}E;)_D~UqP0<$#e;X^juKwi(#N^NUP$j=_IjE|2_QL;d*l12Rv4Q(qd~`C3R+#>#a#0a;APY+ zTz(#n%O)y>RUGK|LB`il@dq-{iPH>k92g@Co$qEHHGu?DGsZ-&WlN#Ra!{V*@hzXg9#G<*I!pqoqns6tn%O|Jup0YF@vji zr>x3)#Y3eoN8hKFchKfSc#p`x2*O{iU%vNM6=YT>atwTvAzsVN?~8@m$X7bfzwB9y z<2OG%7avCJJXzK6UB&%r3hUvmVI4RIjDM7Opy#>oD(@6$AOo^nM^XMM|I~jp{>TAx jfE*wP$N_SI93ThC0djyGAP2|+a)2Bl2grdB%Ypv`?oecu literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/s_10_img.npy b/tests/testdata_npy/s_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d6b161998e52e665c00c618fa1b56eac208c246f GIT binary patch literal 32896 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 K$bk>bf&T#KE>;-; literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/s_2_img.npy b/tests/testdata_npy/s_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..0032d2ac46e94078d80ae51dacb370dfa787019a GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/s_4_img.npy b/tests/testdata_npy/s_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..98f01f9880c458ca463183a25cbe6b411d28f65d GIT binary patch literal 32896 zcmeI(do+~$8V7L2+2oK)8tFDCLYs0;9mQiMx~DAFR6DnjONYX)w(e3?O1FK;7N>i0 zPEu47j}Xdjs4cg|3}(#jO{e72&Kd2s>yN$q=lnI*Gylw*cdc3L_dd_}_j%vnZ{9hz zY~|ABYlbLoRoY?X;~Tai)X0`?G{3y&QR0qld<$&e^IY17O1LOcXKn{=tbCKfq#1ZGplS>dXfN*b4Mjg3u-VyAk5z3SOILa7VU%p0W@u2?_}r1 zfZEYBYmUE@KvKP_pl-GZIBwf51GGC~iQbKjA9E$p*H(P7u}26NDb16fSMYHCSc~r$ z*Hix$wg2ZYj}F{k zg`WFi`q!^_K#x=EmG zc;nr{$>1{R#!a)4UVDKp7q5Cn#`7T9z%OTt9|J8cjm#=%F~pQb-0|Jj4CXJ?s`^wi zAVw{=!JSivhGtd!22MP|T9wk+CY4%@y%1I7h>gf?HNGb}*^Ii0qcT~Gn$fyi^_t2A zG4)@;`X4DyTe2WUi2q6$ld@m02+H3Kl;eH|3`_M}XgJW)~Ic+NwA*a`I zab&m@LZ7M}J)O${N1�JG2o31pyI$PsDim#}PmG_S1a++H!TXzG}qH{!YBFI@?+K z8V^34Up@nFd+l5^vjouN8qb{$kFYQ3rz_Ws1*o~<+10VVvX35|zBKXbv6+;MFEtmh zPU{A*(vV@k)M&crUw(llH!>}r+!8}u=$UD;R~e|g`2)|yN&xwr%VSzCYQg+FixT6z zg&_HDn)g6O1%98K7rkm~E84$J(hLe|!O5;mTkjog!_4kEW-TkFA9G?{<&qXVjdG%> zIf-qu@*g(Pj!Nlm!pVXRxZz;m$y*_Y$#xq(IJ2dok>2B;w2**tZq)>3%fE||C4hvqb%vSDcguU@a!@B|-AirBh?fv)^n7({m8J~8Tc^^ZKZ`vp1}y6;J!Sq4wfX!kxW_!SJz z_x*KfHy;wb^nHS(8TdC#YZcp30)Dw$8w#IGpp^Y?|Iq^s9E&QMsOQ2!;(@NMdLV-& ztFti+*GOQmd1QQv@DBL6K7N1QO@N7($8HC$Bo`DlUpr-ai)Yj__-bOVN&i{_#>DJ4 zwzTEpPMbYz?wIg#*^x7s{Pe5QygAJ$-8dV}gQt{4NlGE}=ZfdY&3Moky(hYUf)tdB z9(KL5Vc>mW-Z~y%3VXdXG=q9lAj~eia?)$T$LoZm)`7+~Sb)w*tub1urnwSvj3U9|)s?=LTlHgp$7wZeI=M3&@b zJ@x-Xz&_RYOV3+PLEWMFJO-1eV4&q5A$lH6aX1s+R=6GKs26uj2IV>190rC6!D`pU9Px@)G&4WQQ9erj zSG2raxg37BG(w7{>g6ULDhyhfSvQ3C{JBpF7nGkJk*^zWAZxx#R~s(5x83ovW)1Ef ztu)kv-vIt$ULn_18Tc+oZ@zAb1h^sV7GxS0Kuq)z&Zs)tUsja9&oi-!y*^!xrOCqu zGv)h!Jt2P6gm3dP_Ibu*{ngcYe1*g`RrClAxCiXC=aphxfa>{4XG_q*`;w;Luw-2R z%in_h1FB)ujy~l9As@s*D+T=$3I)ZN>1e^F-qNs17I(pP}89jS zwjwZIGUu+n+iXqOR=Ztb)JuQ6oJg%h~$V?*@u` z{@?nzy!z*+T0LX%KrU;Tt)UEcnj3oA9-Uac>4oN+zFKsPOQ@`>sYVH}$>Sf&&vAUq zd_NslC#~N;1n0}WPyg0)Pv<{a0m?7sfO0_dfE*wP$N_SI93ThC0djyGAP2|+a)2Bl L2gm_(fE@TA`F#^}_jhl1 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 P4xj_*06KsUpacH_A*xH& literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/s_8_img.npy b/tests/testdata_npy/s_8_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d6b161998e52e665c00c618fa1b56eac208c246f GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/2_7_img.npy b/tests/testdata_npy/test/2_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e9cc624beeeeb2c931e765ea5cc20de4e832a240 GIT binary patch literal 32896 zcmeI3eK=HUAIC>*BrFvoqST@n(PCxUAGKb#h(uJYNJ`dQW4wipLg*nyTJ)w!Pn#&S zEhRSK7g67uAkTvz?EUH!3L*YoT&d(S`TI_H|X&bfcz@Aq@=^E>w> zZ*;J>-6}*0q=c&PcK3IqsvD}R8|^VrU!khL$CpZ@y87(&rS5ird)(aB%io=M+~331 z&z-lgp|86_RbN+gg=)C!Cw{~!)1M)Pw{I(e>wtZLeSmX-IehptExjMFcb^tSaC|AZBwatMss~YCWOi4I; z5>)@?cNZxPf~62WQ*2ca$ob3N>h!HgC8drM?$0^c4}9*2Or77GO;VUBI$z}5iAWZ* zyFB;6wQx4lnw7e_;0Om*8eS4V@RCGfZ(c4AqchNCfyze1-g`(%*k@SgLIY^kJl-e& zj0N;D-h8c% zaVMM*yWngP--dH9Ai2+}``!YDaMAOnVUkDAwxcaXi&WR4-uJq%U+QphO8@~8_Vx42 zMw8I8b-DR3yl@}rbI<+L&^htd$pl&=Ii;^N3?TlIb*qr8ZJW55EqPB;N#N=kwxO?{^7h1AvYS(o{ zH(Ye)XnQ9}rOn&8iO~=C`(_$@&x79;D2^ zffN(Tyu|Sy6l_>NmNmjficW6DtMy4V8JhAqn)g2N?;7_%{k-WyGUv9c5Xk9!%8O&^ zETot{J7-r=1FHMFZL&|H47%MsbK}@dn50ieW>^s5wcG4$xgQBb)!Ol0h6LpAXw4L* z^@GW6TWP1Kd7u*rF(OXa9K0UwrEHUrU8`>=bd3R)}%=ciT zcJqjziuU)yRhzjYUm3DNf=)^A5hI~JX)1KiCIZrD#}+DI>;rCk`;*sBPhf0;Z^W}- z?xBU-yN$*sn8;!6D;14&{9Mj&I)ChX((_)qoNHwvlXd8>Lt7!NtzHxP(`NGhb6DL= zn+YE?0(2K9Ror#u&DTvEg8L3PA`?%&>`2~vj%QY8hxOMG=wyAut1#Yu<74N+$KO_f zfBN&9VEe>oibNIruNdVnVIysJvGaoP&iA@c>&1J|!i|b}{lJcd^*hd3u1;XVyvkg? zOsh6v$SyKVvdBjaqo)7VD_yv8urjd~sgnw#TJ<4rq(dyeRG30}(;HL~~IiB!#>VnHyM*V#ltTFck5+ zZhq1AQ?KLK8%k4h{#>LnT3n>1Nk^)IxwbVP{U7*2skplITjn6-m&v})rZJ&Cq0CcN ztPSib2{Zp)P>T90RI9BX(2xU`^MOSQt_pS^@w$@sp^bq*9U%>9wu*onV)zl z>V85Kc$zJlST5Uz^%oHR|ICv;snu0N$2yS5@u_HrRU@=_g*WLL6F`wY{$lv>BiLgk zm8N+S_YMABH$mM`J*USEi0en<7o-vk%(`*z1vK}9>R&vrw-xyO=P6i6tRwa@&N1cy i<^bjZ<^bjZ<^bjZ<^bjZ<^bjZ<^bjZ=D`1h1OEjivz4C! literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/5_8_img.npy b/tests/testdata_npy/test/5_8_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..943b0906ecf27ff295b322f910783f53bc6d2ac1 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/a_9_img.npy b/tests/testdata_npy/test/a_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d470cc0b3fd18fc3fdac5378a309bff61539c9c2 GIT binary patch literal 32896 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 GI`BWD0j^a5 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/d_10_img.npy b/tests/testdata_npy/test/d_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e50f74cd6295c1b214f57fcf4f8f18e50dd559df GIT binary patch literal 32896 zcmeI2eK=HU8^9^5wb|EKvDqvep|n|1qr7e@+6ZO)(#l6sDrtO`sFtPH8_m=G6LF>0{r6w*IiLy3*x+YoGb&Tprgs&pG$+etzeEp6C2% zz0PX2ow(Ruu>egMSMRM}nu}F6jkZxVbyPLC?eX&Qa`tfComOm-6q2EJ;dcn>;dcn>;dcn>;dcn z>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn>;dcn z>;dcn>;dcn>;dcn?1A^y1AThz>Tj>Np&rFU>Bn5l(dv#f)g9ZjP)qZn4cRKK_`CTb zupe%I2Zr{Z;Ti?Oq{-U@Tbv1KiTiDKPrVRKBC1yXyeR|o|G@cEtZR#H0}IirKbXvb zwFHC?@7^sp;R>r?=aO?TtR?|(Kc4Ag9r*w zpb{tRGR%J{kzOCi_ch;`Ht~@b%mzfimwqtAkbs_}Ci<)d5v-0&iBmqp#QZ;S{xQ`? zr{>wPkwTdY!%ByMxP}?Wt2rW|dv`ZXYH!5+KXCqKPqf(vw05*MJA8Jh3IVoSy&Ywm z1gKt!lX{%ciur%w{QWc(=NW&>N3qER{vomiJl|Wjv~VXm4>++b*`u0^`M>A z#JVv5|5N_6srSyF_@fP}miXKXpYtQCk33k%x^y4>eG@IYS3BUr8IefNUjX!!+9RpC zJdjCEu(jP+2iXcw2h#NDh{a!fUuqT?8R$)wk(@)Ig{+TlHWzk6Pr^gt^(X=y>L_uN z3k0C$Kl|j8i-MQ=@>kyA<6s2FZ(h(a={LJu@RRrPAo0zl1NPcnk``DQT2p0eO&6HarV9mR&EK?wavg(+vYy$$OoL{<( zkZpwD4Jq7N=?_q$#ZJdHscqmD{7BraRs=E{^8HVJ1@Q2APN`0?ZY*Z87; zcKEYHnIc5Zs!HE;p%j(u=Bx^oYln>?JL4p(M8keAB;Y_fccxxF2m0qE7cH1k4petb ziF(CEL=SXiOwdn2XQ!xSZWyS5oyHAeu|JS?onwZzc`hH~Ry0q@rLaMw?g4#sU@l>7eSG?a7|CP0J0Ms*R8hXVE+Fj{>J$+pRPO8g1FY6OOsZ%!c)f(Cx`1Ict}$# z?oAZ}HGIWM<%&XZR||KFwrN9>)r_sCye@R(uARSomS_YwPc^HrX5Zr@F;0-t)jVrN z{UUk4a5WG3$D->6YY3o!S9R!C76H_orKw#{1kj(oD4V6+GU7Ua7YpF!tI^X0I2+eKFrB`O_T_II@C-AQpbDJHPub=06nBcR$WY<78nl$>QLhIuvS6VQ7BMc{%P) zdN~sUPc}pG(%<*n&0vq2OA@i8Ty&0y(rc;C)1>Jy`w6+cKBu~f+y^XJF>rTR-kAFt z?KyG#U<5|ymD`amF3Tk=QS05jPefBXUvk+Pom4QdngKbx#6MTn=@>H?xd|;kbF@V$ zQ2MN}js7E=$`NiDNFadnOjo{qGFe}G9J;*^qK5nboBPE4{+{1hKZeD3C5++#m+7uEqD(x}1e0@vLPST$&VR>@n>kx*38XdehY2_O9-zDut66$t z1ekUr)hl#zAK2~GmpM)>%zvEuTT8@v1+iMuO$`}~Q;DzqzkY+F>>6GhC`^hs{57f* zz47=S<^Hve>}MsC^Tr;vjg~GF&BNCt^Q>=CjDM0m0Z#FRKEsiX`HvF6vBrP2^QTU> z(L5{9Lw8Thc{Aa~J{-wK|DM&8bUkvNKAPs^V>tssn2;sq`wCd`kYFu=p$a}KQqc>mw zTjp%v=bI`*xl2L{%m>$ZU9I+0YWX0SaVb97j$HrEp>!g4LxAc-vZ{rpGGu$*)PXKUS+#t7%1j>mBqOMz zVj2(q)HLsY=5s!hnrabD=#Q)i-nL(S-e3eq)@e8{I4(FZ@VLMpz#hOJz#hOJz#hOJ gz#hOJz#hOJz#hOJz#hOJz#hOJz#hOJ7(WmE7xnA+Z2$lO literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/i_0_img.npy b/tests/testdata_npy/test/i_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..19a7c2a7b104c4dc957862d9a9659fd262a4c746 GIT binary patch literal 32896 zcmeI(e^8Tk90za$yz_!^qM!o85cLrR;|iuN>pN7)I1)wD2oG9-(qRzWv=u+AX{2;U zNr5O}cHv!Sk2rU3cAeU*G%Zxjp;q`@BD& z*XO(E**;tI@=I&u9<$qSm&GNg$dhE8Sja8kyo?JJa+@<`3Yj!LF+-M|GJZZnx>cSs zc3z$;eJf?`{UT9FpimUzA1KTb{>#_ncDC0L#c})!;5wiVPzUG(H~^!)*}HnYUoY;Zv6ttVRduGx{a#n(%%Hs?UH9Lk zpPAkF9G0%UnOV_HMap@R)6QL=%)j2FDe_ydHso(>9Cqhf$syHIZF>_DcrLCgy<(os z-|pS${=SHl%+~#bJbcv72iW(lEq%6&+&KNTQHq5YlGUHzxpEla_gM8HpBweFr0Ho%{QBpT()qcsp5s;gUiokL z9l*YiS^x5Dl&LFj7ZJs1{62FYKlcp|{;JmeD&)_o`xBmJKmSDLiR!Cl!@=a?w~P3> zuW6sIh|=hpt^0}fKdQ%}=!)nLsf8}tpVbm*Zz9W9y%}qNh=0y=cS~$zoXCXy8SVdX zwr>gu_3ETki7L2m20!<8g(s~6pY*_eMsuI=PGY*S=ry&58afL<4qL#_{UJ$X?X~V7 zkw4@4f2E9(h&z5E->ZrTe-iO?U)x^quUy^?_ZiRsbGNPGXVraVKUe<3hSmJs&l%vp z$k^70{29&P@}ZX`F)=tDKBTwAfEF~^a-oSkmD{v z1#7y8yKG4~mt`>eW#b&X#Ec7KPDhMO83?i*!Rg^_Rtvmw)MPwo>B2ZC5 zrh_bsDOh(QB3AT<2$cegtcl`A5+Dg7!B7Puqa{&%Kb`46p6C5}lb2uTeD{3!5Upbo$T-~sRecmO;A9sm!32fzd1 z0q_8L06YL501to%zysg`@BnxKJOCa54}b^21K-~sT!Sn$9P zwX@p8-Yen#M{U7U&szb>?A)52FYpYzp$@{Y4!!aYKd{$}i{vvKQBiCceq*>`o=raR zr<$(^T6HEg7t3+Y{fHsGvWFq`;qI{4Gk^+oz-|uwQUN z?h@U4ta?1nHT*&+dd$ErrD=Z#`R5@;p3)U=nwvR7fUaj?955 z9zVpV$v_{j3Hh+h)<=qxhGu@y%OU4LhMILy(u*NaAM-@jJj@n7_&#f4Ct|H^n&#+E z^53G_2UfuRkE+~9!@)a$)A4DLME6~4*V(3 zpJrg=y>e0oj_aA5@3xxc&oaGu-lU@lX~Ty(FlFn2aa8ppCGioCvwy}R`sE*akNDqj zPq)YL!3V&f;`J|IB}t2m=i``Pv+DBlN&c+)%v1b7T7W;r`ImdFzi|2HOH6RRg|(g} ze?cB`@J1?}15$ne)3XQ(CI&^A(EH}yz`x`Ff^86!uRe( z%d;f^BwpDy`-|PcpW^&CTQ()K7t8UU)BCLay-5DHYRBS&*`M|U=>IX*_kqD1rs;2w z$xwKqZeL0%c@AVH@myeUprm~KROkDp_`L194{X}qg~Fv3-Y|ABld ze`Edo!t2)}dA>pvx@ez?$bjUZ5$&~ngGCqAzZNic&jI6t`gnf9&roRW0*6UA$#b9` zCh0B>B^|(@;`}*lS6kkRZb1QQUQ+kH3Y2Sqsn9%AiDny_ZyopWDe$K#|L^9WGU2>e zV2+XZGuO06bmDr$(4~?6|N6Z4o))eg1-u!r5Fc*^{uJe(G}0jVOo08m6fWs0hP_$Z-ai(5|s@(i! zx0Fv&%}Xn@=MP$OnWvRbtXKiwAEVwMU9Wcnl>KTeDPDDjI7UC*ihnQIA#9Fs#)&11 zGC%Y_!K%B0x3eOIIJ|c;f1pi*{|PidH-(|Vm8bgW;DN8#1OEXIM~w{t literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/s_7_img.npy b/tests/testdata_npy/test/s_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..64de19a6320b9f8e338438d6aac065a27dd38488 GIT binary patch literal 32896 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 YpabXtI)DzK1Ly!cfDWJo|J#B802ky|uK)l5 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/u_6_img.npy b/tests/testdata_npy/test/u_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..8496a0ee3378ae1aa7f4e8ef9fd18c4727626bb1 GIT binary patch literal 32896 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 QbO0Sd2hag@;N5iKKfm%A!2kdN literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/test/x_1_img.npy b/tests/testdata_npy/test/x_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..b1afdeb20dd67c6bbd7283ed9b3526061d0241f2 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/u_0_img.npy b/tests/testdata_npy/u_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..20c5862da584de669d2e50def1e8e3762c26ccb5 GIT binary patch literal 32896 zcmeI)dtA)<8VB%^R@N@sO52i57nOF@<|LVohf-R!jgqjNZB#^Fno~*&C1s<;>9V`7 z#gc1;mX^_Xx`_(amhGmCZZpm0mqQT_`>Ubzmm^-Y?Q)*^XI{-reP^D}^StNxn{Soy zwW}j%@gPPJBh<*tJHXT5h|M&zUT$T?Vj3;?^Iz-FUGtrvzn6E(%P>aorGwygPX(|J*az4LI0xteI)DzK1Ly!cfDWJo=m0u^ z4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo z=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDXKk12fI)N#!~rVNN@~bz64{FnELZ2jzPc z!{CP6IVz20`yJPap{pqTyXM{jdw-m1_*h(SR3;;*qjx(gec33_S3rUD(um8G$5Qaq z&$sx3$h&~9yq~T-NK|#KE0T~Is)rVEkLC8|zbhmpIWAZNDXcG+lsXh){_ok`znteT zZOi<`{B{z}&`Yx4dqbWxJ^u|q_-|?ZO#}kVy6GO9U-X3n{-49SI|f|7eiISa8M6Zo ztAKGjU!%-%BU!vm`?EZ&7yc+i4T*N4}Xhmk3F8FE;h%uYG>i ziWz2Yz%+ak*c{&=cj15hoc`9?r{U=skvNA~pETp2GL}JJRC2J=S_+sZqhd~H-b815 z3;F82`djDMJx}(topkm>E96CNZ(iX|_nG#S#uWNE(__}e zqN?M~n164f{`~o8xtN4;|0yQn8JkNE?zkk+nV$PycXkv_%4i41&cX$T50e#^NApF! z;x8F(L}FUAyTnxr53+bJk!chJ4PWh75KFH&K(8Cu>8U^mnNs8Q@KawA=?GL>X>C{E zmw#n<)R~x(LP)9p%{<1dN@4k{I(^75iYp_h_6#*OeISK7+jXK{A}AOd)56=9U5WV* zaR1wQ2KwFfY9k)-Z`0`e;=cTKG&dzQuWA87)WqkdUP6WCZ*|0bh9Ey1{D)ZP#Kg-W z#kH8P=SClIjPnuJpFgFrb#T7r^Zlwi*bV9ytkai~a??p}sm9gvy3_7IQaNijeyR*S z9)GLbY1rIuA( zreL1L$S|8h!NO10uePQ8@m2kbxA#;)amRyKZGX;E4;B-x@SO{aZEnkRrsqEumZvhp zL?B6s7n*6jI3G~Nx+*;VV<9z!xxF#@43R={-2NXA@1kJCOy*5@^+tvD8TLv4`h=x* zZhludecm@`O%WH(3gLF0BWn8QKm1(SiRITt;NySy zXl7_33GFiAP&#j(e|X4}VV^Cdi1MQ62YK8IGD)bKp&ugaTc@NWb+Xz>3Tl&z7M|dV zF#iG0KQmL3vunSEq)#1v*mQyb_-3pEv;8ud#GGu{YA6GZLrzX7WWR&HQOXDp)7F0H zV>4#aBfkV0ab&BjedN_hI-Z;guRH(ZJc2&H;3Q}t?L0t1F#kqVSAL7U9~5zXF~IeE z-F&?(_ht1x8 z=v3=%a6eWJehM7jM)x_{dVQA zuG9OvzEi<0oyF}G;hwZVa&@GX@UzzM3K>#M7KLpcw`tQg_#r4EH7una!cS|u1kR@S z=Yq!Oto~jG>H15Y3LNR*3t2B@-7As6ybR~+1F7`>O=|GLK(#s$BytS$_7xMW$@v#X zv#a2zb>{p7xl-VCj<@rq_jwvd>&*Nl3-@{c?tPWxo|@chPZ4$VkTs`AHQ*SDmZnCDK7ky^Hsl=upd^*c+U{Kvf) z?CE`;wNpa7cLw7=&)+@wH+_CdX&aIR2iqqJGH)6VI>2qv(Ae zM#JE!(YtY<=S}PTu0Q_R#8JBIdF>>k^NeX%LjTVv-u2gw&%dVv1NXTG)*I`M{f6^~ j4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0wKXFKo*V@VTi literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/u_10_img.npy b/tests/testdata_npy/u_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..ca8512cb5d50c031e0c370e28876db984883835c GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/u_2_img.npy b/tests/testdata_npy/u_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..6610a0c8a054ba5574795335c3e766fc86f94540 GIT binary patch literal 32896 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 Q2ap5E0ptL3;6HKTpOZ2n-~a#s literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/u_5_img.npy b/tests/testdata_npy/u_5_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..496a846ebed56a56a8dab4a4c78f8da42a582963 GIT binary patch literal 32896 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 O4xj_*06H)-9QY3vEFu&D literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_0_img.npy b/tests/testdata_npy/v_0_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..2a1526a5825d680cafa3f179b415741a4783bd5e GIT binary patch literal 32896 zcmeI(do)#f8wYT`m1MfeZ76c42#rZI5o5;t(3oVBkU}&eM>6CfQZptprcy3N4PrID zq;#2XYLv^5oKPy46S?1VImfwdKKr*V zJI-q5GHb^%5VROsNJf_d1v8fm)DYj7bT) zN+&DhJ-vEW*~B6?PujMK!ta`gCfK{<%y-g{<92uPNa)e)UZ%76!qD*YDF_~j=x=(& zhyFgL&mW#H#oXVq+=qrE`aVBo0=PCO2uOZdl)gh&DKSeM&=T?mz|dn}_uRmPp98$- zwo$oH`vSk`e`n``l;U)QtbI3#-2}c}0%3!?i{quu))Zt_yYlWmD1_i650&~i^Z)kv z^XHx%NZ7|Ek-EnvoiK<@=&Km3}gH#(y7Efq-vtNGRiCKQVT+v$t-xl-O1Ue<(rfxy#z8I^N~)&0Wm1s5#*9DRp%au8 z7A{)4@GhBsr-~Ih9p5wFbid9CW`y69>L#&Y7qE{oi-9M!VC0>rKvF%>kWB3WlSL`p z>nmzrIsd-?$Mmrc0#f#w2i07Dm!xH_8$T(dW4NzOQS^d1kCwq>NVbh2Ohyl=WL zqvd+zdbb9iJue_GizhZdT*HLW)!{amD)_K?PIDp2MCID1o0Y`9K+2rn@bdY| zjV=hP59lOkllv%RV^q+|z#elXdw*>(q!z#vMexOZHGnTnB^(M%$lw zBmnt=+Fo;e3KDD+?Q)AMiGj4U{(=GV*OQ|)r`I)ZD&$U7Ng+j6P1Icw^`wz#<*2il z8*#ugu1DwIeF2z+pO6hwtpb@nUF8#U1;fv4`8fAHqk9yQXB}N_ZqrTjL-Nm0k+?GK zM*ouZ*7}K}{C|@3yK}o50-b6d4lfrFwR5Xh=ZM}rUe|c=yn_{Z`FsEKb;?nBqO5Px zO7wR5YZ^ATKz>=T@PcTaPK(~ctPobhPKh-&@1GobUT;*;TE(6qAUcM;6-g=OWRF4o z&XSKga519!iz%uUXl2ft8uN84sCzLQvu`zH-a`fd>$yCi)9c#ro4F|TuxK84D;F+t z5RUwPCMPJMd&z<(u(dq7BDHwr{hS#jrFOu$h3HN5Ikn!o0fZ)+)-#+bu-usTySV`y za;~oBUYNlo?tW(-XnRN8cwP68=N+to`27{-&sQ;KQH06SYmj~12npkb+Zl!wM0Z|G zkK518&?*I1OpWWX_ zTH~Ua1p-oI%-7D`pHI}!SUS;b1fY`kK_e@*1M;)iEsOQd0QE$!@kjQRkiO54u|AuE z?s-S;zpU$o{%H4kHf9C*oF6Kv_zpkI=~C_wxBTm;)!v+rr)5Mem1O&nm7|%7yx?$6e+Jj;s&=sr$$44pu&TY2L&;W^xW0c|bASH6<7N7kJ4FBQ$MuwJV;QuOmio?_m;5qGJNbW)liqDm zI#uenC$j{MKg^hZLl<*@zJ8-+UuyAXhU6pkezfF`;~cDj`0FaHAJz~12j>qufDWJo g=m0u^4xj_*06KsUpabXtI)DzK1Ly!c@OC=z2MMbdy8r+H literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_10_img.npy b/tests/testdata_npy/v_10_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..0260b91622168944b8d5f7fcb61fc407884b6760 GIT binary patch literal 32896 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 F{tII3CKCVv literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_1_img.npy b/tests/testdata_npy/v_1_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..e7b811627bf72b9a55d7b5c15f27422602b0bcfb GIT binary patch literal 32896 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 W0dxQzKnKtPbO0Sd2hf4(@4&A@F&}#X literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_3_img.npy b/tests/testdata_npy/v_3_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..f1f5ce75abb1a8d2da14bb0f5782bb0d78c8c126 GIT binary patch literal 32896 zcmeI(Yfw{X8V7JdR8V(8Yc;kYv8AHIB5Gv0>4SC`l;Q;u3+gJMASz;-C`&;Y3Q@4M z0tLj1A{NRDM!axc6yJcf0%5r*L@IJMXcCfh6r2tq#szkSPYzXQSimP=&Lo*R=Y605 z^Zw2ylbH2R>o&Tms`#n|80_}o?&26&Fb%9c%?yl~2A&5whd6FNI}dVpd-Q*9)YW^ZhRjm6WRJ#qdIs1)cHG0oeEZ5St>zl+BH7-#+Ak?!iay+lr)_}`XX zG*0_pz5*Kf`IYnb#43O}d4*cs`C`m{oaO%NJkf36I(tbbMRuRgb79w%k{cl5$d?VKCu#5IUCq~ndGhWv1KR@SC!F()j3(~ zY}0R~Bqe47XIazWab}#0Nm+DV3RPrVm#X{qw?58D)oZ*Q$7ZJ6o~#amgs@B+IEkyj5S?xX zVgA^Zcbv*EJrKfK@Z z;_hgh$0p*V?`1%f;)LGWzbDi}Rk)?^sbv)Sar0-Y&u@n{yY!Ek#W#`7rmJ)*@$lyX zKjX}&nm5HHY3{Xd<%tTo5_WY}r#}rhIbp74QaL1jFY`&_ltG(Xw=sYFo4YdF>NnQM z)49RxLYj5odadtVm=TdOxK0P=)ps3u!d$8vcfWxc9@pP-ZQkqie{s2e+NuPa2($xM z&)drfrDp^8fUb0Kf7Y(4MG*P`mdTaNkH$3SDTY9^17*fPJ zeR0N%v*l!qzHWg1MG8#I7BBV?%fOl!+yX~l@3ik<7`f(BitzHvERJ4kCA|~m{FM?^Vq#yH z;h^hKJ-FVZsy8%Tq-CH{7|AkQTMD<+qF!8(VD6)}AAb7L&{i$yK3OVxVC>iYXfVfS z-@7S=>(7J3%Q8O z#IF{d81uqZK4~SRb>8p$xQxW}g0HmD#H>bhIlW&>c+*Q>`X;vz=I?E?w83$EE$Gy6 zBdjOL2Xox#z!U$fcaN|)3)R2f^9ZtDCg14&hKBHUy-y2UA373ij?B za^rok_h_BJvSebIMpqm0BMVaH_N~Ax{-NXZBQ*F`#%g_8)&i=hqNaQrs35|#cSDoJ zQnF@MbDfL&&~v;gk_tz=oqf-9<}@rxU7tgw-1_J}f2T<8!`emOJ$RirT62Fjt}~Gn zk3?`ElN+WXpt|%fs0-!EOY-~jjJ5MUd8i&{ne0qInb< z(y6>gIcVqRXj2+>5P#YFCKO5sop`l>-1b*swmhstEb<4zwdjW z>FTMP?{*t}zSo$a&y~+Z#>)EmVP~05k}{e$>N4_@GBys*F3uMAha8-(te>CPwXi#G zJ%0YUt%alY__3_2ioB$%%182&UXoMX7W2K>x(V)|R{-mP^8n`ot^;%c9Y6=r0dxQz zKnKtPbO0Sd2hag@03ARF&;fJ+9Y6=r0dxQzKnKtPbO0Sd2hag@03ARF&;fJ+9Y6=r z0dxQzKnKtPbO0Sd2hag@03ARF&;fJ+9Y6=r0dxQzKnKtPbYQwVK(Feh_dcXZ_?gc) zxgKjJBIY+fd9No2RCc;#ZPc%T6n?i(r~ExER_^1r#< zBjCHO>%^K?;#TgWP0^{>_P+)xvGZa|{BDr!1vbn3Gq}IxokKy6((e7?X}7?3OxMiq zJomM=H(PUiUE@l5bS_?wzZ_gLv*UdKHJJzBI;OBeY8C`8r0rNQ#reZ|>=HH%I`|on z@ab({!IxeK-OF;9Na+9IQHNPf&TV*FN3K&@Q>Qi^~P?k#MFcD z%WaJQ&UYCnn9nPreJtB;jradh* zHoU0gxcee36Zo`uaV6ZvQkSnSB# z*bJ2_Q8I~zjsJH(my9cG`PTA?mf|wQ%kSO+A$0#u=l*MZql}c|lBf=nQnb$UZfrhC2Y)l7xL7EB$cp9 zX#36u#Vi8;<=>XuBvA17#Z;psCY`{SEOA-3{1PZ7T3CIS`Resrr={asPv;R+>q_QV z-etrtS5NQGFb5KZ0%}IuIncdEL)eBt5BRrc#;nvu_ovHzJ8;vXC?tbNwkpieyXH|( z!df1icU@?Q{BW=_TSbBVQn9ZK(wiVr!(`;^xYk#$+w5LZRz+YZ$r-+L^ugAo2}fA+ zl5RTb?a-aTUG|Xq=#`(JF7=qJ{a|RX7+AHdgV2B)S~^@fk>BGHi=0BUPB4FvFcNB= z_M7}lBMd9qPbnhTJ?he@)K2bh5!3gCX7Jn;w$|32f*%B*Npy&`!S=gVQhbu^-+X?q z)_b~*+r%)#EHH&fGV^ExzRFD`dAr8<{$gCH@%yMaYlH{+G~sv!>}s76RUU*XM0cpx@W3T5;@?{W>poe)Lrp=rIL~iS&^x*(Yo!ub*r6ooVBZ(6`QIe^X1s zl=bUyQH+4Q1Ew znRWro@qGM!0~T>s&geI>!~AE;Jg5)VjBGf{Ay&O@hcwL?;H_=*_oTOYATRe8J*1us zrwndyIONkrO3lT(8r$26emCPo0ijk9XT~fp9DmR266DU@yR05ev!X{NcHw)znUed< z{nXlLz_OBY(x4Tom=ouWOh)89`b=6@mu`(3TS5U|I__HNn z9LMtt{B^!!{jvTy|8V`G1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1JlES{{T?> BDN_Id literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_6_img.npy b/tests/testdata_npy/v_6_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..4178a4e8a56b23de22b7afde5b2142c570b7600d GIT binary patch literal 32896 zcmeI)dr(tX8UXN6Eg}`A;4W{BRvuEMu@w+OJ`{_J)kURHu;mRRi^|KOqO+(dEK-D` zf}+@>yoFLEK8oc80TBcg1VsWEAcRLA7bRVhirv6Y=}vb#?Kmhde)%VJlgYU^-{W`B zJ$I6X^`EY@bCRJkX<>R^-oc(hdQ0hg7CuY#4C#74JAy)j+_$^#2=ekCdELg{KiFIP zda$p1fVXs8-(;~N-DL3sL;61Y3qIs&qmO=q&m$4QIA9%M9bg}z1Ly!cfDWJo=m0u^ z4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo z=m0u^4xj_*06KsUpaU<<0bbmcLrhf>{*Gldz;8~S9d~K+lsDy*7{-Yr_C zY1DyrFv;s+W5LBCCwYqKQ?oKlSj{Bgv%Ef@@WD!E+p*Y1A{cZJR#-Fm5bI!))JKWCop0)Mv94_bB6e;bon7Cu-a# zSB9IJRx3Fi9Mm2g(+RXzFV)8HDBu>a??~6;L+ZDYu^~zv?EgvD|A{&=9RETwiFr`J zbye04;-%ql>zuH#4`bnsm^jF#^-4Is+ z?dm^d4(3sC$0n`toTC_eO7e@DTJ^-)<(8$aHTL~@_uoX1r<)#T=as-A4Y!O~SrJ`u zc(3ax%2z1}a7ndNHEjoGg6v;sR&%lMCt2SYY-{_fTw6?yU8{`T^iF={+${q8 zN1b|w3M2hLJ6+j;fQ8z-_w6gGam#EO>S@N6g=L7s5x@l>%`c;Z@ZUCtQ)%z!sBTnWwWA4eH413Z?RbzjcFA0V|8& zCkD;iizKBhn&GpaFopfee}2BV+PCt=A?07|LG;$5W9@*Vy=0zT3NZoTni6QFX;|r5Iw*bU4Y(-~+cJT5hu$wL*%l-Vq zhqA@w3M-DUm&YMocUIn%lcz}SMpudc2?2Q6Xnoou5sdZqQXPXTV;3RZadk6&{Czis zYt{!6n*-#SFnVgW6NjAdq*)HPQpEp*zMmxTW4>QizJJ+|;X8SWL+TW1dLIAma(oq8 zsqWg_JfjD$CHrdRmG=Qnzj%|G>1RO8+7uP3*-YHj{o0DApCeO;7#-PBT~JoTW~e)f zz~vniaj5h@P>Z%hii30>XZN#^@nexR-`R^czwMtxKKD3WW+vB43gEf?^~*S)|0Vtt z_3S9`rS{LCDI$#Ns$0*H=3@)8|F`SGEvgxk;NZp zc+4%qdHY1=`H%LS`Lv}~+{PmXBuD3?;a;HY?$Mr>M8W(m^A?n4ih;4!H`wBd5L9(i zr$2L`fc?2VlW{`~_R1=X11c?GmDV8Z*~@~JPm1DKpYJ8+jJ3xZ8!_L16!+Kd{c78} zDc^rsK}L^Ddfn~I312Him)5~!LBNj7VhHhg*V(AyAy|EKV|jsG24SgIeqnu^N2YAo zKN_5j>;A7>K40{B;s%^~CP(Xu(Yo+&8d-c`yPj>_7F9`D#$Cq#oOW_t-J84O8bvs{ ziGyF3;C$^xweY=&BG0kYZU%-w4S6^qp0C$gp^ER%33-nN) z4`jLednn(}voJHJS(wc?rtPD> z7p~E($rF<-i}PJVU`CXRAJy~W?AuT4`aGM7XYk?9TrUdi;x(&_t1jQH?^mP9A~zd- zW3y(mcQ*IEtpOAa-e#Hdc%bls*ft$<5^eGV%O#lq*DU|h>f5q=ODID7DQ`_K}m4U+V$C&;8ofzh8avor6IXQS|4O<{Zu=brPe^TXspo zsa8AqdjZTZdgLnafvD zMC;jyY|RQGnUlJ^*q+x2_KSj?CrptKU8jz@eH`Ij0?(yUYi^iHu^t8!@ajK*j=T9K zUEfbeR4!PH_S34sVds-Lc_szSDC3Xi)A+zjjH@y$ZF=c^dTt|Vgb@oeNXE0o2cpZP)`%jNCocrD#8DS-- zq>(*spfizo1ybaoqc^K2NiK#`Zpx)*Jswf*X|7VEp5Om;&mNOPCPf@It;Ksv#KdvZ z{=dvCuLas#r;id3%D{Nt-^<^WOzSl)llza-?7tA+QJ z`FoQ1GnUl;&Mc&MZw%i++Ut{%6;5 zRd$;9!EgB_b;o6MvlaK?iX?9F)T0#GJ2w>0R29SVx{zaw7fHy|_OODY-aqzd^dWYC zNH3rGmpi^8tjGg?)T(C-7D&N3DZeH%odR1y#=BmYe5mVe<*8lDCuh4aR(-Cl7x9uK zvF-hT9PiJL$5^}m&6{(i-_V34q=O@-GuGlfTJQH+u;GmKA~9jxdDsL_6oKXj`-EFb6gUR?s@juga4nuxQMKUT`Cnfn zTl3d8<>&QfcN-?JNd?Cr_{aN8#PB$Mj)%D&1?*tm8!_>GckX$Me7+Co$gO6G@>$Ka&X<#E6Mt~Cn=2z_ z?8u&4?KFtoI{ixfaS4QRS&H=u6tH~EYxQD;P@t;UU45pSOc#fGYE8p_A8q;m{e1dG z-&Xmz3kds}2!i_gFvW!R4yTBMvJbkVgDXzLCo3GJ94}?R(`NS?g`OwYCOI7|(uG6o zMD7GF$EZd=WR!7?RlX=A+Ia^oZf8*Bbo2Ui-4C(fe;@DB_I}?imeocJF1fgDl50h? z2%6cuS7x1*!ZP~O(DO05kbXHMZNFVP37ZicVq+?Xh*+_8L>dJ-?RV@xH5GvWy7;fs z*4`j*a>h4U+2Qly(U#xm%||Dx#$ISHRrpw|~WM}x};y4rZ|!UoRJ`o6kc`?mUH?Dyxzd$j!Ab8G##Dp7r^s+z%aamW8)i3b5Z_H14DI_oo_s?ALKXO6L8uxbUO-7YTFq zXR4ypJW%Kwg>64vMJAo~F%1*petxv(?^VsqxwWmcR!9-sFjI@N5%~X)S2a%@cOU}8 ze;$Bw#5iIdVIQFb=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj`7>A=4L DtZFwA literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_8_img.npy b/tests/testdata_npy/v_8_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..0260b91622168944b8d5f7fcb61fc407884b6760 GIT binary patch literal 32896 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 F{tII3CKCVv literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/v_9_img.npy b/tests/testdata_npy/v_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..ea4bc570ca09735c40b909ff0220e1f48f086849 GIT binary patch literal 32896 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 KKnEtL1OEbjHHByZ literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/x_2_img.npy b/tests/testdata_npy/x_2_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..d328b2df5854dd84e19d6e7808dcec105191cc4d GIT binary patch literal 32896 zcmeI)c~H%J9|!OvrAV$8TgX476}eJ*B$22F?YCXa zw`55RTD2%gbvmccIsMY+s9aB)G3L3(j0g9TJD>B-j&u^xJOe~Do zS@H9^^Bt1gL37#eET<(Sr){q(rzj(5zt`E-*=~>RUgsUOcdxIq+vP$Vdfmm*ZXa#v zx%?sxMVUn!3lwDz%Y5NOgm3uKNpO8v0jvY|0rmmT0Xl#VpabXtI)DzK1Ly!cfDWJo z=m0u^4xj_*06KsUpabXtI)DzK1Ly!cfDWJo=m0u^4xj_*06KsUpabXtI)DzK1Ly!c zfDWJo=m0u^4xj_*06KsUpabXtI)DzK10&gib@pT2qr+Gv%$cqDOyLRHXL4%WW1nou zoo=fd$o~}oZhClt|2dA`KdmrENXL{>CLO-4+T#zcL_2`{AsME)>X!?U`6! z%7A_yfsm9-t>l5vv|p8Z6!yVCtPdiO)2+>t%SiNkH=c%M8^q2ZtJ`q21N4ksQ%k%v zz$fRrqo*DlbN}AChm3Yu=*lGK1><`Efa}EdfA_%%bDciKIvuA#-Bf* z@$=&3RO#)6Zcodf++6^90d)272ns|_g}?O7WI{+?q_c=|B`JM-S2twI=kGgQCj9>r z-)vs4G-oS0oGv4I0W<#88)yMbflECV{vFWwHl;U3pAGArrZGI2rEq_4yiQ`>3(_ga zk^c2e$0vV(zU|r@rco4`#(30lDy@l>ByUsqebo%hY4`k&MNv?*HBn`pV*_ZbhIOAw zVtsNS%=ujf{{HhoSFoT>{VWb)P4?;8`Jj^AFfXW0^M3)l!r|hN-6#m2lP$UbDF^O0 z7HNeaeGZAEt`}OG(}{7VSXNWq$8*cC;nm(3)IoesglR-QFDCw{G;X=JbAhg1Up!Tl zf+_oaCoE=U5_@&EOf&V5ugBc~Ke@lJvyGF~@#!rTc@|k4E2-K+6rZ}p%-HsVjL#K6 zr*y3mLiS6m#HLfQqM`5D244!Q|K&#$t7-wx;Tb_`&JARC-OJZq79TuVZmA@1%4HK7 z5BD>=hP6=B=h`Xk(E(TeygH}Tn4qVj+_t>5nb?-ajZw_R{NLv=($aUwdSVBtHYZrTwI&Tzo)pa(VmyyVpT8=ki$V zmt4rR;?>P_XF{P+{7$v>D*U`3F7)63x&GHYzw~*x)HH36)f7n*w=>`LkVR@}!O9XR zb4ZU)*p-v_nIJJ)sipr-2e{5x?^&tN1;wf!TiY-W$ltFn&};30uq);&4SCN&a`!UY zADJA?{|C$eecx2nXh(*$Qe?d7(q9T_6xl^znzid}DKR;JWKESO3o5B|;un=D82CelZo5jO!p7MNmC}PHUeo*Y}3!>|(SLUv&VV&aQzNS_x>LNNu-}XeKL5 zj=S;8Vjqn3KHxJvDh3tzAhz3vE?&xk{z8A_JDfIf-eQt?exQz27IaBP`%AI$Hst!F}nT*isL%_K}P_f?@Q9js+l-YQsAaCd!8*`4(@ARg5AQ=G63rU_UPQ!FTSniPzSy7i{N}!9M?~vC5B$p`)=R_Zb)Tot4Y>A7?|JQGTFf z`X%CUT0-=>%%}a%do3wdtxpky(|!q;XSWmiVux%Sn@V`L#bma@ZxkH(Lx$fVmx2xS zbXD`)9FWMl^KzqDG09)bao8NoCRuzfx=i|~_y5}d#_Qiz;KO;8MW@Y8>ZC}h*2Ox` zHa3w@j7YT#Y6MxErU|Oy6v(Sjs_=GTL5ozU&5q4^c`%;WzP8>Y<@%&vbH$i4iZl->6m?ZKkrWZ92;)pT2-swet4$pG zp1<9LS1r*9Ey+m(io0-LM@nwr>V0?)&NR}VOOfAsy$4qxYbEOf%$k;E+$SMItIlTH zHlfeMh5r6Nf2+K4pLZ3&Jh2b34{#390dxQzKnKtPbO0Sd2hag@03ARF&;fJ+9Y6;@ GcHlo*p?vHB literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/x_3_img.npy b/tests/testdata_npy/x_3_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..a3c998f83cae5cb97268c13bb3fe16d4f78c8069 GIT binary patch literal 32896 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 Hb{zOG#@&D` literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/x_4_img.npy b/tests/testdata_npy/x_4_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..84e68b0ac018e2446fb359666ac9e358a79cd611 GIT binary patch literal 32896 zcmeI(dsNKp8VB$}(Jou!M2BS9-K0V%DdKT2IWmZILP;u0DpOPnl~7xUsO*#|72PDH zM7y`0OLvMcYSLv=O>_DET)Pl}GhVSXn!7VXMq$s_5J3s;DznY#iAx?9C3F9NAXZJ+Cj_Z0~H{{krqE%}&C%Yb{I9_^?5(7Oed&|Px6i*+o8b71I3~7%f#tSH}2hi0G)okaF>93a+B-QG-uVv`?WtpLcK1OCdoe~_zam-PyFmJO+UzP1l2H) zAfuZ!WY2jXm*Z3o5dv;vl6T91^Mrl>ynXMh=fx%7x#_VK86Ld#=pl`2QZpuQ_79a+ zFnn2=vbZ%3XXcwPjI^Y{e(6u~hkoQhihq=WvS%&PbA7wgD!IScX~O)CYe$Pn3iFwd z_m!LEw%gmFU9lo4LK@@C@$uWwyZGhSYo0*(_bszdD*y+C5{vAzxgu)^B zSM!OFUisjW4qSL%TeE&$EDakIo{aN3-wccAHO5+;5|Cia*jHlB{qyss?;GdqsX+gI zAyU=I-`BQ<$ZyeE*?H_SOt+TgKTGP~7Z|^AG$UxRQDkZtDsv(C-P3T#uzHf7k{7&C zgCaF#e&WT$rDQ~ExQ6#^KB#g$U8FBjFyD{sujG|MMjCovySiNTAvak6|6TvDU6&;= zv%RXECg#pgQ@XTyB*4r|^vwMMWE$;^uQi&4f;Kb(JHxhtP40}|U``+O7_x5|q|$Xa}JHC@k#5?12nnvmPr_wT&#efd1HZls=ZB~3PL%{OzG77~-eZV81>4?pz1 zum62lL#-&r+_7b#MsY45Jjx@Ar}(^RPnuMV4=ojRe_rex7q2}P_rC?_T_)L~9TGjyGN(fKxr1_=kF=sVT5 z@YIKK);_x$H0NGu7!f3Zb9*Y!Np%Rps#r6`vg8pcc&a(ajjkacaVw9=Kfvz;-%H+O zNlwz0Nh3iRMx&w;8&yXTsp8%U(h z`dceBn?Rm@%RkASf|?Y$dVN+6OyXC)(LPF%@^cbm+|4xM$g_3?%-|8joHQ0k^ESl1 zw|&1WlLp_?ORrK_(4hWUxhwH}3s`m1Ef$xd0pT&9&saM~Rv z1Q$SpshO5jm;gcxof=2k(V#CS76Gg#c%2~o&se<@;_{pFw5+)TGI4|csr428$NQ_* z|7+iGw%x4jR(jpP(-ul4hcKH!+k3yWz9|hU<%0~*KCT7(X)7h2PBal2Z7tz^;m7-B zUhDkyfLJSGj>xn=@k0)rxn%IHW?n0}OiIouN~Pgm`>nPlx(U4Gicb{Y&m=ZkZAPUM z0x~tcK=F0$$H)EJ_4%{TPffFBUOY^bNIxa}D5GSOIV$Mk(+L7-t6TaaeV-7#{#6-r?B+ju!nOf0GSbKJlmC27KPuSC*<@|#OMU{p{l8b1l zH_w%2jphMEtg|LUJsOnU1Fz@r#{PfloXu-i6B`rKL|jUPCKOpz!g>2wgXNFY@bvoh zqcaXS!op2*do|N*Nml2gH9KAoygyC13+L@@qDj8XT~~%1pIm=cJ1E=rK4H#Xz*?)E zMhv1cha)>*5CXaNV@1EGJ zptNt95Ln)fjqilDm}d#C^a literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/x_5_img.npy b/tests/testdata_npy/x_5_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..090a57064035179ae48e1b21c23b2004865d240b GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/x_7_img.npy b/tests/testdata_npy/x_7_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..160234f52e59c3746be60b892f0b837303473ba8 GIT binary patch literal 32896 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 KKnEtL1OEbjHHByZ literal 0 HcmV?d00001 diff --git a/tests/testdata_npy/x_9_img.npy b/tests/testdata_npy/x_9_img.npy new file mode 100644 index 0000000000000000000000000000000000000000..582bd507721d9a788e86e51cde930bba522f2c47 GIT binary patch literal 32896 zcmeI(dpOkj9tUu#RM=wEWre1k&1JRSM73?7p;jeoigZDtRHr063SAUkRaPQty6Pgi zl+wi|`3PYulFBU=#${&A%+JZ?bYEIP0mAZv(9p7_hnq2Ni3boD<spqp_TDCC)DS~rw~ zVPb}r-kSm_O6fhMhZP^k+!aI=xiIv9?H>yJzmu;)7K*o0jxhM%>TFPmqW~Rd<%IMX ziXg?+Hr;MC1F1?}J8h8wvc`qfGn}eV?*HW-aK!T;3|{b1RFOtYk>#iTI$;rF>H?w5 zHH!=!vGQcMTTcsdwD5^#%(voC9{*EwPQTw)fj{zFrJAp-`<}t+w-VDs(`%94pcmef za|o^7?8LPT7!Z~$t{)E)2;}FUk9lxKCT=)vL`hl3>`^(-$nsLVOiE z<<83)wa}34_RVa*47ThWesHo)6&xC69_8JuxWnU8AOE$FpIeW+qZ_9=xHG8Gq;1UY zSAjeCo?pPTD+9Z)F0JRyXMpXSba&`W0rXbWo;7;n3)Gn5B4Ki=nFAHBb0 zd0Df&X~^zO39=*iYjC-UoLsGg2Ry{^+;znU)x8o>nQ+*?`<6Q(eq(*CRJ-=0`MS%m zMZM~w3>9r90q%o~@&3;-l3qLkls=w#r8<^@veM0}I>Ksjdzn{%DIgx*yB{rJ&*``) z)W?qXv9om=A3EpQ;H8#`N>C}X35>KY zKrM&$K?@8R{Cb$;A-9_hjy=z7S({yo?4B2(ME*J03^hG}DMSYMZ4l9apx-}(>2l(fpYivq$x@isQhnRWAn=p`| zyY;$d8XxkV#~8Csgm}*WgkVvq08`(6FRm;pfSseq&KEzEf=m75=q$5Z2wMX2@5?WO zlX7#Y3%7>){voh`+=q49{Ek_Dn>Sp9MdhjwJ-r{onTyAFHk(QzL3OV0wIUJ7xdptb zH@Sn>nLh7EOfG=qGsX@n)sjLTX8@+}k%3S8$U%3_Q-L$^l40PF)fm&%Bu=?P>wK5( zcRRW4YYl7HSe2lD&rPq5G^^pHi|@^iHVi1UpB{a3r}g(o?G=J7+9!x zG4Mp62M|~n*dtn}3Oy?ON5?nIXx_I|->#kqR=!i!kzZu!r6SwEm9W<)f;J`tf_Q%Vl}x8&;btjRZFx)@nek|;}WM6ROA zNP8zCsQ8Qc!E70ve4sonu(%A=&GdAa&L~FLVs6fvj0*Hw7L&%47eIpR=`n9L8Sr16 zq#2P_23i&k>_D{&y6^iCfUf(zr#ZEIRN7++CYY@ehsyKOW}CVH%#12fSz`Y7pLPsr zRGfb3YAt|$=cXoKf0Box2jzAj{hmQ5C-g4nOOd0o=3tC|3L2=L=UC}W;qilb?q!|U z=YnHXGpBgRf&SZ#Ta7NzdeGGzU@P}3o4A=l6<+9}O2a%%0XQ`Mgc$qV(1c5xT8dIZrgG z1d?J~rp&dF!Ewcb3!bS9p-EbITT}E1Z%28~8F!Vw_xVrf&LsDdhvnZT=$E%AV;5FH zcJ{GTvmIn0;g8d}mfZUH9(PBYt*gm^gg&|MFZT*jx%5E7D&Ifv`)}7V`P3Xu%OC~~ zIJVC%lb;~#hEn4hTM@V%Q0TTHv32|>nqiB)3L)s;@fPj8YJBH#fvjI%zCoYD0wLbpF?>f&Lg)KpUmIBiwyobI zJDiQ}q5TM^RnA;d>m-As#_ZIYvexepeok3w*vLngqJEQI9~mY!%C9MY*ZJd79zHJ* zU%GySMLB*=NeoU1|7B>5kpS~r4oGjjxQMULD1={6NrSL$%hM;!iGpuqCuW-(GkA?x z6KUT<{r}Q^pz*rayr6ziKR##OruLT)OL@ou literal 0 HcmV?d00001 From 589dfd0c9d020fd43a9d68f18f815a91cd451eac Mon Sep 17 00:00:00 2001 From: mooniean Date: Wed, 21 Feb 2024 14:13:22 +0000 Subject: [PATCH 4/6] added tests for transformations --- tests/test_disk_io.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_disk_io.py b/tests/test_disk_io.py index 7a2d08c..7d749ea 100644 --- a/tests/test_disk_io.py +++ b/tests/test_disk_io.py @@ -2,6 +2,7 @@ from pathlib import Path +import numpy as np import pytest import torch from tests import testdata_mrc, testdata_npy @@ -170,6 +171,10 @@ def test_processing_data_all_transforms(): assert test_loader.dataset.normalise assert test_loader.dataset.shiftmin assert test_loader.dataset.gaussianblur + image, label = next(iter(test_loader.dataset)) + image = np.squeeze(image.cpu().numpy()) + assert len(image[0]) == len(image[1]) == len(image[2]) + assert label in DISK_CLASSES_FULL_MRC def test_processing_data_some_transforms_npy(): @@ -191,3 +196,13 @@ def test_processing_data_some_transforms_npy(): assert test_loader_transf.dataset.normalise assert not test_loader_transf.dataset.shiftmin assert test_loader_transf.dataset.gaussianblur + image_none, label_none = next(iter(test_loader_none.dataset)) + image_none = np.squeeze(image_none.cpu().numpy()) + assert len(image_none[0]) == len(image_none[1]) + assert label_none in DISK_CLASSES_FULL_NPY + image_transf, label_transf = next(iter(test_loader_transf.dataset)) + image_transf = np.squeeze(image_transf.cpu().numpy()) + assert len(image_transf[0]) == len(image_transf[1]) + assert label_transf in DISK_CLASSES_FULL_NPY + assert len(image_none[0]) == len(image_transf[0]) + assert len(image_none[1]) == len(image_transf[1]) From 62275deab24b97cb3fa11111df0ae547971af51e Mon Sep 17 00:00:00 2001 From: mooniean Date: Thu, 22 Feb 2024 08:55:41 +0000 Subject: [PATCH 5/6] added rescale tests and fixed it so that it receives the number to do rescale --- src/caked/dataloader.py | 15 ++++++++++----- tests/test_disk_io.py | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/caked/dataloader.py b/src/caked/dataloader.py index 792c9da..c006982 100644 --- a/src/caked/dataloader.py +++ b/src/caked/dataloader.py @@ -16,7 +16,7 @@ from .base import AbstractDataLoader, AbstractDataset np.random.seed(42) -TRANSFORM_OPTIONS = ["rescale", "normalise", "gaussianblur", "shiftmin"] +TRANSFORM_OPTIONS = ["normalise", "gaussianblur", "shiftmin"] class DiskDataLoader(AbstractDataLoader): @@ -84,9 +84,14 @@ def process(self, paths: list[str], datatype: str): msg = "No processing to do as no transformations were provided." raise RuntimeError(msg) transforms = self.transformations.split(",") - rescale, normalise, gaussianblur, shiftmin = np.in1d( - TRANSFORM_OPTIONS, transforms - ) + rescale = 0 + for i in transforms: + if i.startswith("rescale"): + transforms.remove(i) + rescale = int(i.split("=")[-1]) + + normalise, gaussianblur, shiftmin = np.in1d(TRANSFORM_OPTIONS, transforms) + return DiskDataset( paths=paths, datatype=datatype, @@ -142,7 +147,7 @@ def __init__( self, paths: list[str], datatype: str = "npy", - rescale: bool = False, + rescale: int = 0, shiftmin: bool = False, gaussianblur: bool = False, normalise: bool = False, diff --git a/tests/test_disk_io.py b/tests/test_disk_io.py index 7d749ea..95c7600 100644 --- a/tests/test_disk_io.py +++ b/tests/test_disk_io.py @@ -26,7 +26,9 @@ DATATYPE_MRC = "mrc" DATATYPE_NPY = "npy" TRANSFORM_ALL = "normalise,gaussianblur,shiftmin" +TRANSFORM_ALL_RESCALE = "normalise,gaussianblur,shiftmin,rescale=0" TRANSFORM_SOME = "normalise,gaussianblur" +TRANSFORM_RESCALE = "rescale=32" def test_class_instantiation(): @@ -206,3 +208,39 @@ def test_processing_data_some_transforms_npy(): assert label_transf in DISK_CLASSES_FULL_NPY assert len(image_none[0]) == len(image_transf[0]) assert len(image_none[1]) == len(image_transf[1]) + + +def test_processing_data_rescale(): + test_loader = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL_MRC, + dataset_size=DATASET_SIZE_ALL, + training=True, + transformations=TRANSFORM_ALL_RESCALE, + ) + test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) + assert test_loader.dataset.normalise + assert test_loader.dataset.shiftmin + assert test_loader.dataset.gaussianblur + assert test_loader.dataset.rescale == 0 + image, label = next(iter(test_loader.dataset)) + image = np.squeeze(image.cpu().numpy()) + assert len(image[0]) == len(image[1]) == len(image[2]) + assert label in DISK_CLASSES_FULL_MRC + + test_loader = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL_MRC, + dataset_size=DATASET_SIZE_ALL, + training=True, + transformations=TRANSFORM_RESCALE, + ) + test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) + assert not test_loader.dataset.normalise + assert not test_loader.dataset.shiftmin + assert not test_loader.dataset.gaussianblur + assert test_loader.dataset.rescale == 32 + image, label = next(iter(test_loader.dataset)) + image = np.squeeze(image.cpu().numpy()) + assert len(image[0]) == len(image[1]) == len(image[2]) + assert label in DISK_CLASSES_FULL_MRC From a4b8b31e2233c75f7017892cd606fd229f380c0d Mon Sep 17 00:00:00 2001 From: mooniean Date: Thu, 22 Feb 2024 11:09:31 +0000 Subject: [PATCH 6/6] added test that processing is in fact changing the images. added debug flag for dataloader so that there's no shuffle in the paths to test this out --- src/caked/dataloader.py | 5 ++++- tests/test_disk_io.py | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/caked/dataloader.py b/src/caked/dataloader.py index c006982..609ce9d 100644 --- a/src/caked/dataloader.py +++ b/src/caked/dataloader.py @@ -34,6 +34,8 @@ def __init__( self.training = training self.pipeline = pipeline self.transformations = transformations + self.debug = False + if classes is None: self.classes = [] else: @@ -42,7 +44,8 @@ def __init__( def load(self, datapath, datatype) -> None: paths = [f for f in os.listdir(datapath) if "." + datatype in f] - random.shuffle(paths) + if not self.debug: + random.shuffle(paths) # ids right now depend on the data being saved with a certain format (id in the first part of the name, separated by _) # TODO: make this more general/document in the README diff --git a/tests/test_disk_io.py b/tests/test_disk_io.py index 95c7600..c179154 100644 --- a/tests/test_disk_io.py +++ b/tests/test_disk_io.py @@ -244,3 +244,30 @@ def test_processing_data_rescale(): image = np.squeeze(image.cpu().numpy()) assert len(image[0]) == len(image[1]) == len(image[2]) assert label in DISK_CLASSES_FULL_MRC + + +def test_processing_after_load(): + test_loader = DiskDataLoader( + pipeline=DISK_PIPELINE, + classes=DISK_CLASSES_FULL_MRC, + dataset_size=DATASET_SIZE_ALL, + training=False, + ) + test_loader.debug = True + test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) + assert test_loader.transformations is None + assert not test_loader.dataset.normalise + assert not test_loader.dataset.shiftmin + assert not test_loader.dataset.gaussianblur + test_loader.transformations = TRANSFORM_ALL_RESCALE + pre_dataset = test_loader.dataset + test_loader.load(datapath=TEST_DATA_MRC, datatype=DATATYPE_MRC) + post_dataset = test_loader.dataset + assert test_loader.dataset.normalise + assert test_loader.dataset.shiftmin + assert test_loader.dataset.gaussianblur + assert len(post_dataset) == len(pre_dataset) + pre_image, pre_label = next(iter(pre_dataset)) + post_image, post_label = next(iter(post_dataset)) + assert pre_label == post_label + assert not torch.equal(pre_image, post_image)