Skip to content

Commit b9f836b

Browse files
committed
Add code to make atlas jpg file
1 parent 6b85156 commit b9f836b

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

src/murfey/server/api/session_control.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
SearchMapParameters,
5555
Visit,
5656
)
57+
from murfey.workflows.spa.atlas import atlas_jpg_from_mrc
5758
from murfey.workflows.spa.flush_spa_preprocess import (
5859
register_foil_hole as _register_foil_hole,
5960
)
@@ -319,6 +320,12 @@ def delete_rsyncer(session_id: int, source: Path, db=murfey_db):
319320
)
320321

321322

323+
@spa_router.get("/sessions/{session_id}/make_atlas_jpg")
324+
def make_atlas_jpg(session_id: MurfeySessionID, atlas_mrc: str, db=murfey_db):
325+
session = db.exec(select(Session).where(Session.id == session_id)).one()
326+
return atlas_jpg_from_mrc(session.instrument_name, session.visit, Path(atlas_mrc))
327+
328+
322329
@spa_router.get("/sessions/{session_id}/grid_squares")
323330
def get_grid_squares(session_id: MurfeySessionID, db=murfey_db):
324331
return _get_grid_squares(session_id, db)

src/murfey/workflows/spa/atlas.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from pathlib import Path
2+
3+
import mrcfile
4+
import PIL.Image
5+
from werkzeug.utils import secure_filename
6+
7+
from murfey.util.config import get_machine_config
8+
9+
10+
def atlas_jpg_from_mrc(instrument_name: str, visit_name: str, atlas_mrc: Path):
11+
with mrcfile.read(atlas_mrc) as mrc:
12+
data = mrc.data
13+
14+
machine_config = get_machine_config(instrument_name=instrument_name)[
15+
instrument_name
16+
]
17+
18+
parts = [secure_filename(p) for p in atlas_mrc.parts]
19+
visit_idx = parts.index(visit_name)
20+
core = Path("/".join(parts[: visit_idx + 1]))
21+
sample_id = "Sample"
22+
for p in parts:
23+
if "Sample" in p:
24+
sample_id = p
25+
break
26+
atlas_jpg_file = (
27+
core
28+
/ machine_config.processed_directory_name
29+
/ "atlas"
30+
/ f"{sample_id}_{atlas_mrc.stem}_fullres.jpg"
31+
)
32+
atlas_jpg_file.parent.mkdir(parents=True, exist_ok=True)
33+
34+
im = PIL.Image.fromarray(data)
35+
im.save(atlas_jpg_file)

0 commit comments

Comments
 (0)