prysm v0.18#
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.