diff --git a/src/murfey/client/contexts/atlas.py b/src/murfey/client/contexts/atlas.py index 12870b17..6269a350 100644 --- a/src/murfey/client/contexts/atlas.py +++ b/src/murfey/client/contexts/atlas.py @@ -60,7 +60,14 @@ def post_transfer_serialem( data={ "name": transferred_file.stem, "acquisition_uuid": environment.acquisition_uuid, - "storage_folder": str(source), + "storage_folder": str( + _atlas_destination( + environment, + source, + Path(self._machine_config.get("rsync_basepath", "")), + ) + / "atlas" + ), }, ) diff --git a/src/murfey/client/contexts/spa_metadata.py b/src/murfey/client/contexts/spa_metadata.py index dbe33a80..34a58c92 100644 --- a/src/murfey/client/contexts/spa_metadata.py +++ b/src/murfey/client/contexts/spa_metadata.py @@ -164,6 +164,7 @@ def post_transfer( "name": f"{environment.visit}-sample-{environment.samples[images_disc].sample}", "acquisition_uuid": environment.acquisition_uuid, "register_grid": True, + "tag": dcg_tag, }, ) diff --git a/src/murfey/server/api/session_control.py b/src/murfey/server/api/session_control.py index a4bcb188..abe4281c 100644 --- a/src/murfey/server/api/session_control.py +++ b/src/murfey/server/api/session_control.py @@ -362,6 +362,7 @@ class AtlasRegistration(BaseModel): acquisition_uuid: str storage_folder: str = "" register_grid: bool = False + tag: str = "" @spa_router.post("/sessions/{session_id}/register_atlas") @@ -379,14 +380,22 @@ def register_atlas( smartem_client = SmartEMAPIClient( base_url=machine_config.smartem_api_url, logger=logger ) - possible_grids = smartem_client.get_acquisition_grids( - atlas_registration_data.acquisition_uuid - ) grid_uuid = None - for grid in possible_grids: - if grid.name == atlas_registration_data.name.replace("_atlas", ""): - grid_uuid = grid.uuid - break + if atlas_registration_data.tag: + dcg = murfey_db.exec( + select(DataCollectionGroup) + .where(DataCollectionGroup.session_id == session_id) + .where(DataCollectionGroup.tag == atlas_registration_data.tag) + ).one_or_none() + grid_uuid = dcg.smartem_grid_uuid + else: + possible_grids = smartem_client.get_acquisition_grids( + atlas_registration_data.acquisition_uuid + ) + for grid in possible_grids: + if grid.name == atlas_registration_data.name.replace("_atlas", ""): + grid_uuid = grid.uuid + break if grid_uuid is not None: atlas_data = AtlasData( id=atlas_registration_data.name,