github brandondube/prysm v0.14
prysm 0.14

latest releases: v0.21.1, v0.21, v0.20...
5 years ago

Version 0.14 introduces a host of new features and critical improvements to existing features of prysm. Users are encouraged to upgrade from prior releases.

With version 0.15, work will continue on improving the documentation and tests. When documentation becomes "complete" and coverage exceeds 90%, version 1.0 will be released and prysm will follow more typical semver release patterns.

New Features

  • pad2d from prysm.fttools now takes the mode kwarg, wrapping numpy.pad in the non-constant case.

  • prop_pupil_plane_to_psf_plane now takes the incoherent (default True) argument. When incoherent=False, the (complex-valued) coherent impulse response is returned.

  • wrap-around effects in convolutions have been reduced.

  • there is a new truecircle mask in prysm.geometry which has anti-aliased edges for improved simulation accuracy.

  • read_mtfmapper_sfr_single function in prysm.io to read outputs from MTF Mapper with the -f --single-roi arguments.

  • semidiameter attribute on OpticalPhase class and subclasses (FringeZernike, Interferogram, ...).

  • show_colorbar option on OpticalPhase.plot2d.

  • all masks in prysm.geometry now take a radius argument.

  • Interferogram.mask now takes descriptive arguments, e.g. i.mask('circle', diameter=100) for a 100mm diameter circle. The mask kwarg still exists for user-provided masks.

  • (Interferogram).pvr for PVr analysis.

  • in prysm.fringezernike: fzname function to return the name of the nth Fringe Zernike with base (0 or 1).

  • fzset_to_magnitude_angle function to convert a list of (X-Y) Zernikes to (magnitude-angle) form.

  • (FringeZernike).magnitudes property to access fzset_to_magnitude_angle on a FringeZernike instance.

  • top_n method for FringeZernike pupils to list the top n coefficients by magnitude.

  • barplot method for FringeZernike pupils to plot their coefficients.

  • barplot_magnitudes method to plot their pairwise magnitudes (e.g, one bar for primary astigmatism).

  • barplot_topn method to plot the top n coefficients only.

  • truncate method to reduce FringeZernike pupils to the first n terms.

  • truncate_topn method to reduce to top n terms.

  • fs and nyquist properties on the Detector class for the sampling and nyquist frequencies in cy/mm.

  • crossed parameter in SlantedEdge constructor to produce a "BMW target"

  • ab_psd function in prysm.interferogram for analytical inverse power law PSD curves.

API changes

  • rms_norm in functions related to Zernikes has been renamed to norm. This affects the fit function from prysm.fringezernike as well as the FringeZernike class.

  • num_terms on the fit function is now renamed to terms.

  • num_spokes on SiemensStar has been renamed to spokes.

  • num_pts on prysm.otf.diffraction_limited_mtf has been renamed to samples.

  • num_samples has been renamed to samples in prysm.propagation.pupil_sample_to_psf_sample and psf_sample_to_pupil_sample.

  • the epd keyword argument on Pupil instances has been renamed to dia. This also affects the FringeZernike and Seidel subclasses.

  • Interferogram.plot_psd_xyavg has been renamed to plot_psd_xy_avg.

Under-the-hood changes

  • samples_x, samples_y, center_x, and center_y are now properties of OpticalPhase instances (Pupils, Interferograms, ...) instead of attributes. This helps eliminate synchronization problems when the data is modified.

  • imwrite is used from imageio, not imsave to follow best practice.

  • circle from prysm.geometry is now exported at the top level.

  • Detector now defaults to 16-bit precision.

  • import of h5py for datx files is now deferred for faster imports of prysm.

  • matplotlib is now an optional dependency and its import is deferred for faster imports of prysm.

  • OpticalPhase now provides default values for xaxis_label, yaxis_label, and zaxis_label to avoid errors on subclasses. Users should still provide better values for subclasses.

  • MaskCache argument order has changed from samples, shape to shape, samples, radius.

  • data from Zygo datx files is now flipped to maintain consistent orientation with the representation in Mx

  • in prysm._zernikes, Tip (Y) has been renamed Tilt Y. Tilt (X) has been renamed Tilt X

  • the coefs attribute on FringeZernike instances is now a numpy array. Piston tip and tilt can be suppressed by invoking fz.coefs[:3] = 0; fz.build(); fz.mask(fz._mask, fz._mask_target);.

  • PSD calculation has been rewritten. PSD results are now properly normalized to be a true PSD. Prior results should be considered in error.

bugfixes

  • fix Convolvable.show errors when no xlim or ylim provided.

  • fix OpticalPhase.samples_x and samples_y lookup.

  • coefficients from fringezernike.fit are no longer transposed in the Cartesian plane.

  • calling (Interferogram).crop with data spanning the entire array no longer causes an error.

  • Initializing an Interferogram with no meta dictionary no longer causes an error.

Don't miss a new prysm release

NewReleases is sending notifications on new releases.