From 0c323a2d46c90516eec3d23e2878d503e4b6f4b8 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Tue, 11 Feb 2025 09:47:11 +0000 Subject: [PATCH 1/2] Update grid squares before inserting foil holes --- src/murfey/client/contexts/spa_metadata.py | 42 ++++++++++++++++++- .../workflows/spa/flush_spa_preprocess.py | 14 +++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/murfey/client/contexts/spa_metadata.py b/src/murfey/client/contexts/spa_metadata.py index f60d8ee26..9113a2b27 100644 --- a/src/murfey/client/contexts/spa_metadata.py +++ b/src/murfey/client/contexts/spa_metadata.py @@ -6,10 +6,14 @@ import xmltodict from murfey.client.context import Context -from murfey.client.contexts.spa import _get_source +from murfey.client.contexts.spa import _file_transferred_to, _get_source from murfey.client.instance_environment import MurfeyInstanceEnvironment, SampleInfo from murfey.util import authorised_requests, capture_post, get_machine_config_client -from murfey.util.spa_metadata import FoilHoleInfo, get_grid_square_atlas_positions +from murfey.util.spa_metadata import ( + FoilHoleInfo, + get_grid_square_atlas_positions, + grid_square_data, +) logger = logging.getLogger("murfey.client.contexts.spa_metadata") @@ -228,6 +232,40 @@ def post_transfer( ) return visitless_source = str(visitless_source_images_dirs[-1]) + + if fh_positions: + gs_url = f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/grid_square/{gs_name}" + gs_info = grid_square_data( + transferred_file, + int(gs_name), + ) + metadata_source = Path( + ( + "/".join(Path(visitless_source).parts[:-2]) + + f"/{environment.visit}/" + + Path(visitless_source).parts[-2] + )[1:] + ) + image_path = ( + _file_transferred_to( + environment, metadata_source, Path(gs_info.image) + ) + if gs_info.image + else "" + ) + capture_post( + gs_url, + json={ + "tag": visitless_source, + "readout_area_x": gs_info.readout_area_x, + "readout_area_y": gs_info.readout_area_y, + "thumbnail_size_x": gs_info.thumbnail_size_x, + "thumbnail_size_y": gs_info.thumbnail_size_y, + "pixel_size": gs_info.pixel_size, + "image": str(image_path), + }, + ) + for fh, fh_data in fh_positions.items(): capture_post( f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/grid_square/{gs_name}/foil_hole", diff --git a/src/murfey/workflows/spa/flush_spa_preprocess.py b/src/murfey/workflows/spa/flush_spa_preprocess.py index a04392d70..3e54c359a 100644 --- a/src/murfey/workflows/spa/flush_spa_preprocess.py +++ b/src/murfey/workflows/spa/flush_spa_preprocess.py @@ -57,6 +57,20 @@ def register_grid_square( grid_square.y_stage_position = ( grid_square_params.y_stage_position or grid_square.y_stage_position ) + grid_square.readout_area_x = ( + grid_square_params.readout_area_x or grid_square.readout_area_x + ) + grid_square.readout_area_y = ( + grid_square_params.readout_area_y or grid_square.readout_area_y + ) + grid_square.thumbnail_size_x = ( + grid_square_params.thumbnail_size_x or grid_square.thumbnail_size_x + ) + grid_square.thumbnail_size_y = ( + grid_square_params.thumbnail_size_y or grid_square.thumbnail_size_y + ) + grid_square.pixel_size = grid_square_params.pixel_size or grid_square.pixel_size + grid_square.image = grid_square_params.image or grid_square.image if _transport_object: _transport_object.do_update_grid_square(grid_square.id, grid_square_params) except Exception: From 7457387760e0ad1b0b1e89e3a837335a75c03af7 Mon Sep 17 00:00:00 2001 From: yxd92326 Date: Tue, 11 Feb 2025 09:51:57 +0000 Subject: [PATCH 2/2] Return grid square dm even if not present --- src/murfey/workflows/spa/flush_spa_preprocess.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/murfey/workflows/spa/flush_spa_preprocess.py b/src/murfey/workflows/spa/flush_spa_preprocess.py index 3e54c359a..2a3a173f4 100644 --- a/src/murfey/workflows/spa/flush_spa_preprocess.py +++ b/src/murfey/workflows/spa/flush_spa_preprocess.py @@ -212,12 +212,13 @@ def _grid_square_metadata_file(f: Path, grid_square: int) -> Optional[Path]: """Search through metadata directories to find the required grid square dm""" raw_dir = f.parent.parent.parent metadata_dirs = raw_dir.glob("metadata*") + gs_path = None for md_dir in metadata_dirs: gs_path = md_dir / f"Metadata/GridSquare_{grid_square}.dm" if gs_path.is_file(): return gs_path - logger.error(f"Could not determine grid square metadata path for {f}") - return None + logger.error(f"Grid square metadata path {gs_path} does not exist for {f}") + return gs_path def _flush_position_analysis(