Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 42 additions & 36 deletions src/murfey/client/contexts/spa_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ def __init__(
super().__init__("SPA_metadata", acquisition_software, token)
self._basepath = basepath
self._machine_config = machine_config
self._registered_squares: set[int] = set()

def post_transfer(
self,
Expand Down Expand Up @@ -243,39 +244,44 @@ def post_transfer(
},
)

for fh, fh_data in fh_positions.items():
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_foil_hole",
token=self._token,
instrument_name=environment.instrument_name,
session_id=environment.murfey_session,
gs_name=gs_name,
data={
"name": fh,
"x_location": fh_data.x_location,
"y_location": fh_data.y_location,
"x_stage_position": fh_data.x_stage_position,
"y_stage_position": fh_data.y_stage_position,
"readout_area_x": fh_data.readout_area_x,
"readout_area_y": fh_data.readout_area_y,
"thumbnail_size_x": fh_data.thumbnail_size_x,
"thumbnail_size_y": fh_data.thumbnail_size_y,
"pixel_size": fh_data.pixel_size,
"diameter": fh_data.diameter,
"tag": visitless_source,
"image": fh_data.image,
},
)
if fh_positions:
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_square",
token=self._token,
instrument_name=environment.instrument_name,
session_id=environment.murfey_session,
gsid=gs_name,
data={"tag": visitless_source},
)
if gs_name not in self._registered_squares:
for fh, fh_data in fh_positions.items():
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_foil_hole",
token=self._token,
instrument_name=environment.instrument_name,
session_id=environment.murfey_session,
gs_name=gs_name,
data={
"name": fh,
"x_location": fh_data.x_location,
"y_location": fh_data.y_location,
"x_stage_position": fh_data.x_stage_position,
"y_stage_position": fh_data.y_stage_position,
"readout_area_x": fh_data.readout_area_x,
"readout_area_y": fh_data.readout_area_y,
"thumbnail_size_x": fh_data.thumbnail_size_x,
"thumbnail_size_y": fh_data.thumbnail_size_y,
"pixel_size": fh_data.pixel_size,
"diameter": fh_data.diameter,
"tag": visitless_source,
"image": fh_data.image,
},
)
if fh_positions:
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_square",
token=self._token,
instrument_name=environment.instrument_name,
session_id=environment.murfey_session,
gsid=gs_name,
data={
"tag": visitless_source,
"count": len(self._registered_squares) + 1,
},
)
self._registered_squares.add(gs_name)
5 changes: 4 additions & 1 deletion src/murfey/server/api/session_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,7 @@ def register_atlas(

class SquareRegistration(BaseModel):
tag: str
count: int | None = None


@spa_router.post("/sessions/{session_id}/register_square/{gsid}")
Expand All @@ -440,7 +441,9 @@ def register_square(
smartem_client = SmartEMAPIClient(
base_url=machine_config.smartem_api_url, logger=logger
)
smartem_client.gridsquare_registered(gs.smartem_uuid)
smartem_client.gridsquare_registered(
gs.smartem_uuid, count=square_registration_data.count
)
else:
logger.info("smartem deactivated so did not register square")

Expand Down
25 changes: 25 additions & 0 deletions src/murfey/workflows/spa/flush_spa_preprocess.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from smartem_common.schemas import (
FoilHoleData as SmartEMFoilHoleData,
GridSquareData as SmartEMGridSquareData,
GridSquareMetadata as SmartEMGridSquareMetadata,
)

SMARTEM_ACTIVE = True
Expand Down Expand Up @@ -154,6 +155,21 @@ def register_grid_square(
.where(DataCollectionGroup.tag == grid_square_params.tag)
).one_or_none()
if dcg and dcg.smartem_grid_uuid:
secured_grid_square_image_path_full_res: Path | None = None
if grid_square_params.image:
secured_grid_square_image_path_full_res = secure_path(
Path(grid_square_params.image)
)
if secured_grid_square_image_path_full_res.with_suffix(
".tiff"
).is_file():
secured_grid_square_image_path_full_res = (
secured_grid_square_image_path_full_res.with_suffix(".tiff")
)
else:
secured_grid_square_image_path_full_res = (
secured_grid_square_image_path_full_res.with_suffix(".mrc")
)
smartem_client = SmartEMAPIClient(
base_url=machine_config.smartem_api_url, logger=logger
)
Expand All @@ -177,6 +193,15 @@ def register_grid_square(
if grid_square.smartem_uuid
else {}
),
metadata=SmartEMGridSquareMetadata(
atlas_node_id=0,
stage_position=None,
state=None,
rotation=None,
image_path=secured_grid_square_image_path_full_res,
selected=False,
unusable=False,
),
)
if grid_square.smartem_uuid:
smartem_client.update_gridsquare(gs_data)
Expand Down
Loading