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

  1. Implement calculation of derivatives

    Done in version 0.0.5 of the library

  2. Implement conversion from raw deformations on an unit pupil to set of Zernike polynomials

    Done in version 0.0.6

  3. Implement more adaptivity for these pages, make responsive the main page

    Not associated with the library version, done in October 2024

  4. Provide more tests for checking derivatives, values and initialization of polynomials

    There are more than 10 tests for run by the pytest library

  5. Fixed issue with slow calculations of high orders polynomials, found that direct (exact) equation is sufficiently fast - in ver. 0.0.8
  6. Found that the exact equation couldn't be used reliably for orders higher than 40th radial one - in ver. 0.0.9
  7. Implemented ZernPSF class for calculation associated with a polynomial PSF kernel - in ver. 0.0.13