Use a ref to the current measurement

This commit is contained in:
usov_i 2020-09-15 18:03:28 +02:00
parent fe1d8044a3
commit a48b1f64c1
3 changed files with 39 additions and 40 deletions

View File

@ -29,6 +29,7 @@ def ccl_findpeaks(
'peak_heights': [90.], # height of the peaks (if data vere smoothed
its the heigh of the peaks in smoothed data)
"""
meas = data["Measurements"][keys]
if type(data) is not dict and data["file_type"] != "ccl":
print("Data is not a dictionary or was not made from ccl file")
@ -44,7 +45,8 @@ def ccl_findpeaks(
window_size = 7
print(
"Invalid value for window_size, select positive odd integer, new value set to!:",
window_size)
window_size,
)
if isinstance(poly_order, int) is False or window_size < poly_order:
poly_order = 3
@ -57,9 +59,8 @@ def ccl_findpeaks(
prominence = 50
print("Invalid value for prominence, select positive number, new value set to:", prominence)
omega = data["Measurements"][str(keys)]["om"]
counts = np.array(data["Measurements"][str(keys)]["Counts"])
omega = meas["om"]
counts = np.array(meas["Counts"])
if smooth is True:
itp = interp1d(omega, counts, kind="linear")
absintensity = [abs(number) for number in counts]
@ -73,9 +74,9 @@ def ccl_findpeaks(
indexes = sc.signal.find_peaks(
smooth_peaks, height=int_threshold * max(smooth_peaks), prominence=prominence
)
data["Measurements"][str(keys)]["num_of_peaks"] = len(indexes[0])
data["Measurements"][str(keys)]["peak_indexes"] = indexes[0]
data["Measurements"][str(keys)]["peak_heights"] = indexes[1]["peak_heights"]
data["Measurements"][str(keys)]["smooth_peaks"] = smooth_peaks # smoothed curve
meas["num_of_peaks"] = len(indexes[0])
meas["peak_indexes"] = indexes[0]
meas["peak_heights"] = indexes[1]["peak_heights"]
meas["smooth_peaks"] = smooth_peaks # smoothed curve
return data

View File

@ -30,36 +30,34 @@ def export_comm(data, path, lorentz=False):
padding = [4, 6, 10, 8]
with open(str(path + extension), "w") as out_file:
for keys in data["Measurements"]:
print(keys)
for meas_num, meas in data["Measurements"].items():
print(meas_num)
try:
meas_number_str = f"{keys[1:]:{align}{padding[0]}}"
h_str = f'{int(data["Measurements"][str(keys)]["h_index"]):{padding[1]}}'
k_str = f'{int(data["Measurements"][str(keys)]["k_index"]):{padding[1]}}'
l_str = f'{int(data["Measurements"][str(keys)]["l_index"]):{padding[1]}}'
if data["Measurements"][str(keys)]["fit"]["export_fit"] is True:
area = float(data["Measurements"][str(keys)]["fit"]["g_amp"][0]) + float(
data["Measurements"][str(keys)]["fit"]["l_amp"][0]
)
meas_number_str = f"{meas_num[1:]:{align}{padding[0]}}"
h_str = f'{int(meas["h_index"]):{padding[1]}}'
k_str = f'{int(meas["k_index"]):{padding[1]}}'
l_str = f'{int(meas["l_index"]):{padding[1]}}'
if meas["fit"]["export_fit"] is True:
area = float(meas["fit"]["g_amp"][0]) + float(meas["fit"]["l_amp"][0])
else:
area = float(data["Measurements"][str(keys)]["fit"]["int_area"]) - float(
data["Measurements"][str(keys)]["fit"]["int_background"][0]
)
area = float(meas["fit"]["int_area"]) - float(meas["fit"]["int_background"][0])
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]}}'
int_str = f'{"{:8.2f}".format(correction(area, lorentz, data["meta"]["zebra_mode"], meas["twotheta_angle"])):{align}{padding[2]}}'
angle_str1 = f'{meas["twotheta_angle"]:{padding[3]}}'
angle_str2 = f'{meas["omega_angle"]:{padding[3]}}'
angle_str3 = f'{meas["chi_angle"]:{padding[3]}}'
angle_str4 = f'{meas["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]}}'
int_str = f'{"{:8.2f}".format(correction(area, lorentz, data["meta"]["zebra_mode"], meas["gamma_angle"],meas["nu_angle"])):{align}{padding[2]}}'
angle_str1 = f'{meas["gamma_angle"]:{padding[3]}}'
angle_str2 = f'{meas["omega_angle"]:{padding[3]}}'
angle_str3 = f'{meas["nu_angle"]:{padding[3]}}'
angle_str4 = f'{meas["unkwn_angle"]:{padding[3]}}'
sigma_str = f'{"{:8.2f}".format(float(data["Measurements"][str(keys)]["fit"]["g_width"][0])):{align}{padding[2]}}'
sigma_str = (
f'{"{:8.2f}".format(float(meas["fit"]["g_width"][0])):{align}{padding[2]}}'
)
line = (
meas_number_str
+ h_str
@ -76,5 +74,4 @@ def export_comm(data, path, lorentz=False):
out_file.write(line)
except KeyError:
print("Measurement skipped - no fit value for:", keys)
print("Measurement skipped - no fit value for:", meas_num)

View File

@ -35,15 +35,16 @@ def fitccl(
constraints_min = [23, None, 50, None, None, None, 0, 0]
constraints_min = [80, None, 1000, None, None, None, 0, 100]
"""
meas = data["Measurements"][keys]
if len(data["Measurements"][str(keys)]["peak_indexes"]) != 1:
if len(meas["peak_indexes"]) != 1:
print("NO PEAK or more than 1 peak")
return
x = list(data["Measurements"][str(keys)]["om"])
y = list(data["Measurements"][str(keys)]["Counts"])
peak_index = data["Measurements"][str(keys)]["peak_indexes"]
peak_height = data["Measurements"][str(keys)]["peak_heights"]
x = list(meas["om"])
y = list(meas["Counts"])
peak_index = meas["peak_indexes"]
peak_height = meas["peak_heights"]
print("before", constraints_min)
guess[0] = x[int(peak_index)] if guess[0] is None else guess[0]
guess[1] = 0.1 if guess[1] is None else guess[1]
@ -151,6 +152,6 @@ def fitccl(
d["int_area"] = num_int_area
d["int_background"] = num_int_bacground
d["full_report"] = result.fit_report()
data["Measurements"][str(keys)]["fit"] = d
meas["fit"] = d
return data