fix(bec-widgets): migration of scripts to V3 #28
@@ -16,7 +16,8 @@ def alignment_fit_and_plot(
|
||||
Args:
|
||||
history_index (int): scan to fetch, e.g. -1 for the most recent scan
|
||||
device_name (str): the device for which to get the monitoring data
|
||||
|
||||
signal_name (str | None): the signal to plot, if different from the device name.
|
||||
smoothing_sigma (float): the sigma for the Gaussian smoothing filter
|
||||
"""
|
||||
# Fetch scan data from the history
|
||||
# by default, signal = device name, unless otherwise specified
|
||||
@@ -29,9 +30,9 @@ def alignment_fit_and_plot(
|
||||
|
||||
# Create a plot and a text box to display results
|
||||
dock_area = bec.gui.new()
|
||||
wf = dock_area.new().new(bec.gui.available_widgets.Waveform)
|
||||
wf = dock_area.new(bec.gui.available_widgets.Waveform)
|
||||
wf.title = f"Scan {md['scan_number']}: {md['scan_name']} of {motor_name}"
|
||||
text = dock_area.new(position="right").new(widget=bec.gui.available_widgets.TextBox)
|
||||
text = dock_area.new(bec.gui.available_widgets.TextBox, where="right")
|
||||
|
||||
# Calculate some processed data and add everything to the plot
|
||||
wf.plot(data, label="Raw data")
|
||||
|
||||
@@ -5,6 +5,18 @@
|
||||
import time
|
||||
|
||||
|
||||
def _device_name(device):
|
||||
return device.name if hasattr(device, "name") else str(device)
|
||||
|
||||
|
||||
def _get_or_create_scan_window(name="CurrentScan"):
|
||||
window = bec.gui.windows.get(name)
|
||||
if window is None:
|
||||
return bec.gui.new(name)
|
||||
window.delete_all()
|
||||
return window
|
||||
|
||||
|
||||
def rock(steps, exp_time, scan_start=None, scan_end=None, datasource=None, visual=True, **kwargs):
|
||||
"""Demo step scan with plotting
|
||||
|
||||
@@ -26,22 +38,18 @@ def rock(steps, exp_time, scan_start=None, scan_end=None, datasource=None, visua
|
||||
scan_end = 0.05 / dev.dccm_energy.user_readback.get()
|
||||
|
||||
if visual:
|
||||
# Get or create scan specific window
|
||||
window = None
|
||||
for _, val in bec.gui.windows.items():
|
||||
if val.title == "CurrentScan":
|
||||
window = val.widget
|
||||
window.clear_all()
|
||||
if window is None:
|
||||
window = bec.gui.new("CurrentScan")
|
||||
# Get or create scan specific window.
|
||||
window = _get_or_create_scan_window("CurrentScan")
|
||||
motor_name = _device_name(motor)
|
||||
datasource_name = _device_name(datasource)
|
||||
|
||||
# Draw a simploe plot in the window
|
||||
dock = window.add_dock(f"ScanDisplay {motor}")
|
||||
plt1 = dock.add_widget("BECWaveformWidget")
|
||||
plt1.plot(x_name=motor, y_name=datasource)
|
||||
plt1.set_x_label(motor)
|
||||
plt1.set_y_label(datasource)
|
||||
plt1.add_dap(motor, datasource, dap="LinearModel")
|
||||
# Draw a waveform plot in the window.
|
||||
plt1 = window.new(
|
||||
bec.gui.available_widgets.Waveform, object_name=f"ScanDisplay_{motor_name}"
|
||||
)
|
||||
plt1.plot(device_x=motor_name, device_y=datasource_name, dap="LinearModel")
|
||||
plt1.x_label = motor_name
|
||||
plt1.y_label = datasource_name
|
||||
window.show()
|
||||
|
||||
print("Handing over to 'scans.line_scan'")
|
||||
|
||||
@@ -17,14 +17,13 @@ def scan_theta2(scan_start, scan_end, stepno, exp):
|
||||
|
||||
# # Create a plot to display the results
|
||||
dock_area = bec.gui.new()
|
||||
wf = dock_area.new().new(bec.gui.available_widgets.Waveform)
|
||||
wf = dock_area.new(bec.gui.available_widgets.Waveform)
|
||||
wf.title = f"Scan of DCCM_theta2"
|
||||
wf.plot(x_name='dccm_theta2', y_name='dccm_xbpm')
|
||||
wf.add_dap_curve(device_label='dccm_xbpm-dccm_xbpm', dap_name='GaussianModel')
|
||||
wf.plot(device_x="dccm_theta2", device_y="dccm_xbpm", label="dccm_xbpm-dccm_xbpm")
|
||||
dap_xbpm = wf.add_dap_curve(device_label="dccm_xbpm-dccm_xbpm", dap_name="GaussianModel")
|
||||
print(dap_xbpm.dap_params)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,18 @@ def bl_check_beam():
|
||||
return True
|
||||
|
||||
|
||||
def _device_name(device):
|
||||
return device.name if hasattr(device, "name") else str(device)
|
||||
|
||||
|
||||
def _get_or_create_scan_window(name="CurrentScan"):
|
||||
window = bec.gui.windows.get(name)
|
||||
if window is None:
|
||||
return bec.gui.new(name)
|
||||
window.delete_all()
|
||||
return window
|
||||
|
||||
|
||||
def ascan(
|
||||
motor, scan_start, scan_end, steps, exp_time, plot=None, visual=True, relative=False, **kwargs
|
||||
):
|
||||
@@ -23,22 +35,18 @@ def ascan(
|
||||
raise RuntimeError("Beamline is not in ready state")
|
||||
|
||||
if visual:
|
||||
# Get or create scan specific window
|
||||
window = None
|
||||
for _, val in bec.gui.windows.items():
|
||||
if val.title == "CurrentScan":
|
||||
window = val.widget
|
||||
window.clear_all()
|
||||
if window is None:
|
||||
window = bec.gui.new("CurrentScan")
|
||||
# Get or create scan specific window.
|
||||
window = _get_or_create_scan_window("CurrentScan")
|
||||
motor_name = _device_name(motor)
|
||||
plot_name = _device_name(plot)
|
||||
|
||||
# Draw a simploe plot in the window
|
||||
dock = window.add_dock(f"ScanDisplay {motor}")
|
||||
plt1 = dock.add_widget("BECWaveformWidget")
|
||||
plt1.plot(x_name=motor, y_name=plot)
|
||||
plt1.set_x_label(motor)
|
||||
plt1.set_y_label(plot)
|
||||
plt1.add_dap(motor, plot, dap="LinearModel")
|
||||
# Draw a waveform plot in the window.
|
||||
plt1 = window.new(
|
||||
bec.gui.available_widgets.Waveform, object_name=f"ScanDisplay_{motor_name}"
|
||||
)
|
||||
plt1.plot(device_x=motor_name, device_y=plot_name, dap="LinearModel")
|
||||
plt1.x_label = motor_name
|
||||
plt1.y_label = plot_name
|
||||
window.show()
|
||||
|
||||
print("Handing over to 'scans.line_scan'")
|
||||
|
||||
Reference in New Issue
Block a user