ZernikePy is a minimalistic Python library to compute and visualize Zernike polynomials of any given orders. A typical usage is to generate basis functions for phase modulation in optics.
Installation
pip install ZernikePy
Requirements
numpy
scipy
matplotlib
How to use
After installation, first import the main function from the library
from zernikepy import zernike_polynomials
Examples
Generate a (256, 256)-sized Zernike polynomial of order 4 (defocusing):
p = zernike_polynomials(mode=4, size=256)
or
p = zernike_polynomials(mode='defocusing', size=256)
Generate the first 15 modes and display them:
ps = zernike_polynomials(mode=14, select='all', show=True)
Generate the following selected modes defocusing, vertical coma, oblique astigmatism and display them:
ps = zernike_polynomials(mode=10, select=[4, 'vertical coma', 'oblique astigmatism'], show=True)
Note that regardless of the order of the elements in the list select, the output stores the polynomials in ascending
order in the last dimension. Hence, in the output ps[:, :, 0] is oblique astigmatism, ps[:, :, 1] is defocusing and
ps[:, :, 2] is vertical coma.
Detailed explanation
The main function zernike_polynomials(mode, size, select, show)
takes four variables:
mode: which (or up to which) order of the polynomial. It follows the OSA standard indexing convention and should be a nonnegative integer. It is also possible to pass a string of the corresponding name for the first 15 modes. Default is'defocus'.size: numerical size of the square Cartesian mesh. It should be a postive integer. Default is128.select: in the case of passing more than one polynomial, i.e. some selected modes up to the givenmode, give a list of integers or strings or a mixture of both. A special case isselect='all'where all the polynomials up to the givenmodeis passed. Default isNonein which case only a single polynomial of the givenmodeis passed.show: boolen variable to determine whether to display the polynomials. Default isFalse.
The output is a Numpy array, either 2D for a single mode, or 3D for multiple modes.
Name of the first 15 modes
| Mode / OSA index | Name |
|---|---|
| 0 | piston |
| 1 | vertical tilt |
| 2 | horizontal tilt |
| 3 | oblique astigmatism |
| 4 | defocus |
| 5 | vertical astigmatism |
| 6 | vertical trefoil |
| 7 | vertical coma |
| 8 | horizontal coma |
| 9 | oblique trefoil |
| 10 | oblique quadrafoil |
| 11 | oblique secondary astigmatism |
| 12 | primary spherical |
| 13 | vertical secondary astigmatism |
| 14 | vertical quadrafoil |
Metadata
Release files for ZernikePy 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| zernikepy-0.0.5.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ZernikePy-0.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.3 kB
Release files / zernikepy-0.0.5.tar.gz
| Download URL | zernikepy-0.0.5.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12ed018d3450fd7add4fd7a909199a03506c14c845dcd6a8baf8260744d30f3e
|
|
BLAKE2b-256 checksum How to use checksums |
0babf4644e5d1c244c3ff66c3b153692f5e8863d3bacda54c686df452d34b966
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.6
|
Release files / ZernikePy-0.0.5-py3-none-any.whl
| Download URL | ZernikePy-0.0.5-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
00726b90c7143b4f34f3b5e9d15b137d4989efd3cf9bd8f845461ff88407114c
|
|
BLAKE2b-256 checksum How to use checksums |
13c82a116c02f21d991c38a30ba80650cfd83749662568bbf032c5a8f380f575
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.6
|