Auto detect varying angle in h5 viewer

This commit is contained in:
usov_i 2020-12-10 14:36:58 +01:00
parent 6a341e5001
commit ea41301605
2 changed files with 21 additions and 6 deletions

View File

@ -94,7 +94,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["variable"][index]
image_source.data.update(gamma=[gamma], nu=[nu], omega=[omega])
def update_overview_plot():
@ -126,10 +126,10 @@ def create():
overview_plot_y_image_source.data.update(y=[0], dh=[n_im])
elif frame_button_group.active == 1: # Omega
overview_plot_x.axis[1].axis_label = "Omega"
overview_plot_y.axis[1].axis_label = "Omega"
overview_plot_x.axis[1].axis_label = det_data["variable_name"]
overview_plot_y.axis[1].axis_label = det_data["variable_name"]
om = det_data["rot_angle"]
om = det_data["variable"]
om_start = om[0]
om_end = (om[-1] - om[0]) * n_im / (n_im - 1)
overview_plot_x_image_source.data.update(y=[om_start], dh=[om_end])
@ -363,7 +363,7 @@ def create():
def frame_button_group_callback(_active):
update_overview_plot()
frame_button_group = RadioButtonGroup(labels=["Frames", "Omega"], active=0)
frame_button_group = RadioButtonGroup(labels=["Frames", "Variable Angle"], active=0)
frame_button_group.on_click(frame_button_group_callback)
roi_avg_plot = Plot(

View File

@ -52,7 +52,14 @@ def read_detector_data(filepath):
det_data = {"data": data}
det_data["rot_angle"] = h5f["/entry1/area_detector2/rotation_angle"][:] # om, sometimes ph
det_data["zebra_mode"] = h5f.get("/entry1/zebra_mode", "nb")
# 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["pol_angle"] = h5f["/entry1/ZEBRA/area_detector2/polar_angle"][:] # gammad
det_data["tlt_angle"] = h5f["/entry1/ZEBRA/area_detector2/tilt_angle"][:] # nud
det_data["ddist"] = h5f["/entry1/ZEBRA/area_detector2/distance"][:]
@ -61,6 +68,14 @@ def read_detector_data(filepath):
det_data["phi_angle"] = 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"):
if abs(det_data[var][0] - det_data[var][-1]) > 0.1:
det_data["variable"] = det_data[var]
det_data["variable_name"] = var
break
else:
raise ValueError("No angles that vary")
# optional parameters
if "/entry1/sample/magnetic_field" in h5f:
det_data["magnetic_field"] = h5f["/entry1/sample/magnetic_field"][:]