convertZernikesToPsfWidth

lsst.ts.wep.utils.convertZernikesToPsfWidth(zernikes: ndarray, diameter: float = 8.36, obscuration: float = 0.612, jmin: int = 4) ndarray

Convert Zernike amplitudes to quadrature contribution to the PSF FWHM.

Parameters

zernikesnp.ndarray

Zernike amplitudes (in microns), starting with Noll index jmin. Either a 1D array of zernike amplitudes, or a 2D array, where each row corresponds to a different set of amplitudes.

diameterfloat

The diameter of the telescope aperture, in meters. (the default, 8.36, corresponds to the LSST primary mirror)

obscurationfloat

Central obscuration of telescope aperture (i.e. R_outer / R_inner). (the default, 0.612, corresponds to the LSST primary mirror)

jminint

The minimum Zernike Noll index, inclusive. Must be >= 0. The max Noll index is inferred from jmin and the length of zernikes. (the default is 4, which ignores piston, x & y offsets, and tilt.)

Returns

dFWHM: np.ndarray

Quadrature contribution of each Zernike vector to the PSF FWHM (in arcseconds).

Notes

Converting Zernike amplitudes to their quadrature contributions to the PSF FWHM allows for easier physical interpretation of Zernike amplitudes and the performance of the AOS system.

For example, image we have a true set of zernikes, [Z4, Z5, Z6], such that ConvertZernikesToPsfWidth([Z4, Z5, Z6]) = [0.1, -0.2, 0.3] arcsecs. These Zernike perturbations increase the PSF FWHM by sqrt[(0.1)^2 + (-0.2)^2 + (0.3)^2] ~ 0.37 arcsecs.

If the AOS perfectly corrects for these perturbations, the PSF FWHM will not increase in size. However, imagine the AOS estimates zernikes, such that ConvertZernikesToPsfWidth([Z4, Z5, Z6]) = [0.1, -0.3, 0.4] arcsecs. These estimated Zernikes, do not exactly match the true Zernikes above. Therefore, the post-correction PSF will still be degraded with respect to the optimal PSF. In particular, the PSF FWHM will be increased by sqrt[(0.1 - 0.1)^2 + (-0.2 - (-0.3))^2 + (0.3 - 0.4)^2] ~ 0.14 arcsecs.

This conversion depends on a linear approximation that begins to break down for RSS(dFWHM) > 0.20 arcsecs. Beyond this point, the approximation tends to overestimate the PSF degradation. In other words, if sqrt(sum( dFWHM^2 )) > 0.20 arcsec, it is likely that dFWHM is over-estimated. However, the point beyond which this breakdown begins (and whether the approximation over- or under-estimates dFWHM) can change, depending on which Zernikes have large amplitudes. In general, if you have large Zernike amplitudes, proceed with caution! Note that if the amplitudes Z_est and Z_true are large, this is okay, as long as |Z_est - Z_true| is small.

For a notebook demonstrating where the approximation breaks down: https://gist.github.com/jfcrenshaw/24056516cfa3ce0237e39507674a43e1

Raises

ValueError

If jmin is negative