Skip to content

Commit 0622932

Browse files
committed
Remove the need for a picker id during classification
1 parent cd967b5 commit 0622932

4 files changed

Lines changed: 1 addition & 108 deletions

File tree

src/murfey/server/feedback.py

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,6 @@ def _release_2d_hold(message: dict, _db):
353353
"nr_classes": default_spa_parameters.nr_classes_2d,
354354
"do_icebreaker_jobs": default_spa_parameters.do_icebreaker_jobs,
355355
"class2d_fraction_of_classes_to_remove": default_spa_parameters.fraction_of_classes_to_remove_2d,
356-
"picker_id": feedback_params.picker_ispyb_id,
357356
"class_uuids": _2d_class_murfey_ids(
358357
first_class2d.particles_file, message["program_id"], _db
359358
),
@@ -431,7 +430,6 @@ def _release_3d_hold(message: dict, _db):
431430
"mask_diameter": relion_params.mask_diameter or 0,
432431
"do_initial_model": False if feedback_params.initial_model else True,
433432
"initial_model_file": feedback_params.initial_model,
434-
"picker_id": feedback_params.picker_ispyb_id,
435433
"class_uuids": _3d_class_murfey_ids(
436434
class3d_params.particles_file, _app_id(pj_id, _db), _db
437435
),
@@ -517,7 +515,6 @@ def _release_refine_hold(message: dict, _db):
517515
"symmetry": relion_params.symmetry,
518516
"node_creator_queue": machine_config.node_creator_queue,
519517
"nr_iter": default_spa_parameters.nr_iter_3d,
520-
"picker_id": feedback_params.picker_ispyb_id,
521518
"refined_class_uuid": _refine_murfey_id(
522519
refine_dir=refine_params.refine_dir,
523520
tag=refine_params.tag,
@@ -589,13 +586,6 @@ def _register_incomplete_2d_batch(message: dict, _db):
589586
feedback_params.hold_class2d = True
590587
relion_options = dict(relion_params)
591588
other_options = dict(feedback_params)
592-
if other_options["picker_ispyb_id"] is None:
593-
logger.info("No ISPyB particle picker ID yet")
594-
feedback_params.hold_class2d = False
595-
_db.add(feedback_params)
596-
_db.commit()
597-
_db.expunge(feedback_params)
598-
return
599589
_db.add(feedback_params)
600590
_db.commit()
601591
_db.expunge(feedback_params)
@@ -629,7 +619,6 @@ def _register_incomplete_2d_batch(message: dict, _db):
629619
"batch_is_complete": False,
630620
"particle_diameter": relion_options["particle_diameter"],
631621
"combine_star_job_number": -1,
632-
"picker_id": other_options["picker_ispyb_id"],
633622
"nr_iter": default_spa_parameters.nr_iter_2d,
634623
"batch_size": default_spa_parameters.batch_size_2d,
635624
"nr_classes": default_spa_parameters.nr_classes_2d,
@@ -693,7 +682,7 @@ def _register_complete_2d_batch(message: dict, _db):
693682
).one()
694683
_db.expunge(relion_params)
695684
_db.expunge(feedback_params)
696-
if feedback_params.hold_class2d or feedback_params.picker_ispyb_id is None:
685+
if feedback_params.hold_class2d:
697686
feedback_params.rerun_class2d = True
698687
_db.add(feedback_params)
699688
_db.commit()
@@ -791,7 +780,6 @@ def _register_complete_2d_batch(message: dict, _db):
791780
"mask_diameter": relion_params.mask_diameter or 0,
792781
"combine_star_job_number": feedback_params.star_combination_job,
793782
"autoselect_min_score": 0,
794-
"picker_id": feedback_params.picker_ispyb_id,
795783
"class_uuids": class_uuids,
796784
"class2d_grp_uuid": class2d_grp_uuid,
797785
"nr_iter": default_spa_parameters.nr_iter_2d,
@@ -866,7 +854,6 @@ def _register_complete_2d_batch(message: dict, _db):
866854
"mask_diameter": relion_params.mask_diameter or 0,
867855
"combine_star_job_number": feedback_params.star_combination_job,
868856
"autoselect_min_score": feedback_params.class_selection_score or 0,
869-
"picker_id": feedback_params.picker_ispyb_id,
870857
"class_uuids": class_uuids,
871858
"class2d_grp_uuid": class2d_grp_uuid,
872859
"nr_iter": default_spa_parameters.nr_iter_2d,
@@ -957,7 +944,6 @@ def _flush_class2d(
957944
"mask_diameter": relion_params.mask_diameter or 0,
958945
"combine_star_job_number": feedback_params.star_combination_job,
959946
"autoselect_min_score": feedback_params.class_selection_score or 0,
960-
"picker_id": feedback_params.picker_ispyb_id,
961947
"class_uuids": _2d_class_murfey_ids(
962948
saved_message.particles_file, _app_id(pj_id, _db), _db
963949
),
@@ -1007,16 +993,6 @@ def _register_class_selection(message: dict, _db):
1007993
).one()
1008994
_db.expunge(feedback_params)
1009995

1010-
if feedback_params.picker_ispyb_id is None:
1011-
selection_stash = db.SelectionStash(
1012-
pj_id=pj_id,
1013-
class_selection_score=message["class_selection_score"] or 0,
1014-
)
1015-
_db.add(selection_stash)
1016-
_db.commit()
1017-
_db.close()
1018-
return
1019-
1020996
feedback_params.class_selection_score = message.get("class_selection_score") or 0
1021997
feedback_params.hold_class2d = False
1022998
_flush_class2d(
@@ -1284,7 +1260,6 @@ def _register_3d_batch(message: dict, _db):
12841260
"particle_diameter": relion_options["particle_diameter"],
12851261
"mask_diameter": relion_options["mask_diameter"] or 0,
12861262
"do_initial_model": True,
1287-
"picker_id": other_options["picker_ispyb_id"],
12881263
"class_uuids": {i + 1: m for i, m in enumerate(class_uuids)},
12891264
"class3d_grp_uuid": class3d_grp_uuid,
12901265
"nr_iter": default_spa_parameters.nr_iter_3d,
@@ -1325,7 +1300,6 @@ def _register_3d_batch(message: dict, _db):
13251300
"mask_diameter": relion_options["mask_diameter"] or 0,
13261301
"do_initial_model": False,
13271302
"initial_model_file": other_options["initial_model"],
1328-
"picker_id": other_options["picker_ispyb_id"],
13291303
"class_uuids": _3d_class_murfey_ids(
13301304
class3d_params.particles_file, _app_id(pj_id, _db), _db
13311305
),
@@ -1534,7 +1508,6 @@ def _register_refinement(message: dict, _db):
15341508
db.ClassificationFeedbackParameters.pj_id == pj_id_params
15351509
)
15361510
).one()
1537-
other_options = dict(feedback_params)
15381511

15391512
if feedback_params.hold_refine:
15401513
# If waiting then save the message
@@ -1626,7 +1599,6 @@ def _register_refinement(message: dict, _db):
16261599
"symmetry": relion_options["symmetry"],
16271600
"node_creator_queue": machine_config.node_creator_queue,
16281601
"nr_iter": default_spa_parameters.nr_iter_3d,
1629-
"picker_id": other_options["picker_ispyb_id"],
16301602
"refined_class_uuid": _refine_murfey_id(
16311603
refine_dir=refine_params.refine_dir,
16321604
tag=refine_params.tag,
@@ -1761,7 +1733,6 @@ def _register_bfactors(message: dict, _db):
17611733
"particle_diameter": relion_options["particle_diameter"],
17621734
"mask_diameter": relion_options["mask_diameter"] or 0,
17631735
"node_creator_queue": machine_config.node_creator_queue,
1764-
"picker_id": feedback_params.picker_ispyb_id,
17651736
"refined_grp_uuid": bfactor_params.refined_grp_uuid,
17661737
"refined_class_uuid": bfactor_params.refined_class_uuid,
17671738
"session_id": message["session_id"],

src/murfey/util/db.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,6 @@ class ProcessingJob(SQLModel, table=True): # type: ignore
317317
auto_proc_programs: List["AutoProcProgram"] = Relationship(
318318
back_populates="processing_job", sa_relationship_kwargs={"cascade": "delete"}
319319
)
320-
selection_stash: List["SelectionStash"] = Relationship(
321-
back_populates="processing_job", sa_relationship_kwargs={"cascade": "delete"}
322-
)
323320
particle_sizes: List["ParticleSizes"] = Relationship(
324321
back_populates="processing_job", sa_relationship_kwargs={"cascade": "delete"}
325322
)
@@ -371,15 +368,6 @@ class PreprocessStash(SQLModel, table=True): # type: ignore
371368
foil_hole: Optional["FoilHole"] = Relationship(back_populates="preprocess_stashes")
372369

373370

374-
class SelectionStash(SQLModel, table=True): # type: ignore
375-
id: Optional[int] = Field(default=None, primary_key=True)
376-
class_selection_score: float
377-
pj_id: int = Field(foreign_key="processingjob.processingJobId")
378-
processing_job: Optional[ProcessingJob] = Relationship(
379-
back_populates="selection_stash"
380-
)
381-
382-
383371
class TomographyProcessingParameters(SQLModel, table=True): # type: ignore
384372
dcg_id: int = Field(
385373
primary_key=True, foreign_key="datacollectiongroup.dataCollectionGroupId"
@@ -692,7 +680,6 @@ class ClassificationFeedbackParameters(SQLModel, table=True): # type: ignore
692680
initial_model: str
693681
next_job: int
694682
picker_murfey_id: Optional[int] = Field(default=None, foreign_key="murfeyledger.id")
695-
picker_ispyb_id: Optional[int] = None
696683
processing_job: Optional[ProcessingJob] = Relationship(
697684
back_populates="classification_feedback_parameters"
698685
)

src/murfey/workflows/spa/picking.py

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
from murfey.server import _transport_object
1010
from murfey.server.feedback import (
1111
_app_id,
12-
_flush_class2d,
1312
_pj_id,
14-
_register_class_selection,
1513
)
1614
from murfey.util.config import get_machine_config
1715
from murfey.util.db import (
@@ -24,7 +22,6 @@
2422
NotificationValue,
2523
ParticleSizes,
2624
ProcessingJob,
27-
SelectionStash,
2825
Session as MurfeySession,
2926
SPARelionParameters,
3027
)
@@ -74,40 +71,8 @@ def _register_picked_particles_use_diameter(message: dict, _db: Session):
7471
select(SPARelionParameters).where(SPARelionParameters.pj_id == pj_id)
7572
).one()
7673
relion_options = dict(relion_params)
77-
feedback_params = _db.exec(
78-
select(ClassificationFeedbackParameters).where(
79-
ClassificationFeedbackParameters.pj_id == pj_id
80-
)
81-
).one()
82-
8374
particle_diameter = relion_params.particle_diameter
8475

85-
if feedback_params.picker_ispyb_id is None:
86-
if not _transport_object:
87-
feedback_params.picker_ispyb_id = 1000
88-
else:
89-
assert feedback_params.picker_murfey_id is not None
90-
feedback_params.picker_ispyb_id = _transport_object.do_buffer_lookup(
91-
message["program_id"], feedback_params.picker_murfey_id
92-
)
93-
if feedback_params.picker_ispyb_id is not None:
94-
_flush_class2d(message["session_id"], message["program_id"], _db)
95-
_db.add(feedback_params)
96-
_db.commit()
97-
selection_stash = _db.exec(
98-
select(SelectionStash).where(SelectionStash.pj_id == pj_id)
99-
).all()
100-
for s in selection_stash:
101-
_register_class_selection(
102-
{
103-
"session_id": s.session_id,
104-
"class_selection_score": s.class_selection_score or 0,
105-
},
106-
_db=_db,
107-
)
108-
_db.delete(s)
109-
_db.commit()
110-
11176
if not particle_diameter:
11277
# If the diameter has not been calculated then find it
11378
picking_db = _db.exec(
@@ -246,34 +211,6 @@ def _register_picked_particles_use_boxsize(message: dict, _db: Session):
246211
relion_params = _db.exec(
247212
select(SPARelionParameters).where(SPARelionParameters.pj_id == pj_id)
248213
).one()
249-
feedback_params = _db.exec(
250-
select(ClassificationFeedbackParameters).where(
251-
ClassificationFeedbackParameters.pj_id == pj_id
252-
)
253-
).one()
254-
255-
if feedback_params.picker_ispyb_id is None and _transport_object:
256-
assert feedback_params.picker_murfey_id is not None
257-
feedback_params.picker_ispyb_id = _transport_object.do_buffer_lookup(
258-
message["program_id"], feedback_params.picker_murfey_id
259-
)
260-
if feedback_params.picker_ispyb_id is not None:
261-
_flush_class2d(message["session_id"], message["program_id"], _db)
262-
_db.add(feedback_params)
263-
_db.commit()
264-
selection_stash = _db.exec(
265-
select(SelectionStash).where(SelectionStash.pj_id == pj_id)
266-
).all()
267-
for s in selection_stash:
268-
_register_class_selection(
269-
{
270-
"session_id": s.session_id,
271-
"class_selection_score": s.class_selection_score or 0,
272-
},
273-
_db=_db,
274-
)
275-
_db.delete(s)
276-
_db.commit()
277214

278215
# Send the message to extraction with the box sizes
279216
zocalo_message: dict = {

src/murfey/workflows/tomo/picking.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ def _register_picked_tomogram_use_diameter(message: dict, murfey_db: Session):
135135
"autoproc_program_id": _app_id(pj_id, murfey_db),
136136
"batch_size": default_tomo_parameters.batch_size_2d,
137137
"nr_classes": default_tomo_parameters.nr_classes_2d,
138-
"picker_id": None,
139138
"class2d_grp_uuid": class2d_grp_uuid,
140139
"class_uuids": class_uuids,
141140
"next_job": feedback_params.next_job,
@@ -177,7 +176,6 @@ def _register_picked_tomogram_use_diameter(message: dict, murfey_db: Session):
177176
"autoproc_program_id": _app_id(pj_id, murfey_db),
178177
"batch_size": default_tomo_parameters.batch_size_2d,
179178
"nr_classes": default_tomo_parameters.nr_classes_2d,
180-
"picker_id": None,
181179
"class2d_grp_uuid": class2d_grp_uuid,
182180
"class_uuids": class_uuids,
183181
"next_job": feedback_params.next_job,

0 commit comments

Comments
 (0)