From f4c08e2414f680c7fa47209340d2e7fdcb9aa266 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Thu, 20 Jul 2023 13:55:39 +0100 Subject: [PATCH 1/3] (#820) Set the zoom level on the device --- src/artemis/device_setup_plans/setup_oav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/artemis/device_setup_plans/setup_oav.py b/src/artemis/device_setup_plans/setup_oav.py index fc25aa085..0e516dc9e 100644 --- a/src/artemis/device_setup_plans/setup_oav.py +++ b/src/artemis/device_setup_plans/setup_oav.py @@ -92,7 +92,7 @@ def pre_centring_setup_oav(oav: OAV, parameters: OAVParameters): ) yield from bps.abs_set( - oav.zoom_controller.level, + oav.zoom_controller, zoom_level_str, wait=True, ) From 0838dc4eb19472b0e30f5f8659262dda3f71c232 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Thu, 20 Jul 2023 17:49:40 +0100 Subject: [PATCH 2/3] (#820) Add test confirming the zoom level is set correctly on setup OAV --- src/artemis/device_setup_plans/setup_oav.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/artemis/device_setup_plans/setup_oav.py b/src/artemis/device_setup_plans/setup_oav.py index 0e516dc9e..c4ff40bfe 100644 --- a/src/artemis/device_setup_plans/setup_oav.py +++ b/src/artemis/device_setup_plans/setup_oav.py @@ -82,9 +82,6 @@ def pre_centring_setup_oav(oav: OAV, parameters: OAVParameters): parameters.detection_script_filename, ) - # Connect MXSC output to MJPG input for debugging - yield from bps.abs_set(oav.snapshot.input_plugin, "OAV.MXSC") - zoom_level_str = f"{float(parameters.zoom)}x" if zoom_level_str not in oav.zoom_controller.allowed_zoom_levels: raise OAVError_ZoomLevelNotFound( @@ -96,6 +93,10 @@ def pre_centring_setup_oav(oav: OAV, parameters: OAVParameters): zoom_level_str, wait=True, ) + + # Connect MXSC output to MJPG input for debugging + yield from bps.abs_set(oav.snapshot.input_plugin, "OAV.MXSC") + yield from bps.wait() """ From a38a12376e56ceff224a50f3939854d7068940d3 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 21 Jul 2023 09:39:15 +0100 Subject: [PATCH 3/3] (#820) Actually add the test this time --- .../unit_tests/test_setup_oav.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/artemis/device_setup_plans/unit_tests/test_setup_oav.py diff --git a/src/artemis/device_setup_plans/unit_tests/test_setup_oav.py b/src/artemis/device_setup_plans/unit_tests/test_setup_oav.py new file mode 100644 index 000000000..dbd41bab4 --- /dev/null +++ b/src/artemis/device_setup_plans/unit_tests/test_setup_oav.py @@ -0,0 +1,51 @@ +import pytest +from bluesky.run_engine import RunEngine +from dodal.beamlines import i03 +from dodal.devices.oav.oav_parameters import OAVParameters + +from artemis.device_setup_plans.setup_oav import pre_centring_setup_oav + +ZOOM_LEVELS_XML = ( + "src/artemis/experiment_plans/tests/test_data/jCameraManZoomLevels.xml" +) +OAV_CENTRING_JSON = "src/artemis/experiment_plans/tests/test_data/OAVCentring.json" +DISPLAY_CONFIGURATION = ( + "src/artemis/experiment_plans/tests/test_data/display.configuration" +) + + +@pytest.fixture +def mock_parameters(): + return OAVParameters( + "loopCentring", ZOOM_LEVELS_XML, OAV_CENTRING_JSON, DISPLAY_CONFIGURATION + ) + + +@pytest.mark.parametrize( + "zoom, expected_plugin", + [ + ("1.0", "proc"), + ("7.0", "CAM"), + ], +) +def test_when_set_up_oav_with_different_zoom_levels_then_flat_field_applied_correctly( + zoom, expected_plugin, mock_parameters: OAVParameters +): + oav = i03.oav(fake_with_ophyd_sim=True) + + oav.proc.port_name.sim_put("proc") + oav.cam.port_name.sim_put("CAM") + + oav.zoom_controller.zrst.set("1.0x") + oav.zoom_controller.onst.set("2.0x") + oav.zoom_controller.twst.set("3.0x") + oav.zoom_controller.thst.set("5.0x") + oav.zoom_controller.frst.set("7.0x") + oav.zoom_controller.fvst.set("9.0x") + + mock_parameters.zoom = zoom + + RE = RunEngine() + RE(pre_centring_setup_oav(oav, mock_parameters)) + assert oav.mxsc.input_plugin.get() == expected_plugin + assert oav.snapshot.input_plugin.get() == "OAV.MXSC"