Source code for ewoksfluo.tasks.input.concat_bliss_groups

from typing import Dict
from typing import List

from ewokscore import Task
from ewokscore.model import BaseInputModel
from ewokscore.model import BaseOutputModel
from pydantic import Field

from ...io.blissconcat import concatenate_bliss_scan_groups


[docs] class Inputs(BaseInputModel): bliss_scan_uris: List[List[str]] = Field( description="Several list of Bliss scan URI's to concatenate.", examples=[ [ [ "/data/dataset1.h5::/2.1", "/data/dataset2.h5::/2.1", ], [ "/data/dataset1.h5::/3.1", "/data/dataset2.h5::/3.1", ], ] ], ) output_root_uri: str = Field( description="Target HDF5 file URI with optional data path.", examples=[ "/result/concatenated.h5", ], ) virtual_axes: Dict[str, str] = Field( default_factory=dict, description="Virtual positioners which are typically the sum of scalar and moving motor positions.", examples=[{"sy": "<nsy>+<nspy>", "sz": "<nsz>+<nspz>"}], ) axes_units: Dict[str, str] = Field( default_factory=dict, description="Axes units to be used when missing.", examples=[{"nsy": "mm", "nsz": "mm", "nspy": "um", "nspz": "um"}], )
[docs] class Outputs(BaseOutputModel): bliss_scan_uris: List[str] = Field( description="Bliss scan URIs.", examples=["/result/concatenated.h5::/2.1", "/result/concatenated.h5::/3.1"], )
[docs] class ConcatBlissScanGroups(Task, input_model=Inputs, output_model=Outputs): """Concatenate multiple groups of Bliss scans."""
[docs] def run(self): self.outputs.bliss_scan_uris = concatenate_bliss_scan_groups( self.inputs.bliss_scan_uris, self.inputs.output_root_uri, virtual_axes=self.inputs.virtual_axes, axes_units=self.inputs.axes_units, )