diff --git a/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py b/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py index d39d549..3c2bd68 100644 --- a/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py +++ b/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py @@ -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")