From f835dc1377944d3fa2ee1f55532c603ef53b0110 Mon Sep 17 00:00:00 2001 From: Eduardo Gonzalez Solares <eglez@ast.cam.ac.uk> Date: Fri, 10 May 2019 13:59:53 +0100 Subject: [PATCH] Add function to parse mocasic file --- stpt_pipeline/mosaic_functions.py | 21 +++++++++++++++++++++ stpt_pipeline/preprocess.py | 14 +++++++------- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/stpt_pipeline/mosaic_functions.py b/stpt_pipeline/mosaic_functions.py index 6af9e3f..609a6eb 100644 --- a/stpt_pipeline/mosaic_functions.py +++ b/stpt_pipeline/mosaic_functions.py @@ -1,4 +1,6 @@ from os import listdir +from pathlib import Path +from typing import Dict import dask.array as da import numpy as np @@ -111,6 +113,25 @@ def get_mosaic_file(root_dir): return '' +def parse_mosaic_file(root_dir: Path) -> Dict[str, str]: + """Return contents of mosaic file as dictionary. + + Parameters + ---------- + root_dir + Directory containing mosaic file + + Returns + ------- + dictionary of key, values with mosaic file contents + """ + mosaic_file = get_mosaic_file(root_dir) + with open(mosaic_file) as fh: + items = [item.strip().split(':', 1) for item in fh.readlines()] + res = {k[0]: k[1] for k in items} + return res + + def get_img_cube( root_dir, imgs, diff --git a/stpt_pipeline/preprocess.py b/stpt_pipeline/preprocess.py index 046b83b..2125ab9 100644 --- a/stpt_pipeline/preprocess.py +++ b/stpt_pipeline/preprocess.py @@ -8,15 +8,17 @@ import zarr from dask import delayed from distributed import Client, wait from scipy.ndimage import geometric_transform +from zarr import blosc from imaxt_image.image import TiffImage from stpt_pipeline.utils import get_coords -from .mosaic_functions import get_mosaic_file +from .mosaic_functions import parse_mosaic_file from .settings import Settings from .stpt_displacement import defringe, magic_function log = logging.getLogger('owl.daemon.pipeline') +blosc.use_threads = False # TODO: Check if this makes it quicker or slower def read_flatfield(flat_file: Path): @@ -141,14 +143,11 @@ def preprocess(root_dir: Path, flat_file: Path, output_dir: Path): z = zarr.group(out, 'w') dirs = list_directories(root_dir) - for d in dirs: + for d in dirs[:2]: # TODO: All this should be metadata section = re.compile(r'\d\d\d\d$').search(d.name).group() - mosaic_file = get_mosaic_file(d) - res = open(d / mosaic_file, 'r').read() - mrows = re.compile(r'mrows:(\d+)\n').search(res).groups()[0] - mcolumns = re.compile(r'mcolumns:(\d+)\n').search(res).groups()[0] - mrows, mcolumns = int(mrows), int(mcolumns) + mosaic = parse_mosaic_file(d) + mrows, mcolumns = int(mosaic['mrows']), int(mosaic['mcolumns']) fovs = mrows * mcolumns files = sorted(list(d.glob('*.tif'))) files_ch1 = sorted(list(d.glob('*_01.tif'))) @@ -168,6 +167,7 @@ def preprocess(root_dir: Path, flat_file: Path, output_dir: Path): wait(fut) # Write metadata + # TODO: Write contents of mosaic file here as well z.attrs['sections'] = len(dirs) # TODO: Read from mosaic file z.attrs['fovs'] = fovs z.attrs['mrows'] = mrows -- GitLab