parent
0c4fffff0d
commit
6bf401aba8
@ -34,7 +34,10 @@ def create():
|
|||||||
seed_angle_tol_spinner = Spinner(title="seed-angle-tol", value=1, step=0.01)
|
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)
|
eval_hkl_tol_spinner = Spinner(title="eval-hkl-tol", value=0.15, step=0.01)
|
||||||
|
|
||||||
|
diff_vec = []
|
||||||
|
|
||||||
def process_button_callback():
|
def process_button_callback():
|
||||||
|
nonlocal diff_vec
|
||||||
with tempfile.TemporaryDirectory() as temp_dir:
|
with tempfile.TemporaryDirectory() as temp_dir:
|
||||||
temp_peak_list_dir = os.path.join(temp_dir, "peak_list")
|
temp_peak_list_dir = os.path.join(temp_dir, "peak_list")
|
||||||
os.mkdir(temp_peak_list_dir)
|
os.mkdir(temp_peak_list_dir)
|
||||||
@ -58,7 +61,7 @@ def create():
|
|||||||
check=True,
|
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(
|
subprocess.run(
|
||||||
[
|
[
|
||||||
@ -98,7 +101,7 @@ def create():
|
|||||||
vals = list(map(float, c_rest))
|
vals = list(map(float, c_rest))
|
||||||
ub_matrix_spind = np.array(vals).reshape(3, 3)
|
ub_matrix_spind = np.array(vals).reshape(3, 3)
|
||||||
ub_matrix = np.linalg.inv(np.transpose(ub_matrix_spind)) * 1e10
|
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)
|
results_table_source.data.update(spind_res)
|
||||||
|
|
||||||
@ -108,6 +111,19 @@ def create():
|
|||||||
process_button = Button(label="Process", button_type="primary")
|
process_button = Button(label="Process", button_type="primary")
|
||||||
process_button.on_click(process_button_callback)
|
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_source = ColumnDataSource(dict())
|
||||||
results_table = DataTable(
|
results_table = DataTable(
|
||||||
source=results_table_source,
|
source=results_table_source,
|
||||||
@ -125,6 +141,8 @@ def create():
|
|||||||
index_position=None,
|
index_position=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
results_table_source.selected.on_change("indices", results_table_select_callback)
|
||||||
|
|
||||||
tab_layout = row(
|
tab_layout = row(
|
||||||
column(
|
column(
|
||||||
path_prefix_textinput,
|
path_prefix_textinput,
|
||||||
@ -137,7 +155,7 @@ def create():
|
|||||||
eval_hkl_tol_spinner,
|
eval_hkl_tol_spinner,
|
||||||
process_button,
|
process_button,
|
||||||
),
|
),
|
||||||
results_table,
|
column(results_table, row(hkl_textareainput)),
|
||||||
)
|
)
|
||||||
|
|
||||||
return Panel(child=tab_layout, title="spind")
|
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=""):
|
def prepare_event_file(export_filename, roi_dict, path_prefix=""):
|
||||||
|
diff_vec = []
|
||||||
p0 = [1.0, 0.0, 1.0]
|
p0 = [1.0, 0.0, 1.0]
|
||||||
maxfev = 100000
|
maxfev = 100000
|
||||||
with open(export_filename, "w") as f:
|
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])
|
d_spacing = float(pyzebra.dandth(wave, diff_vector)[0])
|
||||||
dv1, dv2, dv3 = diff_vector.flatten() * 1e10
|
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")
|
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