Everolimus (ter Heine 2018)
Source:vignettes/articles/TerHeine_2018_everolimus.Rmd
TerHeine_2018_everolimus.RmdModel and source
- Citation: ter Heine R et al. A pharmacological rationale for improved everolimus dosing in oncology and transplant patients. Br J Clin Pharmacol 84(9):1575-1586, 2018. doi:10.1111/bcp.13591.
- Indication: pooled adult oncology (metastatic thyroid or breast cancer) + renal transplantation (calcineurin-free immunosuppressive regimens).
- Article: https://doi.org/10.1111/bcp.13591 (open access)
Population
ter Heine et al. pooled 126 adults across five clinical studies: 71 oncology patients on everolimus (Afinitor) 10 mg once daily for metastatic thyroid or breast cancer (clinicaltrials.gov NCT01118065 and NCT01948960) and 55 renal transplant recipients on everolimus (Certican) 0.75 - 3 mg twice daily for prophylaxis of allograft rejection (Dutch Trial Register NTR567 and NTR1615; clinicaltrials.gov NCT02387151). The combined cohort is 54% female with age 19 - 80 years, body weight 45 - 110.3 kg, and hematocrit 0.28 - 0.50 (Table 1). Twenty-two of the transplant subjects received tacrolimus after alemtuzumab induction; the rest were on everolimus + prednisolone combinations. Rich PK sampling produced 1239 plasma concentrations – 893 in the oncology cohort (mean 12.6 samples per patient) and 347 in the transplant cohort (mean 6.3 samples per patient).
Everolimus is highly bound to erythrocytes. The authors derived plasma concentrations from observed whole-blood concentrations and hematocrit before fitting the population PK model using a Langmuir-plus-linear erythrocyte binding model (Bmax = 0.964 mg/L, Kd = 0.0920 mg/L, Kns = 0.153) fitted externally to the manufacturer’s in vitro [3H]everolimus blood distribution data (Methods ‘Structural model development’, Equation 1). All reported parameter estimates are plasma PK parameters. This vignette uses the same back-calculation in reverse to compare simulated plasma concentrations against the whole-blood trough targets reported in Results paragraphs ‘Alternative dosing regimens’.
The same population metadata is available programmatically via
readModelDb("TerHeine_2018_everolimus")$population.
Source trace
The per-parameter origin is recorded as an in-file comment next to
each ini() entry in
inst/modeldb/specificDrugs/TerHeine_2018_everolimus.R. The
table below collects the trace in one place for review.
| Equation / parameter | Value | Source location |
|---|---|---|
lmat = log(0.404) |
MAT = 0.404 h | Table 2 ‘Final model’ MAT row |
lcl_int = log(340) |
CLint = 340 L/h | Table 2 ‘Final model’ CLint row |
lvc = log(175) |
VC = 175 L at FFM 57.2 kg | Table 2 ‘Final model’ VC row |
lvp = log(577) |
VP = 577 L at FFM 57.2 kg | Table 2 ‘Final model’ VP row |
lq = log(85.7) |
Q = 85.7 L/h at FFM 57.2 kg | Table 2 ‘Final model’ Q row |
lqh = fixed(log(90)) |
QH = 90 L/h (FIXED) | Table 2 ‘Final model’ QH row; Methods ‘Structural model development’ |
lfu = fixed(log(0.27)) |
fu = 0.27 (FIXED) | Methods ‘Structural model development’ Equation 4 (paper reference 35) |
e_pred_dose_high_cl_int = 0.31 |
+31% on CLint for PRED_DOSE >= 20 mg/day | Table 2 ‘Final model’ row ‘Increase in CLint due high dose prednisolone’ |
e_ffm_flow = fixed(0.75) |
Allometric exponent on Q, QH | Methods ‘Structural model development’; canonical Anderson and Holford 0.75 |
e_ffm_volume = fixed(1.0) |
Allometric exponent on VC, VP | Methods ‘Structural model development’; canonical Anderson and Holford 1.0 |
bmax = fixed(964) |
Bmax = 964 ug/L | Results ‘Base model development’ (paper text: 0.964 mg/L) |
kd = fixed(92) |
Kd = 92 ug/L | Results ‘Base model development’ (paper text: 0.0920 mg/L) |
kns = fixed(0.153) |
Kns = 0.153 (unitless) | Results ‘Base model development’ |
etalcl_int ~ log(1 + 0.339^2) |
IIV CLint = 33.9% CV | Table 2 ‘Final model’ IIV CLint row |
etalvc ~ log(1 + 0.406^2) |
IIV VC = 40.6% CV | Table 2 ‘Final model’ IIV VC row |
etalmat ~ log(1 + 1.10^2) |
Intra-individual MAT = 110% CV | Table 2 ‘Final model’ intra-individual MAT row |
propSd = 0.179 |
Proportional residual = 17.9% | Table 2 ‘Final model’ Residual variability row |
Transit chain ktr = 5 / MAT
|
n = 4 transit compartments | Methods ‘Structural model development’ Equation 2; Savic 2007 convention |
| Well-stirred liver Equations 3 - 5 | QHP, EH, CLH, F = 1 - EH | Methods ‘Structural model development’ Equations 3 / 4 / 5 |
Virtual cohort
Original observed concentrations are not publicly available. The simulations below use a typical-individual reference subject (70 kg, 1.80 m adult male, FFM = 57.2 kg, HCT = 0.45, age 40) matching the typical individual used by the authors in their dosing-regimen simulations (Methods ‘Investigation of improved dosing regimens’, final paragraph). Six dose regimens are simulated to reproduce the steady-state predictions reported in Results ‘Alternative dosing regimens’ for transplant (0.75, 1, 2.25, 3 mg twice daily, with and without high-dose prednisolone) and oncology (10 mg once daily, 3.75 mg twice daily). To exercise IIV, each regimen is simulated with a small (n = 50) virtual cohort sharing the typical-individual covariates.
set.seed(20260524L)
n_per_arm <- 50L
# Regimen specification.
regimens <- tibble::tribble(
~regimen, ~dose_mg, ~interval_h, ~pred_dose, ~indication,
"0.75 mg BID (no pred)", 0.75, 12, 0, "transplant",
"1 mg BID (no pred)", 1.00, 12, 0, "transplant",
"2.25 mg BID (no pred)", 2.25, 12, 0, "transplant",
"3 mg BID (high pred)", 3.00, 12, 20, "transplant",
"10 mg QD (cancer)", 10.00, 24, 0, "oncology",
"3.75 mg BID (cancer)", 3.75, 12, 0, "oncology"
)
# Per-regimen typical individual + small IIV cohort.
make_cohort <- function(n, regimen_row, id_offset = 0L) {
tibble::tibble(
id = id_offset + seq_len(n),
FFM = 57.2, # 70 kg, 1.80 m adult male
HCT = 0.45, # paper's typical-individual value
PRED_DOSE = regimen_row$pred_dose,
regimen = regimen_row$regimen,
dose_mg = regimen_row$dose_mg,
interval_h = regimen_row$interval_h,
indication = regimen_row$indication
)
}
cohort_df <- dplyr::bind_rows(lapply(seq_len(nrow(regimens)), function(i) {
make_cohort(
n = n_per_arm,
regimen_row = regimens[i, ],
id_offset = (i - 1L) * n_per_arm
)
}))
# Simulate 14 days of dosing to reach steady state; observe the final
# dosing interval at high resolution.
total_days <- 14
build_events <- function(subj_row) {
tau <- subj_row$interval_h
dose_times <- seq(from = 0, by = tau, length.out = total_days * 24 / tau)
last_dose <- max(dose_times)
obs_times <- sort(unique(c(
dose_times,
last_dose + seq(0, tau, by = 0.25),
last_dose + tau # exact end-of-interval (trough or next dose)
)))
doses <- data.frame(
id = subj_row$id,
time = dose_times,
amt = subj_row$dose_mg,
evid = 1L,
cmt = "depot",
Cc = NA_real_,
FFM = subj_row$FFM,
HCT = subj_row$HCT,
PRED_DOSE = subj_row$PRED_DOSE,
regimen = subj_row$regimen,
indication = subj_row$indication,
stringsAsFactors = FALSE
)
obs <- data.frame(
id = subj_row$id,
time = obs_times,
amt = 0,
evid = 0L,
cmt = "depot",
Cc = NA_real_,
FFM = subj_row$FFM,
HCT = subj_row$HCT,
PRED_DOSE = subj_row$PRED_DOSE,
regimen = subj_row$regimen,
indication = subj_row$indication,
stringsAsFactors = FALSE
)
rbind(doses, obs)
}
events <- do.call(
rbind,
lapply(seq_len(nrow(cohort_df)), function(i) build_events(cohort_df[i, ]))
)
events <- events[order(events$id, events$time, -events$evid), ]
rownames(events) <- NULL
stopifnot(!anyDuplicated(unique(events[, c("id", "time", "evid")])))Simulation
mod <- readModelDb("TerHeine_2018_everolimus")
sim <- rxode2::rxSolve(
mod,
events = events,
keep = c("regimen", "indication", "HCT", "PRED_DOSE")
) |>
as.data.frame()Whole-blood concentrations are derived from the simulated plasma concentrations via the paper’s Langmuir-plus-linear binding model (Methods ‘Structural model development’ Equation 1; Bmax = 964 ug/L, Kd = 92 ug/L, Kns = 0.153 in plasma-concentration units).
binding_to_whole_blood <- function(cp, hct,
bmax = 964, kd = 92, kns = 0.153) {
crb <- bmax * cp / (kd + cp) + kns * cp
hct * crb + (1 - hct) * cp
}
sim <- sim |>
dplyr::mutate(
Cc_wb = binding_to_whole_blood(Cc, HCT)
)Typical-value replication (between-subject variability zeroed) for reproducing the paper’s typical-individual figures:
mod_typical <- mod |> rxode2::zeroRe()
sim_typical <- rxode2::rxSolve(
mod_typical,
events = events,
keep = c("regimen", "indication", "HCT", "PRED_DOSE")
) |>
as.data.frame() |>
dplyr::mutate(
Cc_wb = binding_to_whole_blood(Cc, HCT)
)
#> ℹ omega/sigma items treated as zero: 'etalcl_int', 'etalvc', 'etalmat'
#> Warning: multi-subject simulation without without 'omega'Replicate published figures
Figure 3 – transplant dose regimens (whole blood, typical individual)
ter Heine 2018 Figure 3 shows typical steady-state whole-blood pharmacokinetic curves for everolimus dosed 0.75, 1, 2.25, and 3 mg twice daily in the renal-transplant setting, with and without high-dose prednisolone. The 6 - 10 ug/L immunosuppressive target is overlaid.
ss_window <- function(df) {
last_dose_per_id <- df |>
dplyr::group_by(id) |>
dplyr::summarise(last_dose = max(time[evid == 1L]), .groups = "drop")
df |>
dplyr::left_join(last_dose_per_id, by = "id") |>
dplyr::filter(time >= last_dose, time <= last_dose + 12) |>
dplyr::mutate(time_post = time - last_dose)
}
events_with_evid <- events |>
dplyr::select(id, time, evid)
sim_typical_ss <- sim_typical |>
dplyr::left_join(events_with_evid, by = c("id", "time")) |>
dplyr::mutate(evid = ifelse(is.na(evid), 0L, evid)) |>
ss_window() |>
dplyr::filter(indication == "transplant", !is.na(Cc_wb))
ggplot(sim_typical_ss, aes(time_post, Cc_wb, colour = regimen)) +
geom_hline(yintercept = c(6, 10), linetype = "dotted", colour = "grey40") +
geom_line(linewidth = 0.7) +
scale_x_continuous(breaks = seq(0, 12, by = 2)) +
labs(
x = "Time after dose (h)",
y = "Everolimus whole-blood concentration (ug/L)",
title = "Figure 3 -- transplant dose regimens, typical individual",
caption = paste0(
"Replicates Figure 3 of ter Heine 2018 (typical steady-state whole-blood ",
"PK curves; immunosuppressive target band 6 - 10 ug/L)."
)
)
Figure 4 – oncology 10 mg QD vs 3.75 mg BID (typical individual)
ter Heine 2018 Figure 4 contrasts the approved 10 mg once-daily regimen against the proposed 3.75 mg twice-daily regimen in oncology patients. This panel reproduces the whole-blood PK over a 24-h interval.
sim_typical_oncology <- sim_typical |>
dplyr::left_join(events_with_evid, by = c("id", "time")) |>
dplyr::mutate(evid = ifelse(is.na(evid), 0L, evid)) |>
dplyr::group_by(id) |>
dplyr::mutate(last_dose = max(time[evid == 1L])) |>
dplyr::ungroup() |>
dplyr::filter(
indication == "oncology",
time >= last_dose - 24,
time <= last_dose + 24,
!is.na(Cc_wb)
) |>
dplyr::mutate(time_post = time - (last_dose - 24))
ggplot(sim_typical_oncology, aes(time_post, Cc_wb, colour = regimen)) +
geom_line(linewidth = 0.7) +
scale_x_continuous(breaks = seq(0, 48, by = 6)) +
labs(
x = "Time over the final two dosing intervals (h)",
y = "Everolimus whole-blood concentration (ug/L)",
title = "Figure 4A -- oncology regimens, typical individual",
caption = paste0(
"Replicates Figure 4A of ter Heine 2018 (10 mg QD vs 3.75 mg BID, ",
"whole-blood predictions)."
)
)
PKNCA validation
Compute steady-state NCA over the final dosing interval for each regimen. The PKNCA formula groups by regimen so summaries roll up per dose regimen for comparison against the paper’s reported trough levels.
events_for_join <- events |>
dplyr::select(id, time, evid)
sim_with_evid <- sim |>
dplyr::left_join(events_for_join, by = c("id", "time")) |>
dplyr::mutate(evid = ifelse(is.na(evid), 0L, evid))
last_dose_per_id <- sim_with_evid |>
dplyr::filter(evid == 1L) |>
dplyr::group_by(id) |>
dplyr::summarise(last_dose = max(time), .groups = "drop")
sim_ss <- sim_with_evid |>
dplyr::left_join(last_dose_per_id, by = "id") |>
dplyr::left_join(
cohort_df |> dplyr::select(id, interval_h),
by = "id"
) |>
dplyr::filter(
time >= last_dose,
time <= last_dose + interval_h,
!is.na(Cc)
) |>
dplyr::transmute(
id, time, Cc, Cc_wb, regimen, last_dose, interval_h
) |>
dplyr::distinct(id, time, .keep_all = TRUE)
conc_obj <- PKNCA::PKNCAconc(
sim_ss,
Cc ~ time | regimen + id,
concu = "ug/L",
timeu = "h"
)
dose_df <- events |>
dplyr::filter(evid == 1L) |>
dplyr::group_by(id) |>
dplyr::slice_tail(n = 1) |>
dplyr::ungroup() |>
dplyr::select(id, time, amt, regimen) |>
as.data.frame()
dose_obj <- PKNCA::PKNCAdose(
dose_df,
amt ~ time | regimen + id,
doseu = "mg"
)
regimen_intervals <- regimens |>
dplyr::mutate(start = 0, end = interval_h)
ss_intervals_per_id <- sim_ss |>
dplyr::group_by(id, regimen) |>
dplyr::summarise(
start = unique(last_dose),
end = unique(last_dose + interval_h),
.groups = "drop"
) |>
dplyr::mutate(
cmax = TRUE,
cmin = TRUE,
tmax = TRUE,
auclast = TRUE,
cav = TRUE
) |>
as.data.frame()
nca_res <- PKNCA::pk.nca(
PKNCA::PKNCAdata(conc_obj, dose_obj, intervals = ss_intervals_per_id)
)
nca_summary <- nca_res$result |>
dplyr::group_by(regimen, PPTESTCD) |>
dplyr::summarise(
median = median(PPORRES, na.rm = TRUE),
q05 = quantile(PPORRES, 0.05, na.rm = TRUE),
q95 = quantile(PPORRES, 0.95, na.rm = TRUE),
.groups = "drop"
)
knitr::kable(
nca_summary,
caption = paste0(
"Steady-state plasma NCA per regimen (median with 90% range across the ",
"50-subject simulated cohort). AUC (auclast) units: ug*h/L; Cmax / Cmin / ",
"Cav units: ug/L; tmax units: h."
),
digits = 3
)| regimen | PPTESTCD | median | q05 | q95 |
|---|---|---|---|---|
| 0.75 mg BID (no pred) | auclast | 7.623 | 3.957 | 12.159 |
| 0.75 mg BID (no pred) | cav | 0.635 | 0.330 | 1.013 |
| 0.75 mg BID (no pred) | cmax | 1.381 | 0.753 | 2.461 |
| 0.75 mg BID (no pred) | cmin | 0.426 | 0.204 | 0.740 |
| 0.75 mg BID (no pred) | tmax | 0.750 | 0.250 | 2.137 |
| 1 mg BID (no pred) | auclast | 10.112 | 7.050 | 19.488 |
| 1 mg BID (no pred) | cav | 0.843 | 0.588 | 1.624 |
| 1 mg BID (no pred) | cmax | 1.917 | 1.241 | 3.510 |
| 1 mg BID (no pred) | cmin | 0.571 | 0.360 | 1.187 |
| 1 mg BID (no pred) | tmax | 0.750 | 0.250 | 1.750 |
| 10 mg QD (cancer) | auclast | 113.533 | 69.932 | 189.248 |
| 10 mg QD (cancer) | cav | 4.731 | 2.914 | 7.885 |
| 10 mg QD (cancer) | cmax | 16.899 | 7.255 | 27.408 |
| 10 mg QD (cancer) | cmin | 2.606 | 1.445 | 4.801 |
| 10 mg QD (cancer) | tmax | 0.750 | 0.250 | 4.162 |
| 2.25 mg BID (no pred) | auclast | 24.612 | 13.050 | 48.982 |
| 2.25 mg BID (no pred) | cav | 2.051 | 1.087 | 4.082 |
| 2.25 mg BID (no pred) | cmax | 4.522 | 2.395 | 8.146 |
| 2.25 mg BID (no pred) | cmin | 1.383 | 0.671 | 2.961 |
| 2.25 mg BID (no pred) | tmax | 0.750 | 0.250 | 2.550 |
| 3 mg BID (high pred) | auclast | 25.796 | 13.071 | 40.056 |
| 3 mg BID (high pred) | cav | 2.150 | 1.089 | 3.338 |
| 3 mg BID (high pred) | cmax | 4.899 | 2.714 | 8.814 |
| 3 mg BID (high pred) | cmin | 1.351 | 0.675 | 2.289 |
| 3 mg BID (high pred) | tmax | 0.750 | 0.250 | 1.750 |
| 3.75 mg BID (cancer) | auclast | 43.342 | 26.166 | 76.180 |
| 3.75 mg BID (cancer) | cav | 3.612 | 2.181 | 6.348 |
| 3.75 mg BID (cancer) | cmax | 8.050 | 5.007 | 15.768 |
| 3.75 mg BID (cancer) | cmin | 2.470 | 1.324 | 4.503 |
| 3.75 mg BID (cancer) | tmax | 0.750 | 0.250 | 2.387 |
Comparison against published whole-blood trough targets
ter Heine 2018 reports the following whole-blood trough levels for the typical individual at steady state (Results ‘Alternative dosing regimens’):
| Regimen | Reported Cwb,trough (ug/L) |
|---|---|
| 0.75 mg BID (no pred) | 2.37 |
| 1 mg BID (no pred) | 3.16 |
| 2.25 mg BID (no pred) | 6.70 |
| 3 mg BID (high pred) | 7.01 |
| 10 mg QD (cancer) | 12.3 (Cmax 68.8) |
| 3.75 mg BID (cancer) | 11.7 (Cmax 34.2) |
typical_trough <- sim_typical |>
dplyr::left_join(events_with_evid, by = c("id", "time")) |>
dplyr::mutate(evid = ifelse(is.na(evid), 0L, evid)) |>
dplyr::group_by(id) |>
dplyr::mutate(last_dose = max(time[evid == 1L])) |>
dplyr::ungroup() |>
dplyr::left_join(
cohort_df |> dplyr::select(id, interval_h),
by = "id"
) |>
dplyr::group_by(id, regimen) |>
dplyr::slice_min(
abs(time - (last_dose + interval_h)),
n = 1,
with_ties = FALSE
) |>
dplyr::ungroup() |>
dplyr::group_by(regimen) |>
dplyr::summarise(
sim_Cwb_trough = median(Cc_wb, na.rm = TRUE),
.groups = "drop"
)
typical_peak <- sim_typical |>
dplyr::left_join(events_with_evid, by = c("id", "time")) |>
dplyr::mutate(evid = ifelse(is.na(evid), 0L, evid)) |>
dplyr::group_by(id) |>
dplyr::mutate(last_dose = max(time[evid == 1L])) |>
dplyr::ungroup() |>
dplyr::left_join(
cohort_df |> dplyr::select(id, interval_h),
by = "id"
) |>
dplyr::filter(
time >= last_dose,
time <= last_dose + interval_h
) |>
dplyr::group_by(regimen) |>
dplyr::summarise(
sim_Cwb_peak = max(Cc_wb, na.rm = TRUE),
.groups = "drop"
)
published <- tibble::tibble(
regimen = c(
"0.75 mg BID (no pred)",
"1 mg BID (no pred)",
"2.25 mg BID (no pred)",
"3 mg BID (high pred)",
"10 mg QD (cancer)",
"3.75 mg BID (cancer)"
),
pub_Cwb_trough = c(2.37, 3.16, 6.70, 7.01, 12.3, 11.7),
pub_Cwb_peak = c(NA, NA, NA, NA, 68.8, 34.2)
)
comparison <- published |>
dplyr::left_join(typical_trough, by = "regimen") |>
dplyr::left_join(typical_peak, by = "regimen") |>
dplyr::mutate(
trough_pct_diff = 100 * (sim_Cwb_trough - pub_Cwb_trough) / pub_Cwb_trough,
peak_pct_diff = 100 * (sim_Cwb_peak - pub_Cwb_peak) / pub_Cwb_peak
)
knitr::kable(
comparison,
caption = paste0(
"Comparison of simulated whole-blood trough and peak concentrations ",
"(typical individual) against ter Heine 2018 Results 'Alternative dosing ",
"regimens'. Pct diff > 20% should be investigated, not tuned."
),
digits = 2
)| regimen | pub_Cwb_trough | pub_Cwb_peak | sim_Cwb_trough | sim_Cwb_peak | trough_pct_diff | peak_pct_diff |
|---|---|---|---|---|---|---|
| 0.75 mg BID (no pred) | 2.37 | NA | 2.37 | 8.22 | 0.09 | NA |
| 1 mg BID (no pred) | 3.16 | NA | 3.16 | 10.91 | -0.06 | NA |
| 2.25 mg BID (no pred) | 6.70 | NA | 7.06 | 23.96 | 5.31 | NA |
| 3 mg BID (high pred) | 7.01 | NA | 6.94 | 25.55 | -0.99 | NA |
| 10 mg QD (cancer) | 12.30 | 68.8 | 12.34 | 79.63 | 0.34 | 15.74 |
| 3.75 mg BID (cancer) | 11.70 | 34.2 | 11.66 | 38.84 | -0.33 | 13.56 |
The simulated typical-individual whole-blood trough and peak values should agree with the paper’s reported targets within the typical-individual precision expected of the back-calculated binding equation. Material discrepancies are most often driven by (1) the assumed reference FFM and HCT values, (2) the allometric exponents (0.75 / 1.0 here vs whatever the paper actually used internally), and (3) the absorption-chain parameterisation (Savic 2007 convention used here, ktr = 5 / MAT). All three are documented in Assumptions and deviations below.
Assumptions and deviations
- Allometric exponents fixed at the Anderson and Holford canonical values (0.75 on flows, 1.0 on volumes). Methods ‘Structural model development’ states the parameters were allometrically scaled to FFM and cites Holford et al. (paper reference 36) for the allometric form but does not restate the exponents. The canonical theory-based values are used here and a user fitting the model to data could re-estimate them.
- Reference FFM = 57.2 kg. Stated explicitly in the Table 2 footnote (“All volume and flow parameters are allometrically scaled to a fat-free mass of 57.2 kg, corresponding with the fat-free mass of a man with a total body weight of 70 kg and a length of 1.80 m”). Confirmed numerically: the male Janmahasatian formula yields FFM = 57.2 kg for BMI = 21.6 (70 kg, 1.80 m).
-
Transit-compartment rate constant ktr = (n + 1) / MAT with n
= 4. The paper writes ktr in Equation 2 as a function of n and
MAT but does not show the equation in machine-readable form (the
equation is rendered as an image in the PDF). Two conventions exist in
the literature: Savic & Karlsson (2007), ktr = (n + 1) / MTT, and
the variant ktr = n / MTT. This model uses the Savic 2007 convention
because it is canonical in nlmixr2lib transit-compartment models
(e.g.
Hoglund_2012_piperaquine) and because the source paper’s reference 31 (Bergstrand et al., for VPC construction) sits in the same Karlsson / Savic methodological lineage. A future revision should reconcile against the NONMEM control stream in supplementary material S2 (not on disk for this extraction). -
MAT variability encoded as IIV on lmat rather than IOV
across dosing occasions. Table 2 ‘Final model’ reports the MAT
variability term as intra-individual (110% CV). The source paper does
not state the number of dosing occasions per subject, so a per-occasion
eta decomposition (as in
deWit_2016_everolimus.R) cannot be reproduced unambiguously here. The simulated marginal magnitude of MAT variability is preserved; the inter-occasion correlation structure is lost. - **Unbound fraction fu interindividual variability (3%, paper
reference
- not retained.** The Methods text mentions “the known concentration independent unbound fraction of 0.27 with an interindividual variability of 3%”. The 3% IIV term is not in Table 2 and is treated here as fixed at the typical value.
-
Erythrocyte-binding parameters Kns dimensional
interpretation. The paper text reports Bmax = 0.964, Kd =
0.0920, and Kns = 0.153 “mg l-1 respectively” (Results ‘Base model
development’). The Equation 1 binding form
Crb = Bmax * Cp / (Kd + Cp) + Kns * Cprequires Bmax and Kd to carry concentration units (mg/L) and Kns to be dimensionless (a partition coefficient). We interpret the “mg l-1” qualifier as applying to Bmax and Kd only; Kns = 0.153 (unitless). At Cp = 2.3 ug/L and HCT = 0.45 this interpretation reproduces the paper’s reported whole-blood concentration of ~11.7 ug/L for the 10 mg QD oncology trough, supporting the dimensionless Kns interpretation. - Whole-blood-to-plasma back-conversion in the vignette uses the same binding equation as the source paper used for the plasma-from-whole-blood forward conversion at fit time. The model outputs plasma; the vignette computes whole blood from plasma + HCT via the binding equation. This is the inverse of what the paper did when constructing the modelled plasma observations, and it lets the simulated values compare directly against the paper’s whole-blood trough targets.
- Typical individual: 70 kg, 1.80 m male, FFM = 57.2 kg, HCT = 0.45, age 40. Stated by the paper in Methods ‘Investigation of improved dosing regimens’ final paragraph for the dosing-regimen simulations.
- Tacrolimus, statins, sulfamethoxazole-trimethoprim, calcium-channel antagonists, and proton-pump inhibitors were used as concomitant medications in subsets of the transplant cohort (Results ‘Study population’) but were not retained as covariates (no significant effect). Strong CYP3A4 inhibitors / inducers (other than high-dose prednisolone) were prohibited; the metabolites of everolimus were not modelled (no known active metabolites).
- Formulation (Afinitor vs Certican) not retained as a covariate. Tested as a binary covariate on relative bioavailability during covariate analysis (Methods ‘Covariate analysis’) with 82% power to detect a 25% effect; not retained in the final model (Results ‘Power and covariate analysis’). Both formulations are interchangeable for individualised dose tailoring.