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.
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.
That said, Poppy does not implement full Rayleigh-Sommerfeld electromagnetic propagation, vector electromagnetic field propagation such as would be needed for modeling polarization effects, nor 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
- Example Code and Getting Started
- Available Optical Element Classes
- Representing sources of wavefront error
- Sign Conventions for Coordinates, Phase, and 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
- GPU Accelerated Optical Calculations
- Appendix C: Developer Notes and Release Procedure