Update comm_export.py
reworked function to export data. Added lorenntz to decide if Lorentz correction should be done and also export_fit to decide whether fitter or itegrated area is to be exported (added also to fit2.py)
This commit is contained in:
parent
c6636ef212
commit
870fb745ba
@ -1,121 +1,65 @@
|
|||||||
|
import numpy as np
|
||||||
def fill_string(string, total_lenght):
|
|
||||||
"""fills string to tatal_length with whitespaces
|
|
||||||
:arg string - string to fill
|
|
||||||
:arg total_lenght - length of the final string
|
|
||||||
:return string of the lenght of total_lenght
|
|
||||||
"""
|
|
||||||
white_spaces = " " * total_lenght
|
|
||||||
return_string = white_spaces[: -len(str(string))] + str(string)
|
|
||||||
return return_string
|
|
||||||
|
|
||||||
|
|
||||||
def export_comm(data, path):
|
def correction(value, lorentz=True, zebra_mode="--", ang1=0, ang2=0):
|
||||||
|
if lorentz is False:
|
||||||
|
return value
|
||||||
|
else:
|
||||||
|
if zebra_mode == "bi":
|
||||||
|
corr_value = np.abs(value * np.sin(ang1))
|
||||||
|
return corr_value
|
||||||
|
elif zebra_mode == "nb":
|
||||||
|
corr_value = np.abs(value * np.sin(ang1) * np.cos(ang2))
|
||||||
|
return corr_value
|
||||||
|
|
||||||
|
|
||||||
|
def export_comm(data, path, lorentz=False):
|
||||||
"""exports data in the *.comm format
|
"""exports data in the *.comm format
|
||||||
|
:param lorentz: perform Lorentz correction
|
||||||
:param path: path to file + name
|
:param path: path to file + name
|
||||||
:arg data - data to export, is dict after peak fitting
|
:arg data - data to export, is dict after peak fitting
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
align = ">"
|
||||||
if data["meta"]["indices"] == "hkl":
|
if data["meta"]["indices"] == "hkl":
|
||||||
extension = ".comm"
|
extension = ".comm"
|
||||||
with open(str(path + extension), "w") as out_file:
|
padding = [6, 4, 10, 8]
|
||||||
for keys in data["Measurements"]:
|
|
||||||
try:
|
|
||||||
meas_number_str = fill_string(keys[1:], 6)
|
|
||||||
h_str = fill_string(int(data["Measurements"][str(keys)]["h_index"]), 4)
|
|
||||||
k_str = fill_string(int(data["Measurements"][str(keys)]["k_index"]), 4)
|
|
||||||
l_str = fill_string(int(data["Measurements"][str(keys)]["l_index"]), 4)
|
|
||||||
int_str = fill_string(
|
|
||||||
"{:10.2f}".format(data["Measurements"][str(keys)]["fit"]["g_amp"][0]), 10
|
|
||||||
)
|
|
||||||
sigma_str = fill_string(
|
|
||||||
"{:10.2f}".format(data["Measurements"][str(keys)]["fit"]["g_width"][0]), 10
|
|
||||||
)
|
|
||||||
if data["meta"]["zebra_mode"] == 'bi':
|
|
||||||
twotheta_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["twotheta_angle"]), 8
|
|
||||||
)
|
|
||||||
omega_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["omega_angle"]), 8
|
|
||||||
)
|
|
||||||
chi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["chi_angle"]), 8
|
|
||||||
)
|
|
||||||
phi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["phi_angle"]), 8
|
|
||||||
)
|
|
||||||
elif data["meta"]["zebra_mode"] == 'nb':
|
|
||||||
twotheta_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["gamma_angle"]), 8
|
|
||||||
)
|
|
||||||
omega_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["omega_angle"]), 8
|
|
||||||
)
|
|
||||||
chi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["nu_angle"]), 8
|
|
||||||
)
|
|
||||||
phi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["unkwn_angle"]), 8
|
|
||||||
)
|
|
||||||
|
|
||||||
line = (
|
|
||||||
meas_number_str
|
|
||||||
+ h_str
|
|
||||||
+ l_str
|
|
||||||
+ k_str
|
|
||||||
+ int_str
|
|
||||||
+ sigma_str
|
|
||||||
+ twotheta_str
|
|
||||||
+ omega_str
|
|
||||||
+ chi_str
|
|
||||||
+ phi_str
|
|
||||||
+ "\n"
|
|
||||||
)
|
|
||||||
out_file.write(line)
|
|
||||||
except KeyError:
|
|
||||||
print("Measurement skipped - no fit value for:", keys)
|
|
||||||
|
|
||||||
elif data["meta"]["indices"] == "real":
|
elif data["meta"]["indices"] == "real":
|
||||||
extension = ".incomm"
|
extension = ".incomm"
|
||||||
|
padding = [4, 6, 10, 8]
|
||||||
|
|
||||||
with open(str(path + extension), "w") as out_file:
|
with open(str(path + extension), "w") as out_file:
|
||||||
for keys in data["Measurements"]:
|
for keys in data["Measurements"]:
|
||||||
|
print(keys)
|
||||||
try:
|
try:
|
||||||
meas_number_str = fill_string(keys[1:], 4)
|
meas_number_str = f"{keys[1:]:{align}{padding[0]}}"
|
||||||
h_str = fill_string(int(data["Measurements"][str(keys)]["h_index"]), 6)
|
h_str = f'{int(data["Measurements"][str(keys)]["h_index"]):{padding[1]}}'
|
||||||
k_str = fill_string(int(data["Measurements"][str(keys)]["k_index"]), 6)
|
k_str = f'{int(data["Measurements"][str(keys)]["k_index"]):{padding[1]}}'
|
||||||
l_str = fill_string(int(data["Measurements"][str(keys)]["l_index"]), 6)
|
l_str = f'{int(data["Measurements"][str(keys)]["l_index"]):{padding[1]}}'
|
||||||
int_str = fill_string(
|
if data["Measurements"][str(keys)]["fit"]["export_fit"] is True:
|
||||||
"{:10.2f}".format(data["Measurements"][str(keys)]["fit"]["g_amp"][0]), 10
|
area = float(data["Measurements"][str(keys)]["fit"]["g_amp"][0]) + float(
|
||||||
|
data["Measurements"][str(keys)]["fit"]["l_amp"][0]
|
||||||
)
|
)
|
||||||
sigma_str = fill_string(
|
else:
|
||||||
"{:10.2f}".format(data["Measurements"][str(keys)]["fit"]["g_width"][0]), 10
|
area = float(data["Measurements"][str(keys)]["fit"]["int_area"]) - float(
|
||||||
)
|
data["Measurements"][str(keys)]["fit"]["int_background"][0]
|
||||||
if data["meta"]["zebra_mode"] == 'bi':
|
|
||||||
twotheta_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["twotheta_angle"]), 8
|
|
||||||
)
|
|
||||||
omega_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["omega_angle"]), 8
|
|
||||||
)
|
|
||||||
chi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["chi_angle"]), 8
|
|
||||||
)
|
|
||||||
phi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["phi_angle"]), 8
|
|
||||||
)
|
|
||||||
elif data["meta"]["zebra_mode"] == 'nb':
|
|
||||||
twotheta_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["gamma_angle"]), 8
|
|
||||||
)
|
|
||||||
omega_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["omega_angle"]), 8
|
|
||||||
)
|
|
||||||
chi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["nu_angle"]), 8
|
|
||||||
)
|
|
||||||
phi_str = fill_string(
|
|
||||||
"{:8.2f}".format(data["Measurements"][str(keys)]["unkwn_angle"]), 8
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if data["meta"]["zebra_mode"] == "bi":
|
||||||
|
int_str = f'{"{:8.2f}".format(correction(area, lorentz, data["meta"]["zebra_mode"], data["Measurements"][str(keys)]["twotheta_angle"])):{align}{padding[2]}}'
|
||||||
|
angle_str1 = f'{data["Measurements"][str(keys)]["twotheta_angle"]:{padding[3]}}'
|
||||||
|
angle_str2 = f'{data["Measurements"][str(keys)]["omega_angle"]:{padding[3]}}'
|
||||||
|
angle_str3 = f'{data["Measurements"][str(keys)]["chi_angle"]:{padding[3]}}'
|
||||||
|
angle_str4 = f'{data["Measurements"][str(keys)]["phi_angle"]:{padding[3]}}'
|
||||||
|
elif data["meta"]["zebra_mode"] == "nb":
|
||||||
|
int_str = f'{"{:8.2f}".format(correction(area, lorentz, data["meta"]["zebra_mode"], data["Measurements"][str(keys)]["gamma_angle"],data["Measurements"][str(keys)]["nu_angle"])):{align}{padding[2]}}'
|
||||||
|
angle_str1 = f'{data["Measurements"][str(keys)]["gamma_angle"]:{padding[3]}}'
|
||||||
|
angle_str2 = f'{data["Measurements"][str(keys)]["omega_angle"]:{padding[3]}}'
|
||||||
|
angle_str3 = f'{data["Measurements"][str(keys)]["nu_angle"]:{padding[3]}}'
|
||||||
|
angle_str4 = f'{data["Measurements"][str(keys)]["unkwn_angle"]:{padding[3]}}'
|
||||||
|
|
||||||
|
sigma_str = f'{"{:8.2f}".format(float(data["Measurements"][str(keys)]["fit"]["g_width"][0])):{align}{padding[2]}}'
|
||||||
line = (
|
line = (
|
||||||
meas_number_str
|
meas_number_str
|
||||||
+ h_str
|
+ h_str
|
||||||
@ -123,12 +67,14 @@ def export_comm(data, path):
|
|||||||
+ k_str
|
+ k_str
|
||||||
+ int_str
|
+ int_str
|
||||||
+ sigma_str
|
+ sigma_str
|
||||||
+ twotheta_str
|
+ angle_str1
|
||||||
+ omega_str
|
+ angle_str2
|
||||||
+ chi_str
|
+ angle_str3
|
||||||
+ phi_str
|
+ angle_str4
|
||||||
+ "\n"
|
+ "\n"
|
||||||
)
|
)
|
||||||
out_file.write(line)
|
out_file.write(line)
|
||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print("Measurement skipped - no fit value for:", keys)
|
print("Measurement skipped - no fit value for:", keys)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user