diff --git a/newsfragments/XXX.feature b/newsfragments/XXX.feature new file mode 100644 index 000000000..10566ac3b --- /dev/null +++ b/newsfragments/XXX.feature @@ -0,0 +1 @@ +Add support for DECTRIS PILATUS 4 4M, using same systems as used for EIGER. diff --git a/src/dxtbx/format/FormatNXmx.py b/src/dxtbx/format/FormatNXmx.py index 6963d5f5f..78fa7e2c5 100644 --- a/src/dxtbx/format/FormatNXmx.py +++ b/src/dxtbx/format/FormatNXmx.py @@ -74,13 +74,16 @@ class FormatNXmx(FormatNexus): @staticmethod def understand(image_file): with h5py.File(image_file) as handle: - return bool( - [ - entry - for entry in nxmx.find_class(handle, "NXentry") - if "definition" in entry - and nxmx.h5str(entry["definition"][()]) == "NXmx" - ] + return ( + bool( + [ + entry + for entry in nxmx.find_class(handle, "NXentry") + if "definition" in entry + and nxmx.h5str(entry["definition"][()]) == "NXmx" + ] + ) + and "/entry/data/data" in handle ) def __init__(self, image_file, **kwargs): @@ -115,7 +118,9 @@ def _start(self): self._static_mask = mask_cache.store_unique_and_get( dxtbx.nexus.get_static_mask(nxdetector) ) - self._bit_depth_readout = nxdetector.bit_depth_readout + self._bit_depth_readout = max( + nxdetector.bit_depth_readout, nxdetector.bit_depth_image + ) if self._scan_model: self._num_images = len(self._scan_model) diff --git a/src/dxtbx/format/FormatNXmxEigerFilewriter.py b/src/dxtbx/format/FormatNXmxEigerFilewriter.py index 71d5577dd..e94086b32 100644 --- a/src/dxtbx/format/FormatNXmxEigerFilewriter.py +++ b/src/dxtbx/format/FormatNXmxEigerFilewriter.py @@ -35,7 +35,12 @@ (4371, 4150), } ) - +# And add PILATUS 4 module sizes +KNOWN_MODULE_SLOW_FAST_DIMS.update( + { + (2180, 2073), + } +) KNOWN_MODULE_FAST_SLOW_DIMS = {shape[::-1] for shape in KNOWN_MODULE_SLOW_FAST_DIMS}