Skip to content

Commit 950afd3

Browse files
Send cryolo model when flushing spa (#598)
Also removes cryolo model api endpoint
1 parent c5a5767 commit 950afd3

File tree

6 files changed

+38
-62
lines changed

6 files changed

+38
-62
lines changed

src/murfey/server/api/spa.py

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/murfey/server/api/workflow.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import murfey.server.prometheus as prom
2828
from murfey.server import _transport_object
2929
from murfey.server.api.auth import MurfeySessionID, validate_token
30-
from murfey.server.api.spa import _cryolo_model_path
3130
from murfey.server.feedback import (
3231
_murfey_id,
3332
check_tilt_series_mc,
@@ -58,7 +57,11 @@
5857
TiltSeries,
5958
)
6059
from murfey.util.models import ProcessingParametersSPA, ProcessingParametersTomo
61-
from murfey.util.processing_params import default_spa_parameters, motion_corrected_mrc
60+
from murfey.util.processing_params import (
61+
cryolo_model_path,
62+
default_spa_parameters,
63+
motion_corrected_mrc,
64+
)
6265
from murfey.util.tomo import midpoint
6366

6467
logger = getLogger("murfey.server.api.workflow")
@@ -457,7 +460,7 @@ async def request_spa_preprocessing(
457460
),
458461
"do_icebreaker_jobs": default_spa_parameters.do_icebreaker_jobs,
459462
"cryolo_model_weights": str(
460-
_cryolo_model_path(visit_name, instrument_name)
463+
cryolo_model_path(visit_name, instrument_name)
461464
),
462465
},
463466
}

src/murfey/server/main.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import murfey.server.api.prometheus
2323
import murfey.server.api.session_control
2424
import murfey.server.api.session_info
25-
import murfey.server.api.spa
2625
import murfey.server.api.websocket
2726
import murfey.server.api.workflow
2827
from murfey.server import template_files
@@ -90,7 +89,6 @@ class Settings(BaseSettings):
9089
app.include_router(murfey.server.api.workflow.correlative_router)
9190
app.include_router(murfey.server.api.workflow.spa_router)
9291
app.include_router(murfey.server.api.workflow.tomo_router)
93-
app.include_router(murfey.server.api.spa.router)
9492
app.include_router(murfey.server.api.clem.router)
9593

9694
app.include_router(murfey.server.api.prometheus.router)

src/murfey/util/processing_params.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
from datetime import datetime
2+
from functools import lru_cache
13
from pathlib import Path
24
from typing import Literal, Optional
35

46
from pydantic import BaseModel
57
from werkzeug.utils import secure_filename
68

7-
from murfey.util.config import MachineConfig
9+
from murfey.util.config import MachineConfig, get_machine_config
810

911

1012
def motion_corrected_mrc(
@@ -33,6 +35,23 @@ def motion_corrected_mrc(
3335
return Path("/".join(secure_filename(p) for p in mrc_out.parts))
3436

3537

38+
@lru_cache(maxsize=5)
39+
def cryolo_model_path(visit: str, instrument_name: str) -> Path:
40+
machine_config = get_machine_config(instrument_name=instrument_name)[
41+
instrument_name
42+
]
43+
if machine_config.model_search_directory:
44+
visit_directory = (
45+
machine_config.rsync_basepath / str(datetime.now().year) / visit
46+
)
47+
possible_models = list(
48+
(visit_directory / machine_config.model_search_directory).glob("*.h5")
49+
)
50+
if possible_models:
51+
return sorted(possible_models, key=lambda x: x.stat().st_ctime)[-1]
52+
return machine_config.default_model
53+
54+
3655
class CLEMAlignAndMergeParameters(BaseModel):
3756
crop_to_n_frames: Optional[int] = 50
3857
align_self: Literal["enabled", ""] = "enabled"

src/murfey/util/route_manifest.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -980,14 +980,6 @@ murfey.server.api.session_info.tomo_router:
980980
type: str
981981
methods:
982982
- GET
983-
murfey.server.api.spa.router:
984-
- path: /sessions/{session_id}/cryolo_model
985-
function: get_cryolo_model_path
986-
path_params:
987-
- name: session_id
988-
type: int
989-
methods:
990-
- GET
991983
murfey.server.api.websocket.ws:
992984
- path: /ws/test/{client_id}
993985
function: websocket_endpoint

src/murfey/workflows/spa/flush_spa_preprocess.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from murfey.util.db import Session as MurfeySession
2525
from murfey.util.db import SPAFeedbackParameters, SPARelionParameters
2626
from murfey.util.models import FoilHoleParameters, GridSquareParameters
27-
from murfey.util.processing_params import default_spa_parameters
27+
from murfey.util.processing_params import cryolo_model_path, default_spa_parameters
2828
from murfey.util.spa_metadata import (
2929
GridSquareInfo,
3030
foil_hole_data,
@@ -314,15 +314,12 @@ def flush_spa_preprocess(message: dict, murfey_db: Session, demo: bool = False)
314314
).all()
315315
if not stashed_files:
316316
return True
317-
instrument_name = (
318-
murfey_db.exec(
319-
select(MurfeySession).where(MurfeySession.id == message["session_id"])
320-
)
321-
.one()
322-
.instrument_name
323-
)
324-
machine_config = get_machine_config(instrument_name=instrument_name)[
325-
instrument_name
317+
318+
murfey_session = murfey_db.exec(
319+
select(MurfeySession).where(MurfeySession.id == message["session_id"])
320+
).one()
321+
machine_config = get_machine_config(instrument_name=murfey_session.instrument_name)[
322+
murfey_session.instrument_name
326323
]
327324
recipe_name = machine_config.recipes.get("em-spa-preprocess", "em-spa-preprocess")
328325
collected_ids = murfey_db.exec(
@@ -424,6 +421,11 @@ def flush_spa_preprocess(message: dict, murfey_db: Session, demo: bool = False)
424421
else f.eer_fractionation_file
425422
),
426423
"do_icebreaker_jobs": default_spa_parameters.do_icebreaker_jobs,
424+
"cryolo_model_weights": str(
425+
cryolo_model_path(
426+
murfey_session.visit, murfey_session.instrument_name
427+
)
428+
),
427429
"foil_hole_id": foil_hole_id,
428430
},
429431
}

0 commit comments

Comments
 (0)