# prysm v0.13¶

This release brings a number of new features and enhancements. Users are encouraged to upgrade from older releases.

## New Features¶

• SlantedEdge object for image simulation

• deconv() on the Convolvable class to perform Wiener-Hunt deconvolution.

• convenience properties on OpticalPhase (FringeZernike, Interferogram, …) and Convolvable objects.

• shape, diameter_x, diameter_y, and diameter on the former.

• shape, support_x, support_y, and support on the latter.

• std property for the standard deviation on OpticalPhase instances and strehl for the approximate Strehl Ratio on Pupil instances.

• band-limited RMS evaluation on Interferogram objects based on the 2D PSD

• analytical Fourier transform on the AiryDisk class for faster, more accurate convolutions

• flexible linewidth on many plots

• log scaling on 2D PSF plots

• residual parameter in the fit() function from the fringezernike module

• azimuthally averaged MTF via the azimuthal_average() method on the MTF class

• convolvables can now be saved with 16-bit precision

## Under-the-hood changes and bug fixes¶

• Interferogram instances no longer cache PSD calculations internally

• The wavefunction associated with an optical pupil is now a property, Pupil.fcn instead of an attribute. It will be calculated on an as-needed basis which eliminates synchronization problems when Pupil instances are modified.

• FZCache and MCache for Fringe Zernikes and masks now implement __call__(), you can use mcache(128, 'hexagon') instead of mcache.get_mask(128, 'hexagon') and the equivalent for zcache.

• importing of Zygo datx files is now more robust. Files from the NexView NX2 now import properly.

• Convolvable is now exported at the top level

• prysm.convolution.Convolvable.from_file() no longer errors. Users must now scale the data after importing on their own, e.g. Convolvable.data /= 255 for an 8 bit per pixel file, or /= 65535 for a 16-bit file.

## Removed Features¶

• bandreject_filter() has been removed on the Interferogram class; the implementation was not well done and the results of low quality.

• MultispectralPSF and RGBPSF have been dropped; they have been neglected for a significant amount of time. MultispectralPSF only differed from a PSF in the call to __init__(), users can replicate this behavior independently.