Skip to content

Commit

Permalink
NXmx: read data_scale_factor
Browse files Browse the repository at this point in the history
New parameter as of nexusformat/definitions#1343. This is not full support of the parameter or of data_offset, but it's one of the use cases needed, namely reading a single gain value
  • Loading branch information
phyy-nx committed Sep 13, 2024
1 parent 9e26747 commit 09e8eb8
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
1 change: 1 addition & 0 deletions newsfragments/XXX.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add support for reading the detector gain for nexus files
4 changes: 2 additions & 2 deletions src/dxtbx/format/FormatNXmx.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,11 @@ def _start(self):
nxinstrument = nxentry.instruments[0]
nxdetector = nxinstrument.detectors[0]
nxbeam = nxinstrument.beams[0]
nxdata = nxmx_obj.entries[0].data[0]
self._goniometer_model = dxtbx.nexus.get_dxtbx_goniometer(nxsample)
self._beam_factory = dxtbx.nexus.CachedWavelengthBeamFactory(nxbeam)
wavelength = self._beam_factory.make_beam(index=0).get_wavelength()
self._detector_model = dxtbx.nexus.get_dxtbx_detector(nxdetector, wavelength)
self._detector_model = dxtbx.nexus.get_dxtbx_detector(nxdetector, wavelength, nxdata)

# if the detector is between the sample and the source, and perpendicular
# to the beam, then invert the distance vector, as this is probably wrong
Expand All @@ -86,7 +87,6 @@ def _start(self):
if self._scan_model:
self._num_images = len(self._scan_model)
else:
nxdata = nxmx_obj.entries[0].data[0]
if nxdata.signal:
data = nxdata[nxdata.signal]
else:
Expand Down
4 changes: 4 additions & 0 deletions src/dxtbx/nexus/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ def get_dxtbx_scan(
def get_dxtbx_detector(
nxdetector: nxmx.NXdetector,
wavelength: float,
nxdata: nxmx.NXdata,
) -> dxtbx.model.Detector:
"""Generate a dxtbx detector model from an NXdetector and NXbeam.
Expand Down Expand Up @@ -461,6 +462,9 @@ def equipment_component_key(dependency):
p.set_mu(mu)
p.set_px_mm_strategy(px_mm)

if nxdata.data_scale_factor and not nxdata.data_scale_factor.shape:
p.set_gain(1/nxdata.data_scale_factor)

return detector


Expand Down

0 comments on commit 09e8eb8

Please sign in to comment.