From 22dfc176d1c090f6da77245297b88ed0d111554e Mon Sep 17 00:00:00 2001 From: Jacob Williamson Date: Fri, 12 Dec 2025 15:46:50 +0000 Subject: [PATCH 1/6] Read detector_id during read_hardware_plan --- .../experiment_plans/i04_grid_detect_then_xray_centre_plan.py | 1 + .../common/experiment_plans/inner_plans/read_hardware.py | 1 + .../callbacks/common/ispyb_callback_base.py | 2 +- .../external_interaction/callbacks/common/ispyb_mapping.py | 1 - .../experiment_plans/hyperion_flyscan_xray_centre_plan.py | 1 + tests/conftest.py | 2 ++ .../external_interaction/xray_centre/test_ispyb_callback.py | 2 +- tests/unit_tests/conftest.py | 1 + .../callbacks/rotation/test_ispyb_callback.py | 2 +- 9 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py b/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py index d896e9d24..d29409007 100644 --- a/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +++ b/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py @@ -291,6 +291,7 @@ def construct_i04_specific_features( xrc_composite.eiger.bit_depth, xrc_composite.beamsize, xrc_composite.eiger.cam.roi_mode, + xrc_composite.eiger.detector_id, ] tidy_plan = partial( diff --git a/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py b/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py index 31b507abf..2bb7ed316 100644 --- a/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py +++ b/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py @@ -76,6 +76,7 @@ def standard_read_hardware_during_collection( detector.bit_depth, beamsize, detector.cam.roi_mode, + detector.detector_id, ] yield from read_hardware_plan( signals_to_read_during_collection, DocDescriptorNames.HARDWARE_READ_DURING diff --git a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py index 820c5178c..b905d47a5 100644 --- a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +++ b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py @@ -124,7 +124,6 @@ def _handle_ispyb_hardware_read(self, doc) -> Sequence[ScanDataInfo]: ) synchrotron_mode = doc["data"]["synchrotron-synchrotron_mode"] assert isinstance(synchrotron_mode, SynchrotronMode) - hwscan_data_collection_info = DataCollectionInfo( undulator_gap1=doc["data"]["undulator-current_gap"], synchrotron_mode=synchrotron_mode.value, @@ -159,6 +158,7 @@ def _handle_ispyb_transmission_flux_read( beamsize_at_sampley=beamsize_y_mm, flux=doc["data"]["flux-flux_reading"], detector_mode="ROI" if doc["data"]["eiger_cam_roi_mode"] else "FULL", + detector_id=doc["data"]["eiger-detector_id"], ) if transmission := doc["data"]["attenuator-actual_transmission"]: # Ispyb wants the transmission in a percentage, we use fractions diff --git a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py index e1f7e2f10..0a8ae26e9 100644 --- a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +++ b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py @@ -31,7 +31,6 @@ def populate_remaining_data_collection_info( data_collection_info.sample_id = params.sample_id data_collection_info.visit_string = params.visit data_collection_info.parent_id = data_collection_group_id - data_collection_info.detector_id = I03_EIGER_DETECTOR data_collection_info.comments = comment data_collection_info.detector_distance = params.detector_params.detector_distance data_collection_info.exp_time = params.detector_params.exposure_time_s diff --git a/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py b/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py index 914baa1cf..10682e25c 100755 --- a/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +++ b/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py @@ -62,6 +62,7 @@ def construct_hyperion_specific_features( xrc_composite.eiger.bit_depth, xrc_composite.beamsize, xrc_composite.eiger.cam.roi_mode, + xrc_composite.eiger.detector_id, ] setup_trigger_plan: Callable[..., MsgGenerator] diff --git a/tests/conftest.py b/tests/conftest.py index 6c5ebc5ab..f025f851b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1421,6 +1421,7 @@ def test_rotation_event_document_during_data_collection(self) -> Event: "beamsize-x_um": 50.0, "beamsize-y_um": 20.0, "eiger_cam_roi_mode": False, + "eiger-detector_id": 78, }, "timestamps": {"det1": 1666604299.8220396, "det2": 1666604299.8235943}, "seq_num": 1, @@ -1536,6 +1537,7 @@ def test_event_document_during_data_collection(self) -> Event: "beamsize-x_um": 50.0, "beamsize-y_um": 20.0, "eiger_cam_roi_mode": True, + "eiger-detector_id": 78, }, "timestamps": { "det1": 1666604299.8220396, diff --git a/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py b/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py index f6c3c4abf..2f0a860cc 100644 --- a/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +++ b/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py @@ -41,7 +41,6 @@ EXPECTED_DATA_COLLECTION_3D_XY = { "comments": "MX-Bluesky: Xray centring 1 -", - "detectorId": 78, "detectorDistance": 100.0, "exposureTime": 0.1, "imageDirectory": "{tmp_data}/", @@ -194,6 +193,7 @@ def test_flux_read_events_3d(self, mock_ispyb_conn, test_event_data): "beamSizeAtSampleX": 0.05, "beamSizeAtSampleY": 0.02, "detectorMode": "ROI", + "detectorId": 78, } assert update_dc_requests[0].dcid == TEST_DATA_COLLECTION_IDS[0] assert update_dc_requests[1].dcid == TEST_DATA_COLLECTION_IDS[1] diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index d230b61d8..dd3c1a718 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -159,6 +159,7 @@ async def fail_test_on_unclosed_tasks(request: FixtureRequest): "beamsize-x_um": 50.0, "beamsize-y_um": 20.0, "eiger_cam_roi_mode": True, + "eiger-detector_id": 78, } diff --git a/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py b/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py index 2250fa749..e5952dcf9 100644 --- a/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +++ b/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py @@ -28,7 +28,6 @@ TEST_SAMPLE_ID = 123456 EXPECTED_DATA_COLLECTION = { - "detectorId": 78, "axisStart": 0.0, "axisRange": 0.1, "axisEnd": -180, @@ -165,6 +164,7 @@ def test_flux_read_events( "flux": 9.81, "resolution": 1.1830593331191241, "detectorMode": "FULL", + "detectorId": 78, } From c5b3c1f7f4070de1a233f765980962424e7fd6b1 Mon Sep 17 00:00:00 2001 From: Jacob Williamson Date: Mon, 15 Dec 2025 14:28:10 +0000 Subject: [PATCH 2/6] Pin dodal --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4a2b16698..f6f475136 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.14.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@62960e0e587bf86943ce1b581848fa131ef884d5", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@1d284b60a02e77944063c076f2b49e37df485518", ] From 3c8ca35b8febd458e842a1160474831d908c5468 Mon Sep 17 00:00:00 2001 From: Jacob Williamson Date: Thu, 18 Dec 2025 10:24:45 +0000 Subject: [PATCH 3/6] PR comments and fixes --- .../experiment_plans/i04_grid_detect_then_xray_centre_plan.py | 2 +- .../common/experiment_plans/inner_plans/read_hardware.py | 2 +- .../callbacks/common/ispyb_callback_base.py | 2 +- .../common/external_interaction/ispyb/data_model.py | 2 +- .../common/external_interaction/ispyb/exp_eye_store.py | 2 +- .../experiment_plans/hyperion_flyscan_xray_centre_plan.py | 2 +- tests/conftest.py | 4 ++-- .../callbacks/ispyb/test_gridscan_ispyb_store_3d.py | 2 +- .../callbacks/ispyb/test_rotation_ispyb_store.py | 4 ++-- tests/unit_tests/conftest.py | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py b/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py index d29409007..465ae79ad 100644 --- a/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +++ b/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py @@ -291,7 +291,7 @@ def construct_i04_specific_features( xrc_composite.eiger.bit_depth, xrc_composite.beamsize, xrc_composite.eiger.cam.roi_mode, - xrc_composite.eiger.detector_id, + xrc_composite.eiger.ispyb_detector_id, ] tidy_plan = partial( diff --git a/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py b/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py index 2bb7ed316..6e1f02d85 100644 --- a/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py +++ b/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py @@ -76,7 +76,7 @@ def standard_read_hardware_during_collection( detector.bit_depth, beamsize, detector.cam.roi_mode, - detector.detector_id, + detector.ispyb_detector_id, ] yield from read_hardware_plan( signals_to_read_during_collection, DocDescriptorNames.HARDWARE_READ_DURING diff --git a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py index b905d47a5..ee95ebfbc 100644 --- a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +++ b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py @@ -158,7 +158,7 @@ def _handle_ispyb_transmission_flux_read( beamsize_at_sampley=beamsize_y_mm, flux=doc["data"]["flux-flux_reading"], detector_mode="ROI" if doc["data"]["eiger_cam_roi_mode"] else "FULL", - detector_id=doc["data"]["eiger-detector_id"], + ispyb_detector_id=doc["data"]["eiger-ispyb_detector_id"], ) if transmission := doc["data"]["attenuator-actual_transmission"]: # Ispyb wants the transmission in a percentage, we use fractions diff --git a/src/mx_bluesky/common/external_interaction/ispyb/data_model.py b/src/mx_bluesky/common/external_interaction/ispyb/data_model.py index fbedaf9fa..15a290039 100644 --- a/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +++ b/src/mx_bluesky/common/external_interaction/ispyb/data_model.py @@ -40,7 +40,7 @@ class DataCollectionInfo: kappa_start: float | None = None visit_string: str | None = None - detector_id: int | None = None + ispyb_detector_id: int | None = None axis_start: float | None = None slitgap_vertical: float | None = None slitgap_horizontal: float | None = None diff --git a/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py b/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py index 985940e09..fae7fb265 100644 --- a/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +++ b/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py @@ -282,7 +282,7 @@ def _data_collection_info_to_json(data: DataCollectionInfo) -> dict: "axisEnd": data.axis_end, "chiStart": data.chi_start, "kappaStart": data.kappa_start, - "detectorId": data.detector_id, + "detectorId": data.ispyb_detector_id, "axisStart": data.axis_start, "slitGapVertical": data.slitgap_vertical, "slitGapHorizontal": data.slitgap_horizontal, diff --git a/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py b/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py index 10682e25c..e302c4a94 100755 --- a/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +++ b/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py @@ -62,7 +62,7 @@ def construct_hyperion_specific_features( xrc_composite.eiger.bit_depth, xrc_composite.beamsize, xrc_composite.eiger.cam.roi_mode, - xrc_composite.eiger.detector_id, + xrc_composite.eiger.ispyb_detector_id, ] setup_trigger_plan: Callable[..., MsgGenerator] diff --git a/tests/conftest.py b/tests/conftest.py index f025f851b..7658f546b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1421,7 +1421,7 @@ def test_rotation_event_document_during_data_collection(self) -> Event: "beamsize-x_um": 50.0, "beamsize-y_um": 20.0, "eiger_cam_roi_mode": False, - "eiger-detector_id": 78, + "eiger-ispyb_detector_id": 78, }, "timestamps": {"det1": 1666604299.8220396, "det2": 1666604299.8235943}, "seq_num": 1, @@ -1537,7 +1537,7 @@ def test_event_document_during_data_collection(self) -> Event: "beamsize-x_um": 50.0, "beamsize-y_um": 20.0, "eiger_cam_roi_mode": True, - "eiger-detector_id": 78, + "eiger-ispyb_detector_id": 78, }, "timestamps": { "det1": 1666604299.8220396, diff --git a/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py b/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py index 20a653a6e..4ac07e00d 100644 --- a/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +++ b/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py @@ -61,7 +61,7 @@ def dummy_collection_group_info(): kappa_start=None, parent_id=None, visit_string="cm31105-4", - detector_id=78, + ispyb_detector_id=78, axis_start=0.0, slitgap_vertical=0.1, slitgap_horizontal=0.1, diff --git a/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py b/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py index a9e02989c..e93be758e 100644 --- a/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +++ b/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py @@ -85,7 +85,7 @@ def scan_data_info_for_begin(): kappa_start=0.0, parent_id=None, visit_string="cm31105-4", - detector_id=78, + ispyb_detector_id=78, axis_start=0.0, beamsize_at_samplex=1.0, beamsize_at_sampley=1.0, @@ -128,7 +128,7 @@ def scan_data_info_for_update(scan_data_info_for_begin): kappa_start=0.0, parent_id=None, visit_string="cm31105-4", - detector_id=78, + ispyb_detector_id=78, axis_start=0.0, slitgap_vertical=1.0, slitgap_horizontal=1.0, diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index dd3c1a718..29cc19a30 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -159,7 +159,7 @@ async def fail_test_on_unclosed_tasks(request: FixtureRequest): "beamsize-x_um": 50.0, "beamsize-y_um": 20.0, "eiger_cam_roi_mode": True, - "eiger-detector_id": 78, + "eiger-ispyb_detector_id": 78, } From 649a47c159981bebd226feaa4856f6456c65f794 Mon Sep 17 00:00:00 2001 From: Jacob Williamson Date: Thu, 18 Dec 2025 10:47:13 +0000 Subject: [PATCH 4/6] Remove unused line --- .../external_interaction/callbacks/common/ispyb_mapping.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py index 0a8ae26e9..7df7c2a17 100644 --- a/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +++ b/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py @@ -9,7 +9,6 @@ ) from mx_bluesky.common.parameters.components import DiffractionExperimentWithSample -I03_EIGER_DETECTOR = 78 EIGER_FILE_SUFFIX = "h5" From e7f914e05c403a8e0e0e506616425beab1c57fca Mon Sep 17 00:00:00 2001 From: Jacob Williamson Date: Thu, 18 Dec 2025 10:53:14 +0000 Subject: [PATCH 5/6] Pin dodal --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f6f475136..4e15edb5c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.14.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@1d284b60a02e77944063c076f2b49e37df485518", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@abce9f140e3a8efb549704238028c42beee7c9f0", ] From 722278bebfc3642d7c4aa84f58436d5a8c6e1898 Mon Sep 17 00:00:00 2001 From: Jacob Williamson Date: Fri, 19 Dec 2025 11:30:48 +0000 Subject: [PATCH 6/6] Unpin dodal --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4e15edb5c..f22c5df38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dependencies = [ "ophyd >= 1.10.5", "ophyd-async >= 0.14.0", "bluesky >= 1.14.6", - "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@abce9f140e3a8efb549704238028c42beee7c9f0", + "dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@main", ]