diff --git a/joss/paper.md b/joss/paper.md index 43ee6187..39ac325c 100644 --- a/joss/paper.md +++ b/joss/paper.md @@ -46,16 +46,17 @@ In this paper we introduce `dLux`[^dlux], an open-source Python package for diff One of the foundational problems in optical astronomy is that of imaging scenes at resolutions close to the diffraction limit of a telescope. One of the most stringent cases for high-dynamic-range, high-resolution imaging is exoplanet direct imaging [@Follette2023], whether with adaptive optics systems on large telescopes on Earth [@Guyon2018], or with space-based imagers such as the James Webb Space Telescope coronagraphs [@Boccaletti2022 ; @Girard2022] and interferometer [@Sivaramakrishnan2023]. In each case, a central issue is in accurately modelling the point spread function (PSF) of the telescope: the diffraction pattern by which light from a point source is spread out over the detector, which is affected by wavelength-scale irregularities at each optical surface the light encounters, and which can drown out the signals of faint planets and circumstellar material. -While there are many data-driven approaches to nonparametrically inferring and subtracting this PSF [@Cantalloube2021], the motivation for our work here is to use principled deterministic physics to model optical systems; to perform high-dimensional inferences from data, jointly about telescopes and the scenes they observe; to train neural networks to model electronics together with optics; and to produce principled, high-dimensional designs for telescope hardware. These problems necessitate a physical optics model which is fast and *differentiable*, so as to permit high-dimensional optimization by gradient descent [eg in `optax`; @optax] or sampling with Hamiltonian Monte Carlo or similar gradient-based algorithms [@Betancourt2017]. +While there are many data-driven approaches to nonparametrically inferring and subtracting this PSF [@Cantalloube2021], the motivation for our work here is to use principled deterministic physics to model optical systems; to perform high-dimensional inferences from data, jointly about telescopes and the scenes they observe; to train neural networks to model electronics together with optics; and to produce principled, high-dimensional designs for telescope hardware. These problems necessitate a physical optics model which is fast and *differentiable*, so as to permit high-dimensional optimization by gradient descent [eg in `optax`; @optax] or sampling with Hamiltonian Monte Carlo or similar gradient-based algorithms [@Betancourt2017]. Physical optics is the study of the wave physics of light, and is taken to be separate from geometric optics, which is the approximation treating light as rays. A physical optics model is usually taken to simulate the propagation of light between one or more pupil planes and focal planes by the Fraunhofer or Fresnel approximation, based around Fourier transform calculations. -Physical optics is the study of the wave physics of light, and is taken to be separate from geometric optics, which is the approximation treating light as rays. A physical optics model is usually taken to simulate the propagation of light between one or more pupil planes and focal planes by the Fraunhofer or Fresnel approximation, based around Fourier transform calculations. Non-differentiable open-source physical optics packages used in astronomy include `poppy` [@poppy], `prysm` [@prysm]; differentiable alternatives to `dLux` used in astronomy so far include `WaveDiff` [@Liaudat2023] and recent versions of `hcipy` [@hcipy]. +Non-differentiable open-source physical optics packages used in astronomy include `poppy` [@poppy], `prysm` [@prysm]; differentiable alternatives to `dLux` used in astronomy so far include `WaveDiff` [@Liaudat2023] and recent versions of `hcipy` [@hcipy]. + + +We introduce a new open-source physical optics package, `dLux` (named for taking *partial derivatives of light*), written in Python and using `jax`. It inherits an object oriented framework from `equinox` [@kidger2021equinox], around which we build a thin wrapper `zodiax`[^zodiax] to allow for a more efficient syntax building probabilistic models in `numpyro` [@numpyro]. Similar approaches using differentiable optical models have been applied in the `DeepOptics` project [@Sitzmann2018]; `WaveBlocks` [@Page2020] in microscopy; `dO` [@Wang2022] for general cameras; and in `WaveOpticsPropagation.jl` [@Wechsler24]. `dLux` similarly leverages the strengths of differentiable simulation, however a focus on generic physical optics modules enables applications spanning domains and encompasses projects from the design to data processing stages. - -We introduce a new open-source physical optics package, `dLux` (named for taking *partial derivatives of light*), written in Python and using `jax`. It inherits an object oriented framework from `equinox` [@kidger2021equinox], around which we build a thin wrapper `zodiax`[^zodiax] to allow for a more efficient syntax building probabilistic models in `numpyro` [@numpyro]. # Documentation & Case Studies