From e73c4779f69b558495ce7e83973fb154d0cd4b30 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Wed, 16 Jul 2025 12:03:58 +0100 Subject: [PATCH 1/5] Scale search map dims to be those on jpg --- src/murfey/server/ispyb.py | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/murfey/server/ispyb.py b/src/murfey/server/ispyb.py index 439ce7795..a09220dcc 100644 --- a/src/murfey/server/ispyb.py +++ b/src/murfey/server/ispyb.py @@ -405,6 +405,26 @@ def do_insert_search_map( search_map_parameters.pixel_size *= ( search_map_parameters.height / search_map_parameters.height_on_atlas ) + search_map_parameters.height = ( + int(search_map_parameters.height / 7.8) + if search_map_parameters.height + else None + ) + search_map_parameters.width = ( + int(search_map_parameters.width / 7.8) + if search_map_parameters.width + else None + ) + search_map_parameters.x_location = ( + int(search_map_parameters.x_location / 7.8) + if search_map_parameters.x_location + else None + ) + search_map_parameters.y_location = ( + int(search_map_parameters.y_location / 7.8) + if search_map_parameters.y_location + else None + ) record = GridSquare( atlasId=atlas_id, gridSquareImage=search_map_parameters.image, @@ -412,6 +432,7 @@ def do_insert_search_map( pixelLocationY=search_map_parameters.y_location, height=search_map_parameters.height_on_atlas, width=search_map_parameters.width_on_atlas, + angle=0, stageLocationX=search_map_parameters.x_stage_position, stageLocationY=search_map_parameters.y_stage_position, pixelSize=search_map_parameters.pixel_size, @@ -452,13 +473,19 @@ def do_update_search_map( if search_map_parameters.image: grid_square.gridSquareImage = search_map_parameters.image if search_map_parameters.x_location: - grid_square.pixelLocationX = search_map_parameters.x_location + grid_square.pixelLocationX = int( + search_map_parameters.x_location / 7.8 + ) if search_map_parameters.y_location: - grid_square.pixelLocationY = search_map_parameters.y_location + grid_square.pixelLocationY = int( + search_map_parameters.y_location / 7.8 + ) if search_map_parameters.height_on_atlas: - grid_square.height = search_map_parameters.height_on_atlas + grid_square.height = int( + search_map_parameters.height_on_atlas / 7.8 + ) if search_map_parameters.width_on_atlas: - grid_square.width = search_map_parameters.width_on_atlas + grid_square.width = int(search_map_parameters.width_on_atlas / 7.8) if search_map_parameters.x_stage_position: grid_square.stageLocationX = search_map_parameters.x_stage_position if search_map_parameters.y_stage_position: From 849f19d096a9efc447dc9f63496f2e7c5223b59c Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Wed, 16 Jul 2025 13:31:01 +0100 Subject: [PATCH 2/5] Need to insert atlas params if we have them when registering dcg --- src/murfey/server/feedback.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/murfey/server/feedback.py b/src/murfey/server/feedback.py index 24b67a2e2..76918b67d 100644 --- a/src/murfey/server/feedback.py +++ b/src/murfey/server/feedback.py @@ -2002,6 +2002,9 @@ def feedback_callback(header: dict, message: dict) -> None: murfey_dcg = db.DataCollectionGroup( id=dcgid, atlas_id=atlas_id, + atlas=message.get("atlas", ""), + atlas_pixel_size=message.get("atlas_pixel_size"), + sample=message.get("sample"), session_id=message["session_id"], tag=message.get("tag"), ) From d6b4825a0f4aa8aeac1af78c8551c9b766125966 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Wed, 16 Jul 2025 13:40:39 +0100 Subject: [PATCH 3/5] Make sure ids exist before moving on --- src/murfey/server/feedback.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/murfey/server/feedback.py b/src/murfey/server/feedback.py index 76918b67d..b3bd30ece 100644 --- a/src/murfey/server/feedback.py +++ b/src/murfey/server/feedback.py @@ -1982,6 +1982,7 @@ def feedback_callback(header: dict, message: dict) -> None: session_id=message["session_id"], tag=message.get("tag"), ) + dcgid = murfey_dcg.id else: record = DataCollectionGroup( sessionId=ispyb_session_id, @@ -1999,6 +2000,8 @@ def feedback_callback(header: dict, message: dict) -> None: atlas_id = murfey.server._transport_object.do_insert_atlas( atlas_record )["return_value"] + else: + atlas_id = None murfey_dcg = db.DataCollectionGroup( id=dcgid, atlas_id=atlas_id, From 7b4f51455d218fa11eebb48c0333fd13da3303e0 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Thu, 17 Jul 2025 13:15:18 +0100 Subject: [PATCH 4/5] Scale tomogram locations to be those on the search map jpg --- src/murfey/workflows/tomo/tomo_metadata.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/murfey/workflows/tomo/tomo_metadata.py b/src/murfey/workflows/tomo/tomo_metadata.py index 02c1c60c9..83fa16fec 100644 --- a/src/murfey/workflows/tomo/tomo_metadata.py +++ b/src/murfey/workflows/tomo/tomo_metadata.py @@ -339,10 +339,20 @@ def register_batch_position_in_database( search_map.height / 2, ] tilt_series.x_location = ( - centre_batch_pixel[0] - batch_parameters.x_beamshift / search_map.pixel_size + ( + centre_batch_pixel[0] + - batch_parameters.x_beamshift / search_map.pixel_size + ) + * 512 + / search_map.width ) tilt_series.y_location = ( - centre_batch_pixel[1] - batch_parameters.y_beamshift / search_map.pixel_size + ( + centre_batch_pixel[1] + - batch_parameters.y_beamshift / search_map.pixel_size + ) + * 512 + / search_map.width ) else: logger.warning( From 9c180144f1cbf3ef76c7e0c0f1dba37af162674f Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Thu, 17 Jul 2025 13:36:47 +0100 Subject: [PATCH 5/5] Fix batch locations in tests --- tests/workflows/tomo/test_tomo_metadata.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/workflows/tomo/test_tomo_metadata.py b/tests/workflows/tomo/test_tomo_metadata.py index 9febae4d4..c169d2a73 100644 --- a/tests/workflows/tomo/test_tomo_metadata.py +++ b/tests/workflows/tomo/test_tomo_metadata.py @@ -249,8 +249,8 @@ def test_register_batch_position_update(murfey_db_session: Session): # These two should have been updated, values are known as used identity matrices bp_final_parameters = murfey_db_session.exec(select(TiltSeries)).one() - assert bp_final_parameters.x_location == 880 - assert bp_final_parameters.y_location == 1780 + assert bp_final_parameters.x_location == 880 * 512 / search_map.width + assert bp_final_parameters.y_location == 1780 * 512 / search_map.width def test_register_batch_position_update_skip(murfey_db_session: Session): @@ -361,5 +361,5 @@ def test_register_batch_position_new(murfey_db_session: Session): # These two should have been updated, values are known as used identity matrices bp_final_parameters = murfey_db_session.exec(select(TiltSeries)).one() - assert bp_final_parameters.x_location == 880 - assert bp_final_parameters.y_location == 1780 + assert bp_final_parameters.x_location == 880 * 512 / search_map.width + assert bp_final_parameters.y_location == 1780 * 512 / search_map.width