mirror of
https://github.com/yosata/fourierOptics.git
synced 2026-10-29 20:51:10 +00:00
Added off-axis propagation, SPIE scripts
This commit is contained in:
1 parent
61ca707689
commit
04eb56d529
20 files changed
+2068
-39
No files matched your search
@@ -0,0 +1,65 @@
|
||||
import sys
|
||||
sys.path.insert(0, '/Users/joost/Dropbox/Werk/PhD/Analyses/Python/Analytical/Fourier Optics')
|
||||
from fourierOptics import *
|
||||
|
||||
|
||||
'''
|
||||
Author: Joost van den Born, PhD student at University of Groningen
|
||||
Contact: born@astro.rug.nl
|
||||
Description: Script to plot the results of the geometric distortion analysis.
|
||||
Script made for the SPIE manuscript.
|
||||
'''
|
||||
|
||||
if __name__ == '__main__':
|
||||
plt.rc('font', family='serif')
|
||||
plt.rc('text', usetex=True)
|
||||
|
||||
# Full field
|
||||
xe = load_variable('../SPIE/data/GD full field (Obscured Airy zern psd)/GD_obscured_PSF_xcentroid_expected_zern_psd.pkl')
|
||||
ye = load_variable('../SPIE/data/GD full field (Obscured Airy zern psd)/GD_obscured_PSF_ycentroid_expected_zern_psd.pkl')
|
||||
xp = load_variable('../SPIE/data/GD full field (Obscured Airy zern psd)/GD_obscured_PSF_xcentroid_found_with_wfe_airy_zern_psd.pkl')
|
||||
yp = load_variable('../SPIE/data/GD full field (Obscured Airy zern psd)/GD_obscured_PSF_ycentroid_found_with_wfe_airy_zern_psd.pkl')
|
||||
|
||||
# Shape of the arrays
|
||||
n = xe.shape[0]
|
||||
|
||||
# Reshaping of the arrays so that they can be used for the quiver plot.
|
||||
X = xe.flatten()
|
||||
Y = ye.flatten()
|
||||
dX = xp-xe
|
||||
dY = yp-ye
|
||||
|
||||
dx = dX.flatten()
|
||||
dy = dY.flatten()
|
||||
|
||||
# Two values are comparatively (extremely large), they are set to 0
|
||||
# to be able to see the other values.
|
||||
R = (np.sqrt(dx**2 + dy**2) * 100.13151872258219 * 1000) # Magnitude of the shift in micro arcseconds
|
||||
print('RMS of the PSF shifts: {:.4f} uas.'.format(np.sqrt(np.mean((R)**2))))
|
||||
|
||||
|
||||
# Dummy figure
|
||||
im = plt.imshow(np.reshape(R, (n,n)))
|
||||
plt.close()
|
||||
|
||||
# Actual plotting of the figure
|
||||
fig = plt.figure(figsize=(9,7))
|
||||
ax = fig.add_subplot()
|
||||
for i in range(len(xe)):
|
||||
ax.plot(xe[:,i], ye[:,i], 'k-', alpha=0.2, linewidth=.5)
|
||||
ax.plot(xe[i,:], ye[i,:], 'k-', alpha=0.2, linewidth=.5)
|
||||
ax.quiver(X,Y,dx,dy, angles='xy', edgecolor='k', facecolor='None', linewidth=1)
|
||||
ax.quiver(X,Y,dx,dy,R, alpha=1)
|
||||
ax.set_aspect('equal', adjustable='box')
|
||||
ax.set_xlabel('x (mm)', fontsize=18)
|
||||
ax.set_ylabel('y (mm)', fontsize=18)
|
||||
ax.set_xlim([-340,340])
|
||||
ax.set_ylim([-340,340])
|
||||
ax.tick_params(labelsize=18)
|
||||
cb = fig.colorbar(im, ax=ax)
|
||||
cb.set_label(label='PSF centroid shift ($\\mu$as)', size=18)
|
||||
cb.ax.tick_params(labelsize=18)
|
||||
plt.savefig('./figures/GD_full_field_obscured_Airy_psd_zern.pdf', bbox_inches='tight', transparent=True)
|
||||
plt.savefig('./figures/GD_full_field_obscured_Airy_psd_zern.png', bbox_inches='tight', transparent=True)
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
Reference in new issue
Block a user