DAQ: Integration of AareDB code
Build and Publish / build (push) Successful in 22s

This commit is contained in:
2025-06-18 10:30:12 +02:00
parent 6cfef536e2
commit 44bc0046fb
4 changed files with 33 additions and 33 deletions
+13 -13
View File
@@ -148,7 +148,7 @@ class AareWrapper:
verify=False, headers=headers)
print(response.status_code)
def create_rotation_run(self, s: Optional[SampleShortInfo], r:RotationScanRequest, d:DAQStatusModel, sg:SampleGeometryModel):
def create_rotation_run(self, s: Optional[SampleShortInfo], r:RotationScanRequest, d:DAQStatusModel):
if s is None:
return
@@ -156,8 +156,8 @@ class AareWrapper:
rotation = RotationParameters(
omegaStart_deg=r.start_omega_deg,
omegaStep=r.incr_omega_deg,
phi=r.start.phi_deg,
chi=r.start.chi_deg,
phi=d.geom.smargon.phi_deg,
chi=d.geom.smargon.chi_deg,
numberOfImages=r.steps,
exposureTime_s=r.exp_time_s,
)
@@ -165,7 +165,7 @@ class AareWrapper:
manufacturer="DECTRIS",
model=d.diffraction.detector_description,
type="photon-counting",
serialNumber=d.detector_serial_number,
serialNumber=d.diffraction.detector_serial_number,
detectorDistance_mm=r.dtz,
beamCenterX_px=d.diffraction.beam_center_pxl[0],
beamCenterY_px=d.diffraction.beam_center_pxl[1],
@@ -184,8 +184,8 @@ class AareWrapper:
transmission=r.transmission,
focusingOptic="Kirkpatrick-Baez",
beamlineFluxAtSample_ph_s=d.flux_ph_s,
beamSizeWidth=sg.beam_size_mm * 100,
beamSizeHeight=sg.beam_size_mm * 100,
beamSizeWidth=d.geom.beam_size_mm * 100,
beamSizeHeight=d.geom.beam_size_mm * 100,
cryojetTemperature_K=d.bl.cryojet_K,
rotation=rotation
)
@@ -202,27 +202,27 @@ class AareWrapper:
except Exception as e:
print(e)
def create_gridscan_run(self, s: Optional[SampleShortInfo], r:RasterGridRequest, d:DAQStatusModel, sg:SampleGeometryModel):
def create_gridscan_run(self, s: Optional[SampleShortInfo], r:RasterGridRequest, d:DAQStatusModel):
if s is None:
return
try:
gridscan = GridScanParameters(
#xStart=90.0,
xStep=0.1,
xStep=r.grid_size_mm.x,
#yStart=0.0,
yStep= 0.1,
yStep= r.grid_size_mm.y,
x_col=r.n_x,
y_row=r.n_y,
omegaStart_deg=r.omega_deg,
numberOfImages=r.get_image_number,
numberOfImages=r.n_x * r.n_y,
exposureTime_s=r.exp_time_s,
)
detector_data = DetectorParameters(
manufacturer="DECTRIS",
model=d.diffraction.detector_description,
type="photon-counting",
serialNumber=d.detector_serial_number,
serialNumber=d.diffraction.detector_serial_number,
detectorDistance_mm=r.dtz,
beamCenterX_px=d.diffraction.beam_center_pxl[0],
beamCenterY_px=d.diffraction.beam_center_pxl[1],
@@ -241,8 +241,8 @@ class AareWrapper:
transmission=r.transmission,
focusingOptic="Kirkpatrick-Baez",
beamlineFluxAtSample_ph_s=d.flux_ph_s,
beamSizeWidth=sg.beam_size_mm * 100,
beamSizeHeight=sg.beam_size_mm * 100,
beamSizeWidth=d.geom.beam_size_mm * 100,
beamSizeHeight=d.geom.beam_size_mm * 100,
cryojetTemperature_K=d.bl.cryojet_K,
gridScan=gridscan
)
+17 -15
View File
@@ -8,6 +8,7 @@ import numpy as np
import redis
from aaredaq import workflows
from aaredaq.aaredb import AareWrapper
from aaredaq.autofocus import calculate_focus_measure
from aaredaq.config import BeamlineConfig, ABR_POS_MOUNT
from aaredaq.config import BeamlineStateEnum
@@ -48,7 +49,8 @@ class AareDAQ:
self.__mlbox = MlBox()
self.__jfjoch = JFJochWrapper(bl)
self.__bl = bl.value.upper()
self.__aare = AareWrapper(bl)
@property
def state(self) -> BeamlineStateEnum:
return self.__cfg.state
@@ -185,7 +187,7 @@ class AareDAQ:
raise Exception("Beamstop Z below 24.0 mm - potentially unsafe with mounting")
if self.__devs.magnet_position_sensor.value != 0:
raise Exception("Magnet position sensor is not in position")
self.__devs.tell.check_enable_motion()
# self.__devs.tell.check_enable_motion()
self.__devs.tell.set_in_mount_position(True)
curr_sample = self.__cfg.current_sample
@@ -193,15 +195,12 @@ class AareDAQ:
if target is None:
self.__devs.tell.unmount(wait=True, timeout=360)
if curr_sample is not None:
self.__devs.aare.sample_unmounted(curr_sample)
self.__aare.sample_unmounted(curr_sample)
self.__cfg.current_sample = None
else:
if target.location is None:
raise Exception("Sample not loaded into dewar")
if curr_sample is not None:
self.__devs.aare.sample_unmounted(curr_sample)
self.__aare.sample_unmounted(curr_sample)
self.__devs.tell.mount(
address=target.tell_address(),
force=True,
@@ -211,7 +210,7 @@ class AareDAQ:
timeout=360,
)
self.__devs.aare.sample_mounted(target)
self.__aare.sample_mounted(target)
self.__cfg.current_sample = target
@sample.setter
@@ -258,6 +257,9 @@ class AareDAQ:
self.__devs.aerotech.move(r.omega_deg, wait=True, speed=360.0)
save_smargon_position = self.__devs.smargon.readback
self.__devs.smargon.target = r.smargon
self.__aare.create_gridscan_run(self.sample, r, self.status)
self.__devs.aerotech.measure_raster_simple(
r.exp_time_s, r.grid_size_mm.x, r.grid_size_mm.y, r.n_x, r.n_y
)
@@ -289,8 +291,9 @@ class AareDAQ:
self.__devs.smargon.target = request.start
self.__devs.smargon.wait()
self.__jfjoch.measure_rotation(request, self.diffraction_geometry, self.sample)
self.__jfjoch.measure_rotation(request, self.diffraction_geometry, self.sample)
self.__aare.create_rotation_run(self.sample, request, self.status)
if request.screening:
self.__devs.aerotech.measure_screening(request.start_omega_deg,
request.wedge_omega_deg,
@@ -319,6 +322,7 @@ class AareDAQ:
self.__devs.aerotech.wait_scan_done(total_time + 60)
self.__jfjoch.wait_till_done(60)
self.__aare.confirm_image_written(self.sample, request)
self.__devs.aerotech.reset()
def measure_rotation(self, request: RotationScanRequest):
@@ -454,8 +458,7 @@ class AareDAQ:
if filename is not None:
cv2.rectangle(bgr_image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
cv2.imwrite(f"{filename}.jpg", bgr_image)
if sample_id is not None:
self.__devs.aare.upload_image(sample_id, filename, bgr_image)
self.__aare.upload_image(sample_id, filename, bgr_image)
if move:
geom = self.sample_geometry
coord = geom.picture_to_smargon(Coordinate(x=x1, y=y1))
@@ -570,12 +573,11 @@ class AareDAQ:
def save_screenshot_db(self, sample_id: int, filename: str):
time.sleep(0.2) # Wait 200 ms to ensure camera image is stable
bgr_image = cv2.cvtColor(self.camera_image, cv2.COLOR_RGB2BGR)
self.__devs.aare.upload_image(sample_id, filename, bgr_image)
self.__aare.upload_image(sample_id, filename, bgr_image)
@property
def sample_spreadsheet(self) -> SampleShortInfoList:
return SampleShortInfoList(s=[])
#return self.__devs.aare.get_sample_info()
return self.__aare.get_sample_info()
def sample_spreadsheet_user(self, pgroup: str) -> SampleShortInfoList:
sample = self.sample_spreadsheet
+2 -3
View File
@@ -1,7 +1,7 @@
from aaredaqlib.coordinate import Coordinate
from epics import PV
from aaredaqlib.beamline import MXBeamline
from aaredaqlib.coordinate import Coordinate
from aaredaqlib.models import SampleCameraSettings
from mxlibs3 import aerotech, smargon
from mxlibs3.area_detector import epicsAD
@@ -11,6 +11,7 @@ from mxlibs3.non_standard import NonStandard
from mxlibs3.tell_client import TellClient
from mxlibs3.workflow_tools import wait_position
#from bec_lib.client import BECClient
#from bec_lib.service_config import ServiceConfig
@@ -23,8 +24,6 @@ class BeamlineDevices:
#self.__bec_dev = client.device_manager.devices
#self.__bec_scans = client.scans
# self.aare = AareWrapper(beamline)
BEAMLINE = beamline.value.upper()
self.tell = TellClient(beamline)
+1 -2
View File
@@ -177,8 +177,7 @@ async def sample(token: str = Depends(oauth2_scheme)) -> SampleShortInfo:
async def mount(dbid: int, token: str = Depends(oauth2_scheme)):
token_data = auth.parse_token(token)
auth.check_jwt_rw(cfg, auth.parse_token(token))
# st = daq.sample_spreadsheet
st = SampleShortInfoList(s=[])
st = daq.sample_spreadsheet
index = -1
for i in range(len(st.s)):