diff --git a/pyzebra/app/panel_hdf_viewer.py b/pyzebra/app/panel_hdf_viewer.py index 1384e8e..85bf4ce 100644 --- a/pyzebra/app/panel_hdf_viewer.py +++ b/pyzebra/app/panel_hdf_viewer.py @@ -110,7 +110,7 @@ def create(): temperature_spinner.value = None gamma, nu = calculate_pol(det_data, index) - omega = np.ones((IMAGE_H, IMAGE_W)) * det_data["rot_angle"][index] + omega = np.ones((IMAGE_H, IMAGE_W)) * det_data["omega"][index] image_source.data.update(gamma=[gamma], nu=[nu], omega=[omega]) def update_overview_plot(): @@ -611,25 +611,25 @@ def calculate_hkl(det_data, index): wave = det_data["wave"] ddist = det_data["ddist"] - gammad = det_data["pol_angle"][index] - om = det_data["rot_angle"][index] - nud = det_data["tlt_angle"] + gammad = det_data["gamma"][index] + om = det_data["omega"][index] + nud = det_data["nu"] ub = det_data["UB"] geometry = det_data["zebra_mode"] if geometry == "bisecting": - ch = det_data["chi_angle"][index] - ph = det_data["phi_angle"][index] + chi = det_data["chi"][index] + phi = det_data["phi"][index] elif geometry == "normal beam": - ch = 0 - ph = 0 + chi = 0 + phi = 0 else: raise ValueError(f"Unknown geometry type '{geometry}'") for xi in np.arange(IMAGE_W): for yi in np.arange(IMAGE_H): h[yi, xi], k[yi, xi], l[yi, xi] = pyzebra.ang2hkl( - wave, ddist, gammad, om, ch, ph, nud, ub, xi, yi + wave, ddist, gammad, om, chi, phi, nud, ub, xi, yi ) return h, k, l @@ -640,8 +640,8 @@ def calculate_pol(det_data, index): nu = np.empty(shape=(IMAGE_H, IMAGE_W)) ddist = det_data["ddist"] - gammad = det_data["pol_angle"][index] - nud = det_data["tlt_angle"] + gammad = det_data["gamma"][index] + nud = det_data["nu"] for xi in np.arange(IMAGE_W): for yi in np.arange(IMAGE_H): diff --git a/pyzebra/app/panel_spind.py b/pyzebra/app/panel_spind.py index 0110d2a..27b8021 100644 --- a/pyzebra/app/panel_spind.py +++ b/pyzebra/app/panel_spind.py @@ -183,11 +183,11 @@ def prepare_event_file(export_filename, roi_dict, path_prefix=""): wave = dat["wave"] ddist = dat["ddist"] - pol_angle = dat["pol_angle"][0] - rot_angle = dat["rot_angle"][0] - tlt_angle = dat["tlt_angle"][0] - chi_angle = dat["chi_angle"][0] - phi_angle = dat["phi_angle"][0] + gamma = dat["gamma"][0] + omega = dat["omega"][0] + nu = dat["nu"][0] + chi = dat["chi"][0] + phi = dat["phi"][0] var_angle = dat["variable"] var_angle_name = dat["variable_name"] @@ -210,16 +210,16 @@ def prepare_event_file(export_filename, roi_dict, path_prefix=""): var_step = var_C - var_F var_p = var_F + var_step * frStep - if var_angle_name == "pol_angle": - pol_angle = var_p - elif var_angle_name == "rot_angle": - rot_angle = var_p - elif var_angle_name == "tlt_angle": - tlt_angle = var_p - elif var_angle_name == "chi_angle": - chi_angle = var_p - elif var_angle_name == "phi_angle": - phi_angle = var_p + if var_angle_name == "gamma": + gamma = var_p + elif var_angle_name == "omega": + omega = var_p + elif var_angle_name == "nu": + nu = var_p + elif var_angle_name == "chi": + chi = var_p + elif var_angle_name == "phi": + phi = var_p intensity = coeff[1] * abs(coeff[2] * var_step) * math.sqrt(2) * math.sqrt(np.pi) @@ -231,8 +231,8 @@ def prepare_event_file(export_filename, roi_dict, path_prefix=""): coeff, _ = curve_fit(gauss, range(len(projY)), projY, p0=p0, maxfev=maxfev) y_pos = y0 + coeff[1] - ga, nu = pyzebra.det2pol(ddist, pol_angle, tlt_angle, x_pos, y_pos) - diff_vector = pyzebra.z1frmd(wave, ga, rot_angle, chi_angle, phi_angle, nu) + ga, nu = pyzebra.det2pol(ddist, gamma, nu, x_pos, y_pos) + diff_vector = pyzebra.z1frmd(wave, ga, omega, chi, phi, nu) d_spacing = float(pyzebra.dandth(wave, diff_vector)[0]) dv1, dv2, dv3 = diff_vector.flatten() * 1e10 diff --git a/pyzebra/ccl_io.py b/pyzebra/ccl_io.py index 63ed0be..371bd57 100644 --- a/pyzebra/ccl_io.py +++ b/pyzebra/ccl_io.py @@ -66,18 +66,8 @@ CCL_FIRST_LINE = ( ) CCL_ANGLES = { - "bi": ( - ("twotheta_angle", float), - ("omega_angle", float), - ("chi_angle", float), - ("phi_angle", float), - ), - "nb": ( - ("gamma_angle", float), - ("omega_angle", float), - ("nu_angle", float), - ("unkwn_angle", float), - ), + "bi": (("twotheta", float), ("omega", float), ("chi", float), ("phi", float)), + "nb": (("gamma", float), ("omega", float), ("nu", float), ("unkwn_angle", float)), } CCL_SECOND_LINE = ( @@ -122,6 +112,8 @@ def parse_1D(fileobj, data_type): variable = variable.strip() value = value.strip() if variable in META_VARS_FLOAT: + if variable == "2-theta": # fix that angle name not to be an expression + variable = "twotheta" metadata[variable] = float(value) elif variable in META_VARS_STR: metadata[variable] = value @@ -151,8 +143,8 @@ def parse_1D(fileobj, data_type): s[param_name] = param_type(param) s["om"] = np.linspace( - s["omega_angle"] - (s["n_points"] / 2) * s["angle_step"], - s["omega_angle"] + (s["n_points"] / 2) * s["angle_step"], + s["omega"] - (s["n_points"] / 2) * s["angle_step"], + s["omega"] + (s["n_points"] / 2) * s["angle_step"], s["n_points"], ) @@ -194,13 +186,13 @@ def parse_1D(fileobj, data_type): except KeyError: print("Mag_field not present in dat file") - s["omega_angle"] = metadata["omega"] + s["omega"] = metadata["omega"] s["n_points"] = len(s["om"]) s["monitor"] = s["Monitor1"][0] - s["twotheta_angle"] = metadata["2-theta"] - s["chi_angle"] = metadata["chi"] - s["phi_angle"] = metadata["phi"] - s["nu_angle"] = metadata["nu"] + s["twotheta"] = metadata["twotheta"] + s["chi"] = metadata["chi"] + s["phi"] = metadata["phi"] + s["nu"] = metadata["nu"] s["idx"] = 1 scan.append(dict(s)) @@ -249,12 +241,12 @@ def export_1D(data, path, area_method=AREA_METHODS[0], lorentz=False, hkl_precis # apply lorentz correction to area if lorentz: if zebra_mode == "bi": - twotheta_angle = np.deg2rad(scan["twotheta_angle"]) - corr_factor = np.sin(twotheta_angle) + twotheta = np.deg2rad(scan["twotheta"]) + corr_factor = np.sin(twotheta) else: # zebra_mode == "nb": - gamma_angle = np.deg2rad(scan["gamma_angle"]) - nu_angle = np.deg2rad(scan["nu_angle"]) - corr_factor = np.sin(gamma_angle) * np.cos(nu_angle) + gamma = np.deg2rad(scan["gamma"]) + nu = np.deg2rad(scan["nu"]) + corr_factor = np.sin(gamma) * np.cos(nu) area_n = np.abs(area_n * corr_factor) area_s = np.abs(area_s * corr_factor) diff --git a/pyzebra/h5.py b/pyzebra/h5.py index a2bf2f9..827a145 100644 --- a/pyzebra/h5.py +++ b/pyzebra/h5.py @@ -41,7 +41,7 @@ def read_detector_data(filepath): filepath (str): File path of an h5 file. Returns: - ndarray: A 3D array of data, rot_angle, pol_angle, tilt_angle. + ndarray: A 3D array of data, omega, gamma, nu. """ with h5py.File(filepath, "r") as h5f: data = h5f["/entry1/area_detector2/data"][:] @@ -63,19 +63,19 @@ def read_detector_data(filepath): # om, sometimes ph if det_data["zebra_mode"] == "nb": - det_data["rot_angle"] = h5f["/entry1/area_detector2/rotation_angle"][:] - else: # bi - det_data["rot_angle"] = h5f["/entry1/sample/rotation_angle"][:] + det_data["omega"] = h5f["/entry1/area_detector2/rotation_angle"][:] + else: # bi + det_data["omega"] = h5f["/entry1/sample/rotation_angle"][:] - det_data["pol_angle"] = h5f["/entry1/ZEBRA/area_detector2/polar_angle"][:] # gammad - det_data["tlt_angle"] = h5f["/entry1/ZEBRA/area_detector2/tilt_angle"][:] # nud + det_data["gamma"] = h5f["/entry1/ZEBRA/area_detector2/polar_angle"][:] # gammad + det_data["nu"] = h5f["/entry1/ZEBRA/area_detector2/tilt_angle"][:] # nud det_data["ddist"] = h5f["/entry1/ZEBRA/area_detector2/distance"][:] det_data["wave"] = h5f["/entry1/ZEBRA/monochromator/wavelength"][:] - det_data["chi_angle"] = h5f["/entry1/sample/chi"][:] # ch - det_data["phi_angle"] = h5f["/entry1/sample/phi"][:] # ph + det_data["chi"] = h5f["/entry1/sample/chi"][:] # ch + det_data["phi"] = h5f["/entry1/sample/phi"][:] # ph det_data["UB"] = h5f["/entry1/sample/UB"][:].reshape(3, 3) - for var in ("rot_angle", "pol_angle", "tlt_angle", "chi_angle", "phi_angle"): + for var in ("omega", "gamma", "nu", "chi", "phi"): if abs(det_data[var][0] - det_data[var][-1]) > 0.1: det_data["variable"] = det_data[var] det_data["variable_name"] = var diff --git a/pyzebra/merge_function.py b/pyzebra/merge_function.py index f82927e..5a53d82 100644 --- a/pyzebra/merge_function.py +++ b/pyzebra/merge_function.py @@ -35,7 +35,6 @@ def merge(scan1, scan2): note: dict1 and dict2 can be same dict :return dict1 with merged scan""" - # load om and Counts x1, x2 = scan1["om"], scan2["om"] # print(scan1["om"]) @@ -134,7 +133,6 @@ def check_temp_mag(scan1, scan2): except KeyError: print("temperature missing") - if all(truth_list): return True else: @@ -147,17 +145,17 @@ def merge_dups(dictionary): return if dictionary["meta"]["zebra_mode"] == "bi": - angles = ["twotheta_angle", "omega_angle", "chi_angle", "phi_angle"] + angles = ["twotheta", "omega", "chi", "phi"] elif dictionary["meta"]["zebra_mode"] == "nb": - angles = ["gamma_angle", "omega_angle", "nu_angle"] + angles = ["gamma", "omega", "nu"] precision = { - "twotheta_angle": 0.1, - "chi_angle": 0.1, - "nu_angle": 0.1, - "phi_angle": 0.05, - "omega_angle": 5, - "gamma_angle": 0.05, + "twotheta": 0.1, + "chi": 0.1, + "nu": 0.1, + "phi": 0.05, + "omega": 5, + "gamma": 0.05, } for i in range(len(dictionary["scan"])): @@ -166,8 +164,9 @@ def merge_dups(dictionary): continue else: # print(i, j) - if check_angles(dictionary["scan"][i], dictionary["scan"][j], angles, precision) \ - and check_temp_mag(dictionary["scan"][i], dictionary["scan"][j]): + if check_angles( + dictionary["scan"][i], dictionary["scan"][j], angles, precision + ) and check_temp_mag(dictionary["scan"][i], dictionary["scan"][j]): merge(dictionary["scan"][i], dictionary["scan"][j]) print("merged %d with %d within the dictionary" % (i, j)) @@ -240,22 +239,21 @@ def unified_merge(dict1, dict2): # decide angles if dict1["meta"]["zebra_mode"] == "bi": - angles = ["twotheta_angle", "omega_angle", "chi_angle", "phi_angle"] + angles = ["twotheta", "omega", "chi", "phi"] elif dict1["meta"]["zebra_mode"] == "nb": - angles = ["gamma_angle", "omega_angle", "nu_angle"] + angles = ["gamma", "omega", "nu"] # precision of angles to check precision = { - "twotheta_angle": 0.1, - "chi_angle": 0.1, - "nu_angle": 0.1, - "phi_angle": 0.05, - "omega_angle": 5, - "gamma_angle": 0.1, + "twotheta": 0.1, + "chi": 0.1, + "nu": 0.1, + "phi": 0.05, + "omega": 5, + "gamma": 0.1, } if (dict1["meta"]["data_type"] == "ccl") and (dict2["meta"]["data_type"] == "ccl"): - precision["omega_angle"] = 0.05 - + precision["omega"] = 0.05 process(dict1, dict2, angles, precision) diff --git a/pyzebra/param_study_moduls.py b/pyzebra/param_study_moduls.py index 8943a2c..afa7c19 100644 --- a/pyzebra/param_study_moduls.py +++ b/pyzebra/param_study_moduls.py @@ -11,6 +11,7 @@ import collections from .ccl_io import load_1D + def create_tuples(x, y, y_err): """creates tuples for sorting and merginng of the data Counts need to be normalized to monitor before""" @@ -344,9 +345,9 @@ def scan_dict(dict, precision=0.5): """ if dict["meta"]["zebra_mode"] == "bi": - angles = ["twotheta_angle", "omega_angle", "chi_angle", "phi_angle"] + angles = ["twotheta", "omega", "chi", "phi"] elif dict["meta"]["zebra_mode"] == "nb": - angles = ["gamma_angle", "omega_angle", "nu_angle"] + angles = ["gamma", "omega", "nu"] else: print("Unknown zebra mode") return @@ -421,11 +422,11 @@ def variables(dictionary): "n_points", "monitor", "Time", - "omega_angle", - "twotheta_angle", - "chi_angle", - "phi_angle", - "nu_angle", + "omega", + "twotheta", + "chi", + "phi", + "nu", ] inall_red = [i for i in inall if i not in wrong] diff --git a/pyzebra/xtal.py b/pyzebra/xtal.py index 4407937..38381ff 100644 --- a/pyzebra/xtal.py +++ b/pyzebra/xtal.py @@ -407,24 +407,24 @@ def box_int(file, box): dat = pyzebra.read_detector_data(file) - sttC = dat["pol_angle"][0] - om = dat["rot_angle"] - nuC = dat["tlt_angle"][0] + sttC = dat["gamma"][0] + om = dat["omega"] + nuC = dat["nu"][0] ddist = dat["ddist"] # defining indices x0, xN, y0, yN, fr0, frN = box # omega fit - om = dat["rot_angle"][fr0:frN] + om = dat["omega"][fr0:frN] cnts = np.sum(dat["data"][fr0:frN, y0:yN, x0:xN], axis=(1, 2)) p0 = [1.0, 0.0, 1.0] coeff, var_matrix = curve_fit(gauss, range(len(cnts)), cnts, p0=p0) frC = fr0 + coeff[1] - omF = dat["rot_angle"][math.floor(frC)] - omC = dat["rot_angle"][math.ceil(frC)] + omF = dat["omega"][math.floor(frC)] + omC = dat["omega"][math.ceil(frC)] frStep = frC - math.floor(frC) omStep = omC - omF omP = omF + omStep * frStep