Reasons for developing
- This library was developed because I struggled to find open, simple and well-documented implementation for Zernike polynomial value calculation.
- However, the exact equation for calculation real value for a polynomial isn't difficult to code in Python, but there is also useful functionality missing in the similar libraries which I need to use in other projects.
- Anyway, there are exist a number of specifically tightened and well acknowledged libraries which include Zernike polynomials calculation, for example: zernike and HCIpy
- Finally, I've found the solid library for numerical methods for Diffractive Optics, that also has the Zernike polynomials implementation: PyOptica
Representing a few Zernike profiles in a pyramid
The following images generated using the static method plot_sum_zernikes_on_fig() for single element in a list as polynomials list.
Hover mouse over the images (right) for getting polynomial name
Completed and Next Steps
-
Implement calculation of derivativesDone in version 0.0.5 of the library
-
Implement conversion from raw deformations on an unit pupil to set of Zernike polynomialsDone in version 0.0.6
-
Implement more adaptivity for these pages, make responsive the main pageNot associated with the library version, done in October 2024
-
Provide more tests for checking derivatives, values and initialization of polynomialsThere are more than 10 tests for run by the pytest library
- Fixed issue with slow calculations of high orders polynomials, found that direct (exact) equation is sufficiently fast - in ver. 0.0.8
- Found that the exact equation couldn't be used reliably for orders higher than 40th radial one - in ver. 0.0.9
- Implemented ZernPSF class for calculation associated with a polynomial PSF kernel - in ver. 0.0.13