Create parameter estimation problems for dynamic models
Getting Started | Documentation | Contributing
PEtab.jl is a Julia package for creating parameter estimation problems to fit ordinary differential equation (ODE) and scientific machine learning (SciML) models to time-series data.
Major features are:
- Define ODE parameter estimation problems directly in Julia, with models provided as
Catalyst.jl
ReactionSystem, ModelingToolkitBase.jlODESystem, an OrdinaryDiffEq.jlODEProblem, or as SBML model (imported via SBMLImporter.jl). Problems can be defined with a wide range of features, such as multiple observables and/or simulation conditions, events, and pre-equilibration (steady-state initialization). - SciML problem support for three ways of combining mechanistic ODE models with machine learning (ML) modules: (1) ML in the ODE dynamics (UDEs and Neural ODEs); (2) ML in the observable model linking simulations to data; and (3) pre-simulation ML models that map high-dimensional inputs to ODE parameters.
- Import and work with PEtab problems in both v1 and v2 of the PEtab format, as well as the PEtab-SciML standard format.
- Built on the SciML ecosystem, with access to performant stiff and non-stiff ODE solvers from OrdinaryDiffEq.jl, and efficient gradients via forward-mode automatic differentiation (small models) and adjoint sensitivity analysis (large models).
- High performant, often faster than the state-of-the-art toolbox AMICI by ~2× for gradient and parameter-estimation workloads persson2025petab.
- Parameter estimation via high-level wrappers for Optim.jl, Ipopt.jl, Fides.jl, and Optimization.jl.
- Practical identifiability analysis using profile likelihood via integration with LikelihoodProfiler.jl.
- State-of-the-art SciML model training strategies, such as curriculum learning and multiple shooting, via PEtabTraining.jl.
- High-level wrapper for Bayesian inference via AdvancedHMC.jl (including NUTS) and AdaptiveMCMC.jl.
PEtab.jl is a registered Julia package and can be installed with the Julia package manager using:
julia> import Pkg; Pkg.add("PEtab")PEtab.jl is compatible with Julia 1.10 and above. For additional installation details, see the documentation.
If you use PEtab.jl in work that is published, please cite the paper below:
@article{PEtabBioinformatics2025,
title={PEtab.jl: advancing the efficiency and utility of dynamic modelling},
author={Persson, Sebastian and Fr{\"o}hlich, Fabian and Grein, Stephan and Loman, Torkel and Ognissanti, Damiano and Hasselgren, Viktor and Hasenauer, Jan and Cvijovic, Marija},
journal={Bioinformatics},
volume={41},
number={9},
pages={btaf497},
year={2025},
publisher={Oxford University Press}
}