Differentiable Physical Optics Propagation in Jax
Project description
∂Lux
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
- Deep Calibration of Flat Field and Phase Retrieval with Automatic Differentiation
- Optical Design Maximising Fisher Information
- Amigo: a Data-Driven Calibration of the JWST Interferometer
- Image reconstruction with the JWST Interferometer
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19833a99fa8f0b294f10340201d11f0d1db406a71276bc461d2b3de2799c4841
|
|
| MD5 |
b13acca02ffefb4962793068f4241d58
|
|
| BLAKE2b-256 |
45f4a9131f5d36ab2cdf78cdd1dbe3ced18328e8b9b2b721e68f2ffc9eba0ab7
|
Provenance
The following attestation bundles were made for dlux-0.15.1.tar.gz:
Publisher:
release.yml on LouisDesdoigts/dLux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dlux-0.15.1.tar.gz -
Subject digest:
19833a99fa8f0b294f10340201d11f0d1db406a71276bc461d2b3de2799c4841 - Sigstore transparency entry: 2220563991
- Sigstore integration time:
-
Permalink:
LouisDesdoigts/dLux@c0b1b94cc25a2aa59af1db64dd62c204e49db5fd -
Branch / Tag:
refs/tags/v0.15.1 - Owner: https://github.com/LouisDesdoigts
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c0b1b94cc25a2aa59af1db64dd62c204e49db5fd -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9de93b7a820ef143a5e846d2db06e10e36cedec80f6911c0927eb8eacae5453
|
|
| MD5 |
fa7a0f45baf42f86f5b1bf93c4625a6b
|
|
| BLAKE2b-256 |
425863d863166fc1a3ec0478cc69eca3b347a5c4a23fe7b9dc266b7dff77daa5
|
Provenance
The following attestation bundles were made for dlux-0.15.1-py3-none-any.whl:
Publisher:
release.yml on LouisDesdoigts/dLux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dlux-0.15.1-py3-none-any.whl -
Subject digest:
b9de93b7a820ef143a5e846d2db06e10e36cedec80f6911c0927eb8eacae5453 - Sigstore transparency entry: 2220564442
- Sigstore integration time:
-
Permalink:
LouisDesdoigts/dLux@c0b1b94cc25a2aa59af1db64dd62c204e49db5fd -
Branch / Tag:
refs/tags/v0.15.1 - Owner: https://github.com/LouisDesdoigts
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c0b1b94cc25a2aa59af1db64dd62c204e49db5fd -
Trigger Event:
push
-
Statement type: