Skip to content

Commit

Permalink
joss init
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaminpope committed Feb 9, 2024
1 parent a21f81c commit eec9b31
Show file tree
Hide file tree
Showing 4 changed files with 204 additions and 0 deletions.
23 changes: 23 additions & 0 deletions .github/workflows/draft-pdf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
on: [push]

jobs:
paper:
runs-on: ubuntu-latest
name: Paper Draft
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: joss/paper.md
- name: Upload
uses: actions/upload-artifact@v1
with:
name: paper
# This is the output path where Pandoc will write the compiled
# PDF. Note, this should be the same directory as the input
# paper.md
path: joss/paper.pdf
1 change: 1 addition & 0 deletions joss/joss_figure.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
### Script to generate whatever figure we have in the JOSS paper
97 changes: 97 additions & 0 deletions joss/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
@software{jax,
author = {James Bradbury and Roy Frostig and Peter Hawkins and Matthew James Johnson and Chris Leary and Dougal Maclaurin and Skye Wanderman-Milne},
title = {{JAX}: composable transformations of {P}ython+{N}um{P}y programs},
url = {http://github.com/google/jax},
version = {0.1.55},
year = {2018},
}

@inproceedings{hcipy,
author = {Por, E.~H. and Haffert, S.~Y. and Radhakrishnan, V.~M. and Doelman, D.~S. and Van Kooten, M. and Bos, S.~P.},
title = "{High Contrast Imaging for Python (HCIPy): an open-source adaptive optics and coronagraph simulator}",
booktitle = {Adaptive Optics Systems VI},
year = 2018,
series = {Proc. {{SPIE}}},
volume = 10703,
doi = {10.1117/12.2314407},
URL = {https://doi.org/10.1117/12.2314407}
}

@inproceedings{hcipy,
author = {Por, E.~H. and Haffert, S.~Y. and Radhakrishnan, V.~M. and Doelman, D.~S. and Van Kooten, M. and Bos, S.~P.},
title = "{High Contrast Imaging for Python (HCIPy): an open-source adaptive optics and coronagraph simulator}",
booktitle = {Adaptive Optics Systems VI},
year = 2018,
series = {Proc. {{SPIE}}},
volume = 10703,
doi = {10.1117/12.2314407},
URL = {https://doi.org/10.1117/12.2314407}
}

@article{prysm, doi = {10.21105/joss.01352}, url = {https://doi.org/10.21105/joss.01352}, year = {2019}, publisher = {The Open Journal}, volume = {4}, number = {37}, pages = {1352}, author = {Brandon Dube}, title = {prysm: A Python optics module}, journal = {Journal of Open Source Software} }

@article{Desdoigts2023,
doi = {10.1117/1.jatis.9.2.028007},
url = {https://doi.org/10.1117/1.jatis.9.2.028007},
year = {2023},
month = jun,
publisher = {{SPIE}-Intl Soc Optical Eng},
volume = {9},
number = {02},
author = {Louis Desdoigts and Benjamin J. S. Pope and Jordan Dennis and Peter G. Tuthill},
title = {Differentiable optics with $\partial$Lux: I{\textemdash}deep calibration of flat field and phase retrieval with automatic differentiation},
journal = {Journal of Astronomical Telescopes, Instruments, and Systems}
}

@article{Sitzmann2018,
title = {End-to-end optimization of optics and image processing for achromatic extended depth of field and super-resolution imaging},
volume = {37},
ISSN = {1557-7368},
url = {http://dx.doi.org/10.1145/3197517.3201333},
DOI = {10.1145/3197517.3201333},
number = {4},
journal = {ACM Transactions on Graphics},
publisher = {Association for Computing Machinery (ACM)},
author = {Sitzmann, Vincent and Diamond, Steven and Peng, Yifan and Dun, Xiong and Boyd, Stephen and Heidrich, Wolfgang and Heide, Felix and Wetzstein, Gordon},
year = {2018},
month = jul,
pages = {1–13}
}

@ARTICLE{Page2020,
author = {{Page}, Josue and {Favaro}, Paolo},
title = "{Learning to Model and Calibrate Optics via a Differentiable Wave Optics Simulator}",
journal = {arXiv e-prints},
keywords = {Electrical Engineering and Systems Science - Image and Video Processing, Computer Science - Computer Vision and Pattern Recognition},
year = 2020,
month = may,
eid = {arXiv:2005.08562},
pages = {arXiv:2005.08562},
doi = {10.48550/arXiv.2005.08562},
archivePrefix = {arXiv},
eprint = {2005.08562},
primaryClass = {eess.IV},
adsurl = {https://ui.adsabs.harvard.edu/abs/2020arXiv200508562P},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}


@ARTICLE{Liaudat2023,
author = {{Liaudat}, Tobias and {Starck}, Jean-Luc and {Kilbinger}, Martin and {Frugier}, Pierre-Antoine},
title = "{Rethinking data-driven point spread function modeling with a differentiable optical model}",
journal = {Inverse Problems},
keywords = {point spread function modeling, automatic differentiation, super-resolution, chromatic variations, matrix factorization, Astrophysics - Instrumentation and Methods for Astrophysics, Computer Science - Computer Vision and Pattern Recognition},
year = 2023,
month = mar,
volume = {39},
number = {3},
eid = {035008},
pages = {035008},
doi = {10.1088/1361-6420/acb664},
archivePrefix = {arXiv},
eprint = {2203.04908},
primaryClass = {astro-ph.IM},
adsurl = {https://ui.adsabs.harvard.edu/abs/2023InvPr..39c5008L},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

83 changes: 83 additions & 0 deletions joss/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: 'dLux: Differentiable Physical Optics in Jax'
tags:
- Python
- Physical Optics
- Telescopes
- Exoplanet Science

authors:
- name: Louis Desdoigts
orcid: 0000-0002-1015-9029
affiliation: 1 # (Multiple affiliations must be quoted)
corresponding: true
- name: Benjamin J. S. PopeS
affiliation: "2,3"
orcid: 0000-0003-2595-9114
- name: Jordan Dennis
affiliation: 2
orcid: 0000-0001-8125-6494
affiliations:
- name: School of Physics, University of Sydney, Cammperdown, NSW 2006, Australia
index: 1
- name: School of Mathematics and Physics, University of Queensland, St Lucia, QLD 4072, Australia
index: 2
- name: Centre for Astrophysics, University of Southern Queensland, West Street, Toowoomba, QLD 4350, Australia
index: 3
date: 9 Feb 2024
bibliography: paper.bib
---

# Summary

<!-- why physical optics in astronomy -->

<!-- what is dLux -->
`dLux`[^dlux] is an first open-source Python package for physical optics simulation. Using `jax` [@jax] it is differentiable and deploys natively on CPU, GPU, and parallelized HPC environments. `dLux` can perform Fourier optical simulations using matrix and FFT based propagation, as well as simulate linear and nonlinear detector effects.

<!-- more here -->

<!-- something about zodiax? -->

# Statement of need

<!-- describe problem and relevant citations -->

<!-- describe what has to happen in physical optics etc -->

<!-- alternative packages for astronomy: poppy, prysm, xaosim, hcipy, whatever liaudat has -->
Non-differentiable open-source physical optics packages used in astronomy include `poppy` [@poppy], `prysm` [@prysm], and in `WaveOpticsPropagation.jl`.

Differentiable alternatives to `dLux` used in astronomy so far include `WaveDiff` [@Liaudat2023] and recent versions of `hcipy` [@hcipy]...

<!-- alternative packages outside of astronomy -->
Similar approaches using differentiable optical models have been applied in the `DeepOptics` project [@Sitzmann2018] for general cameras and `WaveBlocks` [@Page2020] in microscopy... etc

<!-- dLux is open source: briefly explain its use -->
We introduce a new open-source physical optics package, `dLux` (named for taking *partial derivatives of light*), written in Python and using `jax`. It inherits an object oriented framework from `equinox`... etc

- class or feature 1
- class or feature 2, etc

<!-- cite Desdoigts papers it has been used in -->

# Documentation & Case Studies
<!-- briefly summarize tutorials -->

In the accompanying [documentation](https://louisdesdoigts.github.io/dLux), we have produced several notebooks illustrating use cases...

- [example 1](https://louisdesdoigts.github.io/dLux/notebooks/whatever/);

Figures produced for... are shown in \autoref{fig1}.
<!-- also ref joss_figure.py to make figure, or do similar with notebook, so that it is reproducible -->

![Figure Caption. \label{fig1}](joss_figure.png)

# Acknowledgements

<!-- whoever we acknowledge -->

# References
<!-- you are only supposed to put refs in the .bib if they are actually used -->

[^dlux]: [https://github.com/louisdesdoigts/dLux](https://github.com/louisdesdoigts/dLux)

0 comments on commit eec9b31

Please sign in to comment.