Skip to content

Import PEtab standard format

PEtab, from which PEtab.jl gets its name, is a flexible, table-based standard for specifying parameter estimation problems [8]. PEtab.jl has full support for both the PEtab v1 and PEtab v2 format.

Input: a valid PEtab problem

A tutorial on creating valid PEtab problems is available in the PEtab documentation, and there is also PEtab GUI [9] for creating problems via a graphical interface. Moreover, a large collection of ready-to-run PEtab problems is provided in the PEtab benchmark repository. In this tutorial, we use the Boehm model [10], which can be downloaded from here.

PEtab import

A PEtab problem consists of multiple tables (e.g., measurements, parameters to estimate) and a YAML file tying them together. To import a problem, the YAML path is needed:

julia
using PEtab
# path_yaml depends on where the model is saved
path_yaml = joinpath("boehm", "Boehm_JProteomeRes2014.yaml")
model = PEtabModel(path_yaml)

Given a PEtabModel, a PEtabODEProblem can be created:

julia
petab_prob = PEtabODEProblem(model)
PEtabODEProblem boehm: 9 parameters to estimate
(for more statistics, call `describe(petab_prob)`)

As described in the starting tutorial, this PEtabODEProblem can be used for downstream tasks such as parameter estimation or Bayesian inference.

Exporting a PEtab problem

After tasks like parameter estimation, a PEtab problem can be exported in the standard format using export_petab. For example, following multi-start optimization:

julia
using Fides
ms_res = calibrate_multistart(petab_prob, Fides.BFGS(), 10)
PEtabMultistartResult
  min(f)                = 1.50e+02
  Parameters estimated  = 9
  Number of multistarts = 10
  Optimiser algorithm   = Fides

using the best parameters in ms_res a PEtab problem can be exported to a target directory:

julia
dir_export = joinpath(@__DIR__, "petab_result")
export_petab(dir_export, petab_prob, ms_res)

Export requires PEtab standard format input

Currently export_petab only supports problems that were imported from the PEtab standard format.

What happens during PEtab import (deep dive)

During import, PEtab.jl performs the following steps:

  1. The SBML model is converted into a ReactionSystem using SBMLImporter.jl, and then into a ODESystem. The system is symbolically preprocessed (including symbolic Jacobian generation), which typically improves simulation performance.

  2. The PEtab observable table is translated into Julia functions for the observables (h), measurement noise/scale (σ), and initial conditions (u0).

  3. Any PEtab events are translated into Julia callbacks.

These steps happen automatically. To inspect the generated code, import with write_to_file = true to have these files written to dir_yaml/Julia_model_files/.

References

  1. L. Schmiester, Y. Schälte, F. T. Bergmann, T. Camba, E. Dudkin, J. Egert, F. Fröhlich, L. Fuhrmann, A. L. Hauber, S. Kemmer and others. PEtab—Interoperable specification of parameter estimation problems in systems biology. PLoS computational biology 17, e1008646 (2021).

  2. P. J. Jost, F. T. Bergmann, D. Weindl and J. Hasenauer. PEtab-GUI: A graphical user interface to create, edit and inspect PEtab parameter estimation problems, arXiv preprint arXiv:2511.11515 (2025).

  3. M. E. Boehm, L. Adlung, M. Schilling, S. Roth, U. Klingmüller and W. D. Lehmann. Identification of isoform-specific dynamics in phosphorylation-dependent STAT5 dimerization by quantitative mass spectrometry and mathematical modeling. Journal of proteome research 13, 5685–5694 (2014).