Name | ZernikePy JSON |
Version |
0.0.5
JSON |
| download |
home_page | None |
Summary | A minimalistic Python package to generate individual or a series of Zernike polynomials of arbitrary orders with visualization. |
upload_time | 2024-11-27 10:20:44 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | None |
keywords |
zernike
psf
optics
polynomials
basis
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
_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):
```python
p = zernike_polynomials(mode=4, size=256)
```
or
```python
p = zernike_polynomials(mode='defocusing', size=256)
```
Generate the first 15 modes and display them:
```python
ps = zernike_polynomials(mode=14, select='all', show=True)
```
![Example image of the first 15 modes](docs/images/example_image.png)
Generate the following selected modes defocusing, vertical coma, oblique astigmatism and
display them:
```python
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](https://en.wikipedia.org/wiki/Zernike_polynomials#OSA/ANSI_standard_indices) 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 is `128`.
- `select`: in the case of passing more than one polynomial, i.e. some selected modes up to the given `mode`,
give a list of integers or strings or a mixture of both. A special case is `select='all'` where all the polynomials up to
the given `mode` is passed. Default is `None` in which case only a single polynomial of the given `mode` is passed.
- `show`: boolen variable to determine whether to display the polynomials. Default is `False`.
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 |
Raw data
{
"_id": null,
"home_page": null,
"name": "ZernikePy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Yan Liu <yanyan@ik.me>",
"keywords": "zernike, psf, optics, polynomials, basis",
"author": null,
"author_email": "Yan Liu <yanyan@ik.me>",
"download_url": "https://files.pythonhosted.org/packages/0b/ab/f4644e5d1c244c3ff66c3b153692f5e8863d3bacda54c686df452d34b966/zernikepy-0.0.5.tar.gz",
"platform": null,
"description": "_ZernikePy_ is a minimalistic Python library to compute and visualize Zernike polynomials of any given orders.\nA typical usage is to generate basis functions for phase modulation in optics.\n\n# Installation\n```\npip install ZernikePy\n```\n\n# Requirements\n```\nnumpy\nscipy\nmatplotlib\n```\n\n# How to use\nAfter installation, first import the main function from the library\n```\nfrom zernikepy import zernike_polynomials\n```\n\n## Examples\nGenerate a (256, 256)-sized Zernike polynomial of order 4 (defocusing):\n```python\np = zernike_polynomials(mode=4, size=256)\n```\nor\n```python\np = zernike_polynomials(mode='defocusing', size=256)\n```\nGenerate the first 15 modes and display them:\n```python\nps = zernike_polynomials(mode=14, select='all', show=True)\n```\n![Example image of the first 15 modes](docs/images/example_image.png)\n\nGenerate the following selected modes defocusing, vertical coma, oblique astigmatism and\ndisplay them:\n```python\nps = zernike_polynomials(mode=10, select=[4, 'vertical coma', 'oblique astigmatism'], show=True)\n```\nNote that regardless of the order of the elements in the list `select`, the output stores the polynomials in ascending \norder in the last dimension. Hence, in the output `ps[:, :, 0]` is oblique astigmatism, `ps[:, :, 1]` is defocusing and \n`ps[:, :, 2]` is vertical coma.\n\n## Detailed explanation\nThe main function `zernike_polynomials(mode, size, select, show)`\ntakes four variables:\n- `mode`: which (or up to which) order of the polynomial. It follows the [OSA standard indexing](https://en.wikipedia.org/wiki/Zernike_polynomials#OSA/ANSI_standard_indices) convention \nand 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'`.\n- `size`: numerical size of the square Cartesian mesh. It should be a postive integer. Default is `128`.\n- `select`: in the case of passing more than one polynomial, i.e. some selected modes up to the given `mode`,\ngive a list of integers or strings or a mixture of both. A special case is `select='all'` where all the polynomials up to\nthe given `mode` is passed. Default is `None` in which case only a single polynomial of the given `mode` is passed.\n- `show`: boolen variable to determine whether to display the polynomials. Default is `False`.\n\nThe output is a Numpy array, either 2D for a single mode, or 3D for multiple modes.\n\n### Name of the first 15 modes\n\n| Mode / OSA index | Name |\n|------------------|:------------------------------:|\n| 0 | piston |\n| 1 | vertical tilt |\n| 2 | horizontal tilt |\n| 3 | oblique astigmatism |\n| 4 | defocus |\n| 5 | vertical astigmatism |\n| 6 | vertical trefoil |\n| 7 | vertical coma |\n| 8 | horizontal coma |\n| 9 | oblique trefoil |\n| 10 | oblique quadrafoil |\n| 11 | oblique secondary astigmatism |\n| 12 | primary spherical |\n| 13 | vertical secondary astigmatism |\n| 14 | vertical quadrafoil |\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A minimalistic Python package to generate individual or a series of Zernike polynomials of arbitrary orders with visualization.",
"version": "0.0.5",
"project_urls": {
"Homepage": "https://github.com/yanyan-liu/ZernikePy",
"Issues": "https://github.com/yanyan-liu/ZernikePy/issues",
"Repository": "https://github.com/yanyan-liu/ZernikePy"
},
"split_keywords": [
"zernike",
" psf",
" optics",
" polynomials",
" basis"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "13c82a116c02f21d991c38a30ba80650cfd83749662568bbf032c5a8f380f575",
"md5": "945bb0c85ae77fd5eb18dc3287e82aba",
"sha256": "00726b90c7143b4f34f3b5e9d15b137d4989efd3cf9bd8f845461ff88407114c"
},
"downloads": -1,
"filename": "ZernikePy-0.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "945bb0c85ae77fd5eb18dc3287e82aba",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 6986,
"upload_time": "2024-11-27T10:20:43",
"upload_time_iso_8601": "2024-11-27T10:20:43.004799Z",
"url": "https://files.pythonhosted.org/packages/13/c8/2a116c02f21d991c38a30ba80650cfd83749662568bbf032c5a8f380f575/ZernikePy-0.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0babf4644e5d1c244c3ff66c3b153692f5e8863d3bacda54c686df452d34b966",
"md5": "7b385021f0079852da6a3e5bd626ea33",
"sha256": "12ed018d3450fd7add4fd7a909199a03506c14c845dcd6a8baf8260744d30f3e"
},
"downloads": -1,
"filename": "zernikepy-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "7b385021f0079852da6a3e5bd626ea33",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 6334,
"upload_time": "2024-11-27T10:20:44",
"upload_time_iso_8601": "2024-11-27T10:20:44.661900Z",
"url": "https://files.pythonhosted.org/packages/0b/ab/f4644e5d1c244c3ff66c3b153692f5e8863d3bacda54c686df452d34b966/zernikepy-0.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-27 10:20:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yanyan-liu",
"github_project": "ZernikePy",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "zernikepy"
}