Skip to content

Commit 2cc5624

Browse files
committed
Completed function to register TIFF preprocessing results
1 parent 8bcd8c0 commit 2cc5624

File tree

1 file changed

+79
-7
lines changed

1 file changed

+79
-7
lines changed

src/murfey/workflows/clem/register_results.py

Lines changed: 79 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)