From 92d17f08210e63474bbed13888fb5c280983b353 Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Wed, 19 Mar 2025 10:33:11 +0000 Subject: [PATCH 1/4] Setup logging to graylog for instrument server via main server --- src/murfey/instrument_server/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/murfey/instrument_server/__init__.py b/src/murfey/instrument_server/__init__.py index 1bf239827..f8d134f8a 100644 --- a/src/murfey/instrument_server/__init__.py +++ b/src/murfey/instrument_server/__init__.py @@ -37,7 +37,10 @@ def run(): ws = murfey.client.websocket.WSApp( server=read_config()["Murfey"].get("server"), +<<<<<<< HEAD id=0, +======= +>>>>>>> 64e4467 (Setup logging to graylog for instrument server via main server) ) handler = CustomHandler(ws.send) From 2c4fd59599892f4776b63a7becc403a712186342 Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Wed, 19 Mar 2025 10:34:15 +0000 Subject: [PATCH 2/4] Need to set ID fro websocket connection --- src/murfey/instrument_server/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/murfey/instrument_server/__init__.py b/src/murfey/instrument_server/__init__.py index f8d134f8a..1bf239827 100644 --- a/src/murfey/instrument_server/__init__.py +++ b/src/murfey/instrument_server/__init__.py @@ -37,10 +37,7 @@ def run(): ws = murfey.client.websocket.WSApp( server=read_config()["Murfey"].get("server"), -<<<<<<< HEAD id=0, -======= ->>>>>>> 64e4467 (Setup logging to graylog for instrument server via main server) ) handler = CustomHandler(ws.send) From 906bba0cf80c65d1d09d472fb952e6d73dc59338 Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Wed, 19 Mar 2025 11:58:30 +0000 Subject: [PATCH 3/4] Add SPA processing parameters GET endpoint to prod server API --- src/murfey/server/api/__init__.py | 55 +++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/murfey/server/api/__init__.py b/src/murfey/server/api/__init__.py index 978ea4c23..76047dced 100644 --- a/src/murfey/server/api/__init__.py +++ b/src/murfey/server/api/__init__.py @@ -396,6 +396,61 @@ def increment_rsync_transferred_files_prometheus( ).inc(rsyncer_info.data_bytes) +class ProcessingDetails(BaseModel): + data_collection_group: DataCollectionGroup + data_collections: List[DataCollection] + processing_jobs: List[ProcessingJob] + relion_params: SPARelionParameters + feedback_params: SPAFeedbackParameters + + +@router.get("/sessions/{session_id}/spa_processing_parameters") +def get_spa_proc_param_details( + session_id: MurfeySessionID, db=murfey_db +) -> Optional[List[ProcessingDetails]]: + params = db.exec( + select( + DataCollectionGroup, + DataCollection, + ProcessingJob, + SPARelionParameters, + SPAFeedbackParameters, + ) + .where(DataCollectionGroup.session_id == session_id) + .where(DataCollectionGroup.id == DataCollection.dcg_id) + .where(DataCollection.id == ProcessingJob.dc_id) + .where(SPARelionParameters.pj_id == ProcessingJob.id) + .where(SPAFeedbackParameters.pj_id == ProcessingJob.id) + ).all() + if not params: + return None + unique_dcg_indices = [] + dcg_ids = [] + for i, p in enumerate(params): + if p[0].id not in dcg_ids: + dcg_ids.append(p[0].id) + unique_dcg_indices.append(i) + + def _parse(ps, i, dcg_id): + res = [] + for p in ps: + if p[0].id == dcg_id: + if p[i] not in res: + res.append(p[i]) + return res + + return [ + ProcessingDetails( + data_collection_group=params[i][0], + data_collections=_parse(params, 1, d), + processing_jobs=_parse(params, 2, d), + relion_params=_parse(params, 3, d)[0], + feedback_params=_parse(params, 4, d)[0], + ) + for i, d in zip(unique_dcg_indices, dcg_ids) + ] + + @router.post("/sessions/{session_id}/spa_processing_parameters") def register_spa_proc_params( session_id: MurfeySessionID, proc_params: ProcessingParametersSPA, db=murfey_db From 458315c73351c2fefb2fa8a7661a398a1d60f730 Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Wed, 19 Mar 2025 12:06:18 +0000 Subject: [PATCH 4/4] Add mag table endpoints --- src/murfey/server/api/__init__.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/murfey/server/api/__init__.py b/src/murfey/server/api/__init__.py index 76047dced..5fcc82228 100644 --- a/src/murfey/server/api/__init__.py +++ b/src/murfey/server/api/__init__.py @@ -59,6 +59,7 @@ DataCollectionGroup, FoilHole, GridSquare, + MagnificationLookup, Movie, PreprocessStash, ProcessingJob, @@ -166,6 +167,27 @@ def machine_info_by_name(instrument_name: str) -> Optional[MachineConfig]: return None +@router.get("/mag_table/") +def get_mag_table(db=murfey_db) -> List[MagnificationLookup]: + return db.exec(select(MagnificationLookup)).all() + + +@router.post("/mag_table/") +def add_to_mag_table(rows: List[MagnificationLookup], db=murfey_db): + for r in rows: + db.add(r) + db.commit() + + +@router.delete("/mag_table/{mag}") +def remove_mag_table_row(mag: int, db=murfey_db): + row = db.exec( + select(MagnificationLookup).where(MagnificationLookup.magnification == mag) + ).one() + db.delete(row) + db.commit() + + @router.get("/instruments/{instrument_name}/instrument_name") def get_instrument_display_name(instrument_name: str) -> str: machine_config = get_machine_config(instrument_name=instrument_name)[