cctbx / dxtbx

Diffraction Experiment Toolbox
BSD 3-Clause "New" or "Revised" License
2 stars 18 forks source link

Generalise dlsnxs2cbf for non-Eiger detectors #310

Open benjaminhwilliams opened 3 years ago

benjaminhwilliams commented 3 years ago

dxtbx.dlsnxs2cbf assumes input data are from an Eiger detector: https://github.com/cctbx/dxtbx/blob/bffa28ea73c9468d0c93c33a058822c96304ff5a/util/dlsnxs2cbf.py#L88 spcifically, this Eiger detector at Diamond: https://github.com/cctbx/dxtbx/blob/bffa28ea73c9468d0c93c33a058822c96304ff5a/util/dlsnxs2cbf.py#L97

It would be nice to remove this assertion, if possible, to make dlsnxs2cbf useful for other sources of NXmx-flavour NeXus HDF5 files.

phyy-nx commented 3 years ago

Don't forget about cbf_writer. I just used it to dump 100 cbfs from a SwissFEL dataset (NeXus hdf5). I validated it by using dials.show to verify I got the same geometry understood by FormatNexus as by FormatCBFFull.

Caveats: it dumps full, multipanel cbfs, which are only useful if the downstream application can read them. It looks like dlsnxs2cbf dumps mini cbfs. cbf_writer also doesn't write goniometer/scan info, but that could be added by someone.

benjaminhwilliams commented 3 years ago

Thanks @phyy-nx, I'm afraid that the goniometer and scan info are necessary in the case that prompted this issue, so I think the quickest fix will be to work with dlstbx2nxs. I imagine (naively?) that it's as simple as reading the detector info, serial number, etc. from the input HDF5 file, and populating the above-mentioned strings dynamically.