Repository navigation
Releases
libpetab-python v0.10.0
This release focuses on PEtab v2: a more faithful v1-to-v2 conversion, support for multi-model problems, conversion of time-dependent model assignments to experiments, log-scale reparametrization, and cleaner table output.
Note: the deprecated top-level petab.* aliases for petab.v1 are gone (use import petab.v1 as petab), and pandas>=2.3 is now required.
Breaking changes
- Removed the deprecated top-level aliases for
petab.v1(deprecated since 0.4.0). Accessingpetab.<name>or importingpetab.<module>for anything other thanpetab.v1,petab.v2,petab.ENV_NUM_THREADSandpetab.__version__now raisesAttributeError/ModuleNotFoundError. Usepetab.v1.<name>instead, e.g.,import petab.v1 as petab.import petabno longer importspetab.v1. (by @dweindl in #538) - Require
pandas>=2.3.get_{condition,observable,parameter,mapping}_dfno longer modify DataFrames passed by the caller (by @dweindl in #571) - Removed the
tests,docandqualityextras. Development dependencies are now dependency groups. Newallextra for all optional features (by @dweindl in #564) petab.v2.Parameterhas a newnamefield for theparameterNamecolumn, which was previously stored as an extra attributeparameterName.BaseTablesubclasses now implement_to_dfinstead ofto_df. (by @dweindl in #543)
Fixes
petablint:
petablintno longer fails for PEtab v2 problems with only warnings, consistent with PEtab v1. Warnings are still reported. The previous behavior can be restored via--fail-on-warnings(currently only effective for PEtab v2) (by @dweindl in #569)
v1:
- Raise a clear error for a PEtab YAML file with an empty
problemssection (by @dweindl in #521) petab.v1.sbml.get_model_for_conditionno longer turns rate-rule targets that are overridden in the condition table into constants (by @dweindl in #520)
v2 tables and files:
- Loading and saving v2 tables no longer adds a spurious
indexcolumn (by @dweindl in #542) to_dfno longer fails for empty v2 parameter, observable and measurement tables (by @dweindl in #543)petab.v2.ConditionTable.from_dfno longer stores the condition ID on eachChange, which caused renamed conditions to be written with their old ID (by @dweindl in #551)petab.v2.ProblemConfig.to_yamlno longer writes empty optional entries (condition_files,experiment_files,mapping_files,extensions) (by @dweindl in #547)
v1-to-v2 conversion (petab1to2):
- Keep pre-equilibration for conditions that set nothing, order placeholders by index instead of lexicographically, rescale noise and priors when converting
log10tolog, and fix the conversion oflogNormal,logLaplaceandparameterScaleUniformpriors (by @FFroehlich in #532, #533, #535, and #536) - No longer add default
uniformpriors to non-estimated parameters, or if no estimated parameter has an objective prior (by @dweindl in #539) - No longer write condition tables without any condition-specific changes (by @dweindl in #554)
- Rename a pre-existing
experimentIdcolumn in the measurement table toexperimentId_v1*instead of a random name, and warn about it (by @dweindl in #572)
v2 converters:
petab.v2.converters.ExperimentsToSbmlConverternow creates flat initial assignments, which previously were nested once per experiment and failed for problems with many experiments (by @FFroehlich in #546)petab.v2.converters.ExperimentsToSbmlConverternow assigns a priority to a pre-existing event without priority if it is the only such event, so that PEtab condition changes are applied before its assignments. Previously, their order was undefined (by @dweindl in #562)
Math:
petab_math_strnow produces valid PEtab math expressions for boolean operators, (in)equality,min/max, powers with negative bases, andpi/e, and prints floats without loss of precision. PEtab v2 condition and measurement tables now write expressions in PEtab syntax (by @dweindl in #545)
Features
v2 problems and tables:
petab.v2.Problem.split_by_modelsplits a multi-model problem into single-model problems.petab.v2.Problem.validatenow supports multi-model problems (by @FFroehlich in #537)petab.v2.Problem.get_unused_idreturns an identifier that is not yet used in the problem or its model (by @dweindl in #561)- PEtab v2 tables can omit empty columns or columns at their default values via
to_df(columns=...),to_tsv(columns=...)andProblem.to_files(columns=...), or globally viapetab.v2.set_optionsandpetab.v2.option_context(by @dweindl in #543) - Added
petab.v2.C.PROBLEM_CONFIG_REQUIRED_KEYSandpetab.v2.C.PROBLEM_CONFIG_OPTIONAL_KEYS(by @dweindl in #547)
v1-to-v2 conversion (petab1to2):
petab1to2andpetab_files_1to2can skip validation viavalidate=False(by @FFroehlich in #534)petab1to2andpetab_files_1to2can preserve the objective function of log-scaled parameters withparameterScale*priors viareparametrize="priors"orreparametrize="all"(by @dweindl in #539)
v2 converters:
petab.v2.reparametrize_logestimates parameters on log scale by replacing them with new log-transformed parameters (by @dweindl in #560)petab.v2.converters.assignments_to_experimentsconverts time-dependent piecewise assignment rules in the model to experiment periods. Supported are step changes at fixed switching times, including sums and nested piecewise functions, and values that change linearly with time, which are implemented via a rate rule (by @BSnelling and @FFroehlich in #527, #556, #557, #559, #573, and #574)
Math:
petab.v1.math.petab_symbol(also inpetab.v2.math) creates sympy symbols with the same assumptions assympify_petab(by @dweindl in #563)
Full Changelog: v0.9.0...v0.10.0
🤖 Drafted with AI assistance (Claude Code)
libpetab-python v0.9.0
This release will require Python>=3.12 and numpy>=2.1.
Fixes
- Fixed the mean of residuals and added an option to choose between
normalized and unnormalized errors inplot_goodness_of_fit
(by @plakrisenko in #473) - Made
scipya lazy import, so it is no longer required unless
probability distributions are actually used
(by @dweindl in #486) - Fixed
PetabStrPrinterfor non-integer rational exponents
(by @wshlavacek in #489) - Fixed spurious
nan-related warnings inSubplot.from_df
(by @dweindl in #496) - Fixed a missing
returnin the noise distribution merge of
petab1to2, which causednoiseDistributionto always beNaNafter
conversion
(by @dweindl in #502) - Fixed the PEtab v2 extension config model
(by @dweindl in #506) - Fixed SBML math parsing by using
sbmlmathinstead of
sympy.sympify
(by @dweindl in #509)
Features
- Added support for PEtab SciML problems, including a dedicated linter
(by @BSnelling, @m-philipps and @dilpath in #482,
#505, #499, #498, #511, #513, and #516) - Added support for BNGL models (by @wshlavacek in #508)
- Added linting of the mapping table, and allowed pure annotation-only
mapping entries (by @m-philipps and @BSnelling in #480 and #500) - Minor improvements to the v1-to-v2 converter: warn when dropping
parameterScale/initializationPriorType/initializationPriorParameters,
and use the experiments table column order suggested by the PEtab format
(by @m-philipps in #479)
libpetab-python v0.8.2
libpetab-python v0.8.1
The only change in this release is requiring pandas<3 until we support the new pandas 3 API.
Full Changelog: v0.8.0...v0.8.1
libpetab-python v0.8.0
Fixes
- Handle
KeyErrorin CheckInitialChangeSymbols
(by @dweindl in #459) - Fix return type in
petab.v2.calculate
(by @dweindl in #464) - Implement sampling for v2 prior distributions
(by @dweindl in #461)
Features
- Add
v2.Problem.__repr__
(by @dweindl in #458) - Add
LogUniformdistribution
(by @dweindl in #465) - Add
v2.Problem.has_{map,ml}_objective
(by @dweindl in #463)
Other
- Require Python>=3.11 per nep-0029
(by @dweindl in #462) - v2: Remove
log10-normaldistribution per updated spec
(by @dweindl in #456) - Remove
petab.v2-is-experimental warnings
(by @dweindl in #457)
It still is, but we no longer spam users with warnings.
Full Changelog: v0.7.0...v0.8.0
libpetab-python v0.7.0
Fixes
- Misc minor
petab.v2
(by @dweindl in #445
and #450) - Fixed serialization of
priorParameters
(by @dweindl in #449)
Features
- Added
PySBModel.to_str
(by @dweindl in #451) - Added
idfield tov2.ProblemConfig
(by @dweindl in #442) - Updated
ExperimentsToEventsConverterto changed initialization semantics
(by @dweindl in #443) - Added
v2.Problem.{get_output_parameters,get_x_nominal_dict}
(by @dweindl in #447) - Extended PEtab v2 mapping table validation
(by @dweindl in #452)
Full Changelog: v0.6.0...v0.7.0
libpetab-python v0.6.0
Fixes
- Implement proper truncation for prior distributions (parameter bounds now truncate the prior distribution instead of putting
extra probability mass on the bounds)
(by @dweindl in #335) - Fixed
get_required_parameters_for_parameter_table
(by @dweindl in #340) - Fixed
Prior.from_par_dictfor missingpriorParameterscolumns
(by @dweindl in #341) - Fixed petablint v2 warning
(by @dweindl in #342) - Fixed linter failing on missing
noiseFormula
(by @dweindl in #367) - Fixed v2 import Deprecation warning
(by @dweindl in #346) - petab.calculate: compare all common columns
(by @dweindl in #347) - Fixed version checks
(by @dweindl in #350) - Create output directories in
write_*_df
(by @dweindl in #352) - Handle
observableTransformationinpetab.v1.simulate.sample_noise
(by @dweindl in #383) - Fixed residual calculation in
v1.calculate
(by @dweindl in #395) - Allow empty string "" in columns to be overridden with default values in priors
(by @PaulJonasJost in #384) - Fixed
goodness_of_fitplot and add color parameter
(by @plakrisenko in #402
& #437,
by @dweindl in #440) - Plot without vis spec without
ids_per_plot
(by @PaulJonasJost in #386)
Deprecations
-
Using any PEtab-v2-related functionality currently in
petab.v1is deprecated and will be removed in a subsequent release.
Usepetab.v2instead.This affects, for example, PEtab-v2-specific constants
petab.v1.C(usepetab.v2.Cinstead),petab.v1.mapping, or anything mapping-table-related inpetab.v1.Problem.
Features
-
Substantially extended and updated
petab.v2for working with PEtab v2 problems.PEtab v2 is still in draft stage -- feedback is welcome!
- PEtab v2 support for
petablint - The library uses pydantic-based objects for most PEtab entities instead of plain DataFrames
- Functionality for converting PEtab v1 problems to (the current state of) PEtab v2
At least until PEtab v2 is finalized, the
petab.v2API may change rapidly, and should not be considered stable. - PEtab v2 support for
-
SbmlModel enhancements
(by @fbergmann in #333) -
Added
SbmlModel.{to_antimony,to_sbml_str}(by @dweindl in #371) -
Enable passing the base path to
Problem.from_yaml(by @dweindl in #327) -
Functions for adding conditions/observables/parameter to
Problem(by @dweindl in #328) -
Added
evaluate: boolargument to math parser (by @dweindl in #365) -
Added petab-compatible sympy string-printer (
PetabStrPrinter/petab_math_str) (by @dweindl in #364) -
Store problem configuration in
Problem(by @dweindl in #326)
Full Changelog: v0.5.0...v0.6.0
libpetab-python v0.5.0
Fixes
-
Circumvent
SettingWithCopyWarningby @m-philipps in #306
-
If
flatten_timepoint_specific_output_overridesmakes the visualization table invalid, remove it fromProblemby @m-philipps in #316
Features
-
Added
petab.v1.priors.priors_to_measurements(...)for replacingobjectivePrior*by observables/measurements -
Made model id optional for
PySBModel -
Implemented
Model.__repr__
Full Changelog: v0.4.1...v0.5.0
libpetab-python v0.4.1
This series contains many changes related to the new petab.v2 subpackage. petab.v2 should not be considered stable; the petab.v2 API may change rapidly until we release libpetab-python v1.0.0.
- Fix: keep previously-optional dependencies optional by @dweindl in #298
- Add petab.v2.C by @dweindl in #299
Full Changelog: v0.4.0...v0.4.1
libpetab-python v0.4.0
Prepare for PEtab v2
To enable ongoing support for PEtab v1, while "forking" the v1 code for PEtab v2, the old code base is now available at petab.v1, and the new code base will be at petab.v2. For now, old import petab.* statements still work, but are marked as deprecated, and import petab.v1.* should be used instead. petablint will be designed for use with only full PEtab problems in future too, rather than individual tables -- partial problems will be supported to validate individual tables.
- Add PEtab math parser and sympy converter by @dweindl in #260
- Deprecate petablint with individual tables by @dweindl in #274
- Introduce petab.v1 package by @dweindl in #282
- Separate v1 and v2 tests by @dweindl in #284
- Add petab.v2.Problem by @dweindl in #285
- PEtab v1 to v2 converter by @dweindl in #281
- Fix imports related to v1 subpackage by @dweindl in #293
Validation
Validation will become increasingly atomic and OOP, to support extension-specific validation in PEtab v2.
- Validator: check for positive bounds for log-scaled parameter by @dweindl in #278
- Validator: check prior parameters by @dweindl in #279
- Fix validation for remote files by @dweindl in #287
- New validation API by @dweindl in #288
Documentation
- Fixed formatting / missing type annotations by @dweindl in #292
- Added versioning and deprecation policy by @dweindl in #277
Other changes
- Simplify yaml schema by @dweindl in #264
- Handle numpy types in sympify_petab by @dweindl in #294
- New
get_path_prefixmethod to get the base path for relative paths in PEtab problem YAML by @dweindl in #280
New Contributors
- @dependabot made their first contribution in #267
Full Changelog: v0.3.0...v0.4.0