Skip to main content

Differentiable Physical Optics Propagation in Jax

Project description

dLux logo

∂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

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.

Citation

If you use dLux in your research, please cite Differentiable optics with dLux: I--deep calibration of flat field and phase retrieval with automatic differentiation:

@article{dLux,
  author = {Desdoigts, Louis and Pope, Benjamin J. S. and Dennis, Jordan and Tuthill, Peter G.},
  title = {Differentiable optics with {$\partial$Lux}: I--deep calibration of flat field and phase retrieval with automatic differentiation},
  journal = {Journal of Astronomical Telescopes, Instruments, and Systems},
  volume = {9},
  number = {2},
  pages = {028007},
  year = {2023},
  publisher = {SPIE},
  doi = {10.1117/1.JATIS.9.2.028007}
}

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.1.tar.gz (74.6 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.1-py3-none-any.whl (81.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dlux-0.15.1.tar.gz
  • Upload date:
  • Size: 74.6 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.1.tar.gz
Algorithm Hash digest
SHA256 19833a99fa8f0b294f10340201d11f0d1db406a71276bc461d2b3de2799c4841
MD5 b13acca02ffefb4962793068f4241d58
BLAKE2b-256 45f4a9131f5d36ab2cdf78cdd1dbe3ced18328e8b9b2b721e68f2ffc9eba0ab7

See more details on using hashes here.

Provenance

The following attestation bundles were made for dlux-0.15.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: dlux-0.15.1-py3-none-any.whl
  • Upload date:
  • Size: 81.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b9de93b7a820ef143a5e846d2db06e10e36cedec80f6911c0927eb8eacae5453
MD5 fa7a0f45baf42f86f5b1bf93c4625a6b
BLAKE2b-256 425863d863166fc1a3ec0478cc69eca3b347a5c4a23fe7b9dc266b7dff77daa5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dlux-0.15.1-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