Source code for id3c.callbacks.demo_nexus_callback

"""
Nexus data file writer callback.

This module provides callbacks for writing data to Nexus data files.
"""

import logging
from typing import Any

[docs] logger = logging.getLogger(__name__)
[docs] def nxwriter_init(RE: Any, iconfig: dict[str, Any]) -> Any: """Initialize the Nexus data file writer callback.""" from apstools.utils import host_on_aps_subnet if host_on_aps_subnet(): from apstools.callbacks import NXWriterAPS as NXWriter else: from apstools.callbacks import NXWriter class MyNXWriter(NXWriter): """Patch to get sample title from metadata, if available.""" def get_sample_title(self) -> str: """ Get the title from the metadata or modify the default. default title: S{scan_id}-{plan_name}-{short_uid} """ try: title = self.metadata["title"] except KeyError: title = f"S{self.scan_id:05d}-{self.plan_name}-{self.uid[:7]}" return title nxwriter = MyNXWriter() # create the callback instance """The NeXus file writer object.""" if iconfig.get("NEXUS_DATA_FILES", {}).get("ENABLE", False): RE.subscribe(nxwriter.receiver) # write data to NeXus files nxwriter.file_extension = iconfig.get("NEXUS_DATA_FILES", {}).get( "FILE_EXTENSION", "hdf" ) print(nxwriter.file_extension) warn_missing = iconfig.get("NEXUS_DATA_FILES", {}).get("WARN_MISSING", False) nxwriter.warn_on_missing_content = warn_missing return nxwriter