skills/pkpd-modeling/references/software-ecosystem.md
Versions verified 2026-07-27 against PyPI, CRAN, vendor documentation and a live install; see
source-ledger.md. Check again before relying on a version-specific claim.
Python has no mature, regulatory-standing NCA or NLME package. Pharmacometrics remains an R, NONMEM and commercial-tool field. Python's role is orchestration, data preparation, simulation and analysis around those tools — which is what Pharmpy does well. This is why this skill ships its own validated NCA and compartmental-fitting implementations instead of wrapping a package.
| Tool | Licence | Notes |
|---|---|---|
| NONMEM 7.6 | Commercial (ICON) | The regulatory default. Fortran control streams. New in 7.6: ADVAN16 (RADAR5 implicit Runge-Kutta for stiff delay differential equations), ADVAN17 (stiff delay differential-algebraic), NUTS Bayesian sampling, SAEM storage of individual parameter samples, and optimal-design evaluation. User guides dated November 2025 |
| Monolix (Lixoft/Simulations Plus) | Commercial | SAEM-based, strong GUI, good diagnostics |
| nlmixr2 | Open source (R, CRAN) | The credible open alternative. Requires rxode2 ≥ 5.0.0. FOCEi, SAEM, and more. babelmixr2 and monolix2rx translate models to and from NONMEM and Monolix |
| Pumas | Commercial (Julia) | Fast; growing regulatory use |
| Phoenix NLME (Certara) | Commercial | Paired with WinNonlin |
| Stan / Torsten | Open source | Full Bayesian; Torsten adds PK/PD event handling to Stan |
| saemix | Open source (R) | SAEM in R |
pharmpy-core, from the Uppsala Pharmacometrics group. Model-agnostic: it reads and writes NONMEM,
nlmixr2 and rxode2 models and runs tools against whichever estimation engine is installed.
Current version 2.1.1 (2026-05-19), requires Python ≥ 3.11. Two recent breaking changes:
modeling.add_placebo_model renamed to modeling.set_placebo_model;
numpy ≥ 2 now required; modeling.get_observations now includes all DVIDs by default. Also added
convert_unit, set_unit, get_unit_of, add_output_variable, dataset Provenance tracking,
an exhaustive stepwise algorithm for pdsearch, and pure-PD support in add_indirect_effect.The 19 tools available as pharmpy.tools.run_*:
run_allometry run_amd run_bootstrap run_covsearch run_estmethod
run_iivsearch run_iovsearch run_linearize run_modelfit run_modelrank
run_modelsearch run_pdsearch run_qa run_retries run_ruvsearch
run_simulation run_structsearch run_tool run_vpc
run_amd is the automatic model development pipeline; run_structsearch covers PKPD, drug
metabolite and TMDD structures; run_pdsearch takes type='pd' or 'kpd'.
Model transformations worth knowing (all verified present in 2.1.1):
import pharmpy.modeling as m
m.set_tmdd(model, type="qss") # 'full' | 'ib' | 'cr' | 'crib' | 'qss' | 'wagner' | 'mmapp'
m.add_indirect_effect(model, expr="emax", prod=True) # 'linear' | 'emax' | 'sigmoid'
m.set_direct_effect(model, expr="sigmoid")
m.add_effect_compartment(model, expr="emax")
m.add_allometry(model, allometric_variable="WT", reference_value=70)
m.set_transit_compartments(model, n=3, keep_depot=True)
m.set_michaelis_menten_elimination(model)
m.calculate_eta_shrinkage(model, ...)
| Tool | Licence | Notes |
|---|---|---|
| Phoenix WinNonlin (Certara) | Commercial | The de facto standard for regulatory NCA |
| PKNCA | Open source (R) | Mature, well tested, widely used |
| aNCA | Open source (R) | Newer; Roche with Appsilon and Human Predictions, in the pharmaverse |
nca.py in this skill | MIT | Validated against analytical profiles; explicit about all four conventions |
PKPy (PeerJ, 2025) is a Python framework combining NCA with population modelling, but it is
GitHub-only and not published on PyPI — pip install pkpy fails. Install from source if you
want it.
| Tool | Licence | Notes |
|---|---|---|
| mrgsolve | Open source (R) | Fast C++ ODE simulation; the standard for large trial simulations |
| rxode2 | Open source (R) | Simulation engine underneath nlmixr2 |
| Simulx (Lixoft) | Commercial | Monolix's simulation companion |
simulate_regimen.py | MIT | Analytical linear models plus integrated Michaelis-Menten; PTA out of the box |
| Tool | Licence |
|---|---|
| Simcyp (Certara) | Commercial; the DDI regulatory standard |
| GastroPlus (Simulations Plus) | Commercial; strongest oral absorption modelling |
| PK-Sim / MoBi — Open Systems Pharmacology Suite v12 | Open source. ospsuite R package needs R 4.x, .NET 8, Windows or Ubuntu |
| Tool | Licence | Notes |
|---|---|---|
| PowerTOST | Open source (R) | The reference for BE power and sample size. bioequivalence.py --power reproduces its 2×2 tables exactly |
| replicateBE | Open source (R) | ABEL and RSABE evaluation |
bioequivalence.py | MIT | ABE, ABEL, RSABE via Hyslop, and exact TOST power |
| Package | Version checked | Role |
|---|---|---|
numpy | 2.5.1 | Everything |
scipy | 1.18.0 (requires Python ≥ 3.12) | Optimisation, ODE integration, distributions |
pharmpy-core | 2.1.1 | Model manipulation and tool orchestration |
chi-drm | 1.0.3 | Bayesian PK/PD modelling built on PINTS |
pints | 0.6.1 | Inference for ODE models |
lmfit | 1.3.4 | Convenient nonlinear least squares with bounded parameters |
bioequivalence.py --power.