Skip to content

Commit 6b3b07b

Browse files
Add an option to turn off 3D classification into Session parameters (#684)
1 parent 3171470 commit 6b3b07b

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

src/murfey/server/api/instrument.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ class ProvidedProcessingParameters(BaseModel):
233233
particle_diameter: Optional[float] = None
234234
symmetry: str = "C1"
235235
eer_fractionation: int = 20
236+
run_class3d: bool = True
236237

237238

238239
@router.post("/sessions/{session_id}/provided_processing_parameters")
@@ -241,13 +242,26 @@ async def pass_proc_params_to_instrument_server(
241242
):
242243
session = db.exec(select(Session).where(Session.id == session_id)).one()
243244

244-
session_processing_parameters = SessionProcessingParameters(
245-
session_id=session_id,
246-
dose_per_frame=proc_params.dose_per_frame,
247-
gain_ref=session.current_gain_ref,
248-
symmetry=proc_params.symmetry,
249-
eer_fractionation=proc_params.eer_fractionation,
250-
)
245+
existing_parameters = db.exec(
246+
select(SessionProcessingParameters).where(
247+
SessionProcessingParameters.session_id == session_id
248+
)
249+
).all()
250+
if not existing_parameters:
251+
session_processing_parameters = SessionProcessingParameters(
252+
session_id=session_id,
253+
dose_per_frame=proc_params.dose_per_frame,
254+
gain_ref=session.current_gain_ref,
255+
symmetry=proc_params.symmetry,
256+
eer_fractionation=proc_params.eer_fractionation,
257+
run_class3d=proc_params.run_class3d,
258+
)
259+
else:
260+
session_processing_parameters = existing_parameters[0]
261+
session_processing_parameters.dose_per_frame = proc_params.dose_per_frame
262+
session_processing_parameters.eer_fractionation = proc_params.eer_fractionation
263+
session_processing_parameters.symmetry = proc_params.symmetry
264+
session_processing_parameters.run_class3d = proc_params.run_class3d
251265
db.add(session_processing_parameters)
252266
db.commit()
253267

src/murfey/server/api/processing_parameters.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class EditableSessionProcessingParameters(BaseModel):
2727
dose_per_frame: Optional[float] = None
2828
eer_fractionation_file: str = ""
2929
symmetry: str = ""
30+
run_class3d: Optional[bool] = None
3031

3132

3233
@router.get("/sessions/{session_id}/session_processing_parameters")
@@ -46,6 +47,7 @@ def get_session_processing_parameters(
4647
dose_per_frame=proc_params.dose_per_frame,
4748
eer_fractionation_file=proc_params.eer_fractionation_file,
4849
symmetry=proc_params.symmetry,
50+
run_class3d=proc_params.run_class3d,
4951
)
5052

5153

@@ -68,6 +70,8 @@ def set_session_processing_parameters(
6870
edited_parameters.eer_fractionation_file or proc_params.eer_fractionation_file
6971
)
7072
proc_params.symmetry = edited_parameters.symmetry or proc_params.symmetry
73+
if edited_parameters.run_class3d is not None:
74+
proc_params.run_class3d = edited_parameters.run_class3d
7175
db.add(proc_params)
7276
db.commit()
7377
db.close()

src/murfey/server/feedback.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2400,7 +2400,16 @@ def feedback_callback(header: dict, message: dict, _db=murfey_db) -> None:
24002400
murfey.server._transport_object.transport.ack(header)
24012401
return None
24022402
elif message["register"] == "run_class3d":
2403-
_register_3d_batch(message, _db)
2403+
session_processing_parameters = _db.exec(
2404+
select(db.SessionProcessingParameters).where(
2405+
db.SessionProcessingParameters.session_id == message["session_id"]
2406+
)
2407+
).all()
2408+
if (
2409+
not session_processing_parameters
2410+
or session_processing_parameters[0].run_class3d
2411+
):
2412+
_register_3d_batch(message, _db)
24042413
if murfey.server._transport_object:
24052414
murfey.server._transport_object.transport.ack(header)
24062415
return None

src/murfey/util/db.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ class SessionProcessingParameters(SQLModel, table=True): # type: ignore
341341
eer_fractionation: int = 20
342342
eer_fractionation_file: str = ""
343343
symmetry: str = "C1"
344+
run_class3d: bool = True
344345
session: Optional[Session] = Relationship(
345346
back_populates="session_processing_parameters"
346347
)

0 commit comments

Comments
 (0)