From b97f0dba84b96ca30164d4b7718e5af86408fc45 Mon Sep 17 00:00:00 2001 From: davidmcdonagh Date: Mon, 29 Apr 2024 11:06:10 +0100 Subject: [PATCH] Fix dials.show for time of flight experiments. --- newsfragments/XXX.bugfix | 1 + src/dials/command_line/show.py | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 newsfragments/XXX.bugfix diff --git a/newsfragments/XXX.bugfix b/newsfragments/XXX.bugfix new file mode 100644 index 0000000000..5e29f576d1 --- /dev/null +++ b/newsfragments/XXX.bugfix @@ -0,0 +1 @@ +Fix `dials.show` beam checks for time of flight experiments. diff --git a/src/dials/command_line/show.py b/src/dials/command_line/show.py index e04d335d2e..a1019b16ba 100644 --- a/src/dials/command_line/show.py +++ b/src/dials/command_line/show.py @@ -7,6 +7,7 @@ import iotbx.phil from cctbx import uctbx +from dxtbx.model import ExperimentType from dxtbx.model.experiment_list import ExperimentListFactory from scitbx.math import five_number_summary @@ -87,11 +88,17 @@ def beam_centre_raw_image_px(detector, s0): return x_px + offset[0], y_px + offset[1] -def show_beam(detector, beam): +def show_beam( + detector, beam, experiment_type: ExperimentType = ExperimentType.ROTATION +): # standard static beam model string s = str(beam) + # time of flight experiments have no scan points + if experiment_type == ExperimentType.TOF: + return s + # report whether the beam is scan-varying if beam.num_scan_points > 0: s += " s0 sampled at " + str(beam.num_scan_points) + " scan points\n" @@ -263,16 +270,20 @@ def show_experiments(experiments, show_scan_varying=False): except AttributeError: pass text.append(str(expt.detector)) + if expt.get_type() == ExperimentType.TOF: + min_wavelength = min(expt.beam.get_wavelength_range()) + s0 = tuple([i / min_wavelength for i in expt.beam.get_unit_s0()]) + else: + s0 = expt.beam.get_s0() text.append( - "Max resolution (at corners): %f" - % (expt.detector.get_max_resolution(expt.beam.get_s0())) + "Max resolution (at corners): %f" % (expt.detector.get_max_resolution(s0)) ) text.append( "Max resolution (inscribed): %f" - % (expt.detector.get_max_inscribed_resolution(expt.beam.get_s0())) + % (expt.detector.get_max_inscribed_resolution(s0)) ) text.append("") - text.append(show_beam(expt.detector, expt.beam)) + text.append(show_beam(expt.detector, expt.beam, expt.get_type())) if expt.scan is not None: text.append(str(expt.scan)) if expt.goniometer is not None: