Skip to content

Commit 2df656c

Browse files
committed
add a frame for analysing grid square mag images from serialem collection
1 parent 85081c4 commit 2df656c

1 file changed

Lines changed: 62 additions & 15 deletions

File tree

src/murfey/client/contexts/spa_metadata.py

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,23 @@ def _foil_hole_positions(xml_path: Path, grid_square: int) -> Dict[str, FoilHole
7373
return foil_holes
7474

7575

76+
def _get_visitless_source(source: Path, environment: MurfeyInstanceEnvironment) -> str:
77+
visitless_source_search_dir = "/".join(
78+
[part for part in source.parts if part != environment.visit]
79+
).replace("//", "/")
80+
visitless_source_images_dirs = sorted(
81+
Path(visitless_source_search_dir).glob("Images-Disc*"),
82+
key=lambda x: x.stat().st_ctime,
83+
)
84+
if not visitless_source_images_dirs:
85+
logger.warning(f"Cannot find Images-Disc* in {visitless_source_search_dir}")
86+
visitless_source_images_dirs = [
87+
Path(visitless_source_search_dir) / "Images-Disc1"
88+
]
89+
visitless_source = str(visitless_source_images_dirs[-1])
90+
return visitless_source
91+
92+
7693
class SPAMetadataContext(Context):
7794
def __init__(
7895
self,
@@ -85,6 +102,7 @@ def __init__(
85102
self._basepath = basepath
86103
self._machine_config = machine_config
87104
self._registered_squares: set[int] = set()
105+
self._registered_squares_serialem: set[str] = set()
88106

89107
def post_transfer(
90108
self,
@@ -97,6 +115,49 @@ def post_transfer(
97115
environment=environment,
98116
**kwargs,
99117
)
118+
if self._acquisition_software == "serialem":
119+
self.post_transfer_serialem(
120+
transferred_file, environment=environment, **kwargs
121+
)
122+
else:
123+
self.post_transfer_epu(transferred_file, environment=environment, **kwargs)
124+
125+
def post_transfer_serialem(
126+
self,
127+
transferred_file: Path,
128+
environment: Optional[MurfeyInstanceEnvironment] = None,
129+
**kwargs,
130+
):
131+
if environment and transferred_file.suffix == ".mrc":
132+
source = _get_source(transferred_file, environment)
133+
if source:
134+
visitless_source = _get_visitless_source(source, environment)
135+
capture_post(
136+
base_url=str(environment.url.geturl()),
137+
router_name="session_control.spa_router",
138+
function_name="register_square",
139+
token=self._token,
140+
instrument_name=environment.instrument_name,
141+
session_id=environment.murfey_session,
142+
gsid=transferred_file.stem,
143+
data={
144+
"tag": visitless_source,
145+
"count": len(self._registered_squares_serialem) + 1,
146+
},
147+
)
148+
self._registered_squares_serialem.add(transferred_file.stem)
149+
150+
def post_transfer_epu(
151+
self,
152+
transferred_file: Path,
153+
environment: Optional[MurfeyInstanceEnvironment] = None,
154+
**kwargs,
155+
):
156+
super().post_transfer(
157+
transferred_file=transferred_file,
158+
environment=environment,
159+
**kwargs,
160+
)
100161

101162
if transferred_file.name == "EpuSession.dm" and environment:
102163
logger.info("EPU session metadata found")
@@ -194,21 +255,7 @@ def post_transfer(
194255
f"Collecting foil hole positions for {str(transferred_file)} and grid square {gs_name}"
195256
)
196257
fh_positions = _foil_hole_positions(transferred_file, gs_name)
197-
visitless_source_search_dir = "/".join(
198-
[part for part in source.parts if part != environment.visit]
199-
).replace("//", "/")
200-
visitless_source_images_dirs = sorted(
201-
Path(visitless_source_search_dir).glob("Images-Disc*"),
202-
key=lambda x: x.stat().st_ctime,
203-
)
204-
if not visitless_source_images_dirs:
205-
logger.warning(
206-
f"Cannot find Images-Disc* in {visitless_source_search_dir}"
207-
)
208-
visitless_source_images_dirs = [
209-
Path(visitless_source_search_dir) / "Images-Disc1"
210-
]
211-
visitless_source = str(visitless_source_images_dirs[-1])
258+
visitless_source = _get_visitless_source(source, environment)
212259

213260
if fh_positions:
214261
gs_info = grid_square_data(

0 commit comments

Comments
 (0)