{"id":22697819,"url":"https://github.com/odinn-sciml/diffeqsensitivity-review","last_synced_at":"2025-04-22T20:18:41.393Z","repository":{"id":163222837,"uuid":"626053518","full_name":"ODINN-SciML/DiffEqSensitivity-Review","owner":"ODINN-SciML","description":"A Review of Sensitivity Methods for Differential Equations ","archived":false,"fork":false,"pushed_at":"2024-11-26T01:10:06.000Z","size":21425,"stargazers_count":30,"open_issues_count":16,"forks_count":14,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-22T20:18:34.928Z","etag":null,"topics":["differential-equations","machine-learning","optimization","sensitivity"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ODINN-SciML.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-10T17:42:19.000Z","updated_at":"2025-02-10T07:36:09.000Z","dependencies_parsed_at":"2023-11-14T05:21:18.023Z","dependency_job_id":"d92c33d4-0581-4654-8db5-8a28e7ece644","html_url":"https://github.com/ODINN-SciML/DiffEqSensitivity-Review","commit_stats":null,"previous_names":["odinn-sciml/diffeqsensitivity-review"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODINN-SciML%2FDiffEqSensitivity-Review","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODINN-SciML%2FDiffEqSensitivity-Review/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODINN-SciML%2FDiffEqSensitivity-Review/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODINN-SciML%2FDiffEqSensitivity-Review/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ODINN-SciML","download_url":"https://codeload.github.com/ODINN-SciML/DiffEqSensitivity-Review/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250316071,"owners_count":21410477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["differential-equations","machine-learning","optimization","sensitivity"],"created_at":"2024-12-10T05:15:47.010Z","updated_at":"2025-04-22T20:18:41.369Z","avatar_url":"https://github.com/ODINN-SciML.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Differentiable programming for Differential equations: a review\n\n[![CI](https://github.com/ODINN-SciML/DiffEqSensitivity-Review/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/ODINN-SciML/DiffEqSensitivity-Review/actions/workflows/CI.yml)\n![example workflow](https://github.com/ODINN-SciML/DiffEqSensitivity-Review/actions/workflows/latex.yml/badge.svg)\n![example workflow](https://github.com/ODINN-SciML/DiffEqSensitivity-Review/actions/workflows/biblatex.yml/badge.svg)\n\n[![All Contributors](https://img.shields.io/github/all-contributors/ODINN-SciML/DiffEqSensitivity-Review?color=ee8449\u0026style=flat-square)](#contributors)\n[![SciML Code Style](https://img.shields.io/static/v1?label=code%20style\u0026message=SciML\u0026color=9558b2\u0026labelColor=389826)](https://github.com/SciML/SciMLStyle)\n\n### ⚠️ New preprint available! 📖 ⚠️\n\nThe review paper is now available as a preprint on arXiv: https://arxiv.org/abs/2406.09699 \n\nIf you want to cite this work, please use this BibTex citation:\n\n```bibtex\n@misc{sapienza2024differentiable,\n      title={Differentiable Programming for Differential Equations: A Review}, \n      author={Facundo Sapienza and Jordi Bolibar and Frank Schäfer and Brian Groenke and Avik Pal and Victor Boussange and Patrick Heimbach and Giles Hooker and Fernando Pérez and Per-Olof Persson and Christopher Rackauckas},\n      year={2024},\n      eprint={2406.09699},\n      archivePrefix={arXiv},\n      primaryClass={id='math.NA' full_name='Numerical Analysis' is_active=True alt_name='cs.NA' in_archive='math' is_general=False description='Numerical algorithms for problems in analysis and algebra, scientific computation'}\n}\n```\n\n---\n\nThis respository contains all the text, code and figures used for the review paper about sentitivity methods for differential equations. This topic received different names in different communities, but the core problem is quite simple. Given a system of differential equations\n```math\n\\frac{du}{dt} = f(u, \\theta, t),\n```\nwith $u \\in \\mathbb R^n$ the unknow solution and $\\theta \\in \\mathbb R^p$ a vector of parameters, how do we compute the gradient of a loss function\n```math\n\\mathcal L (\\theta) = L ( u(\\cdot, \\theta) )\n```\nwith respect to the parameters $\\theta$ of the dynamical model?\n\nThere are different methods that try to solve this problem, and we had roughly classify them in the following scheeme.\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"tex/figures/scheme-methods.png\" width=\"50%\"\u003e\n\u003c/p\u003e  \n\u003cp align=\"center\"\u003e\t\n\t\u003ci\u003eSchematic classification of different methods to compute gradients of functions involving solutions of differential equations.\u003c/i\u003e\n\u003c/p\u003e\n\nThe goal of this review is to revisit all this methods and compare them.\n\n## Contributors\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://facusapienza.org\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/39526081?v=4?s=100\" width=\"100px;\" alt=\"Facundo Sapienza\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFacundo Sapienza\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#code-facusapienza21\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#doc-facusapienza21\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-facusapienza21\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#maintenance-facusapienza21\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#projectManagement-facusapienza21\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"#research-facusapienza21\" title=\"Research\"\u003e🔬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://jordibolibar.wordpress.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2025815?v=4?s=100\" width=\"100px;\" alt=\"Jordi Bolibar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJordi Bolibar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#doc-JordiBolibar\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-JordiBolibar\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#research-JordiBolibar\" title=\"Research\"\u003e🔬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://frankschae.github.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/42201748?v=4?s=100\" width=\"100px;\" alt=\"frankschae\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003efrankschae\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#code-frankschae\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#doc-frankschae\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-frankschae\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#research-frankschae\" title=\"Research\"\u003e🔬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://bgroenke.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/841306?v=4?s=100\" width=\"100px;\" alt=\"Brian Groenke\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrian Groenke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#code-bgroenks96\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#doc-bgroenks96\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-bgroenks96\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://avik-pal.github.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/30564094?v=4?s=100\" width=\"100px;\" alt=\"Avik Pal\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAvik Pal\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#code-avik-pal\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#doc-avik-pal\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#test-avik-pal\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://vboussange.github.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28376122?v=4?s=100\" width=\"100px;\" alt=\"vboussange\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evboussange\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#doc-vboussange\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-vboussange\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#research-vboussange\" title=\"Research\"\u003e🔬\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/heimbach\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5150349?v=4?s=100\" width=\"100px;\" alt=\"Patrick Heimbach\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePatrick Heimbach\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#doc-heimbach\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-heimbach\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#mentoring-heimbach\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e \u003ca href=\"#research-heimbach\" title=\"Research\"\u003e🔬\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/gileshooker\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/12737775?v=4?s=100\" width=\"100px;\" alt=\"gileshooker\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003egileshooker\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#doc-gileshooker\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-gileshooker\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#mentoring-gileshooker\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://statistics.berkeley.edu/people/fernando-perez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/57394?v=4?s=100\" width=\"100px;\" alt=\"Fernando Pérez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFernando Pérez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#doc-fperez\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#financial-fperez\" title=\"Financial\"\u003e💵\u003c/a\u003e \u003ca href=\"#ideas-fperez\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#mentoring-fperez\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.chrisrackauckas.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1814174?v=4?s=100\" width=\"100px;\" alt=\"Christopher Rackauckas\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChristopher Rackauckas\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#code-ChrisRackauckas\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#doc-ChrisRackauckas\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#financial-ChrisRackauckas\" title=\"Financial\"\u003e💵\u003c/a\u003e \u003ca href=\"#ideas-ChrisRackauckas\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#mentoring-ChrisRackauckas\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n\n## Code :computer:\n\nWe provide code for the different simulations and examples we exhibit in the project. Most of this code is provided in the Julia programming language, given that many of the libraries to perform sensitivity analysis are supported there, plus Julia solvers for differential equations are currently the state of the art in scientific computing.\n\n## How to use this repository :question:\n\nThis repository is organized in a way that contains most of the important elements of modern scientific workflow. We have included the following elements:\n- `tex`: This is the folder where all the latex text belongs and what we use to compile `main.pdf`.\n- `code`: Folder with both Jupyter notebooks and Julia scripts.\n- `CI`: Continuous integration with GitHub actions to automatically compile and commit the manuscript. \n- `Makefile`: make file that automatizes all the commands that can be executed within this repository.\n\n### Continuous integration\n\nThis repository has a [workflow](https://github.com/ODINN-SciML/DiffEqSensitivity-Review/blob/main/.github/workflows/latex.yml) implemented that automatically compiles the latex files into the file `main.pdf` and then commits this file directy to the repository. \nIf you are working from your fork, this action should also work and you should be able to generate the pdf file automatically using GitHub actions. \nIn order to trigger the GitHub action to compile and commit the Latex file, you just need to inclide the word `latex` in your commit message. \n\nThis repository also includes an action to automatically merge all `*.bib` files into one single bibliography file `tex/bibliography.bib` that includes just the references that are cited in any of the `*.tex` files. \t\nIn order to trigger this action, just include the word `bib-merge` in your commit message. \n\n### Makefile\n\nMake is an old but very useful technology that allows automation of computing processes. From the directory where you have this respository you can enter `make help` from a terminal to display the different functionalities currently supported in our `Makefile`. We currently support the following operations:\n- `make tex`: Compiles the `main.tex` latex file inside the folder `tex` with its respective bibliografy, deletes auxiliaries files in the process and them move the generated pdf file to the home directory.\n\n## Open Science from Scratch: contribute to the project! :wave:\n\nThis review started with some of the authors willing to understand this tools in a comprehensive way and gathering references from fields like statistics, applied mathematics and computer science. Unhappy with the lack of a general compendium of the different methods that exists to address this problem, we had decided to make a single document where all the methods can coexists under common ground and can be compareded under their different scopes and domains of applications.\n\nWe are driving by learning and undersranding and the original authors of this report decided to manage this as an open science project from the beginning. What does this entitles? Anyone interested in participating and contrubuting is welcome to join. We beleive that science will benefit for more open collaborations happening under the basis of people trying to understand a topic.\n\nWe encourage contributors to participate in this project! If you are interested in contributing, there are many ways in which you can help build this:\n- :collision: **Report bugs in the code.** You can report problems with the code by oppening issues under the `Issues` tab in this repository. Please explain the problem you encounter and try to give a complete description of it so we can follow up on that.\n- :books: **Suggest new bibliography.** If you are aware of references that may be useful to explore and expand this review, you can report it by creating an `Issue` in this repository, with the title of the issue being the title of the paper and adding the label `paper` to the issue.\n- :bulb: **Request new features and explanations.** If there is an important topic or example that you feel falls under the scope of this review and you would like us to include it, please request it! We are looking for new insights into what the community wants to learn.\n\n\n## Contact \n\nIf you have any questions or want to reach out, feel free to send us an email to `fsapienza@berkeley.edu`.\n\n## License \n\nThe content of this project itself is licensed under the [Creative Commons Attribution 3.0 Unported license](https://creativecommons.org/licenses/by/3.0/), and the underlying source code used to format and display that content is licensed under the [MIT license](LICENSE).\n\n\u003c!-- ## Reference\n\nIf you find this article useful, you can cite it as follows \n```\n\n``` --\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodinn-sciml%2Fdiffeqsensitivity-review","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fodinn-sciml%2Fdiffeqsensitivity-review","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodinn-sciml%2Fdiffeqsensitivity-review/lists"}