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. /= 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.