Add find peak controls
This commit is contained in:
parent
15428662f7
commit
4091d4ba32
@ -21,6 +21,7 @@ from bokeh.models import (
|
|||||||
Plot,
|
Plot,
|
||||||
Select,
|
Select,
|
||||||
Spacer,
|
Spacer,
|
||||||
|
Spinner,
|
||||||
TableColumn,
|
TableColumn,
|
||||||
TextAreaInput,
|
TextAreaInput,
|
||||||
TextInput,
|
TextInput,
|
||||||
@ -157,14 +158,28 @@ def create():
|
|||||||
|
|
||||||
meas_table_source.selected.on_change("indices", meas_table_callback)
|
meas_table_source.selected.on_change("indices", meas_table_callback)
|
||||||
|
|
||||||
|
peak_int_ratio_spinner = Spinner(
|
||||||
|
title="Peak intensity ratio:", value=0.8, step=0.01, low=0, high=1, default_size=145
|
||||||
|
)
|
||||||
|
peak_prominence_spinner = Spinner(title="Peak prominence:", value=50, low=0, default_size=145)
|
||||||
smooth_toggle = Toggle(label="Smooth curve")
|
smooth_toggle = Toggle(label="Smooth curve")
|
||||||
|
window_size_spinner = Spinner(title="Window size:", value=7, step=2, low=1, default_size=145)
|
||||||
|
poly_order_spinner = Spinner(title="Poly order:", value=3, low=0, default_size=145)
|
||||||
|
|
||||||
fit_output_textinput = TextAreaInput(title="Fit results:", width=600, height=400)
|
fit_output_textinput = TextAreaInput(title="Fit results:", width=600, height=400)
|
||||||
|
|
||||||
def process_button_callback():
|
def process_button_callback():
|
||||||
nonlocal det_data
|
nonlocal det_data
|
||||||
for meas in det_data["Measurements"]:
|
for meas in det_data["Measurements"]:
|
||||||
det_data = pyzebra.ccl_findpeaks(det_data, meas, smooth=smooth_toggle.active)
|
det_data = pyzebra.ccl_findpeaks(
|
||||||
|
det_data,
|
||||||
|
meas,
|
||||||
|
int_threshold=peak_int_ratio_spinner.value,
|
||||||
|
prominence=peak_prominence_spinner.value,
|
||||||
|
smooth=smooth_toggle.active,
|
||||||
|
window_size=window_size_spinner.value,
|
||||||
|
poly_order=poly_order_spinner.value,
|
||||||
|
)
|
||||||
|
|
||||||
num_of_peaks = det_data["Measurements"][meas].get("num_of_peaks")
|
num_of_peaks = det_data["Measurements"][meas].get("num_of_peaks")
|
||||||
if num_of_peaks is not None and num_of_peaks == 1:
|
if num_of_peaks is not None and num_of_peaks == 1:
|
||||||
@ -206,12 +221,18 @@ def create():
|
|||||||
save_button.on_click(save_button_callback)
|
save_button.on_click(save_button_callback)
|
||||||
save_button.js_on_click(CustomJS(args={"js_data": js_data}, code=javaScript))
|
save_button.js_on_click(CustomJS(args={"js_data": js_data}, code=javaScript))
|
||||||
|
|
||||||
|
findpeak_controls = column(
|
||||||
|
row(peak_int_ratio_spinner, peak_prominence_spinner),
|
||||||
|
smooth_toggle,
|
||||||
|
row(window_size_spinner, poly_order_spinner),
|
||||||
|
)
|
||||||
|
|
||||||
upload_div = Div(text="Or upload .ccl file:")
|
upload_div = Div(text="Or upload .ccl file:")
|
||||||
tab_layout = column(
|
tab_layout = column(
|
||||||
row(proposal_textinput, ccl_file_select),
|
row(proposal_textinput, ccl_file_select),
|
||||||
row(column(Spacer(height=5), upload_div), upload_button),
|
row(column(Spacer(height=5), upload_div), upload_button),
|
||||||
row(meas_table, plot, Spacer(width=30), fit_output_textinput),
|
row(meas_table, plot, Spacer(width=30), fit_output_textinput),
|
||||||
row(column(smooth_toggle, process_button, save_button)),
|
row(column(findpeak_controls, process_button, save_button)),
|
||||||
)
|
)
|
||||||
|
|
||||||
return Panel(child=tab_layout, title="ccl integrate")
|
return Panel(child=tab_layout, title="ccl integrate")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user