parent
0c4fffff0d
commit
6bf401aba8
@ -34,7 +34,10 @@ def create():
|
||||
seed_angle_tol_spinner = Spinner(title="seed-angle-tol", value=1, step=0.01)
|
||||
eval_hkl_tol_spinner = Spinner(title="eval-hkl-tol", value=0.15, step=0.01)
|
||||
|
||||
diff_vec = []
|
||||
|
||||
def process_button_callback():
|
||||
nonlocal diff_vec
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
temp_peak_list_dir = os.path.join(temp_dir, "peak_list")
|
||||
os.mkdir(temp_peak_list_dir)
|
||||
@ -58,7 +61,7 @@ def create():
|
||||
check=True,
|
||||
)
|
||||
|
||||
prepare_event_file(temp_event_file, roi_dict, path_prefix_textinput.value)
|
||||
diff_vec = prepare_event_file(temp_event_file, roi_dict, path_prefix_textinput.value)
|
||||
|
||||
subprocess.run(
|
||||
[
|
||||
@ -98,7 +101,7 @@ def create():
|
||||
vals = list(map(float, c_rest))
|
||||
ub_matrix_spind = np.array(vals).reshape(3, 3)
|
||||
ub_matrix = np.linalg.inv(np.transpose(ub_matrix_spind)) * 1e10
|
||||
spind_res["ub_matrix"].append(str(ub_matrix))
|
||||
spind_res["ub_matrix"].append(ub_matrix)
|
||||
|
||||
results_table_source.data.update(spind_res)
|
||||
|
||||
@ -108,6 +111,19 @@ def create():
|
||||
process_button = Button(label="Process", button_type="primary")
|
||||
process_button.on_click(process_button_callback)
|
||||
|
||||
hkl_textareainput = TextAreaInput(title="hkl values:", rows=7)
|
||||
|
||||
def results_table_select_callback(_attr, old, new):
|
||||
if new:
|
||||
ind = new[0]
|
||||
ub_matrix = results_table_source.data["ub_matrix"][ind]
|
||||
res = ""
|
||||
for vec in diff_vec:
|
||||
res += f"{vec @ ub_matrix}\n"
|
||||
hkl_textareainput.value = res
|
||||
else:
|
||||
hkl_textareainput.value = None
|
||||
|
||||
results_table_source = ColumnDataSource(dict())
|
||||
results_table = DataTable(
|
||||
source=results_table_source,
|
||||
@ -125,6 +141,8 @@ def create():
|
||||
index_position=None,
|
||||
)
|
||||
|
||||
results_table_source.selected.on_change("indices", results_table_select_callback)
|
||||
|
||||
tab_layout = row(
|
||||
column(
|
||||
path_prefix_textinput,
|
||||
@ -137,7 +155,7 @@ def create():
|
||||
eval_hkl_tol_spinner,
|
||||
process_button,
|
||||
),
|
||||
results_table,
|
||||
column(results_table, row(hkl_textareainput)),
|
||||
)
|
||||
|
||||
return Panel(child=tab_layout, title="spind")
|
||||
@ -155,6 +173,7 @@ def gauss(x, *p):
|
||||
|
||||
|
||||
def prepare_event_file(export_filename, roi_dict, path_prefix=""):
|
||||
diff_vec = []
|
||||
p0 = [1.0, 0.0, 1.0]
|
||||
maxfev = 100000
|
||||
with open(export_filename, "w") as f:
|
||||
@ -217,4 +236,8 @@ def prepare_event_file(export_filename, roi_dict, path_prefix=""):
|
||||
d_spacing = float(pyzebra.dandth(wave, diff_vector)[0])
|
||||
dv1, dv2, dv3 = diff_vector.flatten() * 1e10
|
||||
|
||||
diff_vec.append(diff_vector.flatten())
|
||||
|
||||
f.write(f"{x_pos} {y_pos} {intensity} {snr_cnts} {dv1} {dv2} {dv3} {d_spacing}\n")
|
||||
|
||||
return diff_vec
|
||||
|
Loading…
x
Reference in New Issue
Block a user