Validation matrix
This page is the current source-of-truth matrix for what OpenPKPD claims is validated, how that claim is supported, and where the support boundary still stops.
Use it together with:
external_validation_benchmarks.mdfor the concrete external datasets and toolsanalysis_tools.mdfor the consolidated coverage inventory: surfaces, concrete test files, and test typestesting.mdfor the test-tier structure
How to read this page
Validation level:
Primary: mathematically standard implementation, strong unit/regression coverage, and multiple external anchors or a strong analytic reference basis
Secondary: real and useful, but external coverage is still narrower or operational limits matter materially
Experimental: implemented and tested, but not yet broad enough to market as a high-confidence general workflow
Evidence types:
Analytic: checked against closed forms or exact numerical identities
Method: unit or regression tests for algorithm behavior and diagnostics
External: compared against external software, published references, or bundled third-party fixtures
Estimation methods
Surface |
Algorithm basis |
Validation level |
Main evidence |
Current external anchors |
Current gaps / notes |
|---|---|---|---|---|---|
|
first-order linearization around |
Primary |
analytic OFV checks; unit tests for fallback Jacobians; regression and cross-method checks |
|
ODE-heavy FO still pays finite-difference cost on some paths |
|
first-order conditional estimation with per-subject |
Primary |
analytic OFV checks; unit tests for optimizer/ETA handling; regression and diagnostic tests |
|
mixed-endpoint ODE-heavy runtime still needs more breadth |
|
FOCE with interaction term |
Primary |
method tests, regression checks, diagnostics around warfarin parity gaps |
|
still thinner than FOCE on full model-family breadth, but now includes a live covariate-rich external anchor |
|
FOCE plus Hessian correction term |
Primary |
analytic OFV correction checks; regression and cross-method validation |
analytic linear-Gaussian reference; included in cross-method regression surface |
thinner direct external breadth than FOCE/FOCEI |
|
stochastic approximation EM with MH-based latent updates |
Secondary |
stochastic-behavior tests, convergence-history checks, multi-chain checks |
public Monolix theophylline; |
credible on current slices, but still needs another empirical family and broader model-family coverage beyond the current reduced mixed-endpoint slice |
|
importance sampling around conditional modes |
Secondary |
analytic Gaussian-reference tests; deterministic objective/draw diagnostics; empirical basin checks |
theophylline and warfarin PK vs |
benchmark budget matters materially; still narrower than FO/FOCEI |
|
IMP with FOCEI warm start for MAP-style path |
Secondary |
unit tests for warm-start behavior and diagnostics; empirical recommendation tests |
warfarin PK empirical validation vs |
validated on current PK slice; reduced mixed-endpoint probe lands in the right basin but is still too heavy/noisy to promote as a stable external benchmark |
|
FOCE MAP + local Gaussian approximation |
Secondary |
posterior-summary tests, covariance/Hessian checks, inverse-Hessian fallback tests |
theophylline and warfarin PK vs |
useful weak-prior Bayesian path, but not full MCMC parity; still needs broader model-family breadth beyond the current reduced mixed-endpoint slice |
|
native pure-NumPy NUTS on FOCE-backed theta posterior |
Experimental |
sampler diagnostics, bounded benchmark artifacts, cache/warm-start tests, analytic-theta-gradient routing on supported symbolic subset |
second-tier empirical theophylline benchmark; synthetic bounded benchmark artifact |
real implementation, but still theta-only, runtime-sensitive, and not broad enough for primary Bayesian support claims |
|
NPML-style support-point distribution over EBEs |
Secondary |
exact/reference tests for weight normalization and empirical moments; cross-method regression checks |
Pharmpy |
now past the original “second anchor” threshold, but still needs broader dataset and model-family coverage |
Other validated analytical / model surfaces
Surface |
Validation level |
Main evidence |
Current gaps / notes |
|---|---|---|---|
PK subroutines |
Primary |
closed-form formula checks and ODE cross-validation in |
strong on analytical PK; more advanced ODE families still need broader external breadth |
ODE PK / sensitivity workflows ( |
Secondary |
unit tests, sensitivity tests, analytical cross-checks where available |
performance and sensitivity-default coverage still lag the strongest compiled tools |
TTE / count / categorical / CTMC / HMM / TMDD |
Primary |
unit checks plus external validation against |
fit-baseline breadth can still grow, but numerical footing is strong |
NCA |
Primary |
analytic one-compartment references, public PKNCA summaries, WinNonlin-backed Indometh tables |
report polish and full workflow parity still lag Phoenix |
VPC / pcVPC / NPDE / NPC |
Primary |
unit, regression, and external formula/coverage checks |
broader cross-software parity remains future work |
Workflow surfaces
Surface |
Validation level |
Main evidence |
Current gaps / notes |
|---|---|---|---|
NONMEM-style control-stream parsing/runtime |
Secondary |
parser tests, integration tests for supported runtime subsets, executable support notes in |
parser breadth still exceeds full runtime/export breadth; writer/round-trip contract still incomplete |
GUI review and comparison workflows |
Secondary |
unit tests around persistence, result review, and comparison flow |
credible workflow surface now exists, but empirical user-flow polish still trails WinNonlin / Monolix |
Benchmark / profiling harness |
Secondary |
checked-in baseline artifacts, benchmark scripts, benchmark-output tests |
estimation breadth is better than before, but mixed-endpoint and simulation profiling still need expansion |
Release-gating guidance
Current practical release posture:
Primary release-gated surfaces
FO,FOCE,FOCEI,Laplaciananalytical PK subroutines with strong reference checks
NCA
core diagnostics (
VPC,pcVPC,NPDE,NPC)TTE / count / categorical / CTMC / TMDD analytical checks
Secondary release-gated surfaces
SAEMIMP/IMPMAPBAYES(Laplace)NONPARAMETRICsupported control-stream runtime subsets
Second-tier or environment-sensitive surfaces
BAYES(NUTS)reduced mixed-endpoint advanced-estimator empirical paths beyond the current reduced
BAYES(Laplace)benchmarkbroader external-validation suites that require dedicated environments or slower third-party tooling
What should happen when a method is not yet strong enough
The project should prefer:
narrower claims with stronger evidence
explicit support-boundary notes
known-gap tests that fail or
xfailhonestly
The project should avoid:
loosening concordance tolerances to hide defects
presenting a secondary or experimental method as if it had FOCE-level validation breadth
treating smoke tests as external validation
Highest-value next additions
Add another broader external empirical family for
SAEM,IMP/IMPMAP, andNONPARAMETRIC, focusing on model-family breadth rather than merely reaching a second anchor count.Promote one more mixed-endpoint PK/PD advanced-estimator benchmark beyond the new reduced
BAYES(Laplace)andSAEMwarfarin PK/PD tests, ideallyIMPMAPonce the runtime/diagnostic surface is honest enough.Broaden ODE-heavy validation for advanced estimators so support boundaries are based on measured evidence rather than caution alone.
Keep this matrix synchronized with
todo/remaining_priorities.mdandexternal_validation_benchmarks.mdwhenever a method changes support level.