Skip to content

LouisDesdoigts/dLux

alt text

∂Lux

PyPI version License integration codecov Documentation

dLux is an open-source differentiable optical modelling framework built within the Jax+Equinox+Zodiax ecosystem. All models are differentiable, GPU accelerated, and interface with the optimisation and statistical tools provided by these libraries. It is designed to be incredibly fast, flexible, and extensible, serving as a framework to solve real-world optical problems within, rather than just another optical simulator. It was built for the modelling of astronomical telescopes, but the tools it provides and its flexible construction make it applicable to optical problems well beyond this domain.

Under the hood, dLux takes inspiration from the isomorphic nature between optical system and neural networks, enabling the description of arbitrary optical systems as a series of layers that operate sequentially on a wavefront. This 'layers based' design provides near-complete flexibility to end users (since you can easily define your own layer!), while also enabling most optical systems to be composed from layers that are already implemented within dLux. Unlike other optical simulators, dLux aims to put tools in users hands and teach them how to use them, not provide a pre-built system that works in unknown ways. This formulation puts more power in the hands of users and also helps them learn optical modelling along the way!

Documentation & Tutorials

dLux has extensive docummentation and a growing set of tutorials to help users get up and running. The documentation includes a detailed API reference, as well as guides on how to use the various features of dLux. The tutorials cover a range of topics, from basic usage to more advanced techniques, and are designed to help users learn how to use dLux effectively.

Documentation: https://louisdesdoigts.github.io/dLux/

The tutorials can be found in the documentation, but are also hosted on the dLux tutorials repository, where the notebooks can be downloaded and run directly. This also enables users to easily contribute their own tutorials to the repository, which we encourage!

Installation

dLux is hosted on PyPI and can be installed via pip: pip install dLux

To run dLux on a GPU, simply install a compatible Jax GPU version.

Requires: Python 3.10+, Zodiax 0.5+

Other Projects

dLux has a number of downstream and linked projects:

  • Zodiax: A differentiable physical modelling framework for general scientific programming, providing the core tools and utilities that dLux is built on.
  • abcdLux: abcdLux provides differentiable Fresnel propagation for optical systems, and is presently being integrated into dLux as the core propagation engine.
  • Amigo: Amigo is the best-performing data calibration and analysis pipeline for the JWST interferometer, and is the recommended tool for the analysis of JWST AMI data.
  • Dorito: Dorito is a high-performance image reconstruction algorithm for the JWST AMI, built on top of Amigo.
  • dLuxToliman: dLuxToliman is a high-fidelity simulator for the Toliman space telescope, built on top of dLux and designed to be used for the design and analysis of the Toliman mission.

If you have any other projects that use dLux and would like to be added to this list, please let us know!

Publications

If you have any other papers that use dLux and would like to be added to this list, please let us know!

Collaboration & Development

dLux is open source so we are always open to feedback, suggestions, and pull-requests! More details about contributing can be found in our contributing guide.

Packages

 
 
 

Contributors

Languages