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,
)