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.
parPE offers the following features:
- MPI-based load-balancing of individual simulations
- improved load balancing by intermingling multiple optimization runs (multi-start local optimization)
- simple integration with SBML models via AMICI and PEtab
- 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)
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/petab_model_import.md.
For full functionality, parPE requires the following libraries:
- CMAKE (>=3.15)
- 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.9, including header files
On Debian-based systems, dependencies can be installed via:
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/
:
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
).
After having taken care of the dependencies listed above, parPE can be built:
./buildAll.sh
Other sample build scripts are provided as /build*.sh
.
- GCC 10.2.0
- Intel icpc (ICC) 17.0.6
There is a Dockerfile available in container/charliecloud/
and images
can be found on dockerhub.
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
.
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
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.