parent
2c727d34bd
commit
0c4fffff0d
@ -3,10 +3,20 @@ import math
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from bokeh.layouts import column, row
|
from bokeh.layouts import column, row
|
||||||
from bokeh.models import Button, Panel, Spinner, TextAreaInput, TextInput
|
from bokeh.models import (
|
||||||
|
Button,
|
||||||
|
ColumnDataSource,
|
||||||
|
DataTable,
|
||||||
|
Panel,
|
||||||
|
Spinner,
|
||||||
|
TableColumn,
|
||||||
|
TextAreaInput,
|
||||||
|
TextInput,
|
||||||
|
)
|
||||||
from scipy.optimize import curve_fit
|
from scipy.optimize import curve_fit
|
||||||
|
|
||||||
import pyzebra
|
import pyzebra
|
||||||
@ -75,21 +85,45 @@ def create():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(temp_dir, "spind.txt")) as f_out:
|
with open(os.path.join(temp_dir, "spind.txt")) as f_out:
|
||||||
full_out = ""
|
spind_res = defaultdict(list)
|
||||||
for line in f_out:
|
for line in f_out:
|
||||||
# last 9 digits are spind UB matrix
|
c1, c2, c3, c4, c5, *c_rest = line.split()
|
||||||
vals = list(map(float, line.split()[-9:]))
|
spind_res["label"].append(c1)
|
||||||
|
spind_res["crystal_id"].append(c2)
|
||||||
|
spind_res["match_rate"].append(c3)
|
||||||
|
spind_res["matched_peaks"].append(c4)
|
||||||
|
spind_res["column_5"].append(c5)
|
||||||
|
|
||||||
|
# last digits are spind UB matrix
|
||||||
|
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
|
||||||
full_out = full_out + str(ub_matrix)
|
spind_res["ub_matrix"].append(str(ub_matrix))
|
||||||
output_textarea.value = full_out
|
|
||||||
|
results_table_source.data.update(spind_res)
|
||||||
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print("No results from spind")
|
print("No results from spind")
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
output_textarea = TextAreaInput(title="Output UB matrix:", rows=7)
|
results_table_source = ColumnDataSource(dict())
|
||||||
|
results_table = DataTable(
|
||||||
|
source=results_table_source,
|
||||||
|
columns=[
|
||||||
|
TableColumn(field="label", title="Label", width=50),
|
||||||
|
TableColumn(field="crystal_id", title="Crystal ID", width=100),
|
||||||
|
TableColumn(field="match_rate", title="Match Rate", width=100),
|
||||||
|
TableColumn(field="matched_peaks", title="Matched Peaks", width=100),
|
||||||
|
TableColumn(field="column_5", title="", width=100),
|
||||||
|
TableColumn(field="ub_matrix", title="UB Matrix", width=250),
|
||||||
|
],
|
||||||
|
height=300,
|
||||||
|
width=700,
|
||||||
|
fit_columns=False,
|
||||||
|
index_position=None,
|
||||||
|
)
|
||||||
|
|
||||||
tab_layout = row(
|
tab_layout = row(
|
||||||
column(
|
column(
|
||||||
@ -103,7 +137,7 @@ def create():
|
|||||||
eval_hkl_tol_spinner,
|
eval_hkl_tol_spinner,
|
||||||
process_button,
|
process_button,
|
||||||
),
|
),
|
||||||
output_textarea,
|
results_table,
|
||||||
)
|
)
|
||||||
|
|
||||||
return Panel(child=tab_layout, title="spind")
|
return Panel(child=tab_layout, title="spind")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user