Skip to main content

Differentiable Physical Optics Propagation in Jax

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dlux-0.15.0.tar.gz (74.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dlux-0.15.0-py3-none-any.whl (82.0 kB view details)

Uploaded Python 3

File details

Details for the file dlux-0.15.0.tar.gz.

File metadata

  • Download URL: dlux-0.15.0.tar.gz
  • Upload date:
  • Size: 74.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for dlux-0.15.0.tar.gz
Algorithm Hash digest
SHA256 8739ef2c5d47ede25f713aef3607152e688ef69e57af70bf6412bbe1a90cfdd1
MD5 4cc400ff5e20eaf2e0cda23fa938afc9
BLAKE2b-256 1b4c2b8a523e6bd6478e214c635d89d874588d115ae0540daa9483a1855237ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for dlux-0.15.0.tar.gz:

Publisher: release.yml on LouisDesdoigts/dLux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dlux-0.15.0-py3-none-any.whl.

File metadata

  • Download URL: dlux-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 82.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for dlux-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f8785227a7a6a08fd79bf57e380c431aa5339fa20d4fefa9024156c9af35476a
MD5 4306330b33ba4778225eba6afdfdd642
BLAKE2b-256 c406f8bcb7ecf1a4882bcbd50f8be07cd90870cef4b75869d0af9770b621c486

See more details on using hashes here.

Provenance

The following attestation bundles were made for dlux-0.15.0-py3-none-any.whl:

Publisher: release.yml on LouisDesdoigts/dLux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page