diff --git a/.github/workflows/deploy_protected.yml b/.github/workflows/deploy_protected.yml index c520896a70..5b32786c37 100644 --- a/.github/workflows/deploy_protected.yml +++ b/.github/workflows/deploy_protected.yml @@ -14,9 +14,8 @@ on: jobs: dockerhub: - # https://github.com/marketplace/actions/publish-docker name: Deploy Dockerhub - + if: github.event.pull_request.head.repo.fork == false runs-on: ubuntu-22.04 strategy: @@ -31,9 +30,9 @@ jobs: - uses: actions/checkout@v4 - run: git archive -o container/amici.tar.gz --format=tar.gz HEAD - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v4 with: diff --git a/.github/workflows/test_petab_test_suite.yml b/.github/workflows/test_petab_test_suite.yml index 1af341009f..6301269e03 100644 --- a/.github/workflows/test_petab_test_suite.yml +++ b/.github/workflows/test_petab_test_suite.yml @@ -85,6 +85,7 @@ jobs: tests/petab_test_suite/ - name: Codecov + if: github.event_name == 'pull_request' || github.repository_owner == 'AMICI-dev' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/test_python_cplusplus.yml b/.github/workflows/test_python_cplusplus.yml index 507283b156..fb90476eb8 100644 --- a/.github/workflows/test_python_cplusplus.yml +++ b/.github/workflows/test_python_cplusplus.yml @@ -66,6 +66,7 @@ jobs: ${AMICI_DIR}/python/tests/test_splines.py - name: Codecov Python + if: github.event_name == 'pull_request' || github.repository_owner == 'AMICI-dev' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} @@ -85,6 +86,7 @@ jobs: && lcov -a coverage_cpp.info -a coverage_py.info -o coverage.info - name: Codecov CPP + if: github.event_name == 'pull_request' || github.repository_owner == 'AMICI-dev' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} @@ -139,6 +141,7 @@ jobs: ${AMICI_DIR}/python/tests/test_splines_short.py - name: Codecov Python + if: github.event_name == 'pull_request' || github.repository_owner == 'AMICI-dev' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} @@ -158,6 +161,7 @@ jobs: && lcov -a coverage_cpp.info -a coverage_py.info -o coverage.info - name: Codecov CPP + if: github.event_name == 'pull_request' || github.repository_owner == 'AMICI-dev' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/test_sbml_semantic_test_suite.yml b/.github/workflows/test_sbml_semantic_test_suite.yml index cf03a5d458..ddc78e1b89 100644 --- a/.github/workflows/test_sbml_semantic_test_suite.yml +++ b/.github/workflows/test_sbml_semantic_test_suite.yml @@ -54,6 +54,7 @@ jobs: path: tests/amici-semantic-results - name: Codecov SBMLSuite + if: github.event_name == 'pull_request' || github.repository_owner == 'AMICI-dev' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 45edeb8adf..8c1fd68c5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,36 @@ ## v0.X Series +### v0.22.0 (2024-02-23) + +**Features** + +* PEtab import: User option to fail if model needs to be compiled + by @dilpath in https://github.com/AMICI-dev/AMICI/pull/2289 + + The `force_compile` argument is now **deprecated**. Use `compile_` instead. + +* Model import now adds a `.gitignore` file to the model output directory + by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2301 + +**Fixes** + +* **Fixed a bug that may have caused wrong simulation results for certain** + **SBML models that contain `rateOf`-expressions** + by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2291 +* More informative error message for `ReturnDataView.by_id` + by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2295 +* Fixed `ENABLE_AMICI_DEBUGGING=TRUE` not working with MSVC + by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2296 +* Fixed MANIFEST.in warning by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2297 +* (performance) Skip unnecessary toposorting in `DEModel._collect_heaviside_roots` + by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2299 +* (performance) Fix redundant calls to `Model::fdwdx` from `Model_ODE::fJ` + (only relevant for dense and banded solvers) + by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2298 + +**Full Changelog**: https://github.com/AMICI-dev/AMICI/compare/v0.21.2...v0.22.0 + ### v0.21.2 (2024-02-06) * Fixed `Solver` copyctor issues with swig4.2 that resulted in installation diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b6c9140e9..032a9fb084 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,7 +84,12 @@ endif() # Debug build? if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG -O0 -g) + add_compile_options(-UNDEBUG) + if(MSVC) + add_compile_options(-DEBUG) + else() + add_compile_options(-O0 -g) + endif() set(CMAKE_BUILD_TYPE "Debug") endif() diff --git a/documentation/ExampleJax.ipynb b/documentation/ExampleJax.ipynb index c9fbb589e5..53e03788da 100644 --- a/documentation/ExampleJax.ipynb +++ b/documentation/ExampleJax.ipynb @@ -572,7 +572,7 @@ "source": [ "from amici.petab.petab_import import import_petab_problem\n", "\n", - "amici_model = import_petab_problem(petab_problem, force_compile=True)" + "amici_model = import_petab_problem(petab_problem, compile_=True)" ] }, { diff --git a/documentation/amici_refs.bib b/documentation/amici_refs.bib index 4c31869d87..ef283eaf52 100644 --- a/documentation/amici_refs.bib +++ b/documentation/amici_refs.bib @@ -1100,19 +1100,20 @@ @Article{FroehlichGer2023 } @Article{FroehlichSor2022, - author = {Fröhlich, Fabian AND Sorger, Peter K.}, - journal = {PLOS Computational Biology}, - title = {Fides: Reliable trust-region optimization for parameter estimation of ordinary differential equation models}, - year = {2022}, - month = {07}, - number = {7}, - pages = {1-28}, - volume = {18}, - abstract = {Ordinary differential equation (ODE) models are widely used to study biochemical reactions in cellular networks since they effectively describe the temporal evolution of these networks using mass action kinetics. The parameters of these models are rarely known a priori and must instead be estimated by calibration using experimental data. Optimization-based calibration of ODE models on is often challenging, even for low-dimensional problems. Multiple hypotheses have been advanced to explain why biochemical model calibration is challenging, including non-identifiability of model parameters, but there are few comprehensive studies that test these hypotheses, likely because tools for performing such studies are also lacking. Nonetheless, reliable model calibration is essential for uncertainty analysis, model comparison, and biological interpretation. We implemented an established trust-region method as a modular Python framework (fides) to enable systematic comparison of different approaches to ODE model calibration involving a variety of Hessian approximation schemes. We evaluated fides on a recently developed corpus of biologically realistic benchmark problems for which real experimental data are available. Unexpectedly, we observed high variability in optimizer performance among different implementations of the same mathematical instructions (algorithms). Analysis of possible sources of poor optimizer performance identified limitations in the widely used Gauss-Newton, BFGS and SR1 Hessian approximation schemes. We addressed these drawbacks with a novel hybrid Hessian approximation scheme that enhances optimizer performance and outperforms existing hybrid approaches. When applied to the corpus of test models, we found that fides was on average more reliable and efficient than existing methods using a variety of criteria. We expect fides to be broadly useful for ODE constrained optimization problems in biochemical models and to be a foundation for future methods development.}, - creationdate = {2023-04-15T08:12:41}, - doi = {10.1371/journal.pcbi.1010322}, - publisher = {Public Library of Science}, - url = {https://doi.org/10.1371/journal.pcbi.1010322}, + author = {Fröhlich, Fabian and Sorger, Peter K.}, + journal = {PLOS Computational Biology}, + title = {Fides: Reliable trust-region optimization for parameter estimation of ordinary differential equation models}, + year = {2022}, + month = {07}, + number = {7}, + pages = {1-28}, + volume = {18}, + abstract = {Ordinary differential equation (ODE) models are widely used to study biochemical reactions in cellular networks since they effectively describe the temporal evolution of these networks using mass action kinetics. The parameters of these models are rarely known a priori and must instead be estimated by calibration using experimental data. Optimization-based calibration of ODE models on is often challenging, even for low-dimensional problems. Multiple hypotheses have been advanced to explain why biochemical model calibration is challenging, including non-identifiability of model parameters, but there are few comprehensive studies that test these hypotheses, likely because tools for performing such studies are also lacking. Nonetheless, reliable model calibration is essential for uncertainty analysis, model comparison, and biological interpretation. We implemented an established trust-region method as a modular Python framework (fides) to enable systematic comparison of different approaches to ODE model calibration involving a variety of Hessian approximation schemes. We evaluated fides on a recently developed corpus of biologically realistic benchmark problems for which real experimental data are available. Unexpectedly, we observed high variability in optimizer performance among different implementations of the same mathematical instructions (algorithms). Analysis of possible sources of poor optimizer performance identified limitations in the widely used Gauss-Newton, BFGS and SR1 Hessian approximation schemes. We addressed these drawbacks with a novel hybrid Hessian approximation scheme that enhances optimizer performance and outperforms existing hybrid approaches. When applied to the corpus of test models, we found that fides was on average more reliable and efficient than existing methods using a variety of criteria. We expect fides to be broadly useful for ODE constrained optimization problems in biochemical models and to be a foundation for future methods development.}, + creationdate = {2023-04-15T08:12:41}, + doi = {10.1371/journal.pcbi.1010322}, + modificationdate = {2024-02-23T18:10:55}, + publisher = {Public Library of Science}, + url = {https://doi.org/10.1371/journal.pcbi.1010322}, } @Article{ErdemMut2022, @@ -1163,15 +1164,6 @@ @InBook{Froehlich2023 url = {https://doi.org/10.1007/978-1-0716-3008-2_3}, } -@Misc{SluijsZho2023, - author = {Bob van Sluijs and Tao Zhou and Britta Helwig and Mathieu Baltussen and Frank Nelissen and Hans Heus and Wilhelm Huck}, - title = {Inverse Design of Enzymatic Reaction Network States}, - year = {2023}, - creationdate = {2023-07-06T10:39:46}, - doi = {10.21203/rs.3.rs-2646906/v1}, - modificationdate = {2023-07-06T10:40:37}, -} - @Article{BuckBas2023, author = {Michèle C. Buck and Lisa Bast and Judith S. Hecker and Jennifer Rivière and Maja Rothenberg-Thurley and Luisa Vogel and Dantong Wang and Immanuel Andrä and Fabian J. Theis and Florian Bassermann and Klaus H. Metzeler and Robert A.J. Oostendorp and Carsten Marr and Katharina S. Götze}, journal = {iScience}, @@ -1251,6 +1243,38 @@ @Misc{HuckBal2023 publisher = {Research Square Platform LLC}, } +@Article{LangPen2024, + author = {Lang, Paul F. and Penas, David R. and Banga, Julio R. and Weindl, Daniel and Novak, Bela}, + journal = {PLOS Computational Biology}, + title = {Reusable rule-based cell cycle model explains compartment-resolved dynamics of 16 observables in RPE-1 cells}, + year = {2024}, + month = {01}, + number = {1}, + pages = {1-24}, + volume = {20}, + abstract = {The mammalian cell cycle is regulated by a well-studied but complex biochemical reaction system. Computational models provide a particularly systematic and systemic description of the mechanisms governing mammalian cell cycle control. By combining both state-of-the-art multiplexed experimental methods and powerful computational tools, this work aims at improving on these models along four dimensions: model structure, validation data, validation methodology and model reusability. We developed a comprehensive model structure of the full cell cycle that qualitatively explains the behaviour of human retinal pigment epithelial-1 cells. To estimate the model parameters, time courses of eight cell cycle regulators in two compartments were reconstructed from single cell snapshot measurements. After optimisation with a parallel global optimisation metaheuristic we obtained excellent agreements between simulations and measurements. The PEtab specification of the optimisation problem facilitates reuse of model, data and/or optimisation results. Future perturbation experiments will improve parameter identifiability and allow for testing model predictive power. Such a predictive model may aid in drug discovery for cell cycle-related disorders.}, + creationdate = {2024-01-24T20:02:16}, + doi = {10.1371/journal.pcbi.1011151}, + modificationdate = {2024-02-23T18:10:08}, + publisher = {Public Library of Science}, + url = {https://doi.org/10.1371/journal.pcbi.1011151}, +} + +@Article{SluijsZho2024, + author = {van Sluijs, Bob and Zhou, Tao and Helwig, Britta and Baltussen, Mathieu G. and Nelissen, Frank H. T. and Heus, Hans A. and Huck, Wilhelm T. S.}, + journal = {Nature Communications}, + title = {Iterative design of training data to control intricate enzymatic reaction networks}, + year = {2024}, + issn = {2041-1723}, + month = feb, + number = {1}, + volume = {15}, + creationdate = {2024-02-23T17:09:35}, + doi = {10.1038/s41467-024-45886-9}, + modificationdate = {2024-02-23T17:09:35}, + publisher = {Springer Science and Business Media LLC}, +} + @Comment{jabref-meta: databaseType:bibtex;} @Comment{jabref-meta: grouping: diff --git a/documentation/references.md b/documentation/references.md index 00c3f40cc8..2164037aaf 100644 --- a/documentation/references.md +++ b/documentation/references.md @@ -1,6 +1,6 @@ # References -List of publications using AMICI. Total number is 82. +List of publications using AMICI. Total number is 83. If you applied AMICI in your work and your publication is missing, please let us know via a new GitHub issue. @@ -11,17 +11,35 @@ If you applied AMICI in your work and your publication is missing, please let us } +