Skip to contents

Model 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.

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 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.

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):

  1. Table S3c v_31r rate law. Printed as v_31r = k_on,PL K_D,PL HER2:Ab_ext,N{s},tumor but the analogous v_30r for HER2:ADC dissociation is k_off,Ab * HER2:ADC. The extraction uses the analogy v_31r = k_off,Ab * HER2:Ab (i.e. k_on,Ab * K_D,Ab * HER2:Ab) because the reaction is HER2 + Ab <-> HER2:Ab (antibody, not payload).

  2. 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, with Cpl_intra the free intracellular unconjugated payload concentration (nM). The n_Hill values 1/2/4 in Table S2c support this standard Hill-Emax form.

  3. 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 footnote Pc_PL = 1 in vitro indicates that the payload tumor partition coefficient is only active in the tumor context. The in vitro model file uses Pc_PL = 1 implicitly (drops it), and the mouse/human models use the Table S2b value (0.51 for T-DM1, 0.43 for T-DXd).

  4. Normal-vs-tumor k_synth (Table S2d inferred parameter). The synthesis rate for normal cells includes a k_shed term via k_synth,HER2,normal = RPC_HER2 * (k_shed + k_endo * k_deg / (k_deg + k_rec)). The extraction applies this normal-cell formulation only to the her2_nc_c/her2_nc_p synth 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).