Zernike¶
Overview¶
The Zernike class computes Zernike polynomial modes over a telescope pupil (including annular pupils with central obstruction). It is used primarily to build modal bases for wavefront representation and NCPA generation.
Modes are normalised to unit RMS over the pupil (piston-removed by default).
Quick start¶
from OOPAO.Zernike import Zernike
# Compute first 20 Zernike modes
Z = Zernike(tel, J=20)
Z.computeZernike(tel)
print(Z.modes.shape) # (n_pupil_pixels, 20)
print(Z.modesFullRes.shape) # (resolution, resolution, 20)
# Get mode name
print(Z.modeName(2)) # 'Defocus'
API reference¶
- class OOPAO.Zernike.Zernike(telObject, J=1)[source]¶
Zernike polynomial basis generator.
- Parameters:
Methods
- computeZernike(telObject, remove_piston=1)[source]¶
Compute the Zernike modes and store results in
modesandmodesFullRes.
- modeName(index)[source]¶
Return the human-readable name of Zernike mode at the given index (0-based).
- zernikeRadialFunc(n, m, r)[source]¶
Compute the Zernike radial polynomial \(R_n^m(r)\).
- Parameters:
n (int) – Radial order.
m (int) – Azimuthal order.
r (numpy.ndarray) – 2-D radial coordinate array (normalised 0–1).
- Returns:
Radial polynomial values.
- Return type:
Key attributes
- modes: numpy.ndarray¶
Mode matrix of shape
(n_pupil_pixels, J). Each column is a Zernike mode over the valid pupil pixels.
- modesFullRes: numpy.ndarray¶
Full-resolution mode cube of shape
(resolution, resolution, J).