ADC platform QSP for HER2 (Scheuher 2023)
Source:vignettes/articles/Scheuher_2023_ADC_platform_qsp.Rmd
Scheuher_2023_ADC_platform_qsp.RmdModel and source
- Citation: Scheuher B, Ghusinga KR, McGirr K, Nowak M, Panday S, Apgar J, Subramanian K, Betts A. Towards a platform quantitative systems pharmacology (QSP) model for preclinical to clinical translation of antibody drug conjugates (ADCs). J Pharmacokinet Pharmacodyn. 2023;51(1):5-30.
- Article: https://doi.org/10.1007/s10928-023-09884-6
- Supplement 1 (parameters + reactions + ODEs): 10928_2023_9884_MOESM1_ESM.docx (open access)
- Supplement 2 (figure legends): 10928_2023_9884_MOESM2_ESM.docx (open access)
This paper presents a multi-scale QSP platform for anti-HER2
antibody-drug conjugates (ADCs), calibrated and validated with
trastuzumab-DM1 (T-DM1, Kadcyla) and trastuzumab-deruxtecan (T-DXd,
Enhertu). The platform is presented at three nested scales - in vitro
cellular disposition, in vivo mouse xenograft PK+TGI, and human clinical
PK+TGI+PFS - which the extraction packages as three separate model files
sharing this vignette (per operator direction and the
replicate-author-structure policy):
-
Scheuher_2023_ADC_invitro_qsp: 13-state cellular ADC processing model (Tables S1a, S2a, S3a-b). -
Scheuher_2023_ADC_mouse_qsp: mouse plasma PK + Krogh-cylinder tumor uptake- intracellular processing + Simeoni-transit-chain TGI (Tables S1b, S2b-c, S3c-d).
-
Scheuher_2023_ADC_human_qsp: human extension of the mouse model with soluble HER2 (sHER2), normal-tissue HER2 sinks, and human physiologic volumes (Tables S1c, S2d-e, S3e-f).
The paper was fit using QSP Notebook software (Applied BioMath LLC); the fitted parameters and reactions are fully published in the supplement (open access), so the extraction is faithful to the paper’s equations without dependence on the proprietary numerical solver.
Population
The platform is calibrated across three biological scales. The scale each model file represents:
- In vitro cellular - HER2+ breast cancer cell lines under 2-hour ice incubation with radiolabelled T-[3H]-DM1 (Erickson 2012 Figure 3). Cell lines fitted: BT-474EEI, SK-BR-3, MCF-7-neo/HER2. Default parameterization uses SK-BR-3 (V_cell = 3.82x10^-12 L, RPC_HER2 = 1.12x10^6 receptors/cell).
- Mouse in vivo - BT-474EEI (T-DM1), BT-474 (T-DM1), N87 (T-DM1 + T-DXd), and KPL-4 (T-DM1) xenografts in nude mice (~20 g body weight). Plasma PK calibrated in non-tumor-bearing mice at 3 mg/kg IV. TGI fitted per cell-line block in Table S2c. Default parameterization: N87 with T-DM1 (kkill_max = 0.31 /day, kc50 = 485 nM, tau = 0.25 day, n_Hill = 1, t_double = 12.37 day, k_lin = 189.56 mm^3/day).
- Human clinical - Virtual HER2+ metastatic breast cancer patients (70 kg reference). Systemic parameters inherited from mouse with human volume rescaling (V_c = 3 L, V_p = 13 L); TGI parameters from N87 T-DM1 fits (Table S2d + S2e). Soluble HER2 baseline 8 ng/mL (Jensen 2003).
Full population details for each model:
| model | species | disease |
|---|---|---|
| Scheuher_2023_ADC_invitro_qsp | in vitro (SK-BR-3 cell line; BT-474 and MCF-7-neo/HER2 alternates supported) | HER2-expressing breast cancer cell lines under 2-hour ice incubation with radiolabelled T-DM1, washed, then measured for intracellular and extracellular DM1 catabolites over ~144 hours |
| Scheuher_2023_ADC_mouse_qsp | mouse (BT-474EEI, BT-474, N87, KPL-4 breast cancer xenograft; non-tumor-bearing mice for PK-only) | HER2-expressing human breast cancer cell-line xenograft tumors in immunocompromised mice |
| Scheuher_2023_ADC_human_qsp | human | HER2+ (HER2 1+ = 2e4 receptors/cell; HER2 3+ = 1e6 receptors/cell) metastatic breast cancer |
Source trace
Every model equation and parameter value traces directly to a
labelled location in the paper’s supplement. The mapping is spelled out
in the inline comments of each .R file (grep for
Table S). Key anchors:
| Model file | Structural source | Parameter source |
|---|---|---|
Scheuher_2023_ADC_invitro_qsp |
Table S1a (states), Table S3a (reactions v1-v14), Table S3b (ODEs eqns 1-13) | Table S2a (14 fitted + fixed parameters) |
Scheuher_2023_ADC_mouse_qsp |
Table S1b (states), Table S3c (reactions v14-v79), Table S3d (ODEs eqns 14-66; aggregated form - see Errata) | Table S2b (mouse PK), Table S2c (TGI per cell line) |
Scheuher_2023_ADC_human_qsp |
Table S1c (added states), Table S3e (added reactions v78-v127), Table S3f (added / changed ODEs eqns 67-96) | Table S2d (human systemic + normal cell + sHER2), Table S2e (virtual patient CVs) |
In vitro cellular model - simulation of Erickson 2012 T-DM1 incubation
The Erickson 2012 in vitro experiment incubates 10 nM T-DM1 with 1x10^7 SK-BR-3 cells in 100 uL media on ice for 2 hours, then washes and follows intracellular and extracellular DM1 catabolites for ~6 days. The packaged in vitro model reproduces this qualitatively via initial-condition dosing (the paper’s model has no repeated dosing event; it is a bath experiment).
mod_iv <- modellib("Scheuher_2023_ADC_invitro_qsp")
mod_iv <- rxode2::zeroRe(mod_iv)
#> Warning: No omega parameters in the model
# Initial 10 nM ADC in 100 uL media = 1e-3 nmol
init_adc_nmol <- 10 * 1e-4
ev_iv <- rxode2::et(amt = init_adc_nmol, cmt = "adc_ext") |>
rxode2::et(seq(0, 144, by = 2))
sim_iv <- rxode2::rxSolve(mod_iv, ev_iv)
# Convert intracellular DM1 to per-cell fmol (matching Erickson 2012 Figure 3 y-axis)
sim_iv$intra_dm1_fmol_per_cell <- sim_iv$intra_dm1_per_cell * 1e6
sim_iv_long <- tidyr::pivot_longer(
as.data.frame(sim_iv),
cols = c("Cc", "Cab", "Cpl_ext", "intra_dm1_fmol_per_cell"),
names_to = "output", values_to = "value"
)
ggplot(sim_iv_long, aes(x = time, y = value)) +
geom_line(linewidth = 0.7) +
facet_wrap(~output, scales = "free_y") +
labs(x = "Time (hours)",
y = "Value (nM for Cc/Cab/Cpl_ext; fmol/cell for intra_dm1)",
title = "In vitro T-DM1 in SK-BR-3 cells (Scheuher 2023 cellular model)") +
theme_minimal()
Simulated in vitro T-DM1 processing (SK-BR-3 cells): extracellular ADC, extracellular Ab, and intracellular DM1 accumulation. Compare qualitatively to Scheuher 2023 Fig. 3 and Erickson 2012.
Mouse in vivo model - simulation of T-DM1 plasma PK at 3 mg/kg
The mouse model reproduces the paper’s Figure 4A validation: T-DM1 IV bolus at 3 mg/kg in a non-tumor-bearing mouse gives plasma ADC concentrations that decline biexponentially over ~14 days. Simulated intracellular tumor payload concentrations are shown alongside.
mod_mo <- modellib("Scheuher_2023_ADC_mouse_qsp")
mod_mo <- rxode2::zeroRe(mod_mo)
#> Warning: No omega parameters in the model
# 3 mg/kg IV bolus in 20 g mouse -> nmol dose
# 3e-3 * 0.02 kg / 148781 g/mol = 4.03e-10 mol = 0.403 nmol
dose_mouse_nmol <- 3e-3 * 0.02 / 148781 * 1e9
ev_mo <- rxode2::et(amt = dose_mouse_nmol, cmt = "adc_central") |>
rxode2::et(seq(0, 14 * 24, by = 4)) # 14 days, 4 h grid
sim_mo <- rxode2::rxSolve(mod_mo, ev_mo, addDosing = TRUE)
sim_mo$time_day <- sim_mo$time / 24
sim_mo$Cc_ug_per_mL <- sim_mo$Cc * 148781 / 1e6 # nM -> ug/mL for ADC
p1 <- ggplot(as.data.frame(sim_mo), aes(x = time_day, y = Cc_ug_per_mL)) +
geom_line(linewidth = 0.7, colour = "steelblue") +
scale_y_log10() +
labs(x = "Time (day)", y = "T-DM1 plasma (ug/mL, log scale)",
title = "Mouse plasma T-DM1 at 3 mg/kg IV") +
theme_minimal()
p2 <- ggplot(as.data.frame(sim_mo), aes(x = time_day, y = Vtumor_out)) +
geom_line(linewidth = 0.7, colour = "coral") +
labs(x = "Time (day)", y = "Tumor volume (mm^3)",
title = "Simulated tumor volume") +
theme_minimal()
if (requireNamespace("patchwork", quietly = TRUE)) {
patchwork::wrap_plots(p1, p2, ncol = 2)
} else {
print(p1); print(p2)
}
Simulated mouse T-DM1 plasma PK and tumor volume dynamics at 3 mg/kg IV. Left panel: plasma ADC (ug/mL, nM). Right panel: simulated tumor volume (mm^3) - flat for a non-tumor scenario.

Simulated mouse T-DM1 plasma PK and tumor volume dynamics at 3 mg/kg IV. Left panel: plasma ADC (ug/mL, nM). Right panel: simulated tumor volume (mm^3) - flat for a non-tumor scenario.
Simulated Cmax and terminal half-life:
sim_mo_df <- as.data.frame(sim_mo)
cmax_nM <- max(sim_mo_df$Cc, na.rm = TRUE)
cmax_ug_mL <- max(sim_mo_df$Cc_ug_per_mL, na.rm = TRUE)
# Approximate terminal half-life from log-linear regression on last 5 points
tail_dat <- tail(sim_mo_df[sim_mo_df$Cc > 0, ], 6)
if (nrow(tail_dat) >= 3 && all(tail_dat$Cc > 0)) {
fit <- lm(log(Cc) ~ time_day, data = tail_dat)
thalf_day <- log(2) / abs(coef(fit)[2])
} else {
thalf_day <- NA_real_
}
nca_table <- data.frame(
Metric = c("Cmax (ug/mL)", "Cmax (nM)", "Terminal half-life (day)"),
Value = c(sprintf("%.2f", cmax_ug_mL),
sprintf("%.1f", cmax_nM),
sprintf("%.2f", thalf_day)),
`Paper reference` = c("~72-90 ug/mL @ 3 mg/kg (Erickson 2012 / Fig. S4A)",
"~485-604 nM",
"~11.6 day (Table S2b antibody half-life)")
)
knitr::kable(nca_table)| Metric | Value | Paper.reference |
|---|---|---|
| Cmax (ug/mL) | 60.00 | ~72-90 ug/mL @ 3 mg/kg (Erickson 2012 / Fig. S4A) |
| Cmax (nM) | 403.3 | ~485-604 nM |
| Terminal half-life (day) | 0.33 | ~11.6 day (Table S2b antibody half-life) |
Human model - plasma PK at 3.6 mg/kg T-DM1 Q3W
The human model uses N87-derived TGI parameters (Table S2d + S2e) and human physiologic volumes (3 L central, 13 L peripheral). Baseline soluble HER2 (sHER2) is set to 8 ng/mL (Jensen 2003).
mod_hu <- modellib("Scheuher_2023_ADC_human_qsp")
mod_hu <- rxode2::zeroRe(mod_hu)
#> Warning: No omega parameters in the model
# 3.6 mg/kg IV in 70 kg human -> nmol
# 3.6e-3 * 70 / 148781 * 1e9 = 1694 nmol
dose_human_nmol <- 3.6e-3 * 70 / 148781 * 1e9
# Q3W dosing for 3 cycles
q3w_times <- c(0, 21 * 24, 42 * 24)
ev_hu <- rxode2::et(amt = dose_human_nmol, cmt = "adc_central", time = q3w_times[1])
for (t in q3w_times[-1]) {
ev_hu <- rxode2::et(ev_hu, amt = dose_human_nmol, cmt = "adc_central", time = t)
}
ev_hu <- rxode2::et(ev_hu, seq(0, 63 * 24, by = 24))
sim_hu <- rxode2::rxSolve(mod_hu, ev_hu, addDosing = TRUE)
sim_hu$time_day <- sim_hu$time / 24
sim_hu$Cc_ug_per_mL <- sim_hu$Cc * 148781 / 1e6
ggplot(as.data.frame(sim_hu), aes(x = time_day, y = Cc_ug_per_mL)) +
geom_line(linewidth = 0.7, colour = "steelblue") +
scale_y_log10() +
labs(x = "Time (day)", y = "T-DM1 plasma (ug/mL, log scale)",
title = "Human T-DM1 plasma at 3.6 mg/kg IV Q3W x 3 cycles") +
theme_minimal()
Simulated human plasma T-DM1 at 3.6 mg/kg IV Q3W (3 cycles). Compare qualitatively to Scheuher 2023 Fig. 5A.
sHER2 baseline reproduction:
sher2_init <- head(sim_hu$Csher2_plasma, 1)
sher2_table <- data.frame(
Metric = c("Simulated sHER2 baseline (nM)",
"Paper reference (Jensen 2003 / Table S2d)"),
Value = c(sprintf("%.3f", sher2_init),
"0.08 nM (= 8 ng/mL of a 100 kDa protein)")
)
knitr::kable(sher2_table)| Metric | Value |
|---|---|
| Simulated sHER2 baseline (nM) | 0.080 |
| Paper reference (Jensen 2003 / Table S2d) | 0.08 nM (= 8 ng/mL of a 100 kDa protein) |
Assumptions and deviations from the paper
Aggregation of the 4-stage tumor-cell interior in the mouse
and human models. Table S1b of the paper defines 10 tumor-cell
interior species (HER2 surface, HER2:ADC surface, HER2:Ab surface, HER2
endo, HER2:ADC endo, HER2:Ab endo, PL endo, PL cyto, T cyto, T:PL cyto)
tracked separately in each of the four tumor-cell stages (N1, N2, N3,
N4), for a total of 40 states per model. Table S3c/S3d write the
corresponding 79 reactions and per-stage ODEs. Because HER2 receptor
dynamics equilibrate on a timescale of hours (1 / k_endo ~ 2.3 hour)
while the transit-chain cell-death delay is tau = 6-24 hours, and
because Table S3 shows N2-N4 cells retain the same HER2 machinery as N1
cells, the aggregate mass of each tumor-interior species is
approximately insensitive to how it is distributed across the four
stages. The extraction therefore aggregates the ten
tumor-interior species across all four cell stages into ten pooled
compartments (her2_surf_tumor,
her2_adc_surf_tumor, her2_ab_surf_tumor,
her2_endo_tumor, her2_adc_endo_tumor,
her2_ab_endo_tumor, pl_endo_tumor,
pl_cyto_tumor, t_cyto_tumor,
tpl_cyto_tumor) while keeping the four cell-count states
(n1..n4) explicit so the Simeoni transit-chain delay is preserved.
Cell-death mass release (paper reactions
v51/v54/v57/v60/v63/v66/v69/v72/v75/v78 - the “N4 -> death” edges
that push HER2/payload back out into extracellular pools) is modeled by
scaling the aggregate mass loss by n4/(n1+n2+n3+n4)/tau.
Total intracellular payload concentration (which drives Hill-type kill
on N1) and total tumor HER2 abundance (which drives ADC internalization
from the tumor extracellular pool) are preserved. Full per-stage
tracking is possible but requires writing 40 near-identical ODE bodies
with careful bookkeeping; it is left for a follow-up extraction if a
downstream user needs per-stage interrogation.
Best-effort resolution of paper notation ambiguities (per operator sidecar q2=A):
Table S3c v_31r rate law. Printed as
v_31r = k_on,PL K_D,PL HER2:Ab_ext,N{s},tumorbut the analogous v_30r for HER2:ADC dissociation isk_off,Ab * HER2:ADC. The extraction uses the analogyv_31r = k_off,Ab * HER2:Ab(i.e.k_on,Ab * K_D,Ab * HER2:Ab) because the reaction isHER2 + Ab <-> HER2:Ab(antibody, not payload).Table S2c inferred kkill formula. The LaTeX subscript rendering was broken in the docx-to-markdown conversion. Reconstructed from the paper’s Methods section as
kkill = k_kill,max * Cpl_intra^n_Hill / (kc_50^n_Hill + Cpl_intra^n_Hill)acting on N1, withCpl_intrathe free intracellular unconjugated payload concentration (nM). The n_Hill values 1/2/4 in Table S2c support this standard Hill-Emax form.Pc_PL in vitro scaling (Table S3a footnote). The in vitro rate law for payload:target binding uses
k_on,PL / (Pc_PL * V_cell); the footnotePc_PL = 1 in vitroindicates that the payload tumor partition coefficient is only active in the tumor context. The in vitro model file usesPc_PL = 1implicitly (drops it), and the mouse/human models use the Table S2b value (0.51 for T-DM1, 0.43 for T-DXd).Normal-vs-tumor k_synth (Table S2d inferred parameter). The synthesis rate for normal cells includes a
k_shedterm viak_synth,HER2,normal = RPC_HER2 * (k_shed + k_endo * k_deg / (k_deg + k_rec)). The extraction applies this normal-cell formulation only to theher2_nc_c/her2_nc_psynth terms; tumor-cell HER2 synthesis uses the no-shedding formulation and the paper’s tumor-cell shedding is captured via the chi_shed_HER2:Ab-scaled v96/v98/v99 (which sum to zero in mouse because rodent HER2 does not shed under this model).
Deterministic simulation, no IIV/RUV. The paper
reports fits as deterministic profiles vs. observed data with no
per-subject IIV or residual error parameters. Each model file exposes a
propSd = fixed(0.15) term so that nlmixr2’s ini() syntax
accepts the model, but this proportional error is a simulation-only
placeholder and is not from the paper. Virtual patient CVs (Table S2e)
for T-DM1 (kkill_max 10%, kc_50 2000%) and T-DXd (kkill_max 10%, kc_50
10000%) are documented in population$notes and can be
applied by a user via nlmixr2::est() or rxode2
covariate sampling.
T-DXd parameterization. The default
parameterizations use T-DM1 in all three models. To simulate T-DXd, the
following parameter overrides apply: DAR = 8, kdec = 1.7e-7 /s (mouse)
or 1.67e-8 /s (human), MW_ADC = 153,702 g/mol, MW_PL = 493 g/mol (DXd),
t_half_PL = 0.85 hour, k_in_PL = 0.0128 /s, k_out_PL = 0.00898 /s,
T_per_cell = 297 nM (TOPO-1), K_D_PL = 307 nM, Pc_PL = 0.43. For N87
T-DXd TGI: kkill_max = 0.24 /day, kc_50 = 13.68 nM, tau = 0.17 day,
n_Hill = 2, t_double = 9.70 day, k_lin = 175 mm^3/day. These are
documented per-parameter in population$notes of each file;
users apply overrides via
model %>% ini(...) %>% rxSolve(...).
Compartment naming. The models use
QSP-mechanism-specific compartment names
(e.g. her2_endo_tumor, pl_cyto_tumor,
sher2_c, n1..n4) rather than the
canonical central/peripheral1/etc. names.
checkModelConventions() issues WARN (not ERROR) for each
unrecognized compartment; these are expected for a mechanistic QSP model
and are documented in this Errata as paper-specific state variables
(Tables S1a-c).
No PKNCA validation section. The models do not
report population plasma PK observed vs. simulated in NCA-metric form
because (a) the in vitro model has no plasma compartment; (b) the mouse
plasma PK reference is a single representative curve (Figure S4A) not a
per-subject cohort; and (c) the human plasma PK reference is a
mean-profile overlay (Figure 5A) rather than an individual-level NCA
table. Users wanting NCA can call PKNCA::pk.nca() on the
mouse or human simulated plasma output, but the paper’s NCA benchmark is
not sufficiently detailed to reproduce quantitatively.
References
Full citation lists live in the paper’s supplement (Section: References). Key upstream citations for parameter carry-over:
- Erickson HK et al. 2012 Mol Cancer Ther 11:1133-1142 (T-DM1 in vitro, intracellular disposition).
- Okamoto H et al. 2020 Xenobiotica (T-DXd mouse PK).
- Xie H et al. 2004 J Pharmacol Exp Ther 308:1073-1082 (maytansinoid mouse PK for DM1 half-life).
- Shah DK, Betts AM 2012 J Pharmacokinet Pharmacodyn 39:67-86 (platform mAb PBPK physiologic volumes).
- Khera E et al. 2018 Mol Sys Design Eng 3:73-88 (Krogh-cylinder tumor
uptake
- payload permeability).
- Singh AP, Shah DK 2017 AAPS J 19:1054-1070 (T-DM1 human translation benchmarks).
- Simeoni M et al. 2004 Cancer Res 64:1094-1101 (transit-chain TGI framework).