From 4e8320c4ee8d56f0d403a55baf647f4a9180d967 Mon Sep 17 00:00:00 2001 From: davidmcdonagh Date: Thu, 2 May 2024 10:19:36 +0100 Subject: [PATCH] Added ExperimentList.all_laue(). Added test for ExperimentList.all_*(). --- src/dxtbx/model/__init__.py | 4 ++ tests/model/test_experiment_list.py | 70 +++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/src/dxtbx/model/__init__.py b/src/dxtbx/model/__init__.py index 0cfbc0711..d1e5e384b 100644 --- a/src/dxtbx/model/__init__.py +++ b/src/dxtbx/model/__init__.py @@ -615,6 +615,10 @@ def all_tof(self): """Check if all the experiments are time-of-flight""" return all(exp.get_type() == ExperimentType.TOF for exp in self) + def all_laue(self): + """Check if all the experiments are Laue experiments""" + return all(exp.get_type() == ExperimentType.LAUE for exp in self) + def to_dict(self): """Serialize the experiment list to dictionary.""" diff --git a/tests/model/test_experiment_list.py b/tests/model/test_experiment_list.py index c11ed0259..0e9643c22 100644 --- a/tests/model/test_experiment_list.py +++ b/tests/model/test_experiment_list.py @@ -1202,3 +1202,73 @@ def test_from_templates(dials_data): assert len(expts) == 1 assert expts[0].imageset.get_template() == str(template) assert len(expts[0].imageset) == 45 + + +def test_experiment_list_all(): + experiments = ExperimentList() + for i in range(3): + experiments.append(Experiment()) + + assert experiments.all_stills() + experiments[0].goniometer = Goniometer() + assert experiments.all_stills() + experiments[1].goniometer = Goniometer() + experiments[2].goniometer = Goniometer() + assert experiments.all_stills() + + experiments[0].beam = BeamFactory.make_polychromatic_beam( + direction=(0, 0, -1), + sample_to_source_distance=(100), + probe=Probe.xray, + wavelength_range=(1, 10), + ) + assert not experiments.all_stills() + experiments[1].beam = BeamFactory.make_polychromatic_beam( + direction=(0, 0, -1), + sample_to_source_distance=(100), + probe=Probe.xray, + wavelength_range=(1, 10), + ) + experiments[2].beam = BeamFactory.make_polychromatic_beam( + direction=(0, 0, -1), + sample_to_source_distance=(100), + probe=Probe.xray, + wavelength_range=(1, 10), + ) + assert experiments.all_laue() + + experiments[0].beam = Beam() + assert not experiments.all_laue() + experiments[1].beam = Beam() + experiments[2].beam = Beam() + assert experiments.all_stills() + + experiments[0].scan = Scan((1, 1000), (0, 0.05)) + assert not experiments.all_stills() + experiments[1].scan = Scan((1, 1000), (0, 0.05)) + experiments[2].scan = Scan((1, 1000), (0, 0.05)) + assert experiments.all_rotations() + + experiments[0].scan = ScanFactory.make_scan_from_properties( + (1, 10), properties={"time_of_flight": list(range(10))} + ) + assert not experiments.all_rotations() + experiments[1].scan = ScanFactory.make_scan_from_properties( + (1, 10), properties={"time_of_flight": list(range(10))} + ) + experiments[2].scan = ScanFactory.make_scan_from_properties( + (1, 10), properties={"time_of_flight": list(range(10))} + ) + assert experiments.all_tof() + + experiments[0].scan = ScanFactory.make_scan_from_properties( + (1, 10), properties={"other_property": list(range(10))} + ) + assert not experiments.all_tof() + experiments[1].scan = ScanFactory.make_scan_from_properties( + (1, 10), properties={"other_property": list(range(10))} + ) + experiments[2].scan = ScanFactory.make_scan_from_properties( + (1, 10), properties={"other_property": list(range(10))} + ) + assert experiments.all_stills()