Source code for ewoksxrpd.tasks.save_images

from typing import List

import h5py
from ewokscore import Task

from .utils.data_utils import save_image


[docs] class SaveImages( Task, input_names=["image_uris", "output_dir"], optional_input_names=["ext"], output_names=["output_paths"], ): """Save images with monitor and other metadata"""
[docs] def run(self): image_uris: List[str] = self.inputs.image_uris output_dir: str = self.inputs.output_dir ext: str = self.get_input_value("ext", "edf") output_paths = [] for image_uri in image_uris: image_filename, image_h5path = image_uri.split("::") with h5py.File(image_filename, "r") as h5file: image_dset = h5file[image_h5path] data = image_dset[()] monitor_data = image_dset.attrs.get("monitor", None) metadata = {k: v for k, v in image_dset.attrs.items() if k != "monitor"} output_paths.append( save_image( data, output_dir, save_name=image_h5path.split("/")[-1], monitor_data=monitor_data, metadata=metadata, ext=ext, ) ) self.outputs.output_paths = output_paths