From fc286f9907639b6b7f7095bd006de4a13819819f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=C3=A1n=20Mu=C3=B1oz?= <alan.munoz@ed.ac.uk>
Date: Fri, 6 Jan 2023 18:50:23 +0000
Subject: [PATCH] fix(Pipeline): incorporate new Dataset/ImageDir

---
 src/aliby/io/image.py | 22 +++++++++++-----------
 src/aliby/pipeline.py | 15 +++++----------
 2 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/src/aliby/io/image.py b/src/aliby/io/image.py
index 816c9e13..6379c909 100644
--- a/src/aliby/io/image.py
+++ b/src/aliby/io/image.py
@@ -40,7 +40,7 @@ def get_image_class(source: t.Union[str, int, t.Dict[str, str], PosixPath]):
     elif isinstance(source, dict) or (
         isinstance(source, (str, PosixPath)) and Path(source).is_dir()
     ):
-        instatiator = ImageDirectory
+        instatiator = ImageDir
     elif isinstance(source, str) and Path(source).is_file():
         instatiator = ImageLocalOME
     else:
@@ -88,6 +88,15 @@ class BaseLocalImage(ABC):
     def data(self):
         return self.get_data_lazy()
 
+    def __enter__(self):
+        return self
+
+    def __exit__(self, *exc):
+        for e in exc:
+            if e is not None:
+                print(e)
+        return False
+
 
 class ImageLocalOME(BaseLocalImage):
     """
@@ -127,15 +136,6 @@ class ImageLocalOME(BaseLocalImage):
 
         self._meta = meta
 
-    def __enter__(self):
-        return self
-
-    def __exit__(self, *exc):
-        for e in exc:
-            if e is not None:
-                print(e)
-        return False
-
     @property
     def name(self):
         return self._meta["name"]
@@ -211,7 +211,7 @@ class ImageDir(BaseLocalImage):
     - Provides Dimorder as it is set in the filenames, or expects order during instatiation
     """
 
-    def __init__(self, path: t.Union[str, PosixPath]):
+    def __init__(self, path: t.Union[str, PosixPath], **kwargs):
         super().__init__(path)
         self.image_id = str(self.path.stem)
 
diff --git a/src/aliby/pipeline.py b/src/aliby/pipeline.py
index 989a0e4a..ed3b608b 100644
--- a/src/aliby/pipeline.py
+++ b/src/aliby/pipeline.py
@@ -29,7 +29,7 @@ from agora.io.writer import (  # BabyWriter,
 )
 from aliby.baby_client import BabyParameters, BabyRunner
 from aliby.haystack import initialise_tf
-from aliby.io.dataset import Dataset, DatasetLocalOME, DatasetLocalDir
+from aliby.io.dataset import dispatch_dataset
 from aliby.io.image import get_image_class
 from aliby.tile.tiler import Tiler, TilerParameters
 from extraction.core.extractor import Extractor, ExtractorParameters
@@ -83,12 +83,8 @@ class PipelineParameters(ParametersABC):
             general["expt_id"] = expt_id
 
         directory = Path(general.get("directory", "../data"))
-        dataset_wrapper = (
-            lambda x: DatasetLocal(x)
-            if isinstance(expt_id, str)
-            else Dataset(int(x), **general.get("server_info"))
-        )
-        with dataset_wrapper(expt_id) as conn:
+
+        with dispatch_dataset(expt_id) as conn:
             directory = directory / conn.unique_name
             if not directory.exists():
                 directory.mkdir(parents=True)
@@ -101,7 +97,7 @@ class PipelineParameters(ParametersABC):
                 "channels": ["Brightfield"],
                 "ntps": [2000],
             }
-            print(f"WARNING:Metadata: error when uploading: {e}")
+            print(f"WARNING:Metadata: error when loading: {e}")
             # Set minimal metadata
             meta_d = minimal_default_meta
 
@@ -273,8 +269,7 @@ class Pipeline(ProcessABC):
         print("Searching OMERO")
         # Do all all initialisations
 
-        dataset_wrapper = DatasetLocal if isinstance(expt_id, str) else Dataset
-        with dataset_wrapper(
+        with dispatch_dataset(
             expt_id, **self.general.get("server_info", {})
         ) as conn:
             image_ids = conn.get_images()
-- 
GitLab