diff --git a/newsfragments/651.feature b/newsfragments/651.feature new file mode 100644 index 000000000..2f790c707 --- /dev/null +++ b/newsfragments/651.feature @@ -0,0 +1 @@ +Add support for Eiger 9M on ESRF ID23-2, which has an undeclared vertical goniometer. diff --git a/src/dxtbx/format/FormatNXmxEigerFilewriterESRFID232.py b/src/dxtbx/format/FormatNXmxEigerFilewriterESRFID232.py new file mode 100644 index 000000000..58d2fcb60 --- /dev/null +++ b/src/dxtbx/format/FormatNXmxEigerFilewriterESRFID232.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +import re + +import h5py + +from dxtbx.format.FormatNXmxEigerFilewriter import FormatNXmxEigerFilewriter + +DATA_FILE_RE = re.compile(r"data_\d{6}") + + +class FormatNXmxEigerFilewriterESRFID232(FormatNXmxEigerFilewriter): + _cached_file_handle = None + + @staticmethod + def understand(image_file): + with h5py.File(image_file) as handle: + if "/entry/instrument/detector/detector_number" in handle: + if ( + handle["/entry/instrument/detector/detector_number"][()] + == b"E-18-0133" + ): + return True + return False + + def __init__(self, image_file, **kwargs): + """Initialise the image structure from the given file.""" + super().__init__(image_file, **kwargs) + + def _start(self): + super()._start() + + def _goniometer(self): + return self._goniometer_factory.known_axis((0, 1, 0))