This commit is contained in:
@@ -44,17 +44,12 @@ class XrayEyeAlign:
|
||||
self.shift_xy = [0, 0]
|
||||
self._xray_fov_xy = [0, 0]
|
||||
|
||||
# def save_frame(self):
|
||||
# epics_put("XOMNYI-XEYE-SAVFRAME:0", 1)
|
||||
|
||||
def update_frame(self,keep_shutter_open=False):
|
||||
|
||||
self.flomni.flomnigui_show_xeyealign()
|
||||
if not dev.cam_xeye.live_mode_enabled.get():
|
||||
# dev.cam_xeye.live_mode = True
|
||||
dev.cam_xeye.live_mode_enabled.put(True)
|
||||
|
||||
# epics_put("XOMNYI-XEYE-ACQ:0", 1)
|
||||
self.gui.on_live_view_enabled(True)
|
||||
|
||||
dev.omnyfsh.fshopen()
|
||||
@@ -62,7 +57,6 @@ class XrayEyeAlign:
|
||||
time.sleep(0.5)
|
||||
# stop live view
|
||||
if not keep_shutter_open:
|
||||
# epics_put("XOMNYI-XEYE-ACQ:0", 0)
|
||||
self.gui.on_live_view_enabled(False)
|
||||
time.sleep(0.1)
|
||||
dev.omnyfsh.fshclose()
|
||||
@@ -71,7 +65,6 @@ class XrayEyeAlign:
|
||||
print("Staying in live view, shutter is and remains open!")
|
||||
|
||||
def tomo_rotate(self, val: float):
|
||||
# pylint: disable=undefined-variable
|
||||
if not self.test_wo_movments:
|
||||
umv(self.device_manager.devices.fsamroy, val)
|
||||
|
||||
@@ -79,30 +72,19 @@ class XrayEyeAlign:
|
||||
return self.device_manager.devices.fsamroy.readback.get()
|
||||
|
||||
def update_fov(self, k: int):
|
||||
# self._xray_fov_xy[0] = max(epics_get(f"XOMNYI-XEYE-XWIDTH_X:{k}"), self._xray_fov_xy[0])
|
||||
# self._xray_fov_xy[1] = max(epics_get(f"XOMNYI-XEYE-YWIDTH_Y:{k}"), self._xray_fov_xy[1])
|
||||
self._xray_fov_xy[0] = max(getattr(dev.omny_xray_gui, f"width_x_{k}").get(), self._xray_fov_xy[0])
|
||||
self._xray_fov_xy[1] = max(getattr(dev.omny_xray_gui, f"width_y_{k}").get(), self._xray_fov_xy[1])
|
||||
|
||||
# @property
|
||||
# def movement_buttons_enabled(self):
|
||||
# return [epics_get("XOMNYI-XEYE-ENAMVX:0"), epics_get("XOMNYI-XEYE-ENAMVY:0")]
|
||||
|
||||
# @movement_buttons_enabled.setter
|
||||
def movement_buttons_enabled(self, enablex: bool, enabley: bool):
|
||||
# enabled = int(enabled)
|
||||
# epics_put("XOMNYI-XEYE-ENAMVX:0", enabled)
|
||||
# epics_put("XOMNYI-XEYE-ENAMVY:0", enabled)
|
||||
self.gui.on_motors_enable(enablex,enabley)
|
||||
|
||||
def send_message(self, msg: str):
|
||||
# epics_put("XOMNYI-XEYE-MESSAGE:0.DESC", msg)
|
||||
print(f"In alginment GUI: {msg}")
|
||||
self.gui.user_message = msg
|
||||
|
||||
def align(self,keep_shutter_open=False):
|
||||
self.flomni.flomnigui_show_xeyealign()
|
||||
#dev.omny_xray_gui.fov_array.put(np.zeros((2, 5))) #reset the fov array
|
||||
if not keep_shutter_open:
|
||||
print("This routine can be called with paramter keep_shutter_open=True to keep the shutter always open")
|
||||
self.send_message("Getting things ready. Please wait...")
|
||||
@@ -113,10 +95,7 @@ class XrayEyeAlign:
|
||||
#clear potential pending movement requests
|
||||
dev.omny_xray_gui.mvx.set(0)
|
||||
dev.omny_xray_gui.mvy.set(0)
|
||||
#epics_put("XOMNYI-XEYE-MVX:0", 0)
|
||||
#epics_put("XOMNYI-XEYE-MVY:0", 0)
|
||||
#reset submit channel
|
||||
# epics_put("XOMNYI-XEYE-SUBMIT:0", 0)
|
||||
dev.omny_xray_gui.submit.set(0)
|
||||
|
||||
|
||||
@@ -132,7 +111,6 @@ class XrayEyeAlign:
|
||||
|
||||
if not self.test_wo_movments:
|
||||
self.tomo_rotate(0)
|
||||
#epics_put("XOMNYI-XEYE-ANGLE:0", 0)
|
||||
|
||||
self.flomni.feye_in()
|
||||
|
||||
@@ -144,13 +122,11 @@ class XrayEyeAlign:
|
||||
self.movement_buttons_enabled(False,False)
|
||||
|
||||
sample_name = self.flomni.sample_get_name(0)
|
||||
# epics_put("XOMNYI-XEYE-SAMPLENAME:0.DESC", sample_name)
|
||||
self.gui.sample_name = sample_name
|
||||
|
||||
# this makes sure we are in a defined state
|
||||
self.flomni.feedback_disable()
|
||||
|
||||
#epics_put("XOMNYI-XEYE-PIXELSIZE:0", self.PIXEL_CALIBRATION)
|
||||
if not self.test_wo_movments:
|
||||
self.flomni.fosa_out()
|
||||
|
||||
@@ -163,19 +139,14 @@ class XrayEyeAlign:
|
||||
|
||||
self.gui.enable_submit_button(True)
|
||||
dev.omny_xray_gui.step.set(0).wait()
|
||||
#epics_put("XOMNYI-XEYE-STEP:0", 0) #TODO convert later
|
||||
self.send_message("Submit center value of FZP.")
|
||||
|
||||
k = 0
|
||||
while True:
|
||||
#if epics_get("XOMNYI-XEYE-SUBMIT:0") == 1:
|
||||
if dev.omny_xray_gui.submit.get() == 1:
|
||||
|
||||
|
||||
#epics_put("XOMNYI-XEYE-SUBMIT:0", 0)
|
||||
self.alignment_values[k] = getattr(dev.omny_xray_gui, f"xval_x_{k}").get() / 2 * self.PIXEL_CALIBRATION # in mm
|
||||
#val_x = epics_get(f"XOMNYI-XEYE-XVAL_X:{k}") / 2 * self.PIXEL_CALIBRATION # in mm
|
||||
#self.alignment_values[k] = val_x
|
||||
print(f"Clicked position {k}: x {self.alignment_values[k]}")
|
||||
rtx_position = dev.rtx.readback.get() / 1000
|
||||
print(f"Current rtx position {rtx_position}")
|
||||
@@ -185,7 +156,6 @@ class XrayEyeAlign:
|
||||
if k == 0: # received center value of FZP
|
||||
self.send_message("please wait ...")
|
||||
self.movement_buttons_enabled(False, False)
|
||||
#epics_put("XOMNYI-XEYE-SUBMIT:0", -1) # disable submit button
|
||||
self.gui.enable_submit_button(False)
|
||||
|
||||
self.flomni.feedback_disable()
|
||||
@@ -202,62 +172,49 @@ class XrayEyeAlign:
|
||||
self.update_frame(keep_shutter_open)
|
||||
self.send_message("Step 1/5: Adjust sample height and submit center")
|
||||
self.gui.enable_submit_button(True)
|
||||
#epics_put("XOMNYI-XEYE-SUBMIT:0", 0)
|
||||
self.movement_buttons_enabled(True, True)
|
||||
|
||||
elif 1 <= k < 5: # received sample center value at samroy 0 ... 315
|
||||
self.send_message("please wait ...")
|
||||
self.gui.enable_submit_button(False)
|
||||
#epics_put("XOMNYI-XEYE-SUBMIT:0", -1)
|
||||
self.movement_buttons_enabled(False, False)
|
||||
|
||||
umv(dev.rtx, 0)
|
||||
self.tomo_rotate(k * 45)
|
||||
dev.omny_xray_gui.angle.set(self.get_tomo_angle())
|
||||
#epics_put("XOMNYI-XEYE-ANGLE:0", self.get_tomo_angle())
|
||||
self.update_frame(keep_shutter_open)
|
||||
self.send_message(f"Step {k+1}/5: Submit sample center")
|
||||
self.gui.enable_submit_button(True)
|
||||
#epics_put("XOMNYI-XEYE-SUBMIT:0", 0)
|
||||
#epics_put("XOMNYI-XEYE-ENAMVX:0", 1)
|
||||
self.movement_buttons_enabled(True, False)
|
||||
self.update_fov(k)
|
||||
|
||||
elif k == 5: # received sample center value at samroy 270 and done
|
||||
self.send_message("done...")
|
||||
self.gui.enable_submit_button(False)
|
||||
#epics_put("XOMNYI-XEYE-SUBMIT:0", -1) # disable submit button
|
||||
self.movement_buttons_enabled(False,False)
|
||||
self.update_fov(k)
|
||||
break
|
||||
|
||||
k += 1
|
||||
dev.omny_xray_gui.step.set(k)
|
||||
#epics_put("XOMNYI-XEYE-STEP:0", k)
|
||||
#reset submit channel
|
||||
dev.omny_xray_gui.submit.set(0)
|
||||
#_xrayeyalignmvx = epics_get("XOMNYI-XEYE-MVX:0")
|
||||
_xrayeyalignmvx = dev.omny_xray_gui.mvx.get()
|
||||
if _xrayeyalignmvx != 0:
|
||||
umvr(dev.rtx, _xrayeyalignmvx)
|
||||
print(f"Current rtx position {dev.rtx.readback.get() / 1000}")
|
||||
#if k > 0:
|
||||
# epics_put(f"XOMNYI-XEYE-STAGEPOSX:{k}", dev.rtx.readback.get() / 1000)
|
||||
time.sleep(3)
|
||||
#epics_put("XOMNYI-XEYE-MVX:0", 0)
|
||||
dev.omny_xray_gui.mvx.set(0)
|
||||
self.update_frame(keep_shutter_open)
|
||||
|
||||
if k < 2:
|
||||
# allow movements, store movements to calculate center
|
||||
_xrayeyalignmvy = dev.omny_xray_gui.mvy.get()
|
||||
#_xrayeyalignmvy = epics_get("XOMNYI-XEYE-MVY:0")
|
||||
if _xrayeyalignmvy != 0:
|
||||
self.flomni.feedback_disable()
|
||||
if not self.test_wo_movments:
|
||||
umvr(dev.fsamy, _xrayeyalignmvy / 1000)
|
||||
time.sleep(2)
|
||||
#epics_put("XOMNYI-XEYE-MVY:0", 0)
|
||||
dev.omny_xray_gui.mvy.set(0)
|
||||
self.flomni.feedback_enable_with_reset()
|
||||
self.update_frame(keep_shutter_open)
|
||||
@@ -276,11 +233,9 @@ class XrayEyeAlign:
|
||||
if self.flomni.OMNYTools.yesno("Close the shutter now?","y"):
|
||||
dev.omnyfsh.fshclose()
|
||||
self.gui.on_live_view_enabled(False)
|
||||
#epics_put("XOMNYI-XEYE-ACQ:0", 0)
|
||||
print("setting 'XOMNYI-XEYE-ACQ:0'")
|
||||
|
||||
#self.flomni.flomnigui_idle()
|
||||
|
||||
|
||||
|
||||
print(
|
||||
f"The largest field of view from the xrayeyealign was \nfovx = {fovx:.0f} microns, fovy"
|
||||
@@ -313,16 +268,12 @@ class XrayEyeAlign:
|
||||
print(f"Writing to file new alignment: number {k}, value x {fovx_offset}")
|
||||
alignment_values_file.write(f"{fovx_x}\t{fovx_offset * 1000}\n")
|
||||
|
||||
# Convert list to numpy array
|
||||
fovx_array = np.array(fovx_list)
|
||||
|
||||
# Now build final numpy array:
|
||||
data = np.array([
|
||||
[0, 45, 90, 135, 180], # angles
|
||||
fovx_offsets*1000, # fovx_offset values
|
||||
[0, 0, 0, 0, 0]
|
||||
])
|
||||
# dev.omny_xray_gui.fit_array.put(data)
|
||||
self.gui.submit_fit_array(data)
|
||||
print(f"fit submited with {data}")
|
||||
print("todo mirko: submitted data is 1000 fold in amplitude")
|
||||
|
||||
Reference in New Issue
Block a user