From e7630fb118a94e23446261ac34ac461a2c3e7bab Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Wed, 8 Apr 2026 15:32:18 +0100 Subject: [PATCH 1/6] Remove omega from CombinedMove --- .../common/device_setup_plans/manipulate_sample.py | 11 ++++------- .../common/device_setup_plans/robot_load_unload.py | 3 ++- .../pin_centre_then_gridscan_plan.py | 4 ++-- .../device_setup_plans/test_robot_load_unload.py | 2 +- .../device_setup_plans/test_manipulate_sample.py | 12 +++++------- .../test_pin_centre_then_xray_centre_plan.py | 2 +- 6 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py b/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py index 0147a67ea7..743ae90094 100644 --- a/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py +++ b/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py @@ -93,20 +93,17 @@ def move_x_y_z( yield from bps.wait(group) -def move_phi_chi_omega( +def move_phi_chi( smargon: Smargon, phi: float | None = None, chi: float | None = None, - omega: float | None = None, wait=False, group="move_phi_chi_omega", ): - """Move the x, y, and z axes of the given smargon to the specified position. All + """Move the phi, chi of the given smargon to the specified position. All axes are optional.""" - LOGGER.info(f"Moving smargon to phi, chi, omega: {(phi, chi, omega)}") - yield from bps.abs_set( - smargon, CombinedMove(phi=phi, chi=chi, omega=omega), group=group - ) + LOGGER.info(f"Moving smargon to phi, chi: {(phi, chi)}") + yield from bps.abs_set(smargon, CombinedMove(phi=phi, chi=chi), group=group) if wait: yield from bps.wait(group) diff --git a/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py b/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py index 5905ca06a3..08e97910d5 100644 --- a/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py +++ b/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py @@ -63,7 +63,8 @@ def prepare_for_robot_load( yield from bps.mv(smargon.stub_offsets, StubPosition.RESET_TO_ROBOT_LOAD) - yield from bps.mv(smargon, CombinedMove(x=0, y=0, z=0, chi=0, phi=0, omega=0)) + yield from bps.mv(smargon.wrapped_omega.phase, 0) + yield from bps.mv(smargon, CombinedMove(x=0, y=0, z=0, chi=0, phi=0)) yield from bps.wait("prepare_robot_load") diff --git a/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_gridscan_plan.py b/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_gridscan_plan.py index 685c7ab6a4..b6841ae173 100644 --- a/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_gridscan_plan.py +++ b/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_gridscan_plan.py @@ -5,7 +5,7 @@ from dodal.common.beamlines.beamline_utils import get_config_client from dodal.devices.oav.oav_parameters import OAVParameters -from mx_bluesky.common.device_setup_plans.manipulate_sample import move_phi_chi_omega +from mx_bluesky.common.device_setup_plans.manipulate_sample import move_phi_chi from mx_bluesky.common.experiment_plans.common_grid_detect_then_xray_centre_plan import ( detect_grid_and_do_gridscan, ) @@ -74,7 +74,7 @@ def _pin_centre_then_gridscan_and_xrc(): composite.gonio, composite.backlight, composite.aperture_scatterguard ) - yield from move_phi_chi_omega( + yield from move_phi_chi( composite.gonio, parameters.phi_start_deg, parameters.chi_start_deg, diff --git a/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py b/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py index 0a55842faa..08ad0194b8 100644 --- a/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +++ b/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py @@ -93,7 +93,7 @@ async def test_when_robot_unload_called_then_sample_area_prepared_before_load( msgs, lambda msg: msg.command == "set" and msg.obj.name == "gonio" - and msg.args[0] == CombinedMove(x=0, y=0, z=0, omega=0, chi=0, phi=0), + and msg.args[0] == CombinedMove(x=0, y=0, z=0, chi=0, phi=0), ) assert_message_and_return_remaining( diff --git a/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py b/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py index 19791a8618..65192583fb 100644 --- a/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +++ b/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py @@ -7,7 +7,7 @@ from mx_bluesky.common.device_setup_plans.manipulate_sample import ( move_aperture_if_required, - move_phi_chi_omega, + move_phi_chi, move_x_y_z, ) @@ -76,12 +76,12 @@ def test_move_phi_chi_omega_no_wait( smargon: Smargon, sim_run_engine: RunEngineSimulator, ): - msgs = sim_run_engine.simulate_plan(move_phi_chi_omega(smargon, 10.0, 5.0, None)) + msgs = sim_run_engine.simulate_plan(move_phi_chi(smargon, 10.0, 5.0)) msgs = assert_message_and_return_remaining( msgs, lambda msg: msg.command == "set" and msg.obj.name == smargon.name - and msg.args[0] == CombinedMove(phi=10.0, chi=5.0, omega=None), + and msg.args[0] == CombinedMove(phi=10.0, chi=5.0), ) assert len(msgs) == 1 @@ -90,14 +90,12 @@ def test_move_phi_chi_omega_wait( smargon: Smargon, sim_run_engine: RunEngineSimulator, ): - msgs = sim_run_engine.simulate_plan( - move_phi_chi_omega(smargon, 10.0, 5.0, None, wait=True) - ) + msgs = sim_run_engine.simulate_plan(move_phi_chi(smargon, 10.0, 5.0, wait=True)) msgs = assert_message_and_return_remaining( msgs, lambda msg: msg.command == "set" and msg.obj.name == smargon.name - and msg.args[0] == CombinedMove(phi=10.0, chi=5.0, omega=None), + and msg.args[0] == CombinedMove(phi=10.0, chi=5.0), ) group = msgs[0].kwargs["group"] assert_message_and_return_remaining( diff --git a/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py b/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py index 23577be5df..75eb98b03e 100644 --- a/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +++ b/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py @@ -283,7 +283,7 @@ def test_pin_centre_then_gridscan_plan_goes_to_the_starting_chi_and_phi( msgs, lambda msg: msg.command == "set" and msg.obj.name == "gonio" - and msg.args[0] == CombinedMove(phi=expected_phi, chi=expected_chi, omega=None) + and msg.args[0] == CombinedMove(phi=expected_phi, chi=expected_chi) and msg.kwargs["group"] == CONST.WAIT.READY_FOR_OAV, ) From 2163112c305544788e52fca0e6279b8120d72f8f Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Wed, 8 Apr 2026 15:45:22 +0100 Subject: [PATCH 2/6] Pin dodal to branch dependency --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6ade793d98..81bb29d74d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.16.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@main", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@1998_serialize_omega_combined_move", ] From 4dfbb4ce785ee0dcfa95d06c72001dae7a189eb4 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 9 Apr 2026 10:14:48 +0100 Subject: [PATCH 3/6] Update robot load unit test to check omega is still set --- .../test_robot_load_unload.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py b/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py index 08ad0194b8..a61762952c 100644 --- a/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +++ b/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py @@ -89,14 +89,27 @@ async def test_when_robot_unload_called_then_sample_area_prepared_before_load( and msg.args[0] == ApertureValue.OUT_OF_BEAM, ) - assert_message_and_return_remaining( + msgs = assert_message_and_return_remaining( + msgs, + lambda msg: msg.command == "set" + and msg.obj is smargon.wrapped_omega.phase + and msg.args[0] == 0, + ) + + msgs = assert_message_and_return_remaining( + msgs, + lambda msg: msg.command == "wait" + and msg.kwargs["group"] == msgs[0].kwargs["group"], + ) + + msgs = assert_message_and_return_remaining( msgs, lambda msg: msg.command == "set" and msg.obj.name == "gonio" and msg.args[0] == CombinedMove(x=0, y=0, z=0, chi=0, phi=0), ) - assert_message_and_return_remaining( + msgs = assert_message_and_return_remaining( msgs, lambda msg: msg.command == "set" and msg.obj is robot From 0fcf09e6f892453b86d7342b9df30a915ac99431 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Wed, 8 Apr 2026 15:45:00 +0100 Subject: [PATCH 4/6] Update uv.lock --- uv.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uv.lock b/uv.lock index f220fb58eb..697151b92e 100644 --- a/uv.lock +++ b/uv.lock @@ -802,8 +802,8 @@ wheels = [ [[package]] name = "dls-dodal" -version = "2.2.3.dev14+g729a8b2d8" -source = { git = "https://github.com/DiamondLightSource/dodal.git?rev=main#729a8b2d8730963455c268cb38d91bfcaa9e50be" } +version = "2.2.4.dev3+geb7d0e631" +source = { git = "https://github.com/DiamondLightSource/dodal.git?rev=1998_serialize_omega_combined_move#eb7d0e631a1a5a78ffe9fdad8c8729452baf0279" } dependencies = [ { name = "aiofiles", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, { name = "aiohttp", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, @@ -2109,7 +2109,7 @@ requires-dist = [ { name = "caproto" }, { name = "daq-config-server", specifier = ">=1.3.0" }, { name = "deepdiff" }, - { name = "dls-dodal", git = "https://github.com/DiamondLightSource/dodal.git?rev=main" }, + { name = "dls-dodal", git = "https://github.com/DiamondLightSource/dodal.git?rev=1998_serialize_omega_combined_move" }, { name = "fastapi", extras = ["all"] }, { name = "flask-restful" }, { name = "jupyterlab" }, From 7655f84427e4903342b45eba7089a2df3c304d1c Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 14 May 2026 14:13:46 +0100 Subject: [PATCH 5/6] Unpin dodal --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 81bb29d74d..6ade793d98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.16.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@1998_serialize_omega_combined_move", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@main", ] From 86ca2b1cbca7a46b1530ebdff13aca98c33a4212 Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 14 May 2026 14:14:11 +0100 Subject: [PATCH 6/6] Update uv.lock --- uv.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uv.lock b/uv.lock index b7fd9c53b3..bdd785690d 100644 --- a/uv.lock +++ b/uv.lock @@ -807,8 +807,8 @@ wheels = [ [[package]] name = "dls-dodal" -version = "2.3.1.dev4+gdd687cce0" -source = { git = "https://github.com/DiamondLightSource/dodal.git?rev=main#dd687cce03e1a18ba9a0698d7ebc1e8f6b460ad9" } +version = "2.3.1.dev8+gca163b99a" +source = { git = "https://github.com/DiamondLightSource/dodal.git?rev=main#ca163b99a719b006e844067e724bf8c103615b83" } dependencies = [ { name = "aiofiles", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, { name = "aiohttp", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },