From 86e7e98dd14c9bea5ec3cc7b6fdd73e1764b8268 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=C3=A1n=20Mu=C3=B1oz?= <amuoz@ed.ac.uk>
Date: Fri, 28 Jan 2022 13:47:28 +0000
Subject: [PATCH] add support for regex filtering

---
 aliby/pipeline.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/aliby/pipeline.py b/aliby/pipeline.py
index 30060813..f124edc4 100644
--- a/aliby/pipeline.py
+++ b/aliby/pipeline.py
@@ -9,6 +9,7 @@ from pathlib import Path
 import traceback
 
 from itertools import groupby
+import re
 import h5py
 import yaml
 from tqdm import tqdm
@@ -143,7 +144,7 @@ class Pipeline(ProcessABC):
         config = self.parameters.to_dict()
         expt_id = config["general"]["id"]
         distributed = config["general"]["distributed"]
-        strain_filter = config["general"]["strain"]
+        strain_filter = config["general"]["filter"]
         root_dir = config["general"]["directory"]
         root_dir = Path(root_dir)
 
@@ -164,13 +165,14 @@ class Pipeline(ProcessABC):
         # Filter TODO integrate filter onto class and add regex
         if isinstance(strain_filter, str):
             image_ids = {
-                k: v for k, v in image_ids.items() if k.startswith(strain_filter)
+                k: v for k, v in image_ids.items() if re.search(strain_filter, k)
             }
         elif isinstance(strain_filter, int):
             image_ids = {
                 k: v for i, (k, v) in enumerate(image_ids.items()) if i == strain_filter
             }
 
+        assert len(image_ids), "No images to segment"
         if distributed != 0:  # Gives the number of simultaneous processes
             with Pool(distributed) as p:
                 results = p.map(lambda x: self.create_pipeline(x), image_ids.items())
-- 
GitLab