Simplify ccl_io functions
This commit is contained in:
parent
5b0f97959e
commit
78096efcef
@ -64,21 +64,20 @@ CCL_FIRST_LINE = (
|
|||||||
("l_index", float),
|
("l_index", float),
|
||||||
)
|
)
|
||||||
|
|
||||||
CCL_FIRST_LINE_BI = (
|
CCL_ANGLES = {
|
||||||
*CCL_FIRST_LINE,
|
"bi": (
|
||||||
("twotheta_angle", float),
|
("twotheta_angle", float),
|
||||||
("omega_angle", float),
|
("omega_angle", float),
|
||||||
("chi_angle", float),
|
("chi_angle", float),
|
||||||
("phi_angle", float),
|
("phi_angle", float),
|
||||||
)
|
),
|
||||||
|
"nb": (
|
||||||
CCL_FIRST_LINE_NB = (
|
("gamma_angle", float),
|
||||||
*CCL_FIRST_LINE,
|
("omega_angle", float),
|
||||||
("gamma_angle", float),
|
("nu_angle", float),
|
||||||
("omega_angle", float),
|
("unkwn_angle", float),
|
||||||
("nu_angle", float),
|
),
|
||||||
("unkwn_angle", float),
|
}
|
||||||
)
|
|
||||||
|
|
||||||
CCL_SECOND_LINE = (
|
CCL_SECOND_LINE = (
|
||||||
("n_points", int),
|
("n_points", int),
|
||||||
@ -132,10 +131,7 @@ def parse_1D(fileobj, data_type):
|
|||||||
# read data
|
# read data
|
||||||
scan = {}
|
scan = {}
|
||||||
if data_type == ".ccl":
|
if data_type == ".ccl":
|
||||||
if metadata["zebra_mode"] == "bi":
|
ccl_first_line = (*CCL_FIRST_LINE, *CCL_ANGLES[metadata["zebra_mode"]])
|
||||||
ccl_first_line = CCL_FIRST_LINE_BI
|
|
||||||
elif metadata["zebra_mode"] == "nb":
|
|
||||||
ccl_first_line = CCL_FIRST_LINE_NB
|
|
||||||
ccl_second_line = CCL_SECOND_LINE
|
ccl_second_line = CCL_SECOND_LINE
|
||||||
|
|
||||||
for line in fileobj:
|
for line in fileobj:
|
||||||
@ -228,13 +224,12 @@ def export_comm(data, path, lorentz=False):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
zebra_mode = data["meta"]["zebra_mode"]
|
zebra_mode = data["meta"]["zebra_mode"]
|
||||||
align = ">"
|
|
||||||
if data["meta"]["indices"] == "hkl":
|
if data["meta"]["indices"] == "hkl":
|
||||||
extension = ".comm"
|
extension = ".comm"
|
||||||
padding = [6, 4, 10, 8]
|
padding = [6, 4]
|
||||||
elif data["meta"]["indices"] == "real":
|
elif data["meta"]["indices"] == "real":
|
||||||
extension = ".incomm"
|
extension = ".incomm"
|
||||||
padding = [4, 6, 10, 8]
|
padding = [4, 6]
|
||||||
|
|
||||||
with open(str(path + extension), "w") as out_file:
|
with open(str(path + extension), "w") as out_file:
|
||||||
for key, scan in data["scan"].items():
|
for key, scan in data["scan"].items():
|
||||||
@ -242,20 +237,17 @@ def export_comm(data, path, lorentz=False):
|
|||||||
print("Scan skipped - no fit value for:", key)
|
print("Scan skipped - no fit value for:", key)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
scan_number_str = f"{key:{align}{padding[0]}}"
|
scan_str = f"{key:>{padding[0]}}"
|
||||||
h_str = f'{int(scan["h_index"]):{padding[1]}}'
|
h_str = f'{int(scan["h_index"]):{padding[1]}}'
|
||||||
k_str = f'{int(scan["k_index"]):{padding[1]}}'
|
k_str = f'{int(scan["k_index"]):{padding[1]}}'
|
||||||
l_str = f'{int(scan["l_index"]):{padding[1]}}'
|
l_str = f'{int(scan["l_index"]):{padding[1]}}'
|
||||||
|
|
||||||
if data["meta"]["area_method"] == "fit":
|
if data["meta"]["area_method"] == "fit":
|
||||||
area = float(scan["fit"]["fit_area"].n)
|
area = scan["fit"]["fit_area"].n
|
||||||
sigma_str = (
|
sigma_str = f'{scan["fit"]["fit_area"].s:>10.2f}'
|
||||||
f'{"{:8.2f}".format(float(scan["fit"]["fit_area"].s)):{align}{padding[2]}}'
|
|
||||||
)
|
|
||||||
elif data["meta"]["area_method"] == "integ":
|
elif data["meta"]["area_method"] == "integ":
|
||||||
area = float(scan["fit"]["int_area"].n)
|
area = scan["fit"]["int_area"].n
|
||||||
sigma_str = (
|
sigma_str = f'{scan["fit"]["int_area"].s:>10.2f}'
|
||||||
f'{"{:8.2f}".format(float(scan["fit"]["int_area"].s)):{align}{padding[2]}}'
|
|
||||||
)
|
|
||||||
|
|
||||||
# apply lorentz correction to area
|
# apply lorentz correction to area
|
||||||
if lorentz:
|
if lorentz:
|
||||||
@ -269,30 +261,10 @@ def export_comm(data, path, lorentz=False):
|
|||||||
|
|
||||||
area = np.abs(area * corr_factor)
|
area = np.abs(area * corr_factor)
|
||||||
|
|
||||||
int_str = f'{"{:8.2f}".format(area):{align}{padding[2]}}'
|
area_str = f"{area:>10.2f}"
|
||||||
|
|
||||||
if zebra_mode == "bi":
|
ang_str = ""
|
||||||
angle_str1 = f'{scan["twotheta_angle"]:{padding[3]}}'
|
for angle, _ in CCL_ANGLES[zebra_mode]:
|
||||||
angle_str2 = f'{scan["omega_angle"]:{padding[3]}}'
|
ang_str = ang_str + f"{scan[angle]:8}"
|
||||||
angle_str3 = f'{scan["chi_angle"]:{padding[3]}}'
|
|
||||||
angle_str4 = f'{scan["phi_angle"]:{padding[3]}}'
|
|
||||||
elif zebra_mode == "nb":
|
|
||||||
angle_str1 = f'{scan["gamma_angle"]:{padding[3]}}'
|
|
||||||
angle_str2 = f'{scan["omega_angle"]:{padding[3]}}'
|
|
||||||
angle_str3 = f'{scan["nu_angle"]:{padding[3]}}'
|
|
||||||
angle_str4 = f'{scan["unkwn_angle"]:{padding[3]}}'
|
|
||||||
|
|
||||||
line = (
|
out_file.write(scan_str + h_str + k_str + l_str + area_str + sigma_str + ang_str + "\n")
|
||||||
scan_number_str
|
|
||||||
+ h_str
|
|
||||||
+ k_str
|
|
||||||
+ l_str
|
|
||||||
+ int_str
|
|
||||||
+ sigma_str
|
|
||||||
+ angle_str1
|
|
||||||
+ angle_str2
|
|
||||||
+ angle_str3
|
|
||||||
+ angle_str4
|
|
||||||
+ "\n"
|
|
||||||
)
|
|
||||||
out_file.write(line)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user