final adjustments in gui device and fitting
CI for csaxs_bec / test (push) Successful in 1m24s

This commit is contained in:
x01dc
2025-11-12 16:06:55 +01:00
parent 23dc98cb38
commit 0ad7a3fa41
3 changed files with 46 additions and 34 deletions
+6 -14
View File
@@ -83,20 +83,6 @@ class XRayEye(RPCBase):
Return the currently active ROI, or None if no ROI is active.
"""
@property
@rpc_call
def enable_live_view(self):
"""
Get or set the live view enabled state.
"""
@enable_live_view.setter
@rpc_call
def enable_live_view(self):
"""
Get or set the live view enabled state.
"""
@property
@rpc_call
def user_message(self):
@@ -139,6 +125,12 @@ class XRayEye(RPCBase):
None
"""
@rpc_call
def switch_tab(self, tab: "str"):
"""
None
"""
class XRayEye2DControl(RPCBase):
@rpc_call
@@ -127,8 +127,8 @@ class XRayEye2DControl(BECWidget, QWidget):
class XRayEye(BECWidget, QWidget):
USER_ACCESS = ["active_roi", "enable_live_view", "enable_live_view.setter", "user_message", "user_message.setter",
"sample_name", "sample_name.setter", "enable_move_buttons", "enable_move_buttons.setter"]
USER_ACCESS = ["active_roi", "user_message", "user_message.setter",
"sample_name", "sample_name.setter", "enable_move_buttons", "enable_move_buttons.setter","switch_tab"]
PLUGIN = True
def __init__(self, parent=None, **kwargs):
@@ -259,9 +259,19 @@ class XRayEye(BECWidget, QWidget):
self.fit_tab = QWidget(parent=self)
self.fit_layout = QVBoxLayout(self.fit_tab)
self.waveform = Waveform(parent=self.fit_tab)
self.waveform.dap_params_update.connect(self.on_dap_params)
self.fit_layout.addWidget(self.waveform)
self.waveform_x = Waveform(parent=self.fit_tab)
self.waveform_x.dap_params_update.connect(self.on_dap_params)
self.waveform_y = Waveform(parent=self.fit_tab)
self.waveform_y.dap_params_update.connect(self.on_dap_params)
for wave in (self.waveform_x,self.waveform_y):
wave.x_label = "Angle (deg)"
wave.x_grid = True
wave.y_grid = True
wave.enable_toolbar = False
self.fit_layout.addWidget(self.waveform_x)
self.fit_layout.addWidget(self.waveform_y)
self.tab_widget.addTab(self.fit_tab, "Fit")
def _make_connections(self):
@@ -331,6 +341,14 @@ class XRayEye(BECWidget, QWidget):
################################################################################
# Slots ported from the original OmnyAlignment, can be adjusted as needed
################################################################################
@SafeSlot(str)
def switch_tab(self,tab:str):
if tab == "fit":
self.tab_widget.setCurrentIndex(1)
else:
self.tab_widget.setCurrentIndex(0)
@SafeSlot()
def get_roi_coordinates(self) -> dict | None:
@@ -417,16 +435,15 @@ class XRayEye(BECWidget, QWidget):
@SafeSlot(dict,dict)
def on_dap_params(self,data,meta):
print('on dap params')
print(f"data: {data}")
print(f"meta: {meta}")
self.blockSignals(True)
amplitude = data.get("amplitude")
frequency = data.get("frequency")
shift = data.get("shift")
dev.omny_xray_gui.fit_params.put(data)
self.waveform.blockSignals(False)
self.bec_dispatcher.disconnect_slot(self.device_updates, MessageEndpoints.device_readback("omny_xray_gui"))
curve_id = meta.get("curve_id")
if curve_id == "fit-x-SineModel":
dev.omny_xray_gui.fit_params_x.put(data)
else:
dev.omny_xray_gui.fit_params_y.put(data)
self.bec_dispatcher.connect_slot(self.device_updates, MessageEndpoints.device_readback("omny_xray_gui"))
@SafeSlot(bool, bool)
def on_tomo_angle_readback(self, data: dict, meta: dict):
@@ -453,10 +470,11 @@ class XRayEye(BECWidget, QWidget):
self.on_motors_enable(bool(enable_x_motor), bool(enable_y_motor))
#TODO hook the waveform plotting logic
fov_array = signals.get("omny_xray_gui_fov_array").get('value')
print(f"fov_array: {fov_array}")
self.waveform.clear_all()
self.waveform.plot(x=fov_array[0],y=fov_array[1], label="fov_array",dap="SineModel",dap_oversample=5)
fit_array = signals.get("omny_xray_gui_fit_array").get('value')
self.waveform_x.clear_all()
self.waveform_y.clear_all()
self.waveform_x.plot(x=fit_array[0],y=fit_array[1], label="fit-x",dap="SineModel",dap_oversample=5)
self.waveform_y.plot(x=fit_array[0],y=fit_array[2], label="fit-y",dap="SineModel",dap_oversample=5)
# Signals from epics gui device
# send message
+5 -3
View File
@@ -71,8 +71,10 @@ class OMNYXRayEpicsGUI(Device):
mvy = Cpt(
EpicsSignal, name="mvy", read_pv="XOMNYI-XEYE-MVY:0",auto_monitor=True
)
fov_array = Cpt(Signal, name="fov_array", value=np.zeros((3, 10)))#, dtype=np.float32))
fit_params = Cpt(Signal, name="fit_params", value=np.zeros((2,3)))#, dtype=np.float32))
fit_array = Cpt(Signal, name="fit_array", value=np.zeros((3, 10)))#, dtype=np.float32))
fit_params_x = Cpt(Signal, name="fit_params_x", value=np.zeros((2,3)))#, dtype=np.float32))
fit_params_y = Cpt(Signal, name="fit_params_y", value=np.zeros((2,3)))#, dtype=np.float32))