DAQ: Now uploads screenshots to aaredb following loop centering and rotation data collection. Removed a zoom setting. Updated mount procedure to include loop centering following robot mount.

This commit is contained in:
2025-07-04 16:23:29 +02:00
parent 6bc3ed2eae
commit 02b83b0096
5 changed files with 19 additions and 12 deletions
+1 -1
View File
@@ -124,7 +124,7 @@ def def_loop_centering_zoom() -> LoopCenteringZoomModel:
return LoopCenteringZoomModel(
z=[
LoopCenteringZoomModelElem(
zoom_value=200, sam_cam_gain=50.0, sam_cam_exp=0.05
zoom_value=280, sam_cam_gain=50.0, sam_cam_exp=0.10
)
]
)
+4 -3
View File
@@ -125,14 +125,15 @@ class AareWrapper:
def upload_image(self, sample_id: int, filename: str, bgr_image: np.ndarray):
_, buffer = cv2.imencode('.jpg', bgr_image)
jpeg_bytes = io.BytesIO(buffer)
url = f"{self.__host}/samples/{sample_id}/upload-images"
url = f"{self.__host}/protected_router/sample_runner/{sample_id}/upload-images"
headers = {
"accept": "application/json"
"accept": "application/json",
"X-Shared-Password": os.getenv("AAREDB_SHARED_PASSWORD")
}
response = requests.post(url,
files={'uploaded_file': (filename + ".jpg", jpeg_bytes, "image/jpeg")},
verify=False, headers=headers)
print(response.status_code)
print(f"Response status code: {response.status_code}")
def create_rotation_run(self, s: Optional[SampleShortInfo], r:RotationScanRequest, d:DAQStatusModel):
if s is None:
+13 -6
View File
@@ -206,8 +206,7 @@ class AareDAQ:
self.__devs.smargon.move_home(wait=True)
self.__devs.abr_pos = ABR_POS_MOUNT
time.sleep(0.5)
print(f"Smargon x={self.__devs.smargon.readback.sh_mm.x}, y={self.__devs.smargon.readback.sh_mm.y}, z={self.__devs.smargon.readback.sh_mm.z}")
print(f"ABR x={self.__devs.abr_pos.x}, y={self.__devs.abr_pos.y}, z={self.__devs.abr_pos.z} omega={self.__devs.aerotech.omega}")
if self.__devs.bsz.value < 24.0:
raise Exception("Beamstop Z below 24.0 mm - potentially unsafe with mounting")
if self.__devs.magnet_position_sensor.value != 0:
@@ -227,7 +226,7 @@ class AareDAQ:
self.__cfg.current_sample = None
else:
# reset zoom
self.__devs.zoom = 1
self.__devs.zoom = 280
# mount sample
self.__aare.sample_unmounted(curr_sample)
self.__devs.tell.mount(
@@ -241,6 +240,7 @@ class AareDAQ:
self.__aare.sample_mounted(target)
self.__cfg.current_sample = target
self.save_screenshot_db(target.db_id, f"sample_mounted")
@sample.setter
def sample(self, target: SampleShortInfo | None):
@@ -270,6 +270,9 @@ class AareDAQ:
self.__set_state(BeamlineStateEnum.SampleAlignment)
if target is not None and target.location is not None:
self.__loop_center_sequence(target.db_id)
@property
def camera_image(self) -> np.ndarray | None:
image = self.__devs.sample_cam.get_image(gray=False)
@@ -350,6 +353,8 @@ class AareDAQ:
self.__jfjoch.measure_rotation(request, status)
self.__aare.create_rotation_run(self.sample, request, status)
self.save_screenshot_db(self.sample.db_id, "before_dc")
if request.screening:
self.__devs.aerotech.measure_screening(request.start_omega_deg,
request.wedge_omega_deg,
@@ -380,6 +385,7 @@ class AareDAQ:
self.__aare.sample_collected(self.sample)
self.__devs.aerotech.reset()
result = self.__jfjoch.wait_till_done(60)
self.save_screenshot_db(self.sample.db_id, "after_dc")
return CompletedRotationScan(request=copy.deepcopy(request), result=result)
def measure_rotation(self, request: RotationScanRequest) -> CompletedRotationScan:
@@ -627,7 +633,9 @@ class AareDAQ:
filename = f"{angle}_{s.zoom_value:.0f}"
self.__devs.smargon.target = self.__loop_center(filename)
self.__devs.smargon.wait(60)
print(sample_id)
if sample_id is not None:
self.__aare.sample_centered(self.__cfg.current_sample)
time.sleep(0.1)
self.save_screenshot_db(sample_id, f"{angle}_{s.zoom_value:.0f}")
i += 1
@@ -684,9 +692,8 @@ class AareDAQ:
self.__mount(sample)
self.__set_state(BeamlineStateEnum.SampleAlignment)
print(f"Saving screenshot {sample.db_id} mount.jpeg")
self.save_screenshot_db(sample.db_id, "mount.jpeg")
self.__loop_center_sequence(sample.db_id)
self.save_screenshot_db(sample.db_id, "after_lc.jpeg")
self.__set_state(BeamlineStateEnum.DataCollection)
@@ -724,7 +731,7 @@ class AareDAQ:
# RotationScanRequest(total_omega_deg=360,
# start_omega_deg=0,
# total_time_sec=18))
print(f"Saving screenshot {sample.db_id} after_dc.jpeg")
self.save_screenshot_db(sample.db_id, "after_dc.jpeg")
self.__set_state(BeamlineStateEnum.RobotSampleExchange)
+1 -1
View File
@@ -321,7 +321,7 @@ async def alc_background(token: str = Depends(oauth2_scheme)) -> str:
@app.post("/alc/center_loop")
async def alc_center_loop(token: str = Depends(oauth2_scheme)) -> str:
auth.check_jwt_rw(cfg, auth.parse_token(token))
daq.auto_loop_center()
daq.auto_loop_center(cfg.current_sample.db_id)
return "OK"
-1
View File
@@ -16,7 +16,6 @@ class ZoomPanel(QWidget):
grid_layout = QGridLayout(self)
self.__zoom_settings = [
{"name": "1x", "value": 1},
{"name": "2.0x", "value": 280},
{"name": "3.5x", "value": 500},
{"name": "5.8x", "value": 700},