Skip to content
Jelena Banjac edited this page Mar 23, 2020 · 8 revisions

The summary of different plotting methods used.

2D Projection Image

datapoint = 0
image = data["Projections"][datapoint]
angles = [ float(f"{x:.2f}") for x in data["Angles"][datapoint] ]
title = f'Projection {datapoint}\nAngles {angles}'

plot_projection(image, title)

Reference notebook: Data Generation and Exploration

2D Projection images

nrows, ncols = 2, 5
start_row, start_col = 0, 0

images = []
titles = []

cr = [(i, j) for i in range(nrows) for j in range(ncols)]

for i, j in cr:
    datapoint = (start_row + i)*(start_col + ncols) + j    

    image = data["Projections"][datapoint]
    image = image + gaussian_noise(shape=image.shape, mean=0, var=0)

    angles = [ float(f"{x:.2f}") for x in data["Angles"][datapoint] ]
    title = f'Projection {datapoint}\nAngles {angles}'
    
    images.append(image)
    titles.append(title)
        
plot_projections(images, titles, nrows=nrows, ncols=ncols)

Reference notebook: Data Generation and Exploration

Detector rays (or camera positions) around the protein

# plot 3D interactive ball
plot_euclidean_space(data['Angles'])

Reference notebook: Data Generation and Exploration

Detector coordinate systems

plot_rays(data["Angles"], indices=range(100))

Reference notebook: Angle Recovery with Perfect Distances

Projection images on the positions and rotations they were taken from

plot_images(data["Angles"], data["Projections"], indices=range(100), img_size_scale=0.05)

Reference notebook: Angle Recovery with Perfect Distances

dP/dQ

idx1 = list(np.random.choice(range(NUM_PROJECTIONS), size=5000))
idx2 = list(np.random.choice(range(NUM_PROJECTIONS), size=5000))

q1_true = euler2quaternion([angles_true[i] for i in idx1])
q2_true = euler2quaternion([angles_true[i] for i in idx2])

dP_values = d_p(q1_true, q2_true)
dQ_values = d_q(q1_true, q2_true)

plot_dP_dQ(dP_values, dQ_values)

Reference notebook: Angle Recovery with Perfect Distances

dP/dQ density

plot_dP_dQ_density(dP_values, dQ_values)

Reference notebook: Angle Recovery with Perfect Distances

Angles count (Z1-Y2-Z3 axes)

  • Z1 axis rotation angle is rotation angle
  • Y2 axis rotation angle is tilt angle
  • Z3 axis rotation angle is in-plane rotation See image below:
plot_angles_count(data["Angles"])

Reference notebook: Angle Recovery with Perfect Distances

Count true-predicted angles' distances

plot_distances_count(angles_predicted, angles_true)

Reference notebook: Angle Recovery with Perfect Distances

TODO:

  • plot_one_closest_vs_all_in_euclidean_space
  • plot_only_selected_in_euclidean_space
  • plot_angles_with_3rd_angle_magnitude
  • plot_selected_angles_with_3rd_angle_magnitude