@@ -310,15 +310,87 @@ def register_tiff_preprocessing_result(
310310 else message ["session_id" ]
311311 )
312312 if isinstance (message ["result" ], str ):
313- json_obj : dict = json .loads (message ["result" ])
314- result = TIFFPreprocessingResult (** json_obj )
313+ try :
314+ json_obj : dict = json .loads (message ["result" ])
315+ result = TIFFPreprocessingResult (** json_obj )
316+ except Exception :
317+ logger .error (traceback .format_exc ())
318+ logger .error ("Exception encountered when parsing TIFF preprocessing result" )
319+ return False
315320 elif isinstance (message ["result" ], dict ):
316- result = TIFFPreprocessingResult (** message ["result" ])
321+ try :
322+ result = TIFFPreprocessingResult (** message ["result" ])
323+ except Exception :
324+ logger .error (traceback .format_exc ())
325+ logger .error ("Exception encountered when parsing TIFF preprocessing result" )
317326 else :
318- logger .error ("Invalid type for TIFF preprocessing result" )
327+ logger .error (
328+ f"Invalid type for TIFF preprocessing result: { type (message ['result' ])} "
329+ )
319330 return False
320331
321- if result and session_id :
322- pass
332+ # Register items in database if not already present
333+ try :
334+ clem_img_stk : CLEMImageStack = get_db_entry (
335+ db = db ,
336+ table = CLEMImageStack ,
337+ session_id = session_id ,
338+ file_path = result .image_stack ,
339+ )
340+ clem_img_series : CLEMImageSeries = get_db_entry (
341+ db = db ,
342+ table = CLEMImageSeries ,
343+ session_id = session_id ,
344+ series_name = result .series_name ,
345+ )
346+ clem_metadata : CLEMImageMetadata = get_db_entry (
347+ db = db ,
348+ table = CLEMImageMetadata ,
349+ session_id = session_id ,
350+ file_path = result .metadata ,
351+ )
352+
353+ # Link tables to one another and populate fields
354+ # Register TIFF files and populate them iteratively first
355+ for file in result .parent_tiffs :
356+ clem_tiff_file : CLEMTIFFFile = get_db_entry (
357+ db = db ,
358+ table = CLEMTIFFFile ,
359+ session_id = session_id ,
360+ file_path = file ,
361+ )
362+ clem_tiff_file .associated_metadata = clem_metadata
363+ clem_tiff_file .child_series = clem_img_series
364+ clem_tiff_file .child_stack = clem_img_stk
365+ db .add (clem_tiff_file )
366+ db .commit ()
367+ db .refresh (clem_tiff_file )
368+
369+ clem_img_stk .associated_metadata = clem_metadata
370+ clem_img_stk .parent_series = clem_img_series
371+ clem_img_stk .channel_name = result .channel
372+ clem_img_stk .stack_created = True
373+ db .add (clem_img_stk )
374+ db .commit ()
375+ db .refresh (clem_img_stk )
376+
377+ clem_img_series .associated_metadata = clem_metadata
378+ clem_img_series .number_of_members = result .number_of_members
379+ db .add (clem_img_series )
380+ db .commit ()
381+ db .refresh (clem_img_series )
382+
383+ logger .info (
384+ f"TIFF preprocessing results registered for { result .series_name !r} { result .channel !r} image stack"
385+ )
386+ return True
323387
324- return True
388+ except Exception :
389+ logger .error (traceback .format_exc ())
390+ logger .error (
391+ f"Exception encountered when registering TIFF preprocessing result for { result .series_name !r} { result .channel !r} image stack"
392+ )
393+ return False
394+
395+ finally :
396+ db .close ()
0 commit comments