From afbc672c770431f641c3e8fb51fb90c1c9638dd7 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Thu, 30 Apr 2026 17:09:10 +0200 Subject: [PATCH] DAQ: enabled face dtection messages to db. updated aaredb requirement to 0.1.1a49 --- pyproject.toml | 2 +- src/aare/daq/daq.py | 40 +++++++++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c7bb3694..343c86b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "python-redis-lock==4.0.0", "fastapi==0.115.13", "uvicorn==0.34.2", - "aaredb==0.1.1a45", + "aaredb==0.1.1a49", "python_multipart==0.0.20", "websocket-client==1.8.0", "sseclient-py==1.8.0", diff --git a/src/aare/daq/daq.py b/src/aare/daq/daq.py index 2d4a43e3..9feaa86a 100644 --- a/src/aare/daq/daq.py +++ b/src/aare/daq/daq.py @@ -533,7 +533,6 @@ class AareDAQ: def _execute_face_detection( self, - *, steps: int = 14, step_size: int = 15, face_min_ratio: float = 0.3, @@ -546,22 +545,41 @@ class AareDAQ: FaceDetectionResult """ self.__set_state(BeamlineStateEnum.SampleAlignment) + result = None - result = self._create_face_detection_service().run( - steps=steps, - step_size=step_size, - face_min_ratio=face_min_ratio, - ) + try: + self.__aare.send_sample_event(self.sample, SampleEventType.LOOPFACEDETECTING) - if not result.success and report_error: + result = self._create_face_detection_service().run( + steps=steps, + step_size=step_size, + face_min_ratio=face_min_ratio, + ) + + if not result.success and report_error: + self._handle_operation_error( + operation=DAQOperation.FACE_CENTERING, + sample=self.sample, + error=result.error or Exception("Face detection failed"), + event_type=SampleEventType.LOOPFACEDETECTFAILED, + additional_comment=result.comment, + ) + return False + + self.__aare.send_sample_event(self.sample, SampleEventType.LOOPFACEDETECTED) + return result + + except Exception as e: + logger.error(f"Face detection failed: {e}") + additional_comment = f"{e}" if e is not None else "" self._handle_operation_error( operation=DAQOperation.FACE_CENTERING, sample=self.sample, - error=result.error or Exception("Face detection failed"), - additional_comment=result.comment, + error=e, + event_type=SampleEventType.LOOPFACEDETECTFAILED, + additional_comment=additional_comment, ) - - return result + return False def _execute_raster_sequence(self, grid_request: RasterGridRequest, auto_center: bool = False) -> CompletedRasterGrid | None: