Skip to content

morphine - derivatives from poppy

About morphine

The main hindrance to directly imaging exoplanets comes from optical aberrations that produce speckles that can be difficult to distinguish from real planets.

The technology underlying deep learning - automatic differentiation or 'autodiff' - allows us to take derivatives by the chain rule of arbitrary numerical simulations. This can be used for kernel phase calibration (arXiv:2011.09780), as well as for phase retrieval and optical design in highly nonlinear regimes (arXiv:2107.00952).

By rewriting the popular optical simulation package 'poppy' using the autodiff library Google Jax, we present 'morphine', a powerful new open source tool for optics and data analysis.

Contributors

morphine - Benjamin Pope, Louis Desdoigts, Alison Wong

poppy base code - POPPY code by Marshall Perrin, Joseph Long, Ewan Douglas, Neil Zimmerman, Anand Sivaramakrishnan, Shannon Osborne, Kyle Douglass, Maciek Grochowicz, Phillip Springer, & Ted Corcovilos, with additional contributions from Remi Soummer, Kyle Van Gorkom, Jonathan Fraine, Christine Slocum, Roman Yurchak, and others on the Astropy team.

Installation

The easiest way to install is from pip as

pip install morphine-optics

Clone with

git clone https://github.com/benjaminpope/morphine

and run

python setup.py install

Citation

We would love it if you use morphine in a paper! If you do, please cite

@ARTICLE{2021ApJ...907...40P,
       author = {{Pope}, Benjamin J.~S. and {Pueyo}, Laurent and {Xin}, Yinzi and {Tuthill}, Peter G.},
        title = "{Kernel Phase and Coronagraphy with Automatic Differentiation}",
      journal = {\apj},
     keywords = {Direct imaging, Astronomy data analysis, Optical interferometry, Coronagraphic imaging, Astronomical simulations, 387, 1858, 1168, 313, 1857, Astrophysics - Instrumentation and Methods for Astrophysics},
         year = 2021,
        month = jan,
       volume = {907},
       number = {1},
          eid = {40},
        pages = {40},
          doi = {10.3847/1538-4357/abcb00},
archivePrefix = {arXiv},
       eprint = {2011.09780},
 primaryClass = {astro-ph.IM},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2021ApJ...907...40P},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

and

@ARTICLE{2021arXiv210700952W,
       author = {{Wong}, Alison and {Pope}, Benjamin and {Desdoigts}, Louis and {Tuthill}, Peter and {Norris}, Barnaby and {Betters}, Chris},
        title = "{Phase Retrieval and Design with Automatic Differentiation}",
      journal = {arXiv e-prints},
     keywords = {Astrophysics - Instrumentation and Methods for Astrophysics},
         year = 2021,
        month = jul,
          eid = {arXiv:2107.00952},
        pages = {arXiv:2107.00952},
archivePrefix = {arXiv},
       eprint = {2107.00952},
 primaryClass = {astro-ph.IM},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2021arXiv210700952W},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Talks

Fizeau Hackathon introduction: slides and recording.

About poppy

POPPY (P\ hysical O\ ptics P\ ropagation in Py\ thon) is a Python package that 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 the James Webb Space Telescope, but is more broadly applicable to many kinds of imaging simulations. It is not, however, a substitute for high fidelity optical design software such as Zemax or Code V, but rather is intended as a lightweight alternative for cases for which diffractive rather than geometric optics is the topic of interest, and which require portability between platforms or ease of scripting.

For documentation, see http://poppy-optics.readthedocs.io/