parpe

Parameter estimation for dynamical models using high-performance computing, batch and mini-batch optimizers, and dynamic load balancing.

https://github.com/icb-dcm/parpe

Science Score: 85.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 19 DOI reference(s) in README
  • Academic publication links
    Links to: biorxiv.org, zenodo.org
  • Committers with academic emails
    5 of 9 committers (55.6%) from academic institutions
  • Institutional organization owner
    Organization icb-dcm has institutional domain (www.mathematics-and-life-sciences.uni-bonn.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.8%) to scientific vocabulary

Keywords

amici dynamical-modeling hacktoberfest high-performance-computing ode optimization parameter-estimation petab sbml systems-biology

Keywords from Contributors

cvode sensitivity-analysis systemsbiology sensitivities pysb mechanistic-models kinetic-modeling idas forward-sensitivities differentialequations
Last synced: 4 months ago · JSON representation ·

Repository

Parameter estimation for dynamical models using high-performance computing, batch and mini-batch optimizers, and dynamic load balancing.

Basic Info
  • Host: GitHub
  • Owner: ICB-DCM
  • License: mit
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 56.5 MB
Statistics
  • Stars: 22
  • Watchers: 6
  • Forks: 4
  • Open Issues: 61
  • Releases: 18
Topics
amici dynamical-modeling hacktoberfest high-performance-computing ode optimization parameter-estimation petab sbml systems-biology
Created over 8 years ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License Citation

README.md

parPE tests Coverage PEtab test suite Deploy to dockerhub DOI

parPE

The parPE library provides functionality for solving large-scale parameter optimization problems requiring up to thousands of simulations per objective function evaluation on high performance computing (HPC) systems.

parPE offers easy integration with AMICI-generated ordinary differential equation (ODE) models.

Features

parPE offers the following features:

  • MPI-based load-balancing of individual simulations (if you don't need this, and don't require a C++ library, consider using the pypesto Python package which is more mature and user-friendly)
  • improved load balancing by intermingling multiple optimization runs (multi-start local optimization)
  • integration with SBML models via AMICI and PEtab
    • hierarchical optimization (https://doi.org/10.1093/bioinformatics/btz581)
  • interfaces to Ipopt, Ceres, FFSQP and SUMSL (CALGO/TOMS 611) optimizers
  • HDF5 I/O compatible with a wide variety of programming languages
  • Good parallel scaling to up to several thousand cores (highly problem dependent)

Note that this library has been developed for specific research questions and certain assumptions may not always hold. Use with caution. In particular, certain default settings may need adaptation (in particular, parallelization settings and AMICI settings such as the sensitivity method). PEtab support is patchy. Always verify your simulation results.

Getting started

Although various modules of parPE can be used independently, the most meaningful and convenient use case is parameter optimization for an SBML model specified in the PEtab format. This is described in doc/petabmodelimport.md.

Dependencies

For full functionality, parPE requires the following libraries:

  • CMAKE (>=3.22)
  • MPI (OpenMPI, MPICH, ...)
  • IPOPT (>= 1.2.7) (requires coinhsl)
  • CERES (>=1.13) (requires Eigen)
  • Boost (serialization, thread)
  • HDF5 (>= 1.10)
  • CBLAS compatible BLAS (libcblas, Intel MKL, ...)
  • AMICI (included in this repository) (uses SuiteSparse, Sundials)
  • C++17 compiler
  • Python >= 3.10, including header files

On Debian-based systems, dependencies can be installed via: shell sudo apt-get install \ build-essential \ cmake \ cmake-curses-gui \ coinor-libipopt-dev \ curl \ gfortran \ libblas-dev \ libboost-chrono-dev \ libboost-serialization-dev \ libboost-thread-dev \ libceres-dev \ libmpich-dev \ libhdf5-dev \ libpython3-dev \ python3-pip

Scripts to fetch and build the remaining dependencies are provided in /ThirdParty/:

shell ThirdParty/installDeps.sh

NOTE: When using ThirdParty/installIpopt.sh to build Ipopt, you may have to download the HSL library separately as described at https://coin-or.github.io/Ipopt/INSTALL.html#DOWNLOAD_HSL. Place the HSL archive into ThirdParty before running ThirdParty/installIpopt.sh. If asked type in your coinhsl version (e.g. 2019.05.21 if you have coinhsl-2019.05.21.tar.gz).

Building

After having taken care of the dependencies listed above, parPE can be built:

shell ./buildAll.sh

Other sample build scripts are provided as /build*.sh.

Recently tested compilers

  • GCC 14.2.0
  • Clang 18.1.3

Containers

There is a Dockerfile available in container/charliecloud/ and images can be found on dockerhub.

Documentation & further information

Some high-level documentation is available at https://parpe.readthedocs.io/en/latest/ and among GitHub issues. No extensive full-text documentation is available for the C++ interface yet. For usage of the C++ interface see examples/ and */tests.

References

parPE is being used or has been used in the following projects:

  • Leonard Schmiester, Yannik Schälte, Fabian Fröhlich, Jan Hasenauer, Daniel Weindl. Efficient parameterization of large-scale dynamic models based on relative measurements. Bioinformatics, btz581, doi:10.1093/bioinformatics/btz581 (preprint: doi:10.1101/579045).

  • Stapor, P., Schmiester, L., Wierling, C. et al. Mini-batch optimization enables training of ODE models on large-scale datasets. Nat Commun 13, 34 (2022). doi:10.1038/s41467-021-27374-6 (preprint: doi:10.1101/859884).

  • Paul F. Lang, David R. Penas, Julio R. Banga, Daniel Weindl, Bela Novak. Reusable rule-based cell cycle model explains compartment-resolved dynamics of 16 observables in RPE-1 cells. bioRxiv (2023). doi:10.1101/2023.05.04.539349

  • CanPathPro

Funding

parPE has been developed within research projects receiving external funding:

  • Through the European Union's Horizon 2020 research and innovation programme under grant agreement no. 686282 (CanPathPro).

  • Computer resources for testing parPE have been provided among others by the Gauss Centre for Supercomputing / Leibniz Supercomputing Centre under grant pr62li and pn72go.

Owner

  • Name: Data-driven Computational Modelling
  • Login: ICB-DCM
  • Kind: organization

Hasenauer Lab @ University of Bonn / Helmholtz Munich

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: parPE
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Daniel
    family-names: Weindl
    email: sci@danielweindl.de
    orcid: 'https://orcid.org/0000-0001-9963-6057'
  -
    family-names: "Stapor"
    given-names: "Paul"
    orcid: "https://orcid.org/0000-0002-7567-3985"
  -
    family-names: "Schmiester"
    given-names: "Leonard"
    orcid: "https://orcid.org/0000-0001-7946-3232"

repository-code: 'https://github.com/ICB-DCM/parPE/'
license: MIT
doi: 10.5281/zenodo.3478612
preferred-citation:
   type: article
   title: "Efficient parameterization of large-scale dynamic models based on relative measurements"
   doi: 10.1093/bioinformatics/btz581
   journal: "Bioinformatics"
   year: 2020
   month: 1
   start: 594
   end: 602
   issue: 2
   volume: 36
   authors:
      -
        family-names: "Schmiester"
        given-names: "Leonard"
        orcid: "https://orcid.org/0000-0001-7946-3232"
      -
        family-names: "Schälte"
        given-names: "Yannik"
        orcid: "https://orcid.org/0000-0003-1293-820X"
      -
        family-names: "Fröhlich"
        given-names: "Fabian"
        orcid: "https://orcid.org/0000-0002-5360-4292"
      -
        family-names: "Hasenauer"
        given-names: "Jan"
        orcid: "https://orcid.org/0000-0002-4935-3312"
      -
        family-names: "Weindl"
        given-names: "Daniel"
        orcid: "https://orcid.org/0000-0001-9963-6057"

GitHub Events

Total
  • Create event: 25
  • Release event: 3
  • Issues event: 5
  • Watch event: 2
  • Delete event: 24
  • Issue comment event: 73
  • Push event: 84
  • Pull request event: 48
Last Year
  • Create event: 25
  • Release event: 3
  • Issues event: 5
  • Watch event: 2
  • Delete event: 24
  • Issue comment event: 73
  • Push event: 84
  • Pull request event: 48

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 1,602
  • Total Committers: 9
  • Avg Commits per committer: 178.0
  • Development Distribution Score (DDS): 0.017
Past Year
  • Commits: 57
  • Committers: 2
  • Avg Commits per committer: 28.5
  • Development Distribution Score (DDS): 0.018
Top Committers
Name Email Commits
Daniel Weindl d****l@h****e 1,574
Paul Stapor p****r@h****e 15
leonard l****r@h****e 5
Simon Merkt s****t@u****e 2
PaulJonasJost 7****t 2
dependabot[bot] 4****] 1
Lars Gohr e****r 1
Katrin Leinweber k****i@p****e 1
fabian.froehlich f****h@h****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 14
  • Total pull requests: 90
  • Average time to close issues: 7 months
  • Average time to close pull requests: 11 days
  • Total issue authors: 3
  • Total pull request authors: 7
  • Average comments per issue: 0.29
  • Average comments per pull request: 1.12
  • Merged pull requests: 82
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 5
  • Pull requests: 38
  • Average time to close issues: 26 days
  • Average time to close pull requests: 1 day
  • Issue authors: 2
  • Pull request authors: 3
  • Average comments per issue: 0.2
  • Average comments per pull request: 1.0
  • Merged pull requests: 35
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • dweindl (13)
  • MerktSimon (1)
  • scheney-do (1)
Pull Request Authors
  • dweindl (108)
  • paulstapor (4)
  • dependabot[bot] (2)
  • PaulJonasJost (2)
  • MerktSimon (1)
  • elgohr (1)
  • stephanmg (1)
Top Labels
Issue Labels
enhancement (6) C++ (4) PEtab (2) Python (2) bug (1)
Pull Request Labels
dependencies (2)

Dependencies

deps/AMICI/documentation/rtd_requirements.txt pypi
  • breathe ==4.31.0
  • exhale ea77a313777c1382a7830ce9ee6c405ce47f5f3b
  • ipython >=7.28.0
  • matplotlib >=3.4.3
  • mock >=4.0.1
  • nbsphinx >=0.8.7
  • petab >=0.1.20
  • pkgconfig >=1.5.5
  • pygments ==2.10.0
  • pysb >=1.11.0
  • recommonmark >=0.6.0
  • setuptools >=45.2.0
  • sphinx ==4.2.0
  • sphinx-autodoc-typehints ==1.13.0
  • sphinx_rtd_theme >=1.0.0
  • sphinxcontrib-matlabdomain >=0.12.0
  • sphinxcontrib-napoleon *
doc/requirements_doc.txt pypi
  • IPython >=7.19.0
  • Sphinx ==4.0.3
  • breathe >=4.26.1
  • colorama *
  • coloredlogs *
  • exhale >=0.2.3
  • h5py *
  • m2r2 >=0.2.7
  • matplotlib *
  • nbsphinx >=0.8.1
  • numpy *
  • pandas *
  • petab *
  • sphinx-autodoc-typehints >=1.10.3
  • sphinx_rtd_theme >=0.5.1
  • sympy *
python/requirements.txt pypi
  • termcolor *
python/setup.py pypi
  • amici >=0.11.15
  • colorama >=0.4.3
  • coloredlogs >=15.0
  • h5py >=3.0.0
  • numpy >=1.18.1
  • petab >=0.1.18
  • python-libsbml >=5.17.0
  • snakemake >=5.10.0
  • termcolor >=1.1.0
.github/workflows/benchmark_models.yml actions
  • actions/checkout master composite
.github/workflows/deploy_dockerhub.yml actions
  • actions/checkout master composite
  • elgohr/Publish-Docker-Github-Action 2.8 composite
.github/workflows/parpe_tests.yml actions
  • actions/cache v1 composite
  • actions/checkout master composite
.github/workflows/petab_testsuite.yml actions
  • actions/checkout master composite
container/charliecloud/parpe_base/Dockerfile docker
  • ubuntu 20.04 build
deps/AMICI/docker/Dockerfile docker
  • ubuntu 20.04 build