Sisyphus v0.4
graph-based whole-body PBPK

The body as a graph.
PK as a distribution.

Sisyphus turns a SMILES string and a dose into Cmax, AUC, and half-life — with honest uncertainty — by modeling the body as a typed directed graph and propagating distributions through an ODE system derived from its topology.

2.78
holdout AAFE
N=107
external holdout
43.9%
within 2-fold
34
compartment ODE
Sisyphus PBPK Console — caffeine prediction view
The interactive console — a real prediction, rendered.
Architecture

Three ideas that define Sisyphus

The design choices that make it extensible and honest, not just another PBPK script.

01 · topology

The body is a graph

Organs are nodes; vessels, transit, and clearance are typed edges. The ODE system is derived from graph topology — you extend the model by editing YAML, never the engine.

02 · uncertainty

Everything is a Distribution

Every physiological and drug parameter carries its uncertainty. Monte-Carlo propagation makes prediction intervals the native output, not a bolt-on.

03 · extensibility

The engine knows types, not identities

No organ or drug names live in the engine. Identity lives in data, so new organs, enzymes, and routes never require an engine change.

Validation

Measured against a held-out reality

A scaffold-stratified N=107 external holdout, never used in training, tuning, or model selection.

Predicted vs observed Cmax on the N=107 holdout (log–log)
TrackAAFEwithin 2-fold
Meta (production)2.7843.9%
Engine only4.4627.1%
ML only3.0143.0%
Meta, in-domain2.8342.0%

A four-track meta-learner blends a mechanistic engine, a data-driven ML Cmax, a CL/F analytical, and a conditional VDss track. Prospective FDA NMEs (2024–25) are harder still at AAFE 3.27 — generalization, stated plainly.

The user-facing 90% prediction interval is a train-calibrated split-conformal interval, holdout-validated to 0.953 coverage at nominal 0.90 — but wide (÷× ~13), the honest price of structural error. Sisyphus surfaces this rather than hiding it.
Quickstart

Or run it from the command line

The console is one face of a Python library + CLI.

# install pip install -e ".[dev,ml,chem]" # predict caffeine 100 mg sisyphus predict --smiles "Cn1c(=O)c2c(ncn2C)n(C)c1=O" --dose 100