Source code for ewoksndreg.tasks.select_nxdata
from typing import Optional
from typing import Union
from ewokscore.model import BaseInputModel
from ewokscore.task import Task
from ewokscore.variable import Variable
from pydantic import Field
from pydantic import field_validator
from silx.io.url import DataUrl
from ..io import nexus
[docs]
class SelectNXdataImageStacks(
Task,
input_model=Inputs,
output_names=["image_stacks", "output_root_uri", "image_stacks_nxmetadata"],
):
"""Find image stacks by searching recursively for 3D NXdata signals under a root HDF5 URL."""
[docs]
def run(self):
common_parent_url, image_stacks = nexus.find_nxdata_image_stacks(
self.inputs.input_root_uri
)
output_root_url, metadata = nexus.nxdata_image_stacks_metadata(
common_parent_url, image_stacks, output_root_url=self.inputs.output_root_uri
)
self.outputs.image_stacks = {
name: url.path() for name, url in image_stacks.items()
}
self.outputs.output_root_uri = output_root_url.path()
self.outputs.image_stacks_nxmetadata = metadata