@@ -396,6 +396,61 @@ def increment_rsync_transferred_files_prometheus(
396396 ).inc (rsyncer_info .data_bytes )
397397
398398
399+ class ProcessingDetails (BaseModel ):
400+ data_collection_group : DataCollectionGroup
401+ data_collections : List [DataCollection ]
402+ processing_jobs : List [ProcessingJob ]
403+ relion_params : SPARelionParameters
404+ feedback_params : SPAFeedbackParameters
405+
406+
407+ @router .get ("/sessions/{session_id}/spa_processing_parameters" )
408+ def get_spa_proc_param_details (
409+ session_id : MurfeySessionID , db = murfey_db
410+ ) -> Optional [List [ProcessingDetails ]]:
411+ params = db .exec (
412+ select (
413+ DataCollectionGroup ,
414+ DataCollection ,
415+ ProcessingJob ,
416+ SPARelionParameters ,
417+ SPAFeedbackParameters ,
418+ )
419+ .where (DataCollectionGroup .session_id == session_id )
420+ .where (DataCollectionGroup .id == DataCollection .dcg_id )
421+ .where (DataCollection .id == ProcessingJob .dc_id )
422+ .where (SPARelionParameters .pj_id == ProcessingJob .id )
423+ .where (SPAFeedbackParameters .pj_id == ProcessingJob .id )
424+ ).all ()
425+ if not params :
426+ return None
427+ unique_dcg_indices = []
428+ dcg_ids = []
429+ for i , p in enumerate (params ):
430+ if p [0 ].id not in dcg_ids :
431+ dcg_ids .append (p [0 ].id )
432+ unique_dcg_indices .append (i )
433+
434+ def _parse (ps , i , dcg_id ):
435+ res = []
436+ for p in ps :
437+ if p [0 ].id == dcg_id :
438+ if p [i ] not in res :
439+ res .append (p [i ])
440+ return res
441+
442+ return [
443+ ProcessingDetails (
444+ data_collection_group = params [i ][0 ],
445+ data_collections = _parse (params , 1 , d ),
446+ processing_jobs = _parse (params , 2 , d ),
447+ relion_params = _parse (params , 3 , d )[0 ],
448+ feedback_params = _parse (params , 4 , d )[0 ],
449+ )
450+ for i , d in zip (unique_dcg_indices , dcg_ids )
451+ ]
452+
453+
399454@router .post ("/sessions/{session_id}/spa_processing_parameters" )
400455def register_spa_proc_params (
401456 session_id : MurfeySessionID , proc_params : ProcessingParametersSPA , db = murfey_db
0 commit comments