prysm v0.18#
Released 2020-02-09
This release brings several enhancements related to processing interferoemter data, and completes the update of the Zernike module. Perhaps as a breath of fresh air, you are likely to experience zero breaking changes. Users are encouraged to upgrade, and remove any error correction logic from their own processing pipelines.
New Features#
new function
prysm.geometry.rectangle()for generating rectangular windowsnew method
prysm.psf.PSF.centroid()for computing the centroid of a PSFnew method
prysm.psf.PSF.autowindow()for centering the data on the data of a PSF, based on its centroid
The Zernike module has completed its overhaul. This brings the following changes:
both Fringe and Noll zernike classes now allow expansion up to arbitrary order
the performance of Zernike calculations is improved by 2-3x vs 0.17 when numba was installed. More than 10x compared to 0.17 without numba. Numba is now never used, which results in faster imports when it is installed.
New functions:
fringe_to_n_m()for converting (arbitrary) Fringe index -> (n,m). One based.
n_m_to_name()for retrieving the name from (n, m) orders.
New capability:
zernikefit()can fit from (n,m) indices, and fit isolated terms without fitting all of the lower order ones
Breaking: - the list prysm.zernike.zernikes no longer exists - the
explicit functions such as primary_spherical() now only
include up to primary trefoil. You must use another method (such as the caches)
to access higher order polynomials. - all explicit zernike functions no longer
have name or norm attributes. Use the enumerated new functions
above to get the name or norm of a term from its index -
prysm.zernike.zcache no longer exists. ZCacheMN
replaces ZCache. In 0.19, ZCache will become an alias for
ZCacheMN. - prysm.zernike.zernikename() is deleted, use
n_m_to_name() and the various xxxx_to_n_m functions in its
place. - the “base” kwarg to Zernike classes is deprecated and will be removed
in 0.19
Bug fixes#
The Zygo datx importer was rewritten. It now never results in improperly scaled
phase. The meta attribute on interferograms from
from_zygo_dat() may differ in its keys
due to these changes.
Under-the-hood#
For OpticalPhase, the phase attribute is now a property that points to
.data. This makes all prysm classes have a common location holding
their primary data array, improving cohesion. If you access the phase attribute
directly, there is no change in your code or its behavior.
New Documentation#
prysm.geometry.mask_cleaner()now has a docstring. You probably won’t use this function.prysm.interferogram.PSDnow has a docstring.