Skip to content

PEtab export

PEtab export writes an SBML model plus PEtab-compatible tabular files and a YAML manifest.

CLI workflow

ode2sbml convert decay_dict.py --output build/decay_petab --format petab

Expected output:

build/decay_petab/
├── decay.xml
├── conditions.tsv
├── measurements.tsv
├── observables.tsv
├── parameters.tsv
└── petab_problem.yaml

Python workflow with custom observables

from ode2sbml import from_dict, to_petab

model = {
    "species": {"S": 10.0, "P": 0.0},
    "parameters": {"k": 0.1},
    "odes": {"S": "-k*S", "P": "k*S"},
}

ir = from_dict(model, model_id="conversion")

observables = {
    "obs_P": {
        "name": "Product observable",
        "formula": "P",
        "noise_formula": "sigma_P",
        "transformation": "lin",
    }
}

measurements = [
    {
        "observableId": "obs_P",
        "simulationConditionId": "default_condition",
        "time": 0,
        "measurement": 0.0,
    }
]

yaml_path = to_petab(
    ir,
    "build/conversion_petab",
    observables=observables,
    measurements=measurements,
)

Parameter table behavior

If the model has no parameters, parameters.tsv is omitted from the PEtab manifest. This avoids PEtab writer failures on empty parameter data frames.

Default observables

Without a custom observables dictionary, the writer creates one linear observable per species.