ZernikePy


NameZernikePy JSON
Version 0.0.5 PyPI version JSON
download
home_pageNone
SummaryA minimalistic Python package to generate individual or a series of Zernike polynomials of arbitrary orders with visualization.
upload_time2024-11-27 10:20:44
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
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"
}
        
Elapsed time: 0.40079s