Documentation for POPPY¶
POPPY (Physical Optics Propagation in PYthon) simulates physical optical propagation including diffraction. It implements a flexible framework for modeling Fraunhofer and Fresnel diffraction and point spread function formation, particularly in the context of astronomical telescopes. POPPY was developed as part of a simulation package for JWST, but is broadly applicable to many kinds of imaging simulations.
What this software does:
- Allows users to define an optical system consisting of multiple planes, such as pupils and images.
- Provides flexible and extensible optical element classes, including a wide variety of stops, masks, lenses and more.
- Propagates wavefronts between planes using either the Fraunhofer or Fresnel approximations of scalar electromagnetic theory.
- Computes monochromatic and polychromatic point spread functions through those optics.
- Provides an extensible framework for defining models of optical instruments, including selection of broad- and narrow-band filters, selectable optical components such as pupil stops, models of optical aberrations defined by Zernike polynomials, etc.
What this software does not do:
- Full Rayleigh-Sommerfeld electromagnetic propagation.
- Vector electromagnetic field propagation such as would be needed for modeling polarization effects.
- Modelling of any kind of detector noise or imperfections.
Quickstart IPython Notebook
This documentation is complemented by an IPython Notebook quickstart tutorial.
Downloading and running that notebook is a great way to get started using POPPY. The documentation following here provides greater details on the algorithms and API.
- Release Notes
- Available Optical Element Classes
- Representing sources of wavefront error
- Efficient Lyot coronagraph propagation
- Fresnel Propagation
- Extending POPPY by defining your own optics and instruments
- POPPY Class Listing
- API Reference
- About POPPY
- Appendix A: Optimizing Performance and Parallelization
- Appendix B: Optimizing FFT Performance with FFTW