Skip to content

Commit efda46c

Browse files
Remove the manual tilt offset from the user parameters, and the table which contains it (#572)
We had a `TomographyProcessingParameters` table in the database which just contained the tilt offset. This removes that table and renames the `TomographyPreprocessingParameters` to just be `TomographyProcessingParameters`. I've also removed `manual_tilt_offset` from the client side entirely, as it is calculated server-side. I expect that will mean it disappears from the TUI display. The renaming in particular is a high-risk change, which needs a test build and run before we can say this works
1 parent 20ef6bd commit efda46c

File tree

10 files changed

+32
-165
lines changed

10 files changed

+32
-165
lines changed

src/murfey/client/analyser.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from murfey.client.tui.forms import FormDependency
2525
from murfey.util.client import Observer, get_machine_config_client
2626
from murfey.util.mdoc import get_block
27-
from murfey.util.models import PreprocessingParametersTomo, ProcessingParametersSPA
27+
from murfey.util.models import ProcessingParametersSPA, ProcessingParametersTomo
2828

2929
logger = logging.getLogger("murfey.client.analyser")
3030

@@ -65,7 +65,7 @@ def __init__(
6565
self._environment = environment
6666
self._force_mdoc_metadata = force_mdoc_metadata
6767
self.parameters_model: (
68-
Type[ProcessingParametersSPA] | Type[PreprocessingParametersTomo] | None
68+
Type[ProcessingParametersSPA] | Type[ProcessingParametersTomo] | None
6969
) = None
7070

7171
self.queue: queue.Queue = queue.Queue()
@@ -183,7 +183,7 @@ def _find_context(self, file_path: Path) -> bool:
183183
if not self._context:
184184
logger.info("Acquisition software: tomo")
185185
self._context = TomographyContext("tomo", self._basepath)
186-
self.parameters_model = PreprocessingParametersTomo
186+
self.parameters_model = ProcessingParametersTomo
187187
return True
188188

189189
# Files with these suffixes belong to the serial EM tomography workflow
@@ -207,7 +207,7 @@ def _find_context(self, file_path: Path) -> bool:
207207
):
208208
return False
209209
self._context = TomographyContext("serialem", self._basepath)
210-
self.parameters_model = PreprocessingParametersTomo
210+
self.parameters_model = ProcessingParametersTomo
211211
return True
212212
return False
213213

src/murfey/client/contexts/tomo.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
get_machine_config_client,
2424
)
2525
from murfey.util.mdoc import get_block, get_global_data, get_num_blocks
26-
from murfey.util.tomo import midpoint
2726

2827
logger = logging.getLogger("murfey.client.contexts.tomo")
2928

@@ -72,7 +71,6 @@ class TomographyContext(Context):
7271
ProcessingParameter(
7372
"dose_per_frame", "Dose Per Frame (e- / Angstrom^2 / frame)", default=1
7473
),
75-
ProcessingParameter("manual_tilt_offset", "Tilt Offset", default=0),
7674
ProcessingParameter("gain_ref", "Gain Reference"),
7775
ProcessingParameter("eer_fractionation", "EER Fractionation", default=20),
7876
]
@@ -570,7 +568,6 @@ def gather_metadata(
570568
if environment
571569
else None
572570
)
573-
metadata["manual_tilt_offset"] = 0
574571
metadata["source"] = str(self._basepath)
575572
except KeyError:
576573
return OrderedDict({})
@@ -631,9 +628,6 @@ def gather_metadata(
631628
if environment
632629
else None
633630
)
634-
mdoc_metadata["manual_tilt_offset"] = -midpoint(
635-
[float(b["TiltAngle"]) for b in blocks]
636-
)
637631
mdoc_metadata["source"] = str(self._basepath)
638632
mdoc_metadata["tag"] = str(self._basepath)
639633
mdoc_metadata["tilt_series_tag"] = metadata_file.stem

src/murfey/client/multigrid_control.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -410,12 +410,6 @@ def _start_dc(self, json, from_form: bool = False):
410410
source = Path(json["source"])
411411
context = self.analysers[source]._context
412412
if isinstance(context, TomographyContext):
413-
if from_form:
414-
capture_post(
415-
f"{self._environment.url.geturl()}/clients/{self._environment.client_id}/tomography_processing_parameters",
416-
json=json,
417-
)
418-
419413
source = Path(json["source"])
420414
context.register_tomography_data_collections(
421415
file_extension=json["file_extension"],
@@ -443,7 +437,7 @@ def _start_dc(self, json, from_form: bool = False):
443437
eer_fractionation_file = eer_response.json()["eer_fractionation_file"]
444438
json.update({"eer_fractionation_file": eer_fractionation_file})
445439
capture_post(
446-
f"{self._environment.url.geturl()}/sessions/{self._environment.murfey_session}/tomography_preprocessing_parameters",
440+
f"{self._environment.url.geturl()}/sessions/{self._environment.murfey_session}/tomography_processing_parameters",
447441
json=json,
448442
)
449443
capture_post(

src/murfey/client/tui/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ def _start_dc(self, json, from_form: bool = False):
504504
eer_fractionation_file = eer_response.json()["eer_fractionation_file"]
505505
json.update({"eer_fractionation_file": eer_fractionation_file})
506506
requests.post(
507-
f"{self.app._environment.url.geturl()}/sessions/{self.app._environment.murfey_session}/tomography_preprocessing_parameters",
507+
f"{self.app._environment.url.geturl()}/sessions/{self.app._environment.murfey_session}/tomography_processing_parameters",
508508
json=json,
509509
)
510510
capture_post(

src/murfey/client/tui/screens.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
from murfey.client.tui.forms import FormDependency
5959
from murfey.util import posix_path
6060
from murfey.util.client import capture_post, get_machine_config_client, read_config
61-
from murfey.util.models import PreprocessingParametersTomo, ProcessingParametersSPA
61+
from murfey.util.models import ProcessingParametersSPA, ProcessingParametersTomo
6262

6363
log = logging.getLogger("murfey.tui.screens")
6464

@@ -464,7 +464,7 @@ def compose(self):
464464
def _write_params(
465465
self,
466466
params: dict | None = None,
467-
model: PreprocessingParametersTomo | ProcessingParametersSPA | None = None,
467+
model: ProcessingParametersTomo | ProcessingParametersSPA | None = None,
468468
):
469469
if params:
470470
try:
@@ -474,9 +474,9 @@ def _write_params(
474474
for k in analyser._context.user_params + analyser._context.metadata_params:
475475
self.app.query_one("#info").write(f"{k.label}: {params.get(k.name)}")
476476
self.app._start_dc(params)
477-
if model == PreprocessingParametersTomo:
477+
if model == ProcessingParametersTomo:
478478
requests.post(
479-
f"{self.app._environment.url.geturl()}/sessions/{self.app._environment.murfey_session}/tomography_preprocessing_parameters",
479+
f"{self.app._environment.url.geturl()}/sessions/{self.app._environment.murfey_session}/tomography_processing_parameters",
480480
json=params,
481481
)
482482
elif model == ProcessingParametersSPA:
@@ -1157,9 +1157,7 @@ def on_input_changed(self, event):
11571157
def on_button_pressed(self, event):
11581158
if self.app._multigrid and self.app._processing_enabled:
11591159
if self._context == TomographyContext:
1160-
valid = validate_form(
1161-
self._user_params, PreprocessingParametersTomo.Base
1162-
)
1160+
valid = validate_form(self._user_params, ProcessingParametersTomo.Base)
11631161
else:
11641162
valid = validate_form(self._user_params, ProcessingParametersSPA.Base)
11651163
if not valid:

src/murfey/server/__init__.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -189,19 +189,10 @@ def get_job_ids(tilt_series_id: int, appid: int) -> JobIDs:
189189
)
190190

191191

192-
def get_tomo_proc_params(pj_id: int, *args) -> db.TomographyProcessingParameters:
192+
def get_tomo_proc_params(dcg_id: int, *args) -> db.TomographyProcessingParameters:
193193
results = murfey_db.exec(
194194
select(db.TomographyProcessingParameters).where(
195-
db.TomographyProcessingParameters.pj_id == pj_id
196-
)
197-
).one()
198-
return results
199-
200-
201-
def get_tomo_preproc_params(dcg_id: int, *args) -> db.TomographyPreprocessingParameters:
202-
results = murfey_db.exec(
203-
select(db.TomographyPreprocessingParameters).where(
204-
db.TomographyPreprocessingParameters.dcg_id == dcg_id
195+
db.TomographyProcessingParameters.dcg_id == dcg_id
205196
)
206197
).one()
207198
return results
@@ -1660,7 +1651,7 @@ def _flush_tomography_preprocessing(message: dict):
16601651
.where(db.DataCollectionGroup.session_id == session_id)
16611652
.where(db.DataCollectionGroup.tag == message["data_collection_group_tag"])
16621653
).first()
1663-
proc_params = get_tomo_preproc_params(collected_ids.id)
1654+
proc_params = get_tomo_proc_params(collected_ids.id)
16641655
if not proc_params:
16651656
visit_name = message["visit_name"].replace("\r\n", "").replace("\n", "")
16661657
logger.warning(
@@ -2160,7 +2151,7 @@ def feedback_callback(header: dict, message: dict) -> None:
21602151
]
21612152
tilts = get_all_tilts(relevant_tilt_series.id)
21622153
ids = get_job_ids(relevant_tilt_series.id, alignment_ids[2].id)
2163-
preproc_params = get_tomo_preproc_params(ids.dcgid)
2154+
preproc_params = get_tomo_proc_params(ids.dcgid)
21642155
stack_file = (
21652156
Path(message["mrc_out"]).parents[3]
21662157
/ "Tomograms"
@@ -2534,11 +2525,11 @@ def feedback_callback(header: dict, message: dict) -> None:
25342525
.where(db.ProcessingJob.recipe == "em-tomo-preprocess")
25352526
).one()
25362527
if not murfey_db.exec(
2537-
select(func.count(db.TomographyPreprocessingParameters.dcg_id)).where(
2538-
db.TomographyPreprocessingParameters.dcg_id == collected_ids[0].id
2528+
select(func.count(db.TomographyProcessingParameters.dcg_id)).where(
2529+
db.TomographyProcessingParameters.dcg_id == collected_ids[0].id
25392530
)
25402531
).one():
2541-
params = db.TomographyPreprocessingParameters(
2532+
params = db.TomographyProcessingParameters(
25422533
dcg_id=collected_ids[0].id,
25432534
pixel_size=float(message["pixel_size_on_image"]) * 10**10,
25442535
voltage=message["voltage"],

src/murfey/server/api/__init__.py

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
get_job_ids,
4343
get_machine_config,
4444
get_microscope,
45-
get_tomo_preproc_params,
45+
get_tomo_proc_params,
4646
sanitise,
4747
templates,
4848
)
@@ -70,7 +70,6 @@
7070
SPARelionParameters,
7171
Tilt,
7272
TiltSeries,
73-
TomographyProcessingParameters,
7473
)
7574
from murfey.util.models import (
7675
BLSampleImageParameters,
@@ -86,7 +85,6 @@
8685
GridSquareParameters,
8786
MillingParameters,
8887
PostInfo,
89-
PreprocessingParametersTomo,
9088
ProcessingJobParameters,
9189
ProcessingParametersSPA,
9290
ProcessingParametersTomo,
@@ -618,9 +616,9 @@ def post_foil_hole(
618616
return register_foil_hole(session_id, gs_name, foil_hole_params, db)
619617

620618

621-
@router.post("/sessions/{session_id}/tomography_preprocessing_parameters")
622-
def register_tomo_preproc_params(
623-
session_id: MurfeySessionID, proc_params: PreprocessingParametersTomo, db=murfey_db
619+
@router.post("/sessions/{session_id}/tomography_processing_parameters")
620+
def register_tomo_proc_params(
621+
session_id: MurfeySessionID, proc_params: ProcessingParametersTomo, db=murfey_db
624622
):
625623
session_processing_parameters = db.exec(
626624
select(SessionProcessingParameters).where(
@@ -643,41 +641,6 @@ def register_tomo_preproc_params(
643641
_transport_object.send(_transport_object.feedback_queue, zocalo_message)
644642

645643

646-
@router.post("/sessions/{session_id}/tomography_processing_parameters")
647-
def register_tomo_proc_params(
648-
session_id: MurfeySessionID, proc_params: ProcessingParametersTomo, db=murfey_db
649-
):
650-
log.info(
651-
f"Registering tomography processing parameters {sanitise(proc_params.tag)}, {sanitise(proc_params.tilt_series_tag)}"
652-
)
653-
collected_ids = db.exec(
654-
select(
655-
DataCollectionGroup,
656-
DataCollection,
657-
ProcessingJob,
658-
AutoProcProgram,
659-
)
660-
.where(DataCollectionGroup.session_id == session_id)
661-
.where(DataCollectionGroup.tag == proc_params.tag)
662-
.where(DataCollection.tag == proc_params.tilt_series_tag)
663-
.where(DataCollection.dcg_id == DataCollectionGroup.id)
664-
.where(ProcessingJob.dc_id == DataCollection.id)
665-
.where(AutoProcProgram.pj_id == ProcessingJob.id)
666-
.where(ProcessingJob.recipe == "em-tomo-preprocess")
667-
).one()
668-
if not db.exec(
669-
select(func.count(TomographyProcessingParameters.pj_id)).where(
670-
TomographyProcessingParameters.pj_id == collected_ids[2].id
671-
)
672-
).one():
673-
tomogram_params = TomographyProcessingParameters(
674-
pj_id=collected_ids[2].id, manual_tilt_offset=proc_params.manual_tilt_offset
675-
)
676-
db.add(tomogram_params)
677-
db.commit()
678-
db.close()
679-
680-
681644
class Tag(BaseModel):
682645
tag: str
683646

@@ -804,7 +767,7 @@ def register_completed_tilt_series(
804767
]
805768
tilts = get_all_tilts(ts.id)
806769
ids = get_job_ids(ts.id, collected_ids[3].id)
807-
preproc_params = get_tomo_preproc_params(ids.dcgid)
770+
preproc_params = get_tomo_proc_params(ids.dcgid)
808771

809772
first_tilt = db.exec(
810773
select(Tilt).where(Tilt.tilt_series_id == ts.id)

src/murfey/server/demo_api.py

Lines changed: 6 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
SPARelionParameters,
5858
Tilt,
5959
TiltSeries,
60-
TomographyPreprocessingParameters,
6160
TomographyProcessingParameters,
6261
)
6362
from murfey.util.models import (
@@ -70,7 +69,6 @@
7069
GainReference,
7170
GridSquareParameters,
7271
PostInfo,
73-
PreprocessingParametersTomo,
7472
ProcessingJobParameters,
7573
ProcessingParametersSPA,
7674
ProcessingParametersTomo,
@@ -476,9 +474,9 @@ def register_spa_proc_params(
476474
db.commit()
477475

478476

479-
@router.post("/sessions/{session_id}/tomography_preprocessing_parameters")
480-
def register_tomo_preproc_params(
481-
session_id: MurfeySessionID, proc_params: PreprocessingParametersTomo, db=murfey_db
477+
@router.post("/sessions/{session_id}/tomography_processing_parameters")
478+
def register_tomo_proc_params(
479+
session_id: MurfeySessionID, proc_params: ProcessingParametersTomo, db=murfey_db
482480
):
483481
log.info(
484482
f"Registering tomography preprocessing parameters {sanitise(proc_params.tag)}, {sanitise(proc_params.tilt_series_tag)}"
@@ -499,68 +497,19 @@ def register_tomo_preproc_params(
499497
.where(ProcessingJob.recipe == "em-tomo-preprocess")
500498
).one()
501499
if not db.exec(
502-
select(func.count(TomographyPreprocessingParameters.dcg_id)).where(
503-
TomographyPreprocessingParameters.dcg_id == collected_ids[0].id
500+
select(func.count(TomographyProcessingParameters.dcg_id)).where(
501+
TomographyProcessingParameters.dcg_id == collected_ids[0].id
504502
)
505503
).one():
506-
params = TomographyPreprocessingParameters(
504+
params = TomographyProcessingParameters(
507505
dcg_id=collected_ids[0].id,
508506
pixel_size=proc_params.pixel_size_on_image,
509507
dose_per_frame=proc_params.dose_per_frame,
510508
gain_ref=proc_params.gain_ref,
511509
motion_corr_binning=proc_params.motion_corr_binning,
512510
voltage=proc_params.voltage,
513-
# manual_tilt_offset=proc_params.manual_tilt_offset,
514511
)
515512
db.add(params)
516-
if not db.exec(
517-
select(func.count(TomographyProcessingParameters.pj_id)).where(
518-
TomographyProcessingParameters.pj_id == collected_ids[2].id
519-
)
520-
).one():
521-
tomogram_params = TomographyProcessingParameters(
522-
pj_id=collected_ids[2].id, manual_tilt_offset=proc_params.manual_tilt_offset
523-
)
524-
db.add(tomogram_params)
525-
db.commit()
526-
db.close()
527-
528-
529-
@router.post("/clients/{client_id}/tomography_processing_parameters")
530-
def register_tomo_proc_params(
531-
client_id: int, proc_params: ProcessingParametersTomo, db=murfey_db
532-
):
533-
client = db.exec(
534-
select(ClientEnvironment).where(ClientEnvironment.client_id == client_id)
535-
).one()
536-
session_id = client.session_id
537-
log.info(
538-
f"Registering tomography processing parameters {sanitise(proc_params.tag)}, {sanitise(proc_params.tilt_series_tag)}, {session_id}"
539-
)
540-
collected_ids = db.exec(
541-
select(
542-
DataCollectionGroup,
543-
DataCollection,
544-
ProcessingJob,
545-
AutoProcProgram,
546-
)
547-
.where(DataCollectionGroup.session_id == session_id)
548-
.where(DataCollectionGroup.tag == proc_params.tag)
549-
.where(DataCollection.tag == proc_params.tilt_series_tag)
550-
.where(DataCollection.dcg_id == DataCollectionGroup.id)
551-
.where(ProcessingJob.dc_id == DataCollection.id)
552-
.where(AutoProcProgram.pj_id == ProcessingJob.id)
553-
.where(ProcessingJob.recipe == "em-tomo-preprocess")
554-
).one()
555-
if not db.exec(
556-
select(func.count(TomographyProcessingParameters.pj_id)).where(
557-
TomographyProcessingParameters.pj_id == collected_ids[2].id
558-
)
559-
).one():
560-
tomogram_params = TomographyProcessingParameters(
561-
pj_id=collected_ids[2].id, manual_tilt_offset=proc_params.manual_tilt_offset
562-
)
563-
db.add(tomogram_params)
564513
db.commit()
565514
db.close()
566515

0 commit comments

Comments
 (0)