Skip to content



Differentiable Light - Optical systems as a neural network

PyPI version License integration Documentation

Contributors: Louis Desdoigts, Benjamin Pope, Jordan Dennis, Adam Taras, Peter Tuthill

What is ∂Lux?

∂Lux is a differentiable physical optics modelling framework built using Jax for automatic differentiation and GPU acceleration. With a simple object-oriented interface built in Equinox, it is easy to specify astronomical optical systems involving many planes, phase and amplitude screens in each, and propagate between them in the Fraunhofer or Fresnel regimes. This enables fast phase retrieval, image deconvolution, and hardware design in high dimensions. Because ∂Lux models are fully differentiable, you can optimize them by gradient descent over millions of parameters; or use Hamiltonian Monte Carlo to accelerate MCMC sampling. Our code is fully open-source under an MIT license, and we encourage you to use it and build on it to solve problems in astronomy and beyond.

Use & Documentation

Documentation can be found here. To get started look, go to the Tutorials section and have a look!


We have a multitude of publications in the pipeline using dLux, some built from our tutorials. To start we would recommend looking at this invited talk on ∂Lux which gives a good overview and has an attatched recording of it being presented! We also have this poster!

Collaboration & Development

We are always looking to collaborate and further develop this software! We have focused on flexibility and ease of development, so if you have a project you want to use ∂Lux for, but it currently does not have the required capabilities, don't hesitate to email me and we can discuss how to implement and merge it! Similarly you can take a look at the file.