Poke (pronounced /poʊˈkeɪ/ or po-kay) is a ray-based physical optics module for Python. It's named this because the name encodes the k-vector (which we are raytracing!) and the E-vector (which we are propagating!). Also I came up with the name before lunchtime, when I was craving fish from Suisan.
Poke is a package to interface with industry-standard raytracing engines to do physical optics calculations based on ray data. The goal is to open-source the ray-based propagation physics and only rely on the raytracers (Zemax OpticStudio, CODE V, etc.) to do raytracing. The development was inspired by the need to add more propagation physics modules for Coronagraphs to expand the design space, but Poke has been used to characterize existing observatories as well.
Presently Poke supports:
- Polarization Ray Tracing
- Gaussian Beamlet Decomposition
- Zemax OpticStudio Optical Systems
Disclaimer: Poke is currently in very early stages of development. Documentation, unit tests, and more features are being developed and added daily. If you'd like to contribute to Poke, please open an issue to start a discussion.
If you are interested in contributing / using Poke, feel free to open an issue or contact me at [email protected].
Poke is actively developing so we reccomend installation by cloning the repository and running setup.py
git clone https://github.com/Jashcraf/poke/
cd poke
pip install .
Note that we currently require the zosapi
package that is up on PyPi by Michael Humphreys
- [1] Anche, Ashcraft, and Haffert et al. "Polarization aberrations in next-generation Giant Segmented MirrorTelescopes (GSMTs) I.Effect on the coronagraphic performance," submitted to Astronomy & Astrophysics (Accepted Jan 2022).
- [2] Ashcraft, Douglas, Kim, and Riggs. "Hybrid Propagation Physics for The Design and Modeling of Astronomical Observatories: a Coronagraphic Example," submitted to Journal of Astronomical Telescopes, Instruments, and Systems (in review)
Contributors:
- Jaren Ashcraft
- Quinn Jarecki
- Trent Brendel
- Brandon Dube
Acknowledgements:
Thanks to Dr. Max Millar-Blanchaer for inspiring the Raybundle class, and Dr. Ramya Anchce for overall helpful discussions on polarization ray tracing. Thanks to Trent Brendel, Kevin Z. Derby, and Henry Quach for helpful discussions and testing during the initial development phase. Thanks to Brandon Dube for the sage Python advice. Thanks to Kian Milani for helping test poke on supercomputer GPUs. This work was supported by a NASA Space Technology Graduate Research Opporunity.
References
- [1] Polarized Light and Optical Systems, by Chipman, Lam, and Young (2019)
- [2] Thin-Film Optical Filters, by Macleod (1969)
- [3] Development of a new method for the wave optical propagation of ultrashort pulses through linear optical systems, by Worku (2020)
Other Acknowledgements
- Suisan fish market