PEtab changelog

0.2 series


  • Fixed a bug in SbmlModel.get_free_parameter_ids_with_values that led to potentially wrong initial values in the parameter mapping for parameters that are targets of initialAssignments (the value from their value was taken instead of the initial assignment) by @dweindl in


  • Fixed pandas FutureWarning in petab/visualize/ by @dweindl in

  • Added petab.Problem.n_{estimated,measurements,priors} by @dweindl in

  • Require pyarrow by @dweindl in

  • Full Changelog:…v0.2.8


  • Fixed a bug in flatten_timepoint_specific_output_overrides, which did not handle numeric values correctly

Full Changelog:…v0.2.7


  • Fixed flatten_timepoint_specific_output_overrides not supporting observableParameter overrides as placeholders in noise formulae by @dweindl in

  • Visualization: fixed replicate sorting by @plakrisenko in

  • Doc: Revised visualization examples by @dweindl in

Full Changelog:…v0.2.6


  • Fix accessing preequilibrationConditionId without checking for presence by @dweindl in

  • Startpoint sampling for a subset of parameters by @dweindl in

  • Treat observableParameter overrides as placeholders in noise formulae by @dilpath in

Full Changelog:…v0.2.5


  • Made figure sizes for visualization functions customizable via petab.visualize.plotting.DEFAULT_FIGSIZE by @dweindl in

  • Fixed Handling missing nominalValue in Problem.get_x_nominal by @dweindl in

  • Fixed pandas 2.1.0 FutureWarnings by @dweindl in

  • Added pre-commit-config, ran black, isort, … by @dweindl in

Full Changelog:…v0.2.4


  • Fixed validation failures in case of missing optional fields in visualization tables by @dweindl in

  • Make validate_visualization_df work without matplotlib installation by @dweindl @dilpath in

Full Changelog:…v0.2.3


  • Fixed IndexError with numpy 1.25.0 by @dweindl in

  • Made SbmlModel.from_file(..., model_id) optional by @dilpath in

Full Changelog:…v0.2.2



  • Fixed an issue in Problem.to_files(model_file=...) (#204)

  • Fixed PySBModel.get_parameter_value, which incorrectly returned the parameter name instead of its value (#203)

Full Changelog:…v0.2.1


Note: petab 0.2.0 requires Python>=3.9


  • Plot measurements for t = ‘inf’ by @plakrisenko in

  • Added validation for visualization files by @dweindl in

  • Startpoints as dict by @dweindl in

  • Residuals plot by @plakrisenko in

  • add goodness of fit plot by @plakrisenko in

  • Add PySBModel for handling of PySB models by @dweindl in


  • Vis: Don’t fail on missing simulations by @dweindl in

  • prevent strings being parsed as nan in get_visualization_df by @plakrisenko in

  • Fix get_model_for_condition by @dweindl in

  • Simulator: rename measurement column to simulation by @dilpath in

  • Fix sympy symbol name clashes by @dweindl in

Full Changelog:…v0.2.0

0.1 series


Various smaller fixes:

  • Vis: Handle missing data more gracefully by @dweindl in

  • Fix test dependencies: scipy by @dweindl in

  • Add petab.Problem.__str__ by @dweindl in

  • Fix deprecated tight layout matplotlib by @yannikschaelte in

  • Move tests to tox by @yannikschaelte in

  • Update deprecated functions in tests by @yannikschaelte in

  • Use petab identifier for combine archives by @fbergmann in

New Contributors

  • @fbergmann made their first contribution in

Full Changelog:…v0.1.30



  • Method to unflatten simulation dataframe produced by flattened PEtab problem by @dilpath in

  • Methods to simplify PEtab problems by @dweindl in


  • Fix relative paths for model files by @dilpath in

Full Changelog…v0.1.29


  • Fixed validation for output parameters columns in the condition table by @dweindl in

  • Added Python support policy by @dweindl in

  • Fixed typehints and deprecation warning by @dweindl in

  • Fixed SBML validation by @dweindl in

  • Fixed deprecation warning from get_model_for_condition by @dweindl in

Full Changelog:…v0.1.28



  • Added method to check if measurement time is at steady-state by @dilpath in

  • Create dummy simulation conditions dataframe for empty measurements by @dilpath in

  • Validator: Report empty noiseFormula by @dweindl in

  • Speedup visspec assembly / fix deprecation warning by @dweindl in

  • Handle incomplete PEtab problems in petab.Problem.from_yaml by @dweindl in

  • Argument forwarding for Problem.get_optimization_to_simulation_parameter_mapping by @dweindl in

  • Added candidate schema for version 2 by @dweindl in

  • get_parameter_df: Allow any collection of parameter tables by @dweindl in, @m-philipps in, @dilpath in

  • Updated visualization example notebooks by @dweindl in, by @plakrisenko in, by @plakrisenko in

  • Added support for PEtab problems with multiple condition files by @dweindl in

  • Added abstraction for (SBML) models by @dweindl in


  • Apply get table method before write table method to ensure correct index by @dilpath in

  • petablint: Fix incorrect noise-parameter-mismatch error message by @dweindl in

  • Fixed handling of NaN values for parameters in condition table by @dweindl in

  • More informative petab.calculate errors by @dweindl in


  • Removed ancient/deprecated default file naming scheme by @dweindl in

  • Removed ancient deprecated functions related to specifying observables/noise models inside SBML by @dweindl in

  • Removed deprecated visualization functions by @dweindl in

New Contributors

  • @m-philipps made their first contribution in

Full Changelog:…v0.1.27


  • Fix SBML Rule handling logic by @dweindl in


  • Fix for pytest 7.1 by @yannikschaelte in

  • Fix jinja version by @dilpath in

  • Add steady state constant by @dilpath in

  • Omit measurement processing if not relevant for parameter mapping by @FFroehlich in

Full Changelog:…v0.1.25


  • Added method to generate condition-specific SBML models by @dweindl in

  • GHA: Regular package installation instead of -e by @dweindl in

  • Fixed unclosed file warnings by @dilpath in

Full Changelog:…v0.1.24


  • Added command line interface for plotting by @dweindl in

  • Fixed petab.visualize.data_overview.create_report by @dweindl in,

  • Vis: Fixed cropped errorbars by @dweindl in

  • Fixed pandas deprecation warning by @dweindl in

… and other changes by @plakrisenko, @dweindl

Full Changelog:…v0.1.23


  • Allow zero bounds for log parameters by @FFroehlich in

  • Adapt to Matplotlib 3.5 by @dweindl in

  • Allow specifying file format for visualization by @dweindl in

  • Visualization: Don’t mess with rcParams by @dweindl in

  • Linter: Check condition IDs are unique by @dweindl in

  • Add support for pathlib for reading PEtab tables by @dweindl, @dilpath in,

  • Run tests also on Python 3.10 by @dweindl in

  • Fix remote file retrieval on Windows @dweindl, @dilpath in

  • Fix test suite for Windows @dweindl, @dilpath in

Full Changelog:…v0.1.22


  • PEtab spec compliance: measurements must now be not null, and numeric (#76)

    • Users who relied on null measurements for simulation/plotting are recommended to store these dummy simulation-only measurements in an additional file, separate to real measurements used for calibration

  • Improve Unicode support (#79, fixes #77)

  • Convenience methods to scale or unscale a parameter vector (#78)


  • Visualization: plot additional simulation points (not only at measurements) (#62), bugfix (#68)

  • Documentation: visualization, observables, simulation, Sphinx fixes (#67)

  • Lint: ensure valid parameter IDs in observable and noise parameters (#69)

  • Convenience method for quick export of a PEtab problem to files (#71)


  • Visualization: refactoring (#58) including various bug fixes

  • Validation: Fixed detection of missing observable/noise parameter overrides (#64)

  • Optional relative paths in generated YAML (#57)


  • Fixed various documentation issues

  • Parameter mapping: Added option to ignore time-point specific noiseParameters (#51)


  • Updated package URL

  • Fixed noise formula check (#49)

  • Fixed override check and add noise formula check (#48)

  • Fixed timepoint override check (#47)


Update python version for pypi deployment, no further changes


NOTE: The original PEtab format + petab package repository has been split up (PEtab-dev/libpetab-python#41). This repository now only contains the petab Python package. The PEtab specifications and related information are available at

  • Improved petab.flatten_timepoint_specific_output_overrides (PEtab-dev/libpetab-python#42)

  • Validator: output message in case of successful check is added (PEtab-dev/PEtab#487)

  • Update how-to-cite (Closes PEtab-dev/PEtab#432) (PEtab-dev/PEtab#509)

  • Broadcast and mapping of scale and unscale functions (PEtab-dev/PEtab#505)

  • Update Python requirement (3.7.1) (PEtab-dev/PEtab#502)

  • Fix petab.get_required_parameters_for_parameter_table (PEtab-dev/libpetab-python#43)

  • Fix petab.measurement_table_has_timepoint_specific_mappings (PEtab-dev/libpetab-python#44)


  • Fix sampling of priors in parameterScale (PEtab-dev/PEtab#492)

  • Clarify documentation of parameterScale priors

  • Improvements in petab.simulate (PEtab-dev/PEtab#479):

    • Fix default noise distributions

    • Add option for non-negative synthetic data


  • Fix for pandas 1.2.0 – use get_handle instead of get_filepath_or_buffer

  • Fix erroneous petab_test_suite symlink (all PEtab-dev/PEtab#493)


  • Documentation update:

    • Added SBML2Julia to list of tools supporting PEtab

    • Extended PEtab introduction

    • Tutorial for creating PEtab files

  • Minor fix: Default argument for optional ‘model’ parameter in `petab.lint.check_condition_df`` (PEtab-dev/PEtab#477)


  • Function for generating synthetic data (PEtab-dev/PEtab#472)

  • Minor documentation updates (PEtab-dev/PEtab#470)


  • Fixed deployment setup, no further changes.*



  • Allow URL as filenames for YAML files and SBML models (Closes PEtab-dev/PEtab#187) (PEtab-dev/PEtab#459)

  • Allow model time in observable formulas (PEtab-dev/PEtab#445)

  • Make float parsing from CSV round-trip (PEtab-dev/PEtab#444)

  • Validator: Error message for missing IDs, with line numbers. (PEtab-dev/PEtab#467)

  • Validator: Detect duplicated observable IDs (PEtab-dev/PEtab#446)

  • Some documentation and CI fixes / updates

  • Visualization: Add option to save visualization specification (PEtab-dev/PEtab#457)

  • Visualization: Column XValue not mandatory anymore (PEtab-dev/PEtab#429)

  • Visualization: Add sorting of indices of dataframes for the correct sorting of x-values (PEtab-dev/PEtab#430)

  • Visualization: Default value for the column x_label in vis_spec (PEtab-dev/PEtab#431)



  • Use core.is_empty to check for empty values (PEtab-dev/PEtab#434)

  • Move tests to python 3.8 (PEtab-dev/PEtab#435)

  • Update to libcombine 0.2.6 (PEtab-dev/PEtab#437)

  • Make float parsing from CSV round-trip (PEtab-dev/PEtab#444)

  • Lint: Allow model time in observable formulas (PEtab-dev/PEtab#445)

  • Lint: Detect duplicated observable ids (PEtab-dev/PEtab#446)

  • Fix likelihood calculation with missing values (PEtab-dev/PEtab#451)


  • Move format documentation to restructuredtext format (PEtab-dev/PEtab#452)

  • Document all noise distributions and observable scales (PEtab-dev/PEtab#452)

  • Fix documentation for prior distribution (PEtab-dev/PEtab#449)


  • Make XValue column non-mandatory (PEtab-dev/PEtab#429)

  • Apply correct condition sorting (PEtab-dev/PEtab#430)

  • Apply correct default x label (PEtab-dev/PEtab#431)



  • Update coverage and links of supporting tools

  • Update explanatory figure



  • Fix handling of empty columns for residual calculation (PEtab-dev/PEtab#392)

  • Allow optional fixing of fixed parameters in parameter mapping (PEtab-dev/PEtab#399)

  • Fix function to flatten out time-point specific overrides (PEtab-dev/PEtab#404)

  • Add function to create a problem yaml file (PEtab-dev/PEtab#398)

  • Allow merging of multiple parameter files (PEtab-dev/PEtab#407)


  • In README, add to the overview table the coverage for the supporting tools, and links and usage examples (various commits)

  • Show README on readthedocs documentation front page (PEtab-dev/PEtab#400)

  • Correct description of observable and noise formulas (PEtab-dev/PEtab#401)

  • Update documentation on optional visualization values (PEtab-dev/PEtab#405, PEtab-dev/PEtab#419)


  • Fix sorting problem (PEtab-dev/PEtab#396)

  • More generously handle optional values (PEtab-dev/PEtab#405, PEtab-dev/PEtab#419)

  • Create dataset id also for simulation dataframe (PEtab-dev/PEtab#408)

  • Extend test suite for visualization (PEtab-dev/PEtab#418)



  • New create empty observable function (issue 386) (PEtab-dev/PEtab#387)

  • Deprecate petab.sbml.globalize_parameters (PEtab-dev/PEtab#381)

  • Fix computing log10 likelihood (PEtab-dev/PEtab#380)

  • Documentation update and typehints for visualization (PEtab-dev/PEtab#372)

  • Ordered result of petab.get_output_parameters

  • Fix missing argument to parameters.create_parameter_df


  • Add overview of supported PEtab feature in toolboxes

  • Add contribution guide

  • Fix optional values in documentation (PEtab-dev/PEtab#378)



  • Fixes / updates in functions for computing llh and chi2

  • Allow and require output parameters defined in observable table to be defined in parameter table

  • Fix merge_preeq_and_sim_pars_condition which incorrectly assumed lists instead of dicts

  • Update parameter mapping to deal with species and compartments in condition table

  • Removed petab.migrations.sbml_observables_to_table

    For converting older PEtab files to observable table format, use one of the previous releases

  • Visualization:

    • Fix various issues with get_data_to_plot

    • Fixed various issues with expected presence of optional columns


File format:

  • Updated documentation

  • Observables table in YAML file now mandatory in schema (was implicitly mandatory before, as observable table was required already)


  • petablint:

    • Fix: allow specifying observables file via CLI (Closes PEtab-dev/PEtab#302)

    • Fix: nominalValue is optional unless estimated!=1 anywhere (Fixes PEtab-dev/PEtab#303)

    • Fix: handle undefined observables more gracefully (Closes PEtab-dev/PEtab#300) (PEtab-dev/PEtab#351)

  • Parameter mapping:

    • Fix / refactor parameter mapping (breaking change) (PEtab-dev/PEtab#344) (now performing parameter value and scale mapping together)

    • check optional measurement cols in mapping (PEtab-dev/PEtab#350)

  • allow calculating llhs (PEtab-dev/PEtab#349), chi2 values (PEtab-dev/PEtab#348) and residuals (PEtab-dev/PEtab#345)

  • Visualization

    • Basic Scatterplots & lot of bar plot fixes (PEtab-dev/PEtab#270)

    • Fix incorrect length of bool bool_preequ when subsetting with ind_meas (Closes PEtab-dev/PEtab#322)

  • make libcombine optional (PEtab-dev/PEtab#338)



  • Extensions and fixes for the visualization functions (PEtab-dev/PEtab#255, PEtab-dev/PEtab#262)

  • Allow to extract fixed|free and scaled|non-scaled parameters (PEtab-dev/PEtab#256, PEtab-dev/PEtab#268, PEtab-dev/PEtab#273)

  • Various fixes (esp. PEtab-dev/PEtab#264)

  • Add function to get observable ids (PEtab-dev/PEtab#269)

  • Improve documentation (esp. PEtab-dev/PEtab#289)

  • Set default column for simulation results to ‘simulation’

  • Add support for COMBINE archives (PEtab-dev/PEtab#271)

  • Fix sbml observables to table

  • Improve prior and dataframe tests (PEtab-dev/PEtab#285, PEtab-dev/PEtab#286, PEtab-dev/PEtab#297)

  • Add function to get parameter table with all default values (PEtab-dev/PEtab#288)

  • Move tests to github actions (PEtab-dev/PEtab#281)

  • Check for valid identifiers

  • Fix handling of empty values in dataframes

  • Allow to get numeric values in parameter mappings in scaled form (PEtab-dev/PEtab#308)



  • Fix parameter mapping: include output parameters not present in SBML model

  • Fix missing petab/petab_schema.yaml in source distribution

  • Let get_placeholders return an (ordered) list of placeholders

  • Deprecate petab.problem.from_folder and related functions (obsolete after introducing more flexible YAML files for grouping tables and models)


Data format:

  • Introduce observables table instead of SBML assignment rules for defining observation model (PEtab-dev/PEtab#244) (moves observableTransformation and noiseModel from the measurement table to the observables table)

  • Allow initial concentrations / sizes in condition table (PEtab-dev/PEtab#238)

  • Fixes and clarifications in the format documentation

  • Changes in prior columns of the parameter table (PEtab-dev/PEtab#222)

  • Introduced separate version number of file format, this release being version 1


  • Adaptations to new file formats

  • Various bugfixes and clean-up, especially in visualization and validator

  • Parameter mapping changed to include all model parameters and not only those differing from the ones defined inside the SBML model

  • Introduced constants for all field names and string options, replacing most string literals in the code (PEtab-dev/PEtab#228)

  • Added unit tests and additional format validation steps

  • Optional parallelization of parameter mapping (PEtab-dev/PEtab#205)

  • Extended documentation (in-source and example Jupyter notebooks)


Bugfix release

  • Fix petablint error

  • Fix minor issues in petab.visualize


Data format:

  • Update format and documentation with respect to data and parameter scales (PEtab-dev/PEtab#169)

  • Define YAML schema for grouping PEtab files, also allowing for more complex combinations of files (PEtab-dev/PEtab#183)


  • Refactor library. Reorganize petab.core functions.

  • Fix visualization w/o condition names PEtab-dev/PEtab#142

  • Extend validator

  • Removed deprecated functions petab.Problem.get_constant_parameters and petab.sbml.constant_species_to_parameters

  • Minor fixes and extensions

0.0 series


Data format: No changes


  • Extended visualization support

  • Add helper function and test case to deal with timepoint-specific parameters flatten_timepoint_specific_output_overrides (PEtab-dev/PEtab#128) (Closes PEtab-dev/PEtab#125)

  • Fix get_noise_distributions: so far we got ‘normal’ everywhere due to wrong grouping (PEtab-dev/PEtab#147)

  • Fix create_parameter_df: Exclude rule targets (PEtab-dev/PEtab#149)

  • Verify condition table column names occur as model parameters (Closes PEtab-dev/PEtab#150) (PEtab-dev/PEtab#151)

  • More informative error messages in case of wrongly set observable and noise parameters (Closes PEtab-dev/PEtab#118) (PEtab-dev/PEtab#155)

  • Update doc for copasi import and github installation (PEtab-dev/PEtab#158)

  • Extend validator to check if all required parameters are present in parameter table (Closes PEtab-dev/PEtab#43) (PEtab-dev/PEtab#159)

  • Setup documentation for RTD (PEtab-dev/PEtab#161)

  • Handle None in petab.core.split_parameter_replacement_list (Closes PEtab-dev/PEtab#121)

  • Fix(lint) correct handling of optional columns. Check before access.

  • Remove obsolete (Closes PEtab-dev/PEtab#111) PEtab-dev/PEtab#166

0.0.0a16 and earlier

See git history