This commit is contained in:
+13
-13
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)):
|
||||
|
||||
Reference in New Issue
Block a user