Skip to content

Commit 4c07427

Browse files
Merge branch 'main' into flush-test
2 parents 1ca3091 + 7c2a7d9 commit 4c07427

File tree

4 files changed

+38
-19
lines changed

4 files changed

+38
-19
lines changed

src/murfey/client/contexts/spa.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,16 @@ def _grid_square_metadata_file(
6666
break
6767
else:
6868
raise ValueError(f"Could not determine grid square metadata path for {f}")
69-
return (
69+
metadata_file = (
7070
base_dir
7171
/ visit
7272
/ mid_dir.parent.parent.parent
7373
/ "Metadata"
7474
/ f"GridSquare_{grid_square}.dm"
7575
)
76+
if not metadata_file.is_file():
77+
logger.warning(f"Grid square metadata file {str(metadata_file)} does not exist")
78+
return metadata_file
7679

7780

7881
def _get_source(file_path: Path, environment: MurfeyInstanceEnvironment) -> Path | None:

src/murfey/client/contexts/spa_metadata.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def _foil_hole_positions(xml_path: Path, grid_square: int) -> Dict[str, FoilHole
3030
required_key = key
3131
break
3232
if not required_key:
33+
logger.warning(f"Required key not found for {str(xml_path)}")
3334
return {}
3435
foil_holes = {}
3536
for fh_block in serialization_array[required_key]:
@@ -149,10 +150,13 @@ def post_transfer(
149150
atlas=Path(partial_path), sample=sample
150151
)
151152
url = f"{str(environment.url.geturl())}/visits/{environment.visit}/{environment.murfey_session}/register_data_collection_group"
153+
dcg_tag = "/".join(
154+
p for p in transferred_file.parent.parts if p != environment.visit
155+
)
152156
dcg_data = {
153157
"experiment_type": "single particle",
154158
"experiment_type_id": 37,
155-
"tag": str(source),
159+
"tag": dcg_tag,
156160
"atlas": str(
157161
_atlas_destination(environment, source, transferred_file)
158162
/ environment.samples[source].atlas
@@ -169,7 +173,7 @@ def post_transfer(
169173
capture_post(
170174
f"{str(environment.url.geturl())}/sessions/{environment.murfey_session}/grid_square/{gs}",
171175
json={
172-
"tag": str(source),
176+
"tag": dcg_tag,
173177
"x_location": pos_data[0],
174178
"y_location": pos_data[1],
175179
"x_stage_position": pos_data[2],
@@ -186,6 +190,9 @@ def post_transfer(
186190
and environment
187191
):
188192
gs_name = transferred_file.stem.split("_")[1]
193+
logger.info(
194+
f"Collecting foil hole positions for {str(transferred_file)} and grid square {int(gs_name)}"
195+
)
189196
fh_positions = _foil_hole_positions(transferred_file, int(gs_name))
190197
source = _get_source(transferred_file, environment=environment)
191198
visitless_source = str(source).replace(f"/{environment.visit}", "")

src/murfey/util/spa_metadata.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ def grid_square_data(xml_path: Path, grid_square: int) -> GridSquareInfo:
123123
f"Images-Disc*/GridSquare_{grid_square}/GridSquare_*.jpg"
124124
)
125125
)
126+
logger.info(
127+
f"{len(image_paths)} images found when searching {str(xml_path.parent.parent)}"
128+
)
126129
if image_paths:
127130
image_paths.sort(key=lambda x: x.stat().st_ctime)
128131
image_path = image_paths[-1]

src/murfey/workflows/spa/flush_spa_preprocess.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def register_foil_hole(
107107
gs_name: int,
108108
foil_hole_params: FoilHoleParameters,
109109
murfey_db: Session,
110-
):
110+
) -> Optional[int]:
111111
try:
112112
gs = murfey_db.exec(
113113
select(GridSquare)
@@ -117,10 +117,10 @@ def register_foil_hole(
117117
).one()
118118
gsid = gs.id
119119
except NoResultFound:
120-
logger.debug(
120+
logger.warning(
121121
f"Foil hole {sanitise(str(foil_hole_params.name))} could not be registered as grid square {sanitise(str(gs_name))} was not found"
122122
)
123-
return
123+
return None
124124
secured_foil_hole_image_path = secure_path(Path(foil_hole_params.image))
125125
if foil_hole_params.image and secured_foil_hole_image_path.is_file():
126126
jpeg_size = Image.open(secured_foil_hole_image_path).size
@@ -190,6 +190,7 @@ def register_foil_hole(
190190
murfey_db.add(foil_hole)
191191
murfey_db.commit()
192192
murfey_db.close()
193+
return foil_hole.id
193194

194195

195196
def _grid_square_metadata_file(f: Path, grid_square: int) -> Optional[Path]:
@@ -284,8 +285,7 @@ def _flush_position_analysis(
284285
name=foil_hole,
285286
)
286287
# Insert or update this foil hole in the database
287-
register_foil_hole(session_id, gs.id, foil_hole_parameters, murfey_db)
288-
return foil_hole
288+
return register_foil_hole(session_id, gs.id, foil_hole_parameters, murfey_db)
289289

290290

291291
def flush_spa_preprocess(message: dict, murfey_db: Session, demo: bool = False) -> bool:
@@ -346,23 +346,29 @@ def flush_spa_preprocess(message: dict, murfey_db: Session, demo: bool = False)
346346
murfey_db.add(feedback_params)
347347

348348
for i, f in enumerate(stashed_files):
349-
if f.foil_hole_id:
350-
foil_hole_id = f.foil_hole_id
351-
else:
352-
# Register grid square and foil hole if not present
353-
try:
349+
try:
350+
foil_hole_id = None
351+
if f.foil_hole_id:
352+
# Check if the foil hole id has been registered in the database
353+
db_foil_hole = murfey_db.exec(
354+
select(FoilHole).where(FoilHole.id == f.foil_hole_id)
355+
).all()
356+
if db_foil_hole:
357+
foil_hole_id = f.foil_hole_id
358+
if not foil_hole_id:
359+
# Register grid square and foil hole if not present
354360
foil_hole_id = _flush_position_analysis(
355361
movie_path=Path(f.file_path),
356362
dcg_id=collected_ids[0].id,
357363
session_id=session_id,
358364
murfey_db=murfey_db,
359365
)
360-
except Exception as e:
361-
logger.error(
362-
f"Flushing position analysis for {f.file_path} caused exception {e}",
363-
exc_info=True,
364-
)
365-
foil_hole_id = None
366+
except Exception as e:
367+
logger.error(
368+
f"Flushing position analysis for {f.file_path} caused exception {e}",
369+
exc_info=True,
370+
)
371+
foil_hole_id = None
366372

367373
mrcp = Path(f.mrc_out)
368374
ppath = Path(f.file_path)

0 commit comments

Comments
 (0)