Source code for ophyd_async.plan_stubs._nd_attributes
from collections.abc import Sequence
import bluesky.plan_stubs as bps
from ophyd_async.epics.adcore import (
AreaDetector,
NDArrayBaseIO,
NDAttributeDataType,
NDAttributeParam,
NDAttributePv,
NDFileHDFIO,
ndattributes_to_xml,
)
[docs]
def setup_ndattributes(
device: NDArrayBaseIO, ndattributes: Sequence[NDAttributeParam | NDAttributePv]
):
xml = ndattributes_to_xml(ndattributes)
yield from bps.abs_set(
device.nd_attributes_file,
xml,
wait=True,
)
[docs]
def setup_ndstats_sum(detector: AreaDetector):
"""Set up nd stats sum nd attribute for a detector."""
hdf = getattr(detector, "fileio", None)
if not isinstance(hdf, NDFileHDFIO):
msg = (
f"Expected {detector.name} to have 'fileio' attribute that is an "
f"NDFileHDFIO, got {hdf}"
)
raise TypeError(msg)
yield from (
setup_ndattributes(
hdf,
[
NDAttributeParam(
name=f"{detector.name}-sum",
param="NDPluginStatsTotal",
datatype=NDAttributeDataType.DOUBLE,
description="Sum of the array",
)
],
)
)