99
1010from murfey .server import _murfey_id , _transport_object , sanitise
1111from murfey .server .api .auth import MurfeySessionID
12- from murfey .server .murfey_db import murfey_db
1312from murfey .util .config import get_machine_config , get_microscope
14- from murfey .util .db import DataCollectionGroup , FoilHole , GridSquare
13+ from murfey .util .db import (
14+ AutoProcProgram ,
15+ DataCollection ,
16+ DataCollectionGroup ,
17+ FoilHole ,
18+ GridSquare ,
19+ Movie ,
20+ PreprocessStash ,
21+ ProcessingJob ,
22+ )
23+ from murfey .util .db import Session as MurfeySession
24+ from murfey .util .db import SPAFeedbackParameters , SPARelionParameters
1525from murfey .util .models import FoilHoleParameters , GridSquareParameters
1626from murfey .util .processing_params import default_spa_parameters
1727from murfey .util .spa_metadata import (
@@ -30,10 +40,10 @@ def register_grid_square(
3040 session_id : MurfeySessionID ,
3141 gsid : int ,
3242 grid_square_params : GridSquareParameters ,
33- db = murfey_db ,
43+ murfey_db : Session ,
3444):
3545 try :
36- grid_square = db .exec (
46+ grid_square = murfey_db .exec (
3747 select (GridSquare )
3848 .where (GridSquare .name == gsid )
3949 .where (GridSquare .tag == grid_square_params .tag )
@@ -51,7 +61,7 @@ def register_grid_square(
5161 _transport_object .do_update_grid_square (grid_square .id , grid_square_params )
5262 except Exception :
5363 if _transport_object :
54- dcg = db .exec (
64+ dcg = murfey_db .exec (
5565 select (DataCollectionGroup )
5666 .where (DataCollectionGroup .session_id == session_id )
5767 .where (DataCollectionGroup .tag == grid_square_params .tag )
@@ -90,19 +100,19 @@ def register_grid_square(
90100 pixel_size = grid_square_params .pixel_size ,
91101 image = secured_grid_square_image_path ,
92102 )
93- db .add (grid_square )
94- db .commit ()
95- db .close ()
103+ murfey_db .add (grid_square )
104+ murfey_db .commit ()
105+ murfey_db .close ()
96106
97107
98108def register_foil_hole (
99109 session_id : MurfeySessionID ,
100110 gs_name : int ,
101111 foil_hole_params : FoilHoleParameters ,
102- db = murfey_db ,
112+ murfey_db : Session ,
103113):
104114 try :
105- gs = db .exec (
115+ gs = murfey_db .exec (
106116 select (GridSquare )
107117 .where (GridSquare .tag == foil_hole_params .tag )
108118 .where (GridSquare .session_id == session_id )
@@ -120,7 +130,7 @@ def register_foil_hole(
120130 else :
121131 jpeg_size = (0 , 0 )
122132 try :
123- foil_hole = db .exec (
133+ foil_hole = murfey_db .exec (
124134 select (FoilHole )
125135 .where (FoilHole .name == foil_hole_params .name )
126136 .where (FoilHole .grid_square_id == gsid )
@@ -180,9 +190,9 @@ def register_foil_hole(
180190 pixel_size = foil_hole_params .pixel_size ,
181191 image = secured_foil_hole_image_path ,
182192 )
183- db .add (foil_hole )
184- db .commit ()
185- db .close ()
193+ murfey_db .add (foil_hole )
194+ murfey_db .commit ()
195+ murfey_db .close ()
186196
187197
188198def _grid_square_metadata_file (f : Path , grid_square : int ) -> Optional [Path ]:
@@ -198,11 +208,11 @@ def _grid_square_metadata_file(f: Path, grid_square: int) -> Optional[Path]:
198208
199209
200210def _flush_position_analysis (
201- movie_path : Path , dcg_id : int , session_id : int , db : Session
211+ movie_path : Path , dcg_id : int , session_id : int , murfey_db : Session
202212) -> Optional [int ]:
203213 """Register a grid square and foil hole in the database"""
204214 data_collection_group = murfey_db .exec (
205- select (db . DataCollectionGroup ).where (db . DataCollectionGroup .id == dcg_id )
215+ select (DataCollectionGroup ).where (DataCollectionGroup .id == dcg_id )
206216 ).one ()
207217
208218 # Work out the grid square and associated metadata file
@@ -281,17 +291,19 @@ def _flush_position_analysis(
281291 return foil_hole
282292
283293
284- def flush_spa_preprocessing (message : dict , db : Session , demo : bool = False ):
294+ def flush_spa_preprocess (message : dict , murfey_db : Session , demo : bool = False ) -> bool :
285295 session_id = message ["session_id" ]
286296 stashed_files = murfey_db .exec (
287- select (db . PreprocessStash )
288- .where (db . PreprocessStash .session_id == session_id )
289- .where (db . PreprocessStash .tag == message ["tag" ])
297+ select (PreprocessStash )
298+ .where (PreprocessStash .session_id == session_id )
299+ .where (PreprocessStash .tag == message ["tag" ])
290300 ).all ()
291301 if not stashed_files :
292- return None
302+ return True
293303 instrument_name = (
294- murfey_db .exec (select (db .Session ).where (db .Session .id == message ["session_id" ]))
304+ murfey_db .exec (
305+ select (MurfeySession ).where (MurfeySession .id == message ["session_id" ])
306+ )
295307 .one ()
296308 .instrument_name
297309 )
@@ -301,32 +313,30 @@ def flush_spa_preprocessing(message: dict, db: Session, demo: bool = False):
301313 recipe_name = machine_config .recipes .get ("em-spa-preprocess" , "em-spa-preprocess" )
302314 collected_ids = murfey_db .exec (
303315 select (
304- db . DataCollectionGroup ,
305- db . DataCollection ,
306- db . ProcessingJob ,
307- db . AutoProcProgram ,
316+ DataCollectionGroup ,
317+ DataCollection ,
318+ ProcessingJob ,
319+ AutoProcProgram ,
308320 )
309- .where (db . DataCollectionGroup .session_id == session_id )
310- .where (db . DataCollectionGroup .tag == message ["tag" ])
311- .where (db . DataCollection .dcg_id == db . DataCollectionGroup .id )
312- .where (db . ProcessingJob .dc_id == db . DataCollection .id )
313- .where (db . AutoProcProgram .pj_id == db . ProcessingJob .id )
314- .where (db . ProcessingJob .recipe == recipe_name )
321+ .where (DataCollectionGroup .session_id == session_id )
322+ .where (DataCollectionGroup .tag == message ["tag" ])
323+ .where (DataCollection .dcg_id == DataCollectionGroup .id )
324+ .where (ProcessingJob .dc_id == DataCollection .id )
325+ .where (AutoProcProgram .pj_id == ProcessingJob .id )
326+ .where (ProcessingJob .recipe == recipe_name )
315327 ).one ()
316328 params = murfey_db .exec (
317- select (db . SPARelionParameters , db . SPAFeedbackParameters )
318- .where (db . SPARelionParameters .pj_id == collected_ids [2 ].id )
319- .where (db . SPAFeedbackParameters .pj_id == db . SPARelionParameters .pj_id )
329+ select (SPARelionParameters , SPAFeedbackParameters )
330+ .where (SPARelionParameters .pj_id == collected_ids [2 ].id )
331+ .where (SPAFeedbackParameters .pj_id == SPARelionParameters .pj_id )
320332 ).one ()
321333 proc_params = params [0 ]
322334 feedback_params = params [1 ]
323335 if not proc_params :
324336 logger .warning (
325337 f"No SPA processing parameters found for client processing job ID { collected_ids [2 ].id } "
326338 )
327- raise ValueError (
328- "No processing parameters were found in the database when flushing SPA preprocessing"
329- )
339+ return False
330340
331341 murfey_ids = _murfey_id (
332342 collected_ids [3 ].id ,
@@ -345,10 +355,10 @@ def flush_spa_preprocessing(message: dict, db: Session, demo: bool = False):
345355 # Register grid square and foil hole if not present
346356 try :
347357 foil_hole_id = _flush_position_analysis (
348- movie_path = f .file_path ,
358+ movie_path = Path ( f .file_path ) ,
349359 dcg_id = collected_ids [0 ].id ,
350360 session_id = session_id ,
351- db = db ,
361+ murfey_db = murfey_db ,
352362 )
353363 except Exception as e :
354364 logger .error (
@@ -361,7 +371,7 @@ def flush_spa_preprocessing(message: dict, db: Session, demo: bool = False):
361371 ppath = Path (f .file_path )
362372 if not mrcp .parent .exists ():
363373 mrcp .parent .mkdir (parents = True )
364- movie = db . Movie (
374+ movie = Movie (
365375 murfey_id = murfey_ids [2 * i ],
366376 path = f .file_path ,
367377 image_number = f .image_number ,
@@ -407,4 +417,4 @@ def flush_spa_preprocessing(message: dict, db: Session, demo: bool = False):
407417 )
408418 murfey_db .commit ()
409419 murfey_db .close ()
410- return None
420+ return True
0 commit comments