PEtab export
PEtab export writes an SBML model plus PEtab-compatible tabular files and a YAML manifest.
CLI workflow
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.