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:
@@ -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
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
|
||||
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user