From f0be38cc869d96302144e7f31655ceb89651770f Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 3 May 2024 15:58:33 +0100 Subject: [PATCH 1/2] (DiamondLightSource/dodal#397) Update to use ophyd_async undulator_dcm device --- .../dcm_pitch_roll_mirror_adjuster.py | 11 ++++---- .../read_hardware_for_setup.py | 2 +- .../flyscan_xray_centre_plan.py | 2 +- .../grid_detect_then_xray_centre_plan.py | 2 +- .../robot_load_then_centre_plan.py | 2 +- .../experiment_plans/rotation_scan_plan.py | 2 +- .../experiment_plans/set_energy_plan.py | 12 ++++----- .../callbacks/ispyb_callback_base.py | 6 ++--- .../callbacks/rotation/nexus_callback.py | 2 +- .../callbacks/xray_centre/nexus_callback.py | 2 +- tests/conftest.py | 26 ++++++++++--------- .../test_dcm_pitch_roll_mirror_adjuster.py | 16 ++++++------ tests/unit_tests/experiment_plans/conftest.py | 4 +-- .../test_flyscan_xray_centre_plan.py | 11 ++++---- .../test_panda_flyscan_xray_centre_plan.py | 4 +-- .../test_wait_for_robot_load_then_centre.py | 14 +++++----- .../callbacks/conftest.py | 6 ++--- .../callbacks/test_rotation_callbacks.py | 8 +++--- tests/unit_tests/hyperion/test_main_system.py | 2 +- 19 files changed, 68 insertions(+), 66 deletions(-) diff --git a/src/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py b/src/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py index 315f5970d..428b6d143 100644 --- a/src/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +++ b/src/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py @@ -1,12 +1,12 @@ import json import bluesky.plan_stubs as bps -from dodal.devices.DCM import DCM from dodal.devices.focusing_mirror import ( FocusingMirror, MirrorStripe, VFMMirrorVoltages, ) +from dodal.devices.undulator_dcm import UndulatorDCM from dodal.devices.util.adjuster_plans import lookup_table_adjuster from dodal.devices.util.lookup_tables import ( linear_interpolation_lut, @@ -68,7 +68,7 @@ def adjust_mirror_stripe( def adjust_dcm_pitch_roll_vfm_from_lut( - dcm: DCM, + undulator_dcm: UndulatorDCM, vfm: FocusingMirror, vfm_mirror_voltages: VFMMirrorVoltages, energy_kev, @@ -80,11 +80,12 @@ def adjust_dcm_pitch_roll_vfm_from_lut( feedback from making unnecessary corrections while beam is being adjusted.""" # DCM Pitch + dcm = undulator_dcm.dcm LOGGER.info(f"Adjusting DCM and VFM for {energy_kev} keV") bragg_deg = yield from bps.rd(dcm.bragg_in_degrees.user_readback) LOGGER.info(f"Read Bragg angle = {bragg_deg} degrees") dcm_pitch_adjuster = lookup_table_adjuster( - linear_interpolation_lut(dcm.dcm_pitch_converter_lookup_table_path), + linear_interpolation_lut(undulator_dcm.dcm_pitch_converter_lookup_table_path), dcm.pitch_in_mrad, bragg_deg, ) @@ -94,7 +95,7 @@ def adjust_dcm_pitch_roll_vfm_from_lut( # DCM Roll dcm_roll_adjuster = lookup_table_adjuster( - linear_interpolation_lut(dcm.dcm_roll_converter_lookup_table_path), + linear_interpolation_lut(undulator_dcm.dcm_roll_converter_lookup_table_path), dcm.roll_in_mrad, bragg_deg, ) @@ -102,7 +103,7 @@ def adjust_dcm_pitch_roll_vfm_from_lut( LOGGER.info("Waiting for DCM roll adjust to complete...") # DCM Perp pitch - offset_mm = dcm.fixed_offset_mm + offset_mm = undulator_dcm.dcm_fixed_offset_mm LOGGER.info(f"Adjusting DCM offset to {offset_mm} mm") yield from bps.abs_set(dcm.offset_in_mm, offset_mm, group=DCM_GROUP) diff --git a/src/hyperion/device_setup_plans/read_hardware_for_setup.py b/src/hyperion/device_setup_plans/read_hardware_for_setup.py index 23ace4ddb..412c63e11 100644 --- a/src/hyperion/device_setup_plans/read_hardware_for_setup.py +++ b/src/hyperion/device_setup_plans/read_hardware_for_setup.py @@ -3,7 +3,7 @@ import bluesky.plan_stubs as bps from dodal.devices.aperturescatterguard import ApertureScatterguard from dodal.devices.attenuator import Attenuator -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.eiger import EigerDetector from dodal.devices.flux import Flux from dodal.devices.robot import BartRobot diff --git a/src/hyperion/experiment_plans/flyscan_xray_centre_plan.py b/src/hyperion/experiment_plans/flyscan_xray_centre_plan.py index 92cf99db5..492ede483 100755 --- a/src/hyperion/experiment_plans/flyscan_xray_centre_plan.py +++ b/src/hyperion/experiment_plans/flyscan_xray_centre_plan.py @@ -14,7 +14,7 @@ ) from dodal.devices.attenuator import Attenuator from dodal.devices.backlight import Backlight -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.eiger import EigerDetector from dodal.devices.fast_grid_scan import FastGridScan from dodal.devices.fast_grid_scan import set_fast_grid_scan_params as set_flyscan_params diff --git a/src/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py b/src/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py index 69316958b..22bc2638b 100644 --- a/src/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +++ b/src/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py @@ -10,7 +10,7 @@ from dodal.devices.aperturescatterguard import ApertureScatterguard from dodal.devices.attenuator import Attenuator from dodal.devices.backlight import Backlight -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.detector.detector_motion import DetectorMotion from dodal.devices.eiger import EigerDetector from dodal.devices.fast_grid_scan import FastGridScan diff --git a/src/hyperion/experiment_plans/robot_load_then_centre_plan.py b/src/hyperion/experiment_plans/robot_load_then_centre_plan.py index 144ee73d8..79dfbc6d4 100644 --- a/src/hyperion/experiment_plans/robot_load_then_centre_plan.py +++ b/src/hyperion/experiment_plans/robot_load_then_centre_plan.py @@ -11,7 +11,7 @@ from dodal.devices.aperturescatterguard import AperturePositions, ApertureScatterguard from dodal.devices.attenuator import Attenuator from dodal.devices.backlight import Backlight -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.detector.det_resolution import resolution from dodal.devices.detector.detector_motion import DetectorMotion from dodal.devices.eiger import EigerDetector diff --git a/src/hyperion/experiment_plans/rotation_scan_plan.py b/src/hyperion/experiment_plans/rotation_scan_plan.py index 617ab78cc..cee48c16a 100644 --- a/src/hyperion/experiment_plans/rotation_scan_plan.py +++ b/src/hyperion/experiment_plans/rotation_scan_plan.py @@ -9,7 +9,7 @@ from dodal.devices.aperturescatterguard import ApertureScatterguard from dodal.devices.attenuator import Attenuator from dodal.devices.backlight import Backlight -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.detector import DetectorParams from dodal.devices.detector.detector_motion import DetectorMotion from dodal.devices.eiger import EigerDetector diff --git a/src/hyperion/experiment_plans/set_energy_plan.py b/src/hyperion/experiment_plans/set_energy_plan.py index a3cfcd7de..784163c29 100644 --- a/src/hyperion/experiment_plans/set_energy_plan.py +++ b/src/hyperion/experiment_plans/set_energy_plan.py @@ -1,8 +1,8 @@ """Plan that comprises: - * Disable feedback - * Set undulator energy to the requested amount - * Adjust DCM and mirrors for the new energy - * reenable feedback +* Disable feedback +* Set undulator energy to the requested amount +* Adjust DCM and mirrors for the new energy +* reenable feedback """ import dataclasses @@ -11,7 +11,7 @@ from bluesky import plan_stubs as bps from bluesky.utils import Msg from dodal.devices.attenuator import Attenuator -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.focusing_mirror import FocusingMirror, VFMMirrorVoltages from dodal.devices.undulator_dcm import UndulatorDCM from dodal.devices.xbpm_feedback import XBPMFeedback @@ -42,7 +42,7 @@ def _set_energy_plan( ): yield from bps.abs_set(composite.undulator_dcm, energy_kev, group=UNDULATOR_GROUP) yield from dcm_pitch_roll_mirror_adjuster.adjust_dcm_pitch_roll_vfm_from_lut( - composite.dcm, + composite.undulator_dcm, composite.vfm, composite.vfm_mirror_voltages, energy_kev, diff --git a/src/hyperion/external_interaction/callbacks/ispyb_callback_base.py b/src/hyperion/external_interaction/callbacks/ispyb_callback_base.py index 5d1210530..0800e2bcf 100644 --- a/src/hyperion/external_interaction/callbacks/ispyb_callback_base.py +++ b/src/hyperion/external_interaction/callbacks/ispyb_callback_base.py @@ -113,7 +113,7 @@ def _handle_ispyb_hardware_read(self, doc) -> Sequence[ScanDataInfo]: SynchrotronMode, ) hwscan_data_collection_info = DataCollectionInfo( - undulator_gap1=doc["data"]["undulator_current_gap"], + undulator_gap1=doc["data"]["undulator-current_gap"], synchrotron_mode=synchrotron_mode.value, slitgap_horizontal=doc["data"]["s4_slit_gaps_xgap"], slitgap_vertical=doc["data"]["s4_slit_gaps_ygap"], @@ -176,8 +176,8 @@ def _handle_ispyb_transmission_flux_read(self, doc) -> Sequence[ScanDataInfo]: if transmission := doc["data"]["attenuator_actual_transmission"]: # Ispyb wants the transmission in a percentage, we use fractions hwscan_data_collection_info.transmission = transmission * 100 - if doc["data"]["dcm_energy_in_kev"]: - energy_ev = doc["data"]["dcm_energy_in_kev"] * 1000 + if doc["data"]["dcm-energy_in_kev"]: + energy_ev = doc["data"]["dcm-energy_in_kev"] * 1000 hwscan_data_collection_info.wavelength = convert_eV_to_angstrom(energy_ev) scan_data_infos = self.populate_info_for_update( hwscan_data_collection_info, self.params diff --git a/src/hyperion/external_interaction/callbacks/rotation/nexus_callback.py b/src/hyperion/external_interaction/callbacks/rotation/nexus_callback.py index de3a276b0..7ac4e4aa1 100644 --- a/src/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +++ b/src/hyperion/external_interaction/callbacks/rotation/nexus_callback.py @@ -63,7 +63,7 @@ def activity_gated_event(self, doc: Event): self.writer.beam, self.writer.attenuator, ) = create_beam_and_attenuator_parameters( - data["dcm_energy_in_kev"], + data["dcm-energy_in_kev"], data["flux_flux_reading"], data["attenuator_actual_transmission"], ) diff --git a/src/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py b/src/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py index b1d6a030d..fd0ce5954 100644 --- a/src/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py +++ b/src/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py @@ -78,7 +78,7 @@ def activity_gated_event(self, doc: Event) -> Event | None: nexus_writer.beam, nexus_writer.attenuator, ) = create_beam_and_attenuator_parameters( - data["dcm_energy_in_kev"], + data["dcm-energy_in_kev"], data["flux_flux_reading"], data["attenuator_actual_transmission"], ) diff --git a/tests/conftest.py b/tests/conftest.py index 0151df580..6cf6cf71f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -21,7 +21,7 @@ ) from dodal.devices.attenuator import Attenuator from dodal.devices.backlight import Backlight -from dodal.devices.DCM import DCM +from dodal.devices.dcm import DCM from dodal.devices.detector.detector_motion import DetectorMotion from dodal.devices.eiger import EigerDetector from dodal.devices.fast_grid_scan import GridScanCompleteStatus @@ -382,16 +382,10 @@ def xbpm_feedback(done_status): @pytest.fixture -def dcm(): +def dcm(RE): dcm = i03.dcm(fake_with_ophyd_sim=True) - dcm.energy_in_kev.user_readback.sim_put(12.7) # type: ignore - dcm.pitch_in_mrad.user_setpoint._use_limits = False - dcm.dcm_roll_converter_lookup_table_path = ( - "tests/test_data/test_beamline_dcm_roll_converter.txt" - ) - dcm.dcm_pitch_converter_lookup_table_path = ( - "tests/test_data/test_beamline_dcm_pitch_converter.txt" - ) + set_sim_value(dcm.energy_in_kev.user_readback, 12.7) + set_sim_value(dcm.pitch_in_mrad.user_readback, 1) return dcm @@ -418,8 +412,16 @@ def vfm_mirror_voltages(): @pytest.fixture -def undulator_dcm(): - yield i03.undulator_dcm(fake_with_ophyd_sim=True) +def undulator_dcm(RE, dcm): + undulator_dcm = i03.undulator_dcm(fake_with_ophyd_sim=True) + undulator_dcm.dcm = dcm + undulator_dcm.dcm_roll_converter_lookup_table_path = ( + "tests/test_data/test_beamline_dcm_roll_converter.txt" + ) + undulator_dcm.dcm_pitch_converter_lookup_table_path = ( + "tests/test_data/test_beamline_dcm_pitch_converter.txt" + ) + yield undulator_dcm beamline_utils.clear_devices() diff --git a/tests/unit_tests/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py b/tests/unit_tests/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py index 8462237ba..a05ac1ec4 100644 --- a/tests/unit_tests/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +++ b/tests/unit_tests/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py @@ -4,13 +4,13 @@ import pytest from bluesky.run_engine import RunEngine from dodal.beamlines.beamline_parameters import GDABeamlineParameters -from dodal.devices.DCM import DCM from dodal.devices.focusing_mirror import ( FocusingMirror, MirrorStripe, MirrorVoltageDemand, VFMMirrorVoltages, ) +from dodal.devices.undulator_dcm import UndulatorDCM from ophyd import EpicsSignal from ophyd.sim import NullStatus from ophyd.status import Status @@ -154,7 +154,7 @@ def test_adjust_mirror_stripe( def test_adjust_dcm_pitch_roll_vfm_from_lut( - dcm: DCM, + undulator_dcm: UndulatorDCM, vfm: FocusingMirror, vfm_mirror_voltages: VFMMirrorVoltages, beamline_parameters: GDABeamlineParameters, @@ -163,32 +163,32 @@ def test_adjust_dcm_pitch_roll_vfm_from_lut( sim_run_engine.add_handler_for_callback_subscribes() sim_run_engine.add_handler( "read", - "dcm_bragg_in_degrees", - lambda msg: {"dcm_bragg_in_degrees": {"value": 5.0}}, + "dcm-bragg_in_degrees", + lambda msg: {"dcm-bragg_in_degrees": {"value": 5.0}}, ) messages = sim_run_engine.simulate_plan( - adjust_dcm_pitch_roll_vfm_from_lut(dcm, vfm, vfm_mirror_voltages, 7.5) + adjust_dcm_pitch_roll_vfm_from_lut(undulator_dcm, vfm, vfm_mirror_voltages, 7.5) ) messages = sim_run_engine.assert_message_and_return_remaining( messages, lambda msg: msg.command == "set" - and msg.obj.name == "dcm_pitch_in_mrad" + and msg.obj.name == "dcm-pitch_in_mrad" and abs(msg.args[0] - -0.75859) < 1e-5 and msg.kwargs["group"] == "DCM_GROUP", ) messages = sim_run_engine.assert_message_and_return_remaining( messages[1:], lambda msg: msg.command == "set" - and msg.obj.name == "dcm_roll_in_mrad" + and msg.obj.name == "dcm-roll_in_mrad" and abs(msg.args[0] - 4.0) < 1e-5 and msg.kwargs["group"] == "DCM_GROUP", ) messages = sim_run_engine.assert_message_and_return_remaining( messages[1:], lambda msg: msg.command == "set" - and msg.obj.name == "dcm_offset_in_mm" + and msg.obj.name == "dcm-offset_in_mm" and msg.args == (25.6,) and msg.kwargs["group"] == "DCM_GROUP", ) diff --git a/tests/unit_tests/experiment_plans/conftest.py b/tests/unit_tests/experiment_plans/conftest.py index 14d77e80d..cc8712a09 100644 --- a/tests/unit_tests/experiment_plans/conftest.py +++ b/tests/unit_tests/experiment_plans/conftest.py @@ -43,7 +43,7 @@ def make_event_doc(data, descriptor="abc123") -> Event: BASIC_PRE_SETUP_DOC = { - "undulator_current_gap": 0, + "undulator-current_gap": 0, "synchrotron-synchrotron_mode": SynchrotronMode.USER, "s4_slit_gaps_xgap": 0, "s4_slit_gaps_ygap": 0, @@ -52,7 +52,7 @@ def make_event_doc(data, descriptor="abc123") -> Event: BASIC_POST_SETUP_DOC = { "attenuator_actual_transmission": 0, "flux_flux_reading": 10, - "dcm_energy_in_kev": 11.105, + "dcm-energy_in_kev": 11.105, } diff --git a/tests/unit_tests/experiment_plans/test_flyscan_xray_centre_plan.py b/tests/unit_tests/experiment_plans/test_flyscan_xray_centre_plan.py index 694efa25b..1cf524a79 100644 --- a/tests/unit_tests/experiment_plans/test_flyscan_xray_centre_plan.py +++ b/tests/unit_tests/experiment_plans/test_flyscan_xray_centre_plan.py @@ -187,7 +187,7 @@ def test_read_hardware_for_ispyb_updates_from_ophyd_devices( ): undulator_test_value = 1.234 - fake_fgs_composite.undulator.current_gap.sim_put(undulator_test_value) # type: ignore + set_sim_value(fake_fgs_composite.undulator.current_gap, undulator_test_value) synchrotron_test_value = SynchrotronMode.USER set_sim_value( @@ -200,8 +200,9 @@ def test_read_hardware_for_ispyb_updates_from_ophyd_devices( ) current_energy_kev_test_value = 12.05 - fake_fgs_composite.dcm.energy_in_kev.user_readback.sim_put( # type: ignore - current_energy_kev_test_value + set_sim_value( + fake_fgs_composite.dcm.energy_in_kev.user_readback, + current_energy_kev_test_value, ) xgap_test_value = 0.1234 @@ -248,7 +249,7 @@ def test_read_hardware_for_ispyb_updates_from_ophyd_devices( assert_event( test_ispyb_callback.activity_gated_event.mock_calls[0], # pyright: ignore { - "undulator_current_gap": undulator_test_value, + "undulator-current_gap": undulator_test_value, "synchrotron-synchrotron_mode": synchrotron_test_value.value, "s4_slit_gaps_xgap": xgap_test_value, "s4_slit_gaps_ygap": ygap_test_value, @@ -259,7 +260,7 @@ def test_read_hardware_for_ispyb_updates_from_ophyd_devices( { "attenuator_actual_transmission": transmission_test_value, "flux_flux_reading": flux_test_value, - "dcm_energy_in_kev": current_energy_kev_test_value, + "dcm-energy_in_kev": current_energy_kev_test_value, }, ) # fmt: on diff --git a/tests/unit_tests/experiment_plans/test_panda_flyscan_xray_centre_plan.py b/tests/unit_tests/experiment_plans/test_panda_flyscan_xray_centre_plan.py index 3d793446e..70f951002 100644 --- a/tests/unit_tests/experiment_plans/test_panda_flyscan_xray_centre_plan.py +++ b/tests/unit_tests/experiment_plans/test_panda_flyscan_xray_centre_plan.py @@ -142,7 +142,7 @@ def test_read_hardware_for_ispyb_updates_from_ophyd_devices( ): undulator_test_value = 1.234 - fake_fgs_composite.undulator.current_gap.sim_put(undulator_test_value) # type: ignore + set_sim_value(fake_fgs_composite.undulator.current_gap, undulator_test_value) synchrotron_test_value = SynchrotronMode.USER set_sim_value( @@ -193,7 +193,7 @@ def test_read_hardware_for_ispyb_updates_from_ophyd_devices( assert_event( test_ispyb_callback.activity_gated_event.mock_calls[0], # pyright: ignore { - "undulator_current_gap": undulator_test_value, + "undulator-current_gap": undulator_test_value, "synchrotron-synchrotron_mode": synchrotron_test_value.value, "s4_slit_gaps_xgap": xgap_test_value, "s4_slit_gaps_ygap": ygap_test_value, diff --git a/tests/unit_tests/experiment_plans/test_wait_for_robot_load_then_centre.py b/tests/unit_tests/experiment_plans/test_wait_for_robot_load_then_centre.py index c4969a125..2de19cf82 100644 --- a/tests/unit_tests/experiment_plans/test_wait_for_robot_load_then_centre.py +++ b/tests/unit_tests/experiment_plans/test_wait_for_robot_load_then_centre.py @@ -38,7 +38,7 @@ def robot_load_composite( composite: RobotLoadThenCentreComposite = MagicMock() composite.smargon = smargon composite.dcm = dcm - composite.dcm.energy_in_kev.user_readback.sim_put(11.105) + set_sim_value(composite.dcm.energy_in_kev.user_readback, 11.105) composite.robot = robot composite.aperture_scatterguard = aperture_scatterguard composite.smargon.stub_offsets.set = MagicMock(return_value=NullStatus()) @@ -114,8 +114,8 @@ def test_when_plan_run_with_requested_energy_specified_energy_change_executes( ): sim_run_engine.add_handler( "read", - "dcm_energy_in_kev", - lambda msg: {"dcm_energy_in_kev": {"value": 11.105}}, + "dcm-energy_in_kev", + lambda msg: {"dcm-energy_in_kev": {"value": 11.105}}, ) messages = sim_run_engine.simulate_plan( robot_load_then_centre(robot_load_composite, robot_load_then_centre_params) @@ -144,8 +144,8 @@ def test_robot_load_then_centre_doesnt_set_energy_if_not_specified( ): sim_run_engine.add_handler( "read", - "dcm_energy_in_kev", - lambda msg: {"dcm_energy_in_kev": {"value": 11.105}}, + "dcm-energy_in_kev", + lambda msg: {"dcm-energy_in_kev": {"value": 11.105}}, ) messages = sim_run_engine.simulate_plan( robot_load_then_centre( @@ -178,8 +178,8 @@ def return_not_disabled_after_reads(_): sim_run_engine.add_handler( "read", - "dcm_energy_in_kev", - lambda msg: {"dcm_energy_in_kev": {"value": 11.105}}, + "dcm-energy_in_kev", + lambda msg: {"dcm-energy_in_kev": {"value": 11.105}}, ) sim_run_engine.add_handler( "read", diff --git a/tests/unit_tests/external_interaction/callbacks/conftest.py b/tests/unit_tests/external_interaction/callbacks/conftest.py index 28256c5d0..ba4aa9c14 100644 --- a/tests/unit_tests/external_interaction/callbacks/conftest.py +++ b/tests/unit_tests/external_interaction/callbacks/conftest.py @@ -90,7 +90,7 @@ class TestData: "data": { "attenuator_actual_transmission": 0.98, "flux_flux_reading": 9.81, - "dcm_energy_in_kev": 11.105, + "dcm-energy_in_kev": 11.105, }, "timestamps": {"det1": 1666604299.8220396, "det2": 1666604299.8235943}, "seq_num": 1, @@ -195,7 +195,7 @@ class TestData: "s4_slit_gaps_xgap": 0.1234, "s4_slit_gaps_ygap": 0.2345, "synchrotron-synchrotron_mode": SynchrotronMode.USER, - "undulator_current_gap": 1.234, + "undulator-current_gap": 1.234, }, "timestamps": {"det1": 1666604299.8220396, "det2": 1666604299.8235943}, "seq_num": 1, @@ -208,7 +208,7 @@ class TestData: "data": { "attenuator_actual_transmission": 1, "flux_flux_reading": 10, - "dcm_energy_in_kev": 11.105, + "dcm-energy_in_kev": 11.105, }, "timestamps": {"det1": 1666604299.8220396, "det2": 1666604299.8235943}, "seq_num": 1, diff --git a/tests/unit_tests/external_interaction/callbacks/test_rotation_callbacks.py b/tests/unit_tests/external_interaction/callbacks/test_rotation_callbacks.py index 48585d4b6..92a3138fc 100644 --- a/tests/unit_tests/external_interaction/callbacks/test_rotation_callbacks.py +++ b/tests/unit_tests/external_interaction/callbacks/test_rotation_callbacks.py @@ -8,11 +8,11 @@ from bluesky.run_engine import RunEngine from dodal.beamlines import i03 from dodal.devices.attenuator import Attenuator -from dodal.devices.DCM import DCM from dodal.devices.eiger import EigerDetector from dodal.devices.flux import Flux from event_model import RunStart from ophyd.sim import make_fake_device +from ophyd_async.core import set_sim_value from hyperion.device_setup_plans.read_hardware_for_setup import ( read_hardware_for_ispyb_during_collection, @@ -86,11 +86,9 @@ def fake_rotation_scan( ): attenuator = make_fake_device(Attenuator)(name="attenuator") flux = make_fake_device(Flux)(name="flux") - dcm = make_fake_device(DCM)( - name="dcm", daq_configuration_path=i03.DAQ_CONFIGURATION_PATH - ) - dcm.energy_in_kev.user_readback.sim_put(12.1) eiger = make_fake_device(EigerDetector)(name="eiger") + dcm = i03.dcm(fake_with_ophyd_sim=True) + set_sim_value(dcm.energy_in_kev.user_readback, 12.1) @bpp.subs_decorator(list(subscriptions)) @bpp.set_run_key_decorator("rotation_scan_with_cleanup_and_subs") diff --git a/tests/unit_tests/hyperion/test_main_system.py b/tests/unit_tests/hyperion/test_main_system.py index 49f7307fd..052a09c25 100644 --- a/tests/unit_tests/hyperion/test_main_system.py +++ b/tests/unit_tests/hyperion/test_main_system.py @@ -543,7 +543,7 @@ def test_warn_exception_during_plan_causes_warning_in_log( @patch( - "dodal.devices.DCM.get_beamline_parameters", + "dodal.devices.undulator_dcm.get_beamline_parameters", return_value={"DCM_Perp_Offset_FIXED": 111}, ) def test_when_context_created_then_contains_expected_number_of_plans( From c571b2ebf13f0b820a07560c9c21b73424eb5d35 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 3 May 2024 16:24:50 +0100 Subject: [PATCH 2/2] (DiamondLightSource/dodal#397) Update dodal --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 8b1ef4b29..3c7f96060 100644 --- a/setup.cfg +++ b/setup.cfg @@ -33,7 +33,7 @@ install_requires = xarray doct databroker - dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@aac89a96686218add67bbbcc80118f6e94f0bdc9 + dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@360db19f8133ee9d0fdd118d39373ffea3e5953d pydantic<2.0 # See https://github.com/DiamondLightSource/hyperion/issues/774 scipy pyzmq<25 # See https://github.com/DiamondLightSource/hyperion/issues/1103