Skip to main content

Python code for Zernike polynomials

Project description

Zernike

DOI

Python code to handle complex- and real-valued Zernike polynomials. This module was part of enzpy but will be further developed here instead.

Installation

You can install zernike using pip

pip install --user zernike

Example: plot the Zernike pyramid

python -m zernike.pyramid

Example: plot the first 9 Zernike polynomials

import numpy as np
import matplotlib.pyplot as plt
from zernike import RZern

cart = RZern(6)
L, K = 200, 250
ddx = np.linspace(-1.0, 1.0, K)
ddy = np.linspace(-1.0, 1.0, L)
xv, yv = np.meshgrid(ddx, ddy)
cart.make_cart_grid(xv, yv)

c = np.zeros(cart.nk)
plt.figure(1)
for i in range(1, 10):
    plt.subplot(3, 3, i)
    c *= 0.0
    c[i] = 1.0
    Phi = cart.eval_grid(c, matrix=True)
    plt.imshow(Phi, origin='lower', extent=(-1, 1, -1, 1))
    plt.axis('off')

plt.show()

Example: fit Zernike polynomials in Cartesian coordinates

import numpy as np
import matplotlib.pyplot as plt
from zernike import RZern

cart = RZern(6)
L, K = 200, 250
ddx = np.linspace(-1.0, 1.0, K)
ddy = np.linspace(-1.0, 1.0, L)
xv, yv = np.meshgrid(ddx, ddy)
cart.make_cart_grid(xv, yv)

c0 = np.random.normal(size=cart.nk)
Phi = cart.eval_grid(c0, matrix=True)
c1 = cart.fit_cart_grid(Phi)[0]
plt.figure(1)
plt.subplot(1, 2, 1)
plt.imshow(Phi, origin='lower', extent=(-1, 1, -1, 1))
plt.axis('off')
plt.subplot(1, 2, 2)
plt.plot(range(1, cart.nk + 1), c0, marker='.')
plt.plot(range(1, cart.nk + 1), c1, marker='.')

plt.show()

Example: fit Zernike polynomials in polar coordinates

import numpy as np
from zernike import RZern, FitZern

pol = RZern(6)
L, K = 200, 250
ip = FitZern(pol, L, K)

pol.make_pol_grid(ip.rho_j, ip.theta_i)
c_true = np.random.normal(size=pol.nk)
Phi = pol.eval_grid(c_true)
c_hat = ip.fit(Phi)
R = np.zeros((pol.nk, 3))
R[:, 0] = c_true
R[:, 1] = c_hat
R[:, 2] = np.abs(c_true - c_hat)
print(R)
np.linalg.norm(c_true - c_hat)/np.linalg.norm(c_true)

Installation from the GitHub repository

  • You should first install the following requirements:
    • Anaconda for Python 3. This includes Python as well as some necessary scientific libraries.
    • Git. This is necessary for the automatic version numbering of this package. Also, make sure you choose Git from the command line and also 3rd-party software in Adjusting your PATH environment.
  • Clone this repository using Git. From any folder in File Explorer, right-click and hit Git Bash here. Paste git clone https://github.com/jacopoantonello/zernike and hit enter. Do not use GitHub's Download ZIP button above, as the installation script will not work in that case.
  • Finally, double-click on install.bat.

Tests

python -m zernike.test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zernike-0.0.33.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

zernike-0.0.33-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file zernike-0.0.33.tar.gz.

File metadata

  • Download URL: zernike-0.0.33.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for zernike-0.0.33.tar.gz
Algorithm Hash digest
SHA256 1cb57e77e503952932e157ab91253a8154d66d0f539d19fa0ad7860cfee92043
MD5 e9f3cc350754081c8d8a1c09d9de1ec1
BLAKE2b-256 99f6823901c7ee83d6a7575552b6665367fccd7b7b7834336f6f0eb864633a17

See more details on using hashes here.

File details

Details for the file zernike-0.0.33-py3-none-any.whl.

File metadata

  • Download URL: zernike-0.0.33-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for zernike-0.0.33-py3-none-any.whl
Algorithm Hash digest
SHA256 bc94aa305c56894193ad7d2d1f527368e70748c4eb002c13b86fae9b2f2b04ef
MD5 add523cb0a4bc898c13f9e5738bf08ae
BLAKE2b-256 636072eb20d553404675d5cb4a91dbd173c727ba5631da650393957acd6cc622

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page