diff --git a/newsfragments/676.bugfix b/newsfragments/676.bugfix new file mode 100644 index 000000000..5ba08c119 --- /dev/null +++ b/newsfragments/676.bugfix @@ -0,0 +1,6 @@ +Eiger support: following bug fix in DECTRIS file writer, invert the module +dimensions only for older firmware versions. See + +https://media.dectris.com/230203-Release_Notes-DECTRIS_EIGER2.pdf + +for reference (Corrected data size orientation) diff --git a/src/dxtbx/format/FormatNXmxEigerFilewriter.py b/src/dxtbx/format/FormatNXmxEigerFilewriter.py index fbfde2929..177c27fb4 100644 --- a/src/dxtbx/format/FormatNXmxEigerFilewriter.py +++ b/src/dxtbx/format/FormatNXmxEigerFilewriter.py @@ -4,6 +4,7 @@ import h5py import nxmx +from packaging import version from scitbx.array_family import flex @@ -14,7 +15,6 @@ class FormatNXmxEigerFilewriter(FormatNXmx): - _cached_file_handle = None @staticmethod @@ -49,14 +49,14 @@ def _get_nxmx(self, fh: h5py.File): if nxdetector.underload_value is None: nxdetector.underload_value = 0 - # data_size is reversed - we should probably be more specific in when - # we do this, i.e. check data_size is in a list of known reversed - # values - known_safe = [ - (1082, 1035), - ] - for module in nxdetector.modules: - if not tuple(module.data_size) in known_safe: + # older firmware versions had the detector dimensions inverted + fw_version_string = ( + fh["/entry/instrument/detector/detectorSpecific/eiger_fw_version"][()] + .decode() + .replace("release-", "") + ) + if version.parse("2022.1.2") > version.parse(fw_version_string): + for module in nxdetector.modules: module.data_size = module.data_size[::-1] return nxmx_obj