Comparison with Other PK/PD Software

This page compares OpenPKPD against six widely used population PK/PD and NCA tools: NONMEM 7.5 (ICON plc), WinNonLin/Phoenix 8.4 (Certara), mrgsolve 1.4 (open-source R), Monolix 2024R1 (Lixoft), Pumas.jl 2.5 (PumasAI), and Pharmpy 1.x (Uppsala University).

Note on Pharmpy: Pharmpy is a Python model-manipulation and workflow-automation library. It does not include a native estimation engine; instead it reads, transforms, and writes NONMEM control streams and dispatches estimation runs to NONMEM or nlmixr2/rxode2. Capabilities marked via NM require a NONMEM licence.

Legend:

  • Y — fully supported and tested

  • P — implemented but still partial, narrower in scope, or less validated than mature alternatives

  • — not supported

  • via NM — supported by dispatching to an external NONMEM installation


Estimation methods

Method

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

First-Order (FO)

Y

Y

Y

Y

Y

via NM

FOCE / FOCEI

Y

Y

Y

Y

Y

via NM

Laplacian approximation

Y

Y

Y

via NM

SAEM

P

Y

Y

Y

via NM

Importance sampling (IMP/IMPMAP)

P

Y

Y

via NM

Nonparametric (NPML/NPEM)

P

Y

via NM

Full Bayesian / NUTS

P

Y

Y

MCMC diagnostics (R-hat, ESS)

P

Y

Y

OpenPKPD implements the FO, FOCE, and Laplacian methods with the full NONMEM-compatible estimation loop. SAEM uses a single-chain Metropolis-Hastings sampler (multi-chain Rao-Blackwellisation is a known gap). Bayesian estimation dispatches to PyMC when installed, otherwise uses the built-in NUTS backend or falls back to a Laplace approximation.

Read the P entries in this table together with validation_matrix.md: many of them mean “real but secondary or selectively benchmarked”, not “placeholder only”.


PK subroutines

Analytical solutions

ADVAN

Description

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

ADVAN1

1-cmt IV bolus

Y

Y

Y

Y

Y

Y

via NM

ADVAN2

1-cmt oral

Y

Y

Y

Y

Y

Y

via NM

ADVAN3

2-cmt IV

Y

Y

Y

Y

Y

Y

via NM

ADVAN4

2-cmt oral

Y

Y

Y

Y

Y

Y

via NM

ADVAN5

General linear N-cmt (matrix exponential)

Y

Y

Y

Y

via NM

ADVAN7

General linear N-cmt (alternate matrix-exponential backend; mostly overlaps ADVAN5)

Y

Y

Y

via NM

ADVAN11

3-cmt IV

Y

Y

Y

Y

Y

Y

via NM

ADVAN12

3-cmt oral

Y

Y

Y

Y

Y

Y

via NM

TRANS1–6

Parameterisation variants

Y

Y

Y

Y

Y

Y

via NM

ODE-based

ADVAN

Description

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

ADVAN6

Non-stiff ODE ($DES), JIT-accelerated

Y

Y

Y

Y

Y

via NM

ADVAN8

Stiff ODE (LSODA)

Y

Y

Y

Y

Y

via NM

ADVAN10

1-cmt Michaelis-Menten

Y

Y

Y

Y

Y

Y

via NM

ADVAN13

Stiff ODE + forward sensitivity

P

Y

Y

via NM

ADVAN16-style DDE

Delay differential equations

Y

Y

Y

via NM

PBPK

Physiologically-based PK

P

Y

Y

Transit absorption

Savic 2007 n-transit model

P

via $DES

Y

Y

Y

via NM

Parallel absorption

Multiple absorption pathways

P

via $DES

Y

Y

Y

via NM

Enterohepatic circulation

EHC re-absorption loop

P

via $DES

Y

via NM


PD and PK/PD models

Model

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

Direct Emax / sigmoidal Hill

Y

via $PK

Y

Y

Y

Y

via NM

Indirect response (IDR I–IV)

Y

via $DES

Y

Y

Y

Y

via NM

Effect compartment

Y

via $PK

Y

Y

Y

Y

via NM

TMDD (full / QSSA / MM)

Y

via $DES

Y

Y

via NM

Tumor growth inhibition (Simeoni)

Y

via $DES

Y

via NM

Turnover / transit PD

Y

via $DES

Y

Y

Y

Y

via NM

Placebo response

Y

via $ERROR

via NM

DDI (competitive / TDI / induction)

Y

via $DES

Y

via NM

Count data (Poisson / NegBin / ZIP)

Y

Y

Y

via NM

Ordered categorical / proportional odds

Y

Y

Y

via NM

Markov chain PD

Y

Y

Y

via NM

Time-to-event (TTE) / survival

Y

via $DES

Y

Y

via NM

Mixed-effects PD (IIV on PD params)

P

Y

Y

Y

via NM


Data handling

Feature

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

NONMEM CSV format

Y

Y

P

Y

Y

P

Y

EVID 0–4 event records

Y

Y

P

Y

Y

Y

Y

ADDL / II (additional doses)

Y

Y

P

Y

Y

Y

Y

SS (steady-state dosing)

Y

Y

P

Y

Y

Y

Y

Infusion (RATE / DURATION)

Y

Y

Y

Y

Y

Y

Y

BLQ M1 (exclusion)

Y

Y

Y

Y

Y

Y

via NM

BLQ M3/M4 (censored likelihood)

Y

Y

Y

Y

Y

via NM

BLQ M5/M7 (imputation)

Y

Y

Y

Y

Y

via NM

IOV (inter-occasion variability)

Y

Y

Y

Y

Y

Y

LLOQ column

Y

Y

Y

Y

Y

Y

Time-varying covariates

P

Y

Y

Y

Y

Y

Y

Missing covariate imputation

P

Y

Y

Y

Y

P


Output and reporting

Feature

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

.lst run summary

Y

Y

Y

.ext parameter history

Y

Y

Y

.phi post-hoc ETAs

Y

Y

Y

.cov / .cor matrices

Y

Y

Y

$TABLE CSV export

Y

Y

Y

Y

AIC / BIC

Y

Y

Y

Y

Y

Y

Likelihood ratio test

Y

Y

Y

Y

Y

Y

Condition number

Y

Y

Y

Y

Y

Y

ETA shrinkage

Y

Y

Y

Y

Y

Y

EPS shrinkage

Y

Y

Y

Y

Y

Y

HTML report

Y

Y

Y

Y

P

Diagnostic plots (GOF, VPC, ETA panels)

Y

via Xpose

Y

Y

Y

Y

CDISC-formatted output

P

Y

R-hat / ESS for MCMC

P

Y

Y


Non-compartmental analysis (NCA)

Feature

OpenPKPD

NONMEM

Monolix (PKanalix)

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

AUC (linear-log trapezoidal)

Y

Y

Y

Y

Y

Cmax, Tmax, t½, CLF, Vz

Y

Y

Y

Y

Y

Multiple-dose NCA

Y

Y

Y

Y

Y

Urine NCA (Ae, fe, CLR)

Y

Y

Y

Y

P

Average bioequivalence (ABE)

Y

Y

Y

Y

P

Reference-scaled ABE (RSABE)

Y

Y

Y

Y

P

BE sample size estimation

Y

Y

Y

Y

CDISC PP domain output

P

Y

Y

Sparse sampling NCA

P

Y

Y

Y


Simulation and model evaluation

Feature

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

Replicate dataset simulation

Y

Y

Y

Y

Y

Y

via NM

New-design simulation

P

Y

Y

Y

Y

Y

via NM

Visual Predictive Check (VPC)

P

via PsN

Y

Y

Y

Y

pcVPC

P

via PsN

Y

Y

Y

Y

NPC (Numerical Predictive Check)

Y

via PsN

Y

Y

Y

via NM

NPDE (Normalised Prediction Distribution Errors)

P

via PsN

Y

Y

Y

Y

Bootstrap CI

P

via PsN

Y

Y

Y

Y

Stochastic simulation & estimation (SSE)

P

via PsN

Y

Y


Covariate modelling

Feature

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

Manual covariate coding

Y

Y

Y

Y

Y

Y

Y

Linear, power, exponential effects

Y

Y

Y

Y

Y

Y

Categorical covariate effects

Y

Y

Y

Y

Y

Y

Stepwise SCM (forward/backward)

P

via PsN

Y (COSSAC)

Y

Y

Parallel SCM candidate evaluation

P

Y

Y

Y

FREM (full random effects model)

P

Y

Automated model development (AMD)

P

Y


Parallel computing

Feature

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

Multi-core (ProcessPool)

Y

Y

Y

Y

Y

Y

Dask distributed cluster

P

Y

Ray cluster

P

MPI / HPC grid

P

Y

Y

via NM

GPU acceleration

Y


Ecosystem and usability

Feature

OpenPKPD

NONMEM

Monolix

WinNonLin

mrgsolve

Pumas.jl

Pharmpy

Open source (no licence fee)

Y

Y

partial

Y

Native Python API

Y

Y

NONMEM .ctl file parsing + writing

Y

Y

SBML / QSP model import

Y

Delay differential equations

Y

Y

Y

via NM

R integration

via PsN

Y

Y

Y

GUI

P

Y

Y

partial

Sphinx documentation

Y

Y

Y

Y

Y

Y

Y

GxP regulatory validation

Y

Y

Y


Summary: when to choose OpenPKPD

Choose OpenPKPD when you want to:

  • Work entirely in Python without NONMEM or Julia installations

  • Migrate existing NONMEM .ctl control streams to an open-source platform

  • Import SBML/QSP models from systems biology databases and fit them to PK data

  • Use delay differential equations for mechanistic transit or feedback models

  • Reproduce NONMEM-format .lst, .ext, .phi, .cov output for Xpose/PsN interoperability

  • Integrate PK/PD modelling into Python data science workflows (pandas, numpy, scipy, matplotlib)

  • Use the bundled openpkpd_gui desktop interface for dataset loading, model running, NCA, and diagnostic plots without writing code

Consider alternatives when you need:

  • GxP-validated, regulatory-grade software (NONMEM, WinNonLin)

  • Best-in-class SAEM convergence with Rao-Blackwellisation (Monolix)

  • Fast compiled ODE simulation for 10,000+ subject VPCs (mrgsolve)

  • GPU-accelerated estimation and advanced sensitivity workflows (Pumas.jl)

  • A full GUI-only modelling environment (WinNonLin, Monolix) — OpenPKPD’s GUI covers common workflows but lacks the model-building canvas of those tools

  • Highly polished NPDE/VPC/automation pipelines for production workflows — OpenPKPD now includes NPDE/NPC/VPC building blocks, but the surrounding workflow polish still lags mature toolchains

  • NONMEM model manipulation, FREM covariate search, or automated model development workflows built around an existing NONMEM infrastructure (Pharmpy)


Code audit note (2026-03-09): The comparison tables above were reviewed against the current source tree. Key corrections in this pass:

  • GUI remains P, not : openpkpd_gui provides a working desktop interface for data, model, fit, NCA, results, plots, diagnostics, and SCM, but the Advanced page is still mostly a placeholder.

  • NPDE is now marked P: the repository contains a dedicated simulation/npde.py implementation and GUI-facing NPDE services, but this area is still less validated and less polished than mature external stacks.

  • Parser-vs-runner gaps matter: records such as $SIMULATION, $MIXTURE, and $PRIOR are parsed into typed records, but their end-to-end execution support is still more limited than the core FO/FOCE-style workflow.