Skip to content

Releases: spacetelescope/poppy

v1.1.1

16 May 17:59
bd36f28
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.1.0...v1.1.1

v1.1.0

15 May 15:40
9dbabfd
Compare
Choose a tag to compare

What's Changed

  • Updated ReadTheDocs build's Python version by @ojustino in #512
  • Tried Python 3.8 with ReadTheDocs instead by @ojustino in #514
  • Fix position angle rotation passthrough for TiltOpticalPathDifference by @evanmayer in #524
  • build(deps): bump matplotlib from 3.5.2 to 3.5.3 by @dependabot in #520
  • build(deps): bump scipy from 1.8.1 to 1.9.1 by @dependabot in #521
  • Fix units error in MultiHexagonAperture, see #485 by @mperrin in #527
  • build(deps): bump numpy from 1.22.4 to 1.23.3 by @dependabot in #525
  • replacing np.float with np.float_ per Issue 544 by @adambolton in #545
  • Update minimum versions across the board by @BradleySappington in #551
  • add option to mark levels in display_ee by @douglase in #540
  • minor: misc PEP8 code style consistency reformatting by @mperrin in #554
  • Addition of CuPy as an Accelerated Computing Option by @kian1377 in #499
  • build(deps): bump astropy from 5.2.1 to 5.2.2 by @dependabot in #557
  • build(deps): bump matplotlib from 3.7.0 to 3.7.1 by @dependabot in #558
  • remove usages of deprecated codecov package by @zacharyburnett in #559
  • Move metadata from non-standard setup.cfg into PEP 621-compliant pyproject.toml. (546 takeover) by @BradleySappington in #561
  • for now, skip a failing Fresnel test for the most recent scikit-image versions by @mperrin in #555
  • Remove older CUDA GPU code, now that it's replaced by CuPY GPU code by @mperrin in #556
  • build(deps): bump numpy from 1.24.2 to 1.24.3 by @dependabot in #562

New Contributors

Full Changelog: v1.0.3...v1.1.0

Release 1.0.3

30 Jun 20:00
v1.0.3
ba23d13
Compare
Choose a tag to compare

Another incremental release that introduces support and makes internal adjustments for Python 3.10.

For full release notes, see https://poppy-optics.readthedocs.io/en/latest/relnotes.html
Full changelog: v1.0.2...v1.0.3

Release 1.0.2

28 Jan 19:03
c193301
Compare
Choose a tag to compare

This is a minor release, mostly to accommodate upstream changes in recent numpy and astropy versions.

Release 1.0.1

08 Dec 21:27
v1.0.1
7d3e3bf
Compare
Choose a tag to compare

Minor re-release to fix some documentation formatting issues in 1.0.0

What's Changed

  • Fix documentation formatting issues, Release 1.0.1... by @mperrin in #476

Full Changelog: v1.0.0...v1.0.1

Release 1.0.0

07 Dec 05:10
v1.0.0
0546997
Compare
Choose a tag to compare

This is a major release, including significant changes in calculation internals related to optical sign conventions (not backwards compatible), some API changes, several additional updated optical element classes, bug fixes, and several algorithm improvements and performance enhancements.

For full release notes, see https://poppy-optics.readthedocs.io/en/latest/relnotes.html

Release 0.9.2

11 Feb 20:28
bf0531d
Compare
Choose a tag to compare

This minor release includes several updated optical element classes, bug fixes, and improved documentation. This is intended as a maintenance release shortly before v 1.0 which will introduce some backwards-incompatible changes.

For full release notes see https://poppy-optics.readthedocs.io/en/latest/relnotes.html

Release 0.9.1

22 Jun 16:57
v0.9.1
15a4278
Compare
Choose a tag to compare

This is a minor release primarily for updates in packaging infrastructure, plus a handful of small enhancements related to datacubes, segmented apertures, and new functionality for subsampled optics.

For full release notes see https://poppy-optics.readthedocs.io/en/latest/relnotes.html

Release 0.9.0

25 Nov 20:45
a276feb
Compare
Choose a tag to compare

0.9.0

2019 Nov 22

New Functionality:

  • Chaining together multiple propagations calculations: Multiple OpticalSystem instances can now be chained together into a CompoundOpticalSystem. This includes mixed
    propagations that are partially Fresnel and partially Fraunhofer; Wavefront objects will be cast between types as
    needed. (:pr:290 by :user:mperrin)

  • Gray pixel subsampling of apertures: Implemented "gray pixel" sampling for circular apertures and stops, providing more precise models of aperture edges.
    For circular apertures this is done using a fast analytic geometry implementation adapted from open-source IDL code
    originally by Marc Buie. (:pr:325 by :user:mperrin, using Python code contributed by :user:astrofitz).
    For subpixel / gray pixel sampling of other optics in general, a new function fixed_sampling_optic takes any
    AnalyticOpticalElement and returns an equivalent ArrayOpticalElement with fixed sampling. This is useful for instance
    for taking a computationally-slow optic such as MultiHexagonAperture and saving a discretized version for future
    faster use. (:pr:307 by :user:mperrin)

  • Modeling tilted optics: New feature to model geometric projection (cosine scaling) of inclined optics, by setting an inclination_x or
    inclination_y attribute to the tilt angle in degrees. For instance inclination_x=30 will tilt an optic by 30
    degrees around the X axis, and thus compress its apparent size in the Y axis by cosine(30 deg). Note, this
    transformation only applies the cosine scaling to the optic's appearance, and does not introduce wavefront for
    tilt. (:pr:329 by :user:mperrin)

  • Many improvements to the Continuous Deformable Mirror class:

    • Enhance model of DM actuator influence functions for more precise subpixel spacing of DM actuators, rather than
      pokes separated by integer pixel spacing. This applies to the 'convolution by influence function' method for
      modeling DMs (:pr:329 by :user:mperrin)
    • Support distinct radii for the active controllable mirror size and the reflective mirror size (:pr:293 by :user:mperrin)
    • ContinuousDeformableMirror now supports shift_x and shift_y to translate / decenter the DM, consistent with
      other optical element classes. (:pr:307 by :user:mperrin)
    • ContinuousDeformableMirror now also supports flip_x and flip_y attributes to flip its orientation along one or
      both axes, as well as the new inclination_x and inclination_y attributes for geometric projection.
  • Improved models of certain kinds of wavefront error:

    • New class StatisticalPSDWFE that models random wavefront errors described by a power spectral density, as is
      commonly used to specify and measure typical polishing residuals in optics. (:pr:315 by :user:ivalaginja;
      :pr:317 by :user:mperrin)
    • FITSOpticalElement can now support wavelength-independent phase maps defined in radians, for instance for modeling
      Pancharatnam-Berry phase as used in certain vector coronagraph masks. (:pr:306 by :user:joseph-long)
  • add_optic in Fresnel systems can now insert optics at any index into an optical system, rather than just appending
    at the end (:pr:298 by :user:sdwill)

Software Infrastructure Updates and Internals:

  • PR :pr:290 for CompoundOpticalSystem involved refactoring the Wavefront and FresnelWavefront classes to both be child classes of a new abstract base class BaseWavefront. This change should be transparent for most/all users and requires no changes in calling code.
  • PR :pr:306 for wavelength-independent phase subsequently required refactoring of the optical element display code to correctly handle all cases. As a result the display code internals were clarified and made more consistent. (:pr:314 and :pr:321 by :user:mperrin with contributions from :user:ivalaginja and :user:shanosborne). Again this change should be transparent for users.
  • Removed deprecated / unused decorator function in WFE classes, making their get_opd function API consistent with the rest of poppy. (:pr:322 by :user:mperrin)
  • Accomodate some upstream changes in astropy (:pr:294 by :user:shanosborne, :pr:330 by :user:mperrin)
  • The poppy.Instrument._get_optical_system function, which has heretofore been an internal method (private, starting with
    underscore) of the Instrument class, has been promoted to a public part of the API as
    Instrument.get_optical_system().
  • Note, minimum supported versions of some upstream packages such as numpy and matplotlib have been updated.

Bug Fixes and Misc Improvements:

  • Correctly assign BUNIT keyword after rescaling OPDs (:issue:285, :pr:286 by :user:laurenmarietta).
  • New header keywords in output PSF files for OPD_FILE and OPDSLICE to more cleanly record the information
    previously stored together in the PUPILOPD keyword (:pr:316 by :user:mperrin)
  • Update docs and example notebooks to replace deprecated function names with the current ones (:pr:288 by :user:corcoted).
  • Improvements in resampling wavefronts onto Detector instances, particularly in cases where the wavefront is already at the right plane so no propagation is needed. (Part of :pr:290 by :user:mperrin, then further improved in :pr:304 by :user:sdwill)
  • Allow passthrough of "normalize" keyword to measure_ee and measure_radius_at_ee functions (:pr:333 by
    :user:mperrin; :issue:332 by :user:ariedel)
  • Fix wavefront.as_fits complex wavefront output option (:pr:293 by :user:mperrin)
  • Stricter checking for consistent wavefront type and size parameters when summing wavefronts (:pr:313 and :pr:326 by :user:mperrin)
  • Fix an issue with MultiHexagonAperture in the specific case of 3 rings of hexes (:issue:303 by :user:LucasMarquis and :user:FredericCassaing; :pr:307 by :user:mperrin)
  • Fix an issue with BaseWavefront class refactor (:pr:311 by :user:douglase and :user:jlumbres)
  • Fix an issue with indexing in HexSegmentedDeformableMirror when missing the center segment (:issue:318 by :user:ivalaginja; :pr:320 by :user:mperrin)
  • Fix title display by OpticalElement.display function (:pr:299 by :user:shanosborne)
  • Fix display issue in SemiAnalyticCoronagraph class (:pr:324 by :user:mperrin).
  • Small improvements in some display labels (:pr:307 by :user:mperrin)

Note, the new functionality for gray pixel representation of circular apertures does not work precisely for elliptical
apertures such as from inclined optics. You may see warnings about this in cases when you use inclination_y or
inclination_x attributes on a circular aperture. This warning is generally benign; the calculation is still more
accurate than it would be without the subpixel sampling, though not perfectly precise. This known issue will likely be
improved upon in a future release.

Release 0.8.0

13 Dec 22:00
Compare
Choose a tag to compare

First Python3-only version of poppy. See release notes and documentation for more details.