diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 000000000..b7053c0f4 --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,24 @@ +name: Draft PDF +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v4 + - 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: paper/paper.md + - name: Upload + uses: actions/upload-artifact@v4 + 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: paper/paper.pdf diff --git a/paper/paper.bib b/paper/paper.bib index ca29f0ae6..b28310107 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -1,6 +1,4 @@ - - -@InProceedings{krämer2021probabilistic, +@InProceedings{krämer2021highdim, title = {Probabilistic {ODE} Solutions in Millions of Dimensions}, author = {Kr{\"a}mer, Nicholas and Bosch, Nathanael and Schmidt, Jonathan and Hennig, Philipp}, @@ -57,7 +55,6 @@ @inproceedings{beck2024diffusion url = {https://openreview.net/forum?id=43HZG9zwaj} } - @misc{wenger2021probnum, title = {ProbNum: Probabilistic Numerics in Python}, author = {Jonathan Wenger and Nicholas Krämer and Marvin Pförtner and @@ -68,4 +65,235 @@ @misc{wenger2021probnum eprint = {2112.02100}, archivePrefix ={arXiv}, primaryClass = {cs.MS} -} \ No newline at end of file +} + +@InProceedings{dalton2024, + title = {Data-Adaptive Probabilistic Likelihood Approximation for Ordinary Differential Equations}, + author = {Wu, Mohan and Lysy, Martin}, + booktitle = {Proceedings of The 27th International Conference on Artificial Intelligence and Statistics}, + pages = {1018--1026}, + year = {2024}, + editor = {Dasgupta, Sanjoy and Mandt, Stephan and Li, Yingzhen}, + volume = {238}, + series = {Proceedings of Machine Learning Research}, + month = {02--04 May}, + publisher = {PMLR}, + pdf = {https://proceedings.mlr.press/v238/wu24b/wu24b.pdf}, + url = {https://proceedings.mlr.press/v238/wu24b.html}, +} + +@article{rackauckas2017differentialequations, + title = {{DifferentialEquations.jl} – A Performant and Feature-Rich + Ecosystem for Solving Differential Equations in Julia}, + author = {Rackauckas, Christopher and Nie, Qing}, + journal = {Journal of Open Research Software}, + volume = 5, + number = 1, + year = 2017, + publisher = {Ubiquity Press} +} + +@misc{probdiffeq, + author = {Kr{\"a}mer, Nicholas}, + title = {probdiffeq: Probabilistic solvers for differential equations in JAX}, + year = {2023}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://github.com/pnkraemer/probdiffeq} +} + +@misc{jax2018github, + author = {James Bradbury and Roy Frostig and Peter Hawkins and Matthew + James Johnson and Chris Leary and Dougal Maclaurin and George + Necula and Adam Paszke and Jake Vander{P}las and Skye + Wanderman-{M}ilne and Qiao Zhang}, + title = {{JAX}: composable transformations of {P}ython+{N}um{P}y + programs}, + version = {0.2.5}, + year = 2018, +} + +@article{schober19, + author = "Schober, Michael and S{\"a}rkk{\"a}, Simo and Hennig, Philipp", + title = "A probabilistic model for the numerical solution of initial + value problems", + journal = "Statistics and Computing", + year = 2019, + month = "Jan", + day = 01, + volume = 29, + number = 1, + pages = "99--122", + issn = "1573-1375", + doi = "10.1007/s11222-017-9798-7", + url = "https://doi.org/10.1007/s11222-017-9798-7" +} + +@article{tronarp19, + author = {Filip Tronarp and Hans Kersting and Simo S{\"{a}}rkk{\"{a}} + and Philipp Hennig}, + title = {Probabilistic solutions to ordinary differential equations as + nonlinear {B}ayesian filtering: a new perspective}, + year = 2019, + volume = 29, + number = 6, + pages = {1297-1315}, + doi = {10.1007/s11222-019-09900-1}, + url = {https://doi.org/10.1007/s11222-019-09900-1}, + journal = {Statistics and Computing}, + timestamp = {Wed, 25 Mar 2020 09:31:58 +0100}, + biburl = {https://dblp.org/rec/journals/sac/TronarpKSH19.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + +@article{kersting20, + author = {Kersting, Hans and Sullivan, T. J. and Hennig, Philipp}, + title = {Convergence rates of Gaussian ODE filters}, + journal = {Statistics and Computing}, + year = 2020, + month = {Nov}, + day = 01, + volume = 30, + number = 6, + pages = {1791-1816}, + issn = {1573-1375}, + doi = {10.1007/s11222-020-09972-4}, + url = {https://doi.org/10.1007/s11222-020-09972-4} +} + +@article{tronarp21, + author = {Tronarp, Filip and S{\"a}rkk{\"a}, Simo and Hennig, Philipp}, + title = {Bayesian ODE solvers: the maximum a posteriori estimate}, + journal = {Statistics and Computing}, + year = 2021, + month = {Mar}, + day = 03, + volume = 31, + number = 3, + pages = 23, + issn = {1573-1375}, + doi = {10.1007/s11222-021-09993-7}, + url = {https://doi.org/10.1007/s11222-021-09993-7} +} + +@misc{bosch2023parallelintime, + title = {Parallel-in-Time Probabilistic Numerical {ODE} Solvers}, + author = {Nathanael Bosch and Adrien Corenflos and Fatemeh Yaghoobi and + Filip Tronarp and Philipp Hennig and Simo Särkkä}, + year = 2023, + eprint = {2310.01145}, + archivePrefix ={arXiv}, + primaryClass = {math.NA} +} + +@InProceedings{kersting20invprob, + title = {Differentiable Likelihoods for Fast Inversion of + ’{L}ikelihood-Free’ Dynamical Systems}, + author = {Kersting, Hans and Kr{\"a}mer, Nicholas and Schiegg, Martin + and Daniel, Christian and Tiemann, Michael and Hennig, + Philipp}, + booktitle = {Proceedings of the 37th International Conference on Machine + Learning}, + pages = {5198--5208}, + year = 2020, + editor = {Hal Daumé III and Aarti Singh}, + volume = 119, + series = {Proceedings of Machine Learning Research}, + month = {13--18 Jul}, + publisher = {PMLR}, + pdf = {http://proceedings.mlr.press/v119/kersting20a/kersting20a.pdf}, + url = {http://proceedings.mlr.press/v119/kersting20a.html}, +} + +@inproceedings{schmidt21, + author = {Schmidt, Jonathan and Kr\"{a}mer, Nicholas and Hennig, + Philipp}, + booktitle = {Advances in Neural Information Processing Systems}, + editor = {M. Ranzato and A. Beygelzimer and Y. Dauphin and P.S. Liang + and J. Wortman Vaughan}, + pages = {12374--12385}, + publisher = {Curran Associates, Inc.}, + title = {A Probabilistic State Space Model for Joint Inference from + Differential Equations and Data}, + url = + {https://proceedings.neurips.cc/paper/2021/file/6734fa703f6633ab896eecbdfad8953a-Paper.pdf}, + volume = 34, + year = 2021 +} + +@inproceedings{kraemer202bvp, + author = {Kr\"{a}mer, Nicholas and Hennig, Philipp}, + booktitle = {Advances in Neural Information Processing Systems}, + editor = {M. Ranzato and A. Beygelzimer and Y. Dauphin and P.S. Liang + and J. Wortman Vaughan}, + pages = {11160--11171}, + publisher = {Curran Associates, Inc.}, + title = {Linear-Time Probabilistic Solution of Boundary Value Problems}, + url = + {https://papers.nips.cc/paper/2021/hash/5ca3e9b122f61f8f06494c97b1afccf3-Abstract.html}, + volume = 34, + year = 2021 +} + +@InProceedings{kraemer22mol, + title = { Probabilistic Numerical Method of Lines for Time-Dependent + Partial Differential Equations }, + author = {Kr\"amer, Nicholas and Schmidt, Jonathan and Hennig, Philipp}, + booktitle = {Proceedings of The 25th International Conference on Artificial + Intelligence and Statistics}, + pages = {625--639}, + year = 2022, + editor = {Camps-Valls, Gustau and Ruiz, Francisco J. R. and Valera, + Isabel}, + volume = 151, + series = {Proceedings of Machine Learning Research}, + month = {28--30 Mar}, + publisher = {PMLR}, + pdf = {https://proceedings.mlr.press/v151/kramer22a/kramer22a.pdf}, + url = {https://proceedings.mlr.press/v151/kramer22a.html}, +} + +@InProceedings{bosch22pick, + title = { Pick-and-Mix Information Operators for Probabilistic {ODE} + Solvers }, + author = {Bosch, Nathanael and Tronarp, Filip and Hennig, Philipp}, + booktitle = {Proceedings of The 25th International Conference on Artificial + Intelligence and Statistics}, + pages = {10015--10027}, + year = 2022, + editor = {Camps-Valls, Gustau and Ruiz, Francisco J. R. and Valera, + Isabel}, + volume = 151, + series = {Proceedings of Machine Learning Research}, + month = {28--30 Mar}, + publisher = {PMLR}, + pdf = {https://proceedings.mlr.press/v151/bosch22a/bosch22a.pdf}, + url = {https://proceedings.mlr.press/v151/bosch22a.html}, +} + +@InProceedings{bosch21capos, + title = { Calibrated Adaptive Probabilistic {ODE} Solvers }, + author = {Bosch, Nathanael and Hennig, Philipp and Tronarp, Filip}, + booktitle = {Proceedings of The 24th International Conference on Artificial + Intelligence and Statistics}, + pages = {3466--3474}, + year = 2021, + editor = {Banerjee, Arindam and Fukumizu, Kenji}, + volume = 130, + series = {Proceedings of Machine Learning Research}, + month = {13--15 Apr}, + publisher = {PMLR}, + pdf = {http://proceedings.mlr.press/v130/bosch21a/bosch21a.pdf}, + url = {http://proceedings.mlr.press/v130/bosch21a.html}, +} + +@article{kraemer24stableimp, + author = {Nicholas Kr{{\"a}}mer and Philipp Hennig}, + title = {Stable Implementation of Probabilistic ODE Solvers}, + journal = {Journal of Machine Learning Research}, + year = 2024, + volume = 25, + number = 111, + pages = {1--29}, + url = {http://jmlr.org/papers/v25/20-1423.html} +} diff --git a/paper/paper.md b/paper/paper.md index b02850549..a871cdbe2 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -10,7 +10,6 @@ authors: - name: Nathanael Bosch orcid: 0000-0003-0139-4622 affiliation: 1 - corresponding: true affiliations: - name: Tübingen AI Center, University of Tübingen, Germany index: 1 @@ -20,106 +19,83 @@ bibliography: paper.bib # Summary -The forces on stars, galaxies, and dark matter under external gravitational -fields lead to the dynamical evolution of structures in the universe. The orbits -of these bodies are therefore key to understanding the formation, history, and -future state of galaxies. The field of "galactic dynamics," which aims to model -the gravitating components of galaxies to study their structure and evolution, -is now well-established, commonly taught, and frequently used in astronomy. -Aside from toy problems and demonstrations, the majority of problems require -efficient numerical tools, many of which require the same base code (e.g., for -performing numerical orbit integration). +Probabilistic numerical solvers have emerged as an efficient framework for simulation, uncertainty quantification, and inference in dynamical systems. +In comparison to traditional numerical methods which approximate the true trajectory of a system only by a single point estimate, probabilistic numerical solvers compute a _distribution_ over the true, unknown solution of the given differential equation +and thereby provide information about the numerical error incurred during the computation. +ProbNumDiffEq.jl implements such probabilistic numerical solvers for ordinary differential equations (ODEs) and differential algebraic equations (DAEs) in Julia, within the DifferentialEquations.jl ecosystem [@rackauckas2017differentialequations]. + +More concretely, ProbNumDiffEq.jl provides a range of probabilistic numerical methods which solve differential equations via Bayesian filtering and smoothing, +which have emerged as a particulary efficient and flexible class of probabilistic numerical methods for ODEs [@schober19; @kersting20; @tronarp19]. +These so-called "ODE filters" have known polynomial convergence rates +[@kersting20; @tronarp21] +and numerical stability properties (such as A-stability or L-stability) +[@tronarp19; @bosch2023probabilistic], +their computational complexity is comparable to traditional numerical methods +[@krämer2021highdim], +they are applicable to a range of numerical differential equation problems +[@kraemer202bvp; @kraemer22mol; @bosch22pick], +and they can be formulated parallel-in-time +[@bosch2023parallelintime]. +ODE filters also provide a natural framework for ODE parameter inference +[@kersting20invprob; @tronarp2022fenrir; @schmidt21; @beck2024diffusion]. +ProbNumDiffEq.jl implements many of the methods referenced above and packages them in an efficient, feature-rich, and documented software library. # Statement of need -`Gala` is an Astropy-affiliated Python package for galactic dynamics. Python -enables wrapping low-level languages (e.g., C) for speed without losing -flexibility or ease-of-use in the user-interface. The API for `Gala` was -designed to provide a class-based and user-friendly interface to fast (C or -Cython-optimized) implementations of common operations such as gravitational -potential and force evaluation, orbit integration, dynamical transformations, -and chaos indicators for nonlinear dynamics. `Gala` also relies heavily on and -interfaces well with the implementations of physical units and astronomical -coordinate systems in the `Astropy` package [@astropy] (`astropy.units` and -`astropy.coordinates`). - -`Gala` was designed to be used by both astronomical researchers and by -students in courses on gravitational dynamics or astronomy. It has already been -used in a number of scientific publications [@Pearson:2017] and has also been -used in graduate courses on Galactic dynamics to, e.g., provide interactive -visualizations of textbook material [@Binney:2008]. The combination of speed, -design, and support for Astropy functionality in `Gala` will enable exciting -scientific explorations of forthcoming data releases from the *Gaia* mission -[@gaia] by students and experts alike. - -# Mathematics - -Single dollars ($) are required for inline mathematics e.g. $f(x) = e^{\pi/x}$ - -Double dollars make self-standing equations: - -$$\Theta(x) = \left\{\begin{array}{l} -0\textrm{ if } x < 0\cr -1\textrm{ else} -\end{array}\right.$$ - -You can also use plain \LaTeX for equations -\begin{equation}\label{eq:fourier} -\hat f(\omega) = \int_{-\infty}^{\infty} f(x) e^{i\omega x} dx -\end{equation} -and refer to \autoref{eq:fourier} from text. - -# Citations - -Citations to entries in paper.bib should be in -[rMarkdown](http://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html) -format. - -If you want to cite a software repository URL (e.g. something on GitHub without a preferred -citation) then you can do it with the example BibTeX entry below for @fidgit. - -For a quick reference, the following citation commands can be used: -- `@author:2001` -> "Author et al. (2001)" -- `[@author:2001]` -> "(Author et al., 2001)" -- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)" - -- `@bosch20_calib_adapt_probab_ode_solver`: developed + implemented -- `@bosch21_pick_and_mix_infor_operat`: developed + implemented -- `@krämer2021probabilistic`: implemented -- `@tronarp2022fenrir`: developed + implemented -- `@bosch2023probabilistic`: developed + implemented -- `@beck2024diffusion`: developed -- `@wenger2021probnum`: related software package -- DALTON: did they compare against my code? -- BlackBox PN? Probabilistic richardson extrapolation paper? -- probdiffeq: related code - -# Figures - -Figures can be included like this: -![Caption for example figure.\label{fig:example}](figure.png) -and referenced from text using \autoref{fig:example}. - -Figure sizes can be customized by adding an optional second parameter: -![Caption for example figure.](figure.png){ width=20% } +Filtering-based probabilistic numerical ODE solvers have been an active field of research for the past decade and many improvements to existing methods as well as new approaches have been proposed in the literature, but so far their application in practical simulation and inference problems by practicioners has been limited. +ProbNumDiffEq.jl aims to help close this gap. +ProbNumDiffEq.jl implements probabilistic numerical methods as performant, documented, and easy-to-use ODE solvers inside the well-established DifferentialEquations.jl ecosystem [@rackauckas2017differentialequations], +and thereby benefits from the extensive testing, documentation, performance optimization, and additional features that DifferentialEquations.jl provides. +Users can easily find help and examples regarding many features that are not particular to ProbNumDiffEq.jl, and we aim to complement this documentation with ProbNumDiffEq.jl-specific examples and tutorials. +We believe that this deep integration within DifferentialEquations.jl can be a key feature to attract users to ProbNumDiffEq.jl by enabling users to use probabilistic ODE solvers as drop-in replacements for traditional ODE solvers in existing Julia codebases. + +On the other hand, ProbNumDiffEq.jl also aims to accelerate the development of new probabilistic numerical ODE solvers by providing a solid foundation to either build on or compare against. +A number of publications has been developed with ProbNumDiffEq.jl, including contributions on +step-size adaptation and calibration of these solvers [@bosch20_calib_adapt_probab_ode_solver], +energy-preserving solvers and DAE solvers [@bosch21_pick_and_mix_infor_operat], +linear-scaling methods for high-dimensional ODEs [@krämer2021probabilistic], +probabilistic exponential integrators [@bosch2023probabilistic], +and novel parameter inference algorithms [@tronarp2022fenrir; @beck2024diffusion]. +We also hope that by providing documented and performant implementations of published algorithms, we also facilitate researchers to use these methods as baselines when developing new (probabilistic) numerical solvers. + +At the time of writing, ProbNumDiffEq.jl is the only software package that provides a comprehensive set of probabilistic numerical ODE solvers in Julia. +Outside of Julia two other software packages provide a similar functionality. +ProbNum is a Python package that provides probabilistic numerical solvers for ODEs, but also for other numerical problems such as linear systems and quadrature [@probnumpaper]. +It is broader in scope than ProbNumDiffEq.jl and it provides a flexible and more complete filtering and smoothing API which facilitates certain use-cases such as latent force inference [@schmidt21]. +On the other hand, it lacks some of the specialized ODE solvers that are available in ProbNumDiffEq.jl and is generally less performant due to its reliance on Python and numpy. +ProbDiffEq is probabilistic numerical ODE solver package built on JAX [@probdiffeq]. +At the time of writing, it provides a very similar set of ODE solvers as ProbNumDiffEq.jl with the addition of certain filtering and smoothing mehtods and the lack of certain specialized ODE solvers, but as both ProbDiffEq and ProbNumDiffEq.jl are under active development this might change in the future. +And by building on JAX and leveraging it's just-in-time compilation capabilities, ProbDiffEq is able to provide ODE solvers with similar performance as those provided by ProbNumDiffEq.jl. +In summary, ProbNumDiffEq.jl provides one of the most feature-rich and performant probabilistic numerical ODE solver packages available, and it is the only one that is built on the Julia programming language. + +# Notes + +- @bosch21capos: developed + implemented +- @bosch22pick: developed + implemented +- @krämer2021probabilistic: implemented +- @tronarp2022fenrir: developed + implemented +- @bosch2023probabilistic: developed + implemented +- @beck2024diffusion: developed # Acknowledgements The authors gratefully acknowledge co-funding by the European Union (ERC, ANUBIS, 101123955. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council. Neither the European Union nor the granting authority can be held responsible for them). The authors thank the International Max Planck Research School for Intelligent Systems (IMPRS-IS) for supporting Nathanael Bosch. -The authors are grateful to Nicholas Krämer for many valuable discussion and to Jonathan Schmidt for feedback on the manuscript. +The authors thank Philipp Hennig for support throughout the development of this package. +The authors are greatful to Nicholas Krämer, Filip Tronarp, and Jonathan Schmidt for many valuable discussions about probabilistic numerical ODE solvers and their correct, efficient, and elegant implementation. We acknowledge contributions from -Pietro Monticone (@pitmonticone), -Vedant Puri (@vpuri3), -Tim Holy (@timholy), -Daniel González Arribas (@DaniGlez), -David Widmann (@devmotion), -Christopher Rackauckas (@ChrisRackauckas), -Qingyu Qu (@ErikQQY), -Cornelius Roemer (@corneliusroemer), -and Jose Storopoli (@storopoli). +Pietro Monticone (\@pitmonticone), +Vedant Puri (\@vpuri3), +Tim Holy (\@timholy), +Daniel González Arribas (\@DaniGlez), +David Widmann (\@devmotion), +Christopher Rackauckas (\@ChrisRackauckas), +Qingyu Qu (\@ErikQQY), +Cornelius Roemer (\@corneliusroemer), +and Jose Storopoli (\@storopoli). +We thank Christopher Rackauckas for support and feedback on how to integrate ProbNumDiffEq.jl with the DifferentialEquations.jl ecosystem and for including ProbNumDiffEq.jl into the testing pipeline of OrdinaryDiffEq.jl. # References