Allow manual data removal from export

This commit is contained in:
usov_i 2020-10-27 14:48:58 +01:00
parent 3eaf54eda3
commit ce608f1b49

View File

@ -2,6 +2,7 @@ import base64
import io import io
import os import os
import tempfile import tempfile
from copy import deepcopy
import numpy as np import numpy as np
from bokeh.layouts import column, row from bokeh.layouts import column, row
@ -86,7 +87,11 @@ def create():
for m in det_data["scan"].values() for m in det_data["scan"].values()
] ]
scan_table_source.data.update( scan_table_source.data.update(
scan=scan_list, hkl=hkl, peaks=[0] * len(scan_list), fit=[0] * len(scan_list) scan=scan_list,
hkl=hkl,
peaks=[0] * len(scan_list),
fit=[0] * len(scan_list),
export=[True] * len(scan_list),
) )
scan_table_source.selected.indices = [] scan_table_source.selected.indices = []
scan_table_source.selected.indices = [0] scan_table_source.selected.indices = [0]
@ -106,7 +111,11 @@ def create():
for m in det_data["scan"].values() for m in det_data["scan"].values()
] ]
scan_table_source.data.update( scan_table_source.data.update(
scan=scan_list, hkl=hkl, peaks=[0] * len(scan_list), fit=[0] * len(scan_list) scan=scan_list,
hkl=hkl,
peaks=[0] * len(scan_list),
fit=[0] * len(scan_list),
export=[True] * len(scan_list),
) )
scan_table_source.selected.indices = [] scan_table_source.selected.indices = []
scan_table_source.selected.indices = [0] scan_table_source.selected.indices = [0]
@ -130,7 +139,11 @@ def create():
for m in det_data["scan"].values() for m in det_data["scan"].values()
] ]
scan_table_source.data.update( scan_table_source.data.update(
scan=scan_list, hkl=hkl, peaks=[0] * len(scan_list), fit=[0] * len(scan_list) scan=scan_list,
hkl=hkl,
peaks=[0] * len(scan_list),
fit=[0] * len(scan_list),
export=[True] * len(scan_list),
) )
scan_table_source.selected.indices = [] scan_table_source.selected.indices = []
scan_table_source.selected.indices = [0] scan_table_source.selected.indices = [0]
@ -255,8 +268,9 @@ def create():
def scan_table_callback(_attr, _old, new): def scan_table_callback(_attr, _old, new):
if new: if new:
_update_plot(scan_table_source.data["scan"][new[-1]]) _update_plot(scan_table_source.data["scan"][new[-1]])
export_toggle.active = scan_table_source.data["export"][new[-1]]
scan_table_source = ColumnDataSource(dict(scan=[], hkl=[], peaks=[], fit=[])) scan_table_source = ColumnDataSource(dict(scan=[], hkl=[], peaks=[], fit=[], export=[]))
scan_table = DataTable( scan_table = DataTable(
source=scan_table_source, source=scan_table_source,
columns=[ columns=[
@ -264,6 +278,7 @@ def create():
TableColumn(field="hkl", title="hkl"), TableColumn(field="hkl", title="hkl"),
TableColumn(field="peaks", title="Peaks"), TableColumn(field="peaks", title="Peaks"),
TableColumn(field="fit", title="Fit"), TableColumn(field="fit", title="Fit"),
TableColumn(field="export", title="Export"),
], ],
width=200, width=200,
index_position=None, index_position=None,
@ -483,6 +498,13 @@ def create():
bin_size_spinner = Spinner(title="Bin size:", value=1, low=1, step=1, default_size=145) bin_size_spinner = Spinner(title="Bin size:", value=1, low=1, step=1, default_size=145)
def export_toggle_callback(value):
sel_ind = scan_table_source.selected.indices[-1]
scan_table_source.patch({"export": [(sel_ind, value)]})
export_toggle = Toggle(label="Include in export", default_size=145)
export_toggle.on_click(export_toggle_callback)
preview_output_textinput = TextAreaInput(title="Export file preview:", width=450, height=400) preview_output_textinput = TextAreaInput(title="Export file preview:", width=450, height=400)
def preview_output_button_callback(): def preview_output_button_callback():
@ -493,7 +515,11 @@ def create():
with tempfile.TemporaryDirectory() as temp_dir: with tempfile.TemporaryDirectory() as temp_dir:
temp_file = temp_dir + "/temp" temp_file = temp_dir + "/temp"
pyzebra.export_comm(det_data, temp_file) export_data = deepcopy(det_data)
for s, export in zip(scan_table_source.data["scan"], scan_table_source.data["export"]):
if not export:
del export_data["scan"][s]
pyzebra.export_comm(export_data, temp_file)
with open(f"{temp_file}{ext}") as f: with open(f"{temp_file}{ext}") as f:
preview_output_textinput.value = f.read() preview_output_textinput.value = f.read()
@ -509,7 +535,11 @@ def create():
with tempfile.TemporaryDirectory() as temp_dir: with tempfile.TemporaryDirectory() as temp_dir:
temp_file = temp_dir + "/temp" temp_file = temp_dir + "/temp"
pyzebra.export_comm(det_data, temp_file) export_data = deepcopy(det_data)
for s, export in zip(scan_table_source.data["scan"], scan_table_source.data["export"]):
if not export:
del export_data["scan"][s]
pyzebra.export_comm(export_data, temp_file)
with open(f"{temp_file}{ext}") as f: with open(f"{temp_file}{ext}") as f:
output_content = f.read() output_content = f.read()
@ -559,7 +589,7 @@ def create():
Spacer(width=20), Spacer(width=20),
column( column(
row(integ_from, integ_to), row(integ_from, integ_to),
row(bin_size_spinner), row(bin_size_spinner, column(Spacer(height=19), export_toggle)),
row(fitparam_reset_button, area_method_radiobutton), row(fitparam_reset_button, area_method_radiobutton),
row(fit_button, fit_all_button), row(fit_button, fit_all_button),
), ),