diff --git a/aliby/pipeline.py b/aliby/pipeline.py
index 3006081358a1816bf1a456d0b1efea2b196b1225..f124edc4ad78d9b6d0d7f2276c784b1da6d45ed5 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())