petab-temporal-uncertainty
A PEtab extension and tooling for
marginalized measurement-time uncertainty: when a measurement's reported
timepoint is itself uncertain (drawn from a known distribution around the
reported time), this package augments your model's SBML with one latent
"marginal-likelihood" ODE state per uncertain group, imports it via
AMICI, and builds a
pyPESTO Objective with an analytic
gradient for the resulting marginal log-likelihood — no numerical
integration over the time-uncertainty distribution at each optimizer step.
Method
Implements the marginalized-likelihood approach described in a manuscript currently in preparation; this section will be updated with the citation once it is available. This package targets the marginalized approach only — see the manuscript's own comparison for why (marginalized matches the joint/optimize-over-tau approach statistically while being far faster).
Installation
pip install petab-temporal-uncertainty
Extension format
Add a timeDistributionId column to your measurement table (empty for
ordinary exact-time rows), and a timeUncertainties.tsv table (registered
via a time_uncertainty_files key in your problem.yaml, alongside
measurement_files/observable_files) indexed by timeDistributionId,
with columns timeDistribution (normal or uniform) and timeParameters.
The reference time for a timeDistributionId group is read from the
measurement table's own existing time column, not from
timeUncertainties.tsv — every measurement row sharing a timeDistributionId
must agree on time. Rows sharing a timeDistributionId share one latent
time-shift (the "shared-tau" case); a timeDistributionId referenced by
exactly one row is the independent ("multi-tau") case.
Usage
import petab
from petab_temporal_uncertainty import augment_petab_problem, build_objective
from petab_temporal_uncertainty.validation.lint import load_time_uncertainty_df
problem = petab.Problem.from_yaml("problem.yaml")
time_uncertainty_df = load_time_uncertainty_df("problem.yaml")
augmented = augment_petab_problem(problem, time_uncertainty_df)
objective = build_objective(augmented)
# objective is a standard pypesto.Objective -- use it exactly as any other
import pypesto
result = pypesto.optimize.minimize(pypesto.Problem(objective=objective, ...))
License
BSD-3-Clause. See LICENSE.
Release files for petab-temporal-uncertainty 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| petab_temporal_uncertainty-0.0.1.tar.gz | 49.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| petab_temporal_uncertainty-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.8 kB
Release files / petab_temporal_uncertainty-0.0.1.tar.gz
| Download URL | petab_temporal_uncertainty-0.0.1.tar.gz |
|---|---|
| Size | 49.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09ce05292f811f22015f975f8d73bb0a6e0e9700117fdc8b8237f58ef5970234
|
|
BLAKE2b-256 checksum How to use checksums |
f1a56620345cd0bd9e5cc87bb5452fd14ddd079b2d3f8b4c301d75ed68d83547
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / petab_temporal_uncertainty-0.0.1-py3-none-any.whl
| Download URL | petab_temporal_uncertainty-0.0.1-py3-none-any.whl |
|---|---|
| Size | 36.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
92b3a715f860959f7a23b829ac7d5ee8650742e1c7f64fb9193df1edeca08517
|
|
BLAKE2b-256 checksum How to use checksums |
e6d9a8e3da75f51b6d2a5964c60f6ac0f1ef0f4dcde8307142e9bf0144e14bf8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency log