Model and source
- Citation: Han S, Kim Y-J, Lee J, Jeon S, Hong T, Park G-J, Yoon J-H, Yahng S-A, Shin S-H, Lee S-E, Eom K-S, Kim H-J, Min C-K, Lee S, Yim D-S. (2015). Model-based adaptive phase I trial design of post-transplant decitabine maintenance in myelodysplastic syndrome. Journal of Hematology & Oncology 8:118. doi:10.1186/s13045-015-0208-3 (PMID 26482429). ClinicalTrials.gov NCT01277484.
- Description: Two-compartment IV population pharmacokinetic model coupled with two parallel Friberg-style myelosuppression PD chains (absolute neutrophil count, ANC, and platelet count, PC) for decitabine post-transplant maintenance in adult Korean patients with higher-risk myelodysplastic syndrome or secondary acute myeloid leukemia (Han 2015). The platelet feedback baseline rises asymptotically over cycles per the paper’s IMP / IMK extension (BASE_P_t = BASE_P + IMP * (1 - exp(-IMK * t))); the neutrophil chain uses a time-invariant baseline. PK parameters are body-surface-area-normalized (per m^2): doses must be supplied in mg/m^2 and central-compartment concentrations are returned in mg/L (= ug/mL = 1000 ng/mL). PD outputs ANC and PLT are in 10^9 cells/L.
- Article (open access): https://doi.org/10.1186/s13045-015-0208-3
- PMID: 26482429
- ClinicalTrials.gov: NCT01277484
Decitabine is a hypomethylating cytidine analogue. Han et al. (2015) report an adaptive phase I trial of post-allogeneic-hematopoietic-stem-cell- transplantation (allo-HSCT) decitabine maintenance in 16 Korean adults with higher-risk myelodysplastic syndrome (MDS) or secondary acute myeloid leukemia (sAML) evolving from MDS. The PK-PD model was used to individualize the Cycle 2-4 doses for each patient and to estimate the initial doses for cohorts 2-5. The popPK-PD analysis excluded one female patient with immune thrombocytopenia (managed with steroids), leaving 15 patients in the mixed-effect analysis (95 PK observations + 311 ANC + 311 PC observations).
The structural model has three layers (Han 2015 Results, “Overall mixed-effect PK-PD analysis”):
- PK – two-compartment IV-infusion model parameterised on a body-surface-area-normalized (per m^2) scale: CL (L/h per m^2), Vc (L per m^2), Vp (L per m^2), Q (L/h per m^2). The trial administered decitabine as a 60-minute IV infusion at 4-12 mg/m^2/day for five consecutive days, repeated every ~4 weeks (mean actual interval 34.5 days, SD 8.7).
- Absolute neutrophil count (ANC) – Friberg / Wallin transit compartment model with feedback (1 proliferating + 3 transit + 1 circulating; uniform ktr_N applied across proliferation, transit, and circulating-pool clearance). Linear drug effect on the proliferation rate (1 - SLOPE_N * Cc) and feedback (BASE_N / circ_anc)^GAMMA_N. Baseline is time-invariant: the paper reports “baseline cell count increase was not meaningful” for neutrophils.
- Platelet count (PC) – Friberg / Wallin transit compartment model with feedback, identical structure to the ANC chain but with a time-dependent baseline that increases asymptotically over treatment cycles: BASE_P_t = BASE_P + IMP * (1 - exp(-IMK * TIME)). The time-dependent BASE_P_t substitutes for BASE_P inside the feedback term only; the transit kinetics use the structural ktr_P unchanged.
Population
mod_meta$meta$population
#> $species
#> [1] "human"
#>
#> $n_subjects
#> [1] 15
#>
#> $n_studies
#> [1] 1
#>
#> $age_range
#> [1] "19-64 years"
#>
#> $weight_range
#> [1] NA
#>
#> $sex_female_pct
#> [1] 40
#>
#> $race_ethnicity
#> Asian
#> 100
#>
#> $disease_state
#> [1] "Adult Korean patients with higher-risk myelodysplastic syndrome (MDS; intermediate-2 or high IPSS risk) or secondary acute myeloid leukemia (sAML) evolving from MDS, receiving decitabine maintenance after allogeneic hematopoietic stem cell transplantation (allo-HSCT). Eligibility: age <= 65; PC > 30,000/mm^3 and ANC > 1000/mm^3 maintained > 7 days without transfusion or growth factors; no grade III/IV acute GVHD; ECOG 0-2; no renal or hepatic impairment. Decitabine started on days 42-90 post-transplant (median 86 days)."
#>
#> $dose_range
#> [1] "Decitabine 4-12 mg/m^2/day (Cycle 2-4 range 1.5-12 mg/m^2/day from Table 2) as a 60-minute IV infusion for 5 consecutive days, cycles repeated every 4 weeks up to Cycle 12. Initial Cycle-1 dose 5 mg/m^2/day for cohort 1; subsequent cohort initial doses estimated by cohort dose estimation (CDE) at 4, 5, 5.5, and 5 mg/m^2/day for cohorts 2-5. Doses for Cycles 2-4 individualized via PK-PD adaptive titration (IDT); the Cycle-4 dose was maintained for all subsequent cycles. The actual dosing interval was 34.5 +/- 8.7 days (mean +/- SD)."
#>
#> $regions
#> [1] "Republic of Korea (Seoul St. Mary's Hospital, The Catholic University of Korea)."
#>
#> $co_medication
#> [1] "GVHD prophylaxis: calcineurin inhibitor (cyclosporine for related donors, tacrolimus for unrelated donors) plus short-course methotrexate. Antithymocyte globulin given to all patients prior to transplant. At decitabine initiation: acute GVHD grade 0-2 in all patients, mild chronic GVHD in 1 patient."
#>
#> $notes
#> [1] "Baseline demographics from Han 2015 Tables 1 and 2. 16 patients were enrolled (9 male / 7 female); the popPK-PD analysis excluded 1 female patient whose dose-limiting toxicity factor was platelet count due to immune thrombocytopenia after transplantation (managed with steroids), leaving 15 patients in the mixed-effect analysis (8 male / 6 female assumed; sex_female_pct = 40 reflects 6/15). Donor type for the 16 enrolled: matched sibling donor (n=7), matched unrelated donor (n=8), partially matched unrelated donor (n=1). WHO diagnoses: RAEB-1 (n=1), RAEB-2 (n=10), AML evolving from MDS (n=5). Final analysis dataset: 95 PK observations and 622 PD observations (311 ANC + 311 PC) across the 15 subjects (Han 2015 Results, 'Overall mixed-effect PK-PD analysis'). PK proportional residual error variance sigma^2_PK = 0.441 (= 66% CV); PD additive residual error variances sigma^2_PD,P = 25000 /mm^3 squared and sigma^2_PD,N = 754 /mm^3 squared (Table 3). Successful bootstrap convergence proportion was 78.8% (PK) and 78.0% (PD)."Source trace
The per-parameter origin is recorded as an in-file comment next to
each ini() entry. Every numeric value below was taken from
Table 3 of Han et al. 2015 (“Final parameter estimates and bootstrap
outcomes”). The BSV columns (reported as %CV) were converted to
log-scale variances via omega^2 = log(1 + CV^2); residual error
variances were converted to SDs via sqrt(.) with a /mm^3 -> 10^9/L
unit conversion (divide by 1000).
| Equation / parameter | Value | Source location (Han 2015) |
|---|---|---|
| 2-cmt IV infusion ODE | n/a | Methods + Results “A two-compartment model was found to best describe the PK data” |
| Friberg / Wallin chain | n/a | Results, formula dA(N)/dt = ktr*A(N-1) - ktr*A(N) +
feedback; cites Wallin 2009 [33] |
lcl = log(87.8) (L/h per m^2) |
87.8 | Table 3, PK parameters row CL |
lvc = log(18.5) (L per m^2) |
18.5 | Table 3, PK parameters row Vc |
lvp = log(22.9) (L per m^2) |
22.9 | Table 3, PK parameters row Vp |
lq = log(13.1) (L/h per m^2) |
13.1 | Table 3, PK parameters row Q |
lktr_anc = log(0.0132) (1/h) |
0.0132 | Table 3, neutrophil row ktr,N |
lslope_anc = log(0.263) (L/mg) |
0.263 | Table 3, neutrophil row SLOPE_N |
lbase_anc = log(3.24) (10^9/L) |
3240/mm^3 | Table 3, neutrophil row BASE_N |
lgamma_anc = log(0.193) |
0.193 | Table 3, neutrophil row GAMMA_N |
lktr_plt = log(0.0244) (1/h) |
0.0244 | Table 3, platelet row ktr,P |
lslope_plt = log(0.0656) (L/mg) |
0.0656 | Table 3, platelet row SLOPE_P |
lbase_plt = log(49.2) (10^9/L) |
49200/mm^3 | Table 3, platelet row BASE_P |
lgamma_plt = log(0.304) |
0.304 | Table 3, platelet row GAMMA_P |
limp = log(55) (10^9/L) |
55000/mm^3 | Table 3, platelet row IMP |
limk = log(5.3e-4) (1/h) |
0.000530 | Table 3, platelet row IMK |
etalcl ~ log(1+0.214^2) |
0.0448 | Table 3, BSV CL = 21.4% CV |
etalslope_anc ~ log(1+0.575^2) |
0.286 | Table 3, BSV SLOPE_N = 57.5% CV |
etalbase_anc ~ log(1+0.435^2) |
0.173 | Table 3, BSV BASE_N = 43.5% CV |
etalgamma_anc ~ log(1+0.394^2) |
0.144 | Table 3, BSV GAMMA_N = 39.4% CV |
etalslope_plt ~ log(1+0.257^2) |
0.0640 | Table 3, BSV SLOPE_P = 25.7% CV |
etalbase_plt ~ log(1+1.050^2) |
0.743 | Table 3, BSV BASE_P = 105% CV |
etalimp ~ log(1+0.783^2) |
0.478 | Table 3, BSV IMP = 78.3% CV |
propSd = sqrt(0.441) |
0.664 | Table 3, sigma^2_PK = 0.441 |
addSd_ANC = sqrt(754)/1000 |
0.0275 | Table 3, sigma^2_PD,N = 754 /mm32; /1000 -> 10^9/L |
addSd_PLT = sqrt(25000)/1000 |
0.158 | Table 3, sigma^2_PD,P = 25000 /mm32; /1000 -> 10^9/L |
Table 3 reports “NE” (not estimated) BSV for Vc, Vp, Q, ktr_N, ktr_P,
GAMMA_P, and IMK; these are carried as fixed structural parameters in
the model (no corresponding eta). The paper’s covariate analysis
(Results, “No meaningful covariate was found in either the patient
demographic or clinical variables”) found no retained covariates for
sex, age, baseline body weight, body-surface-area, or any clinical-lab
variable, so the model has covariateData = list().
Virtual cohort
The trial schedule for the 15 popPK-PD subjects was decitabine 4-12 mg/m^2/day as a 60-minute IV infusion for 5 consecutive days, repeated every 4 weeks (28-day protocol) up to Cycle 12; the median maintenance dose was 7 mg/m^2/day. The first reported recommendation is 5 mg/m^2/day for five consecutive days as the appropriate starting dose.
The simulation below builds a 4-cycle (16-week) virtual cohort at the recommended initial dose of 5 mg/m^2/day for 5 consecutive days per cycle, with cycles repeated every 28 days (the protocol interval). PK parameters are on a per-m^2 scale and the simulated doses are entered in mg/m^2 directly, so the simulated central concentration is in mg/L (= ug/mL = 1000 ng/mL).
set.seed(20151028)
n_subjects <- 200L
mg_per_m2 <- 5 # initial dose
dose_h <- 1 # 60-minute infusion
inf_rate <- mg_per_m2 / dose_h # mg/m^2/h
days_per_cycle <- 5
cycle_h <- 28 * 24 # 4-week protocol interval (hours)
n_cycles <- 4
total_h <- n_cycles * cycle_h
# Dense PK sampling on Cycle 1 Day 1 + sparse PD sampling weekly thereafter,
# matching the paper's protocol (PK on Cycle 1 Day 1; PD weekly through
# Cycle 4).
pk_obs_times <- c(0, 1/3, 2/3, 1, 1.5, 2, 3) # h after first dose
pd_obs_times <- seq(0, total_h, by = 24 * 7) # weekly through 16 weeks
# Five daily 1-h infusions per cycle, starting at the cycle start time
dose_starts <- as.vector(outer(
seq(0, by = 24, length.out = days_per_cycle), # 5 daily doses
seq(0, by = cycle_h, length.out = n_cycles), # cycle starts
FUN = "+"
))
make_events <- function(id) {
ev_dose <- data.frame(
id = id,
time = dose_starts,
evid = 1L,
amt = mg_per_m2,
cmt = "central",
rate = inf_rate,
dur = NA_real_
)
ev_obs_Cc <- data.frame(id = id, time = pk_obs_times,
evid = 0L, amt = 0, cmt = "Cc",
rate = NA_real_, dur = NA_real_)
ev_obs_ANC <- data.frame(id = id, time = pd_obs_times,
evid = 0L, amt = 0, cmt = "ANC",
rate = NA_real_, dur = NA_real_)
ev_obs_PLT <- data.frame(id = id, time = pd_obs_times,
evid = 0L, amt = 0, cmt = "PLT",
rate = NA_real_, dur = NA_real_)
dplyr::bind_rows(ev_dose, ev_obs_Cc, ev_obs_ANC, ev_obs_PLT)
}
events <- dplyr::bind_rows(lapply(seq_len(n_subjects), make_events))
nrow(events); length(unique(events$id))
#> [1] 12200
#> [1] 200Simulation
mod <- mod_meta
sim <- rxode2::rxSolve(
mod,
events = events
) |>
as.data.frame()
mod_typical <- mod |> rxode2::zeroRe()
sim_typical <- rxode2::rxSolve(
mod_typical,
events = events |> dplyr::filter(id == 1L)
) |>
as.data.frame()
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalslope_anc', 'etalbase_anc', 'etalgamma_anc', 'etalslope_plt', 'etalbase_plt', 'etalimp'Replicate published figures
Cmax cross-check (Discussion, page 4)
The paper’s Discussion states: “the predicted C_max after 1-h infusion of 5 mg/m^2 was 66.0 ng/mL.” Reproduce by reading off the typical-value trajectory at the end of the first infusion (t = 1 h).
Paper-internal discrepancy. The published Table 3 parameters imply an asymptotic infusion concentration k0/CL = 5/87.8 = 57 ng/mL as a ceiling (i.e. the highest Cc reachable for an infinite-duration infusion at this dose rate); the actual 1-h end-of-infusion typical value computed analytically from the 2-cmt parameters in Table 3 is ~51 ng/mL. The paper’s quoted 66 ng/mL therefore cannot come from the Table 3 typical-value PK; it may reflect an alternative dose or rate than the text states, an inclusion of IIV (a higher percentile of the predicted-Cmax distribution), or a transcription error in the paper. The model file in this package faithfully reproduces Table 3, so the simulated Cmax below matches the parameters as published (~51 ng/mL). This is flagged as a > 20% discrepancy with the paper’s narrative; see the verification-checklist policy of “flag, do not tune.”
cmax_check <- sim_typical |>
dplyr::filter(time >= 0, time <= 3) |>
dplyr::select(time, Cc) |>
dplyr::mutate(Cc_ngmL = Cc * 1000)
ggplot(cmax_check, aes(time, Cc_ngmL)) +
geom_line(linewidth = 0.9) +
geom_vline(xintercept = 1, linetype = 2) +
labs(x = "Time after first dose (h)",
y = "Decitabine plasma concentration (ng/mL)",
title = "Cycle 1 Day 1 typical-value profile after 1-h infusion of 5 mg/m^2",
caption = "Vertical dashed line marks end of infusion.") +
theme_minimal()
cmax_pred <- cmax_check |>
dplyr::filter(time <= 1) |>
dplyr::pull(Cc_ngmL) |>
max()
knitr::kable(data.frame(
metric = c("Predicted Cmax (ng/mL) at end of 1-h infusion of 5 mg/m^2"),
this_sim = round(cmax_pred, 1),
paper = "~66.0"
))| metric | this_sim | paper |
|---|---|---|
| Predicted Cmax (ng/mL) at end of 1-h infusion of 5 mg/m^2 | 51.3 | ~66.0 |
Figure 2 – ANC trajectory at 5 mg/m^2/day maintenance over 4 cycles
Han 2015 Figure 2 displays simulated time courses of ANC under the maintenance dosage of 5 mg/m^2/day for four treatment cycles, including the median and prediction intervals. The two qualitative features the text calls out are (i) the lowest ANC value appears in the second cycle (6-7 weeks after treatment initiation), and (ii) the time to recovery to ANC > 1000/mm^3 is approximately 5 weeks for the ANC.
sim_anc <- sim |>
dplyr::filter(!is.na(ANC)) |>
dplyr::mutate(week = time / 168)
anc_quants <- sim_anc |>
dplyr::group_by(week) |>
dplyr::summarise(
p10 = stats::quantile(ANC, 0.10, na.rm = TRUE),
p25 = stats::quantile(ANC, 0.25, na.rm = TRUE),
p50 = stats::quantile(ANC, 0.50, na.rm = TRUE),
p75 = stats::quantile(ANC, 0.75, na.rm = TRUE),
p90 = stats::quantile(ANC, 0.90, na.rm = TRUE),
.groups = "drop"
)
ggplot(anc_quants, aes(week, p50)) +
geom_ribbon(aes(ymin = p10, ymax = p90), fill = "steelblue", alpha = 0.15) +
geom_ribbon(aes(ymin = p25, ymax = p75), fill = "steelblue", alpha = 0.25) +
geom_line(linewidth = 0.9, colour = "steelblue") +
geom_hline(yintercept = 1.0, linetype = 2, colour = "darkred") + # 1000/mm^3 = 1.0 * 10^9/L
geom_hline(yintercept = 0.5, linetype = 2, colour = "indianred") + # 500/mm^3 = 0.5 * 10^9/L grade 4 toxicity
labs(x = "Time since treatment initiation (weeks)",
y = "Absolute neutrophil count (10^9 cells/L)",
title = "Replicates Han 2015 Figure 2 (ANC time course at 5 mg/m^2/day)",
caption = paste0(
"Median, 50% (dark) and 80% (light) prediction intervals from ",
n_subjects, " subjects. ",
"Dashed lines: ANC = 1.0 (recovery threshold) and ANC = 0.5 ",
"(grade 4 toxicity) x 10^9/L."
)) +
theme_minimal()
# Time to nadir
nadir_week <- anc_quants$week[which.min(anc_quants$p50)]
recovery_week <- anc_quants |>
dplyr::filter(week > nadir_week, p50 >= 1.0) |>
dplyr::slice_head(n = 1) |>
dplyr::pull(week)
knitr::kable(data.frame(
metric = c("Week of median-ANC nadir (Cycle 2 region per paper text)",
"Week of median ANC recovery to >= 1.0 x 10^9/L"),
this_sim = c(round(nadir_week, 1),
if (length(recovery_week)) round(recovery_week, 1) else NA),
paper_text = c("3.5 weeks (time-to-nadir), nadir achieved in 2nd cycle (6-7 weeks)",
"~5 weeks from last dose")
))| metric | this_sim | paper_text |
|---|---|---|
| Week of median-ANC nadir (Cycle 2 region per paper text) | 7 | 3.5 weeks (time-to-nadir), nadir achieved in 2nd cycle (6-7 weeks) |
| Week of median ANC recovery to >= 1.0 x 10^9/L | 8 | ~5 weeks from last dose |
Platelet trajectory with cycle-asymptotic baseline rise
The paper’s PD model adds an asymptotic baseline-rise structure for platelets (BASE_P_t = BASE_P + IMP * (1 - exp(-IMK * TIME))) to capture the gradual platelet-count increase over cycles – a contribution of decitabine to cell proliferation reported in previous studies.
sim_plt <- sim |>
dplyr::filter(!is.na(PLT)) |>
dplyr::mutate(week = time / 168)
plt_quants <- sim_plt |>
dplyr::group_by(week) |>
dplyr::summarise(
p10 = stats::quantile(PLT, 0.10, na.rm = TRUE),
p25 = stats::quantile(PLT, 0.25, na.rm = TRUE),
p50 = stats::quantile(PLT, 0.50, na.rm = TRUE),
p75 = stats::quantile(PLT, 0.75, na.rm = TRUE),
p90 = stats::quantile(PLT, 0.90, na.rm = TRUE),
.groups = "drop"
)
ggplot(plt_quants, aes(week, p50)) +
geom_ribbon(aes(ymin = p10, ymax = p90), fill = "darkgreen", alpha = 0.15) +
geom_ribbon(aes(ymin = p25, ymax = p75), fill = "darkgreen", alpha = 0.25) +
geom_line(linewidth = 0.9, colour = "darkgreen") +
geom_hline(yintercept = 30, linetype = 2, colour = "darkred") + # 30,000/mm^3 holding threshold
geom_hline(yintercept = 25, linetype = 3, colour = "indianred") +# 25,000/mm^3 grade 4 toxicity
labs(x = "Time since treatment initiation (weeks)",
y = "Platelet count (10^9 cells/L)",
title = "Platelet time course at 5 mg/m^2/day maintenance",
caption = paste(
"Median + 50% (dark) and 80% (light) prediction intervals.",
"Dashed line: PLT = 30 x 10^9/L (dose-hold);",
"dotted line: PLT = 25 x 10^9/L (grade 4 toxicity)."
)) +
theme_minimal()
PKNCA validation
The paper’s Discussion provides two cross-check NCA values: predicted Cmax = 66.0 ng/mL after a 1-h infusion of 5 mg/m^2, and a typical half-life of 0.31 h. PKNCA below evaluates Cycle-1-Day-1 (single-dose) NCA on the dense PK sampling grid (0, 20, 40, 60, 90, 120, 180 min) and compares Cmax and half-life with the paper.
sim_nca <- sim |>
dplyr::filter(time <= 3, !is.na(Cc)) |>
dplyr::distinct(id, time, .keep_all = TRUE) |>
dplyr::select(id, time, Cc) |>
dplyr::mutate(Cc_ngmL = Cc * 1000)
dose_df <- events |>
dplyr::filter(evid == 1L, time == 0) |>
dplyr::distinct(id, time, .keep_all = TRUE) |>
dplyr::transmute(id, time, amt, treatment = "5 mg/m^2 1-h IV")
conc_df <- sim_nca |> dplyr::mutate(treatment = "5 mg/m^2 1-h IV")
conc_obj <- PKNCA::PKNCAconc(
conc_df,
Cc_ngmL ~ time | treatment / id,
concu = "ng/mL",
timeu = "h"
)
dose_obj <- PKNCA::PKNCAdose(
dose_df,
amt ~ time | treatment + id,
doseu = "mg/m^2"
)
intervals <- data.frame(
start = 0,
end = 3,
cmax = TRUE,
tmax = TRUE,
auclast = TRUE,
aucinf.obs = TRUE,
half.life = TRUE
)
nca_res <- PKNCA::pk.nca(
PKNCA::PKNCAdata(conc_obj, dose_obj, intervals = intervals)
)
knitr::kable(summary(nca_res),
caption = "Cycle-1 Day-1 single-dose NCA (200 subjects, 5 mg/m^2 1-h IV).")| Interval Start | Interval End | id | N | AUClast (h*ng/mL) | Cmax (ng/mL) | Tmax (h) | Half-life (h) | AUCinf,obs (h*ng/mL) |
|---|---|---|---|---|---|---|---|---|
| 0 | 3 | 1 | 1 | 70.0 | 65.5 | 1.00 | 0.696 | 72.4 |
| 0 | 3 | 2 | 1 | 55.8 | 53.7 | 1.00 | 0.733 | 57.3 |
| 0 | 3 | 3 | 1 | 66.5 | 62.7 | 1.00 | 0.701 | 68.7 |
| 0 | 3 | 4 | 1 | 42.5 | 42.0 | 1.00 | 0.821 | 43.4 |
| 0 | 3 | 5 | 1 | 52.4 | 50.8 | 1.00 | 0.749 | 53.7 |
| 0 | 3 | 6 | 1 | 56.4 | 54.3 | 1.00 | 0.730 | 57.9 |
| 0 | 3 | 7 | 1 | 53.7 | 52.0 | 1.00 | 0.742 | 55.2 |
| 0 | 3 | 8 | 1 | 57.7 | 55.4 | 1.00 | 0.725 | 59.3 |
| 0 | 3 | 9 | 1 | 60.9 | 58.1 | 1.00 | 0.715 | 62.7 |
| 0 | 3 | 10 | 1 | 63.2 | 59.9 | 1.00 | 0.709 | 65.1 |
| 0 | 3 | 11 | 1 | 55.1 | 53.2 | 1.00 | 0.736 | 56.6 |
| 0 | 3 | 12 | 1 | 61.4 | 58.5 | 1.00 | 0.713 | 63.2 |
| 0 | 3 | 13 | 1 | 71.5 | 66.6 | 1.00 | 0.694 | 74.0 |
| 0 | 3 | 14 | 1 | 62.0 | 59.0 | 1.00 | 0.712 | 63.9 |
| 0 | 3 | 15 | 1 | 74.0 | 68.6 | 1.00 | 0.691 | 76.6 |
| 0 | 3 | 16 | 1 | 47.5 | 46.6 | 1.00 | 0.778 | 48.7 |
| 0 | 3 | 17 | 1 | 52.4 | 50.8 | 1.00 | 0.749 | 53.8 |
| 0 | 3 | 18 | 1 | 73.4 | 68.1 | 1.00 | 0.692 | 76.0 |
| 0 | 3 | 19 | 1 | 46.6 | 45.7 | 1.00 | 0.785 | 47.7 |
| 0 | 3 | 20 | 1 | 66.6 | 62.8 | 1.00 | 0.701 | 68.8 |
| 0 | 3 | 21 | 1 | 58.3 | 55.9 | 1.00 | 0.723 | 59.9 |
| 0 | 3 | 22 | 1 | 50.7 | 49.4 | 1.00 | 0.758 | 52.0 |
| 0 | 3 | 23 | 1 | 64.6 | 61.1 | 1.00 | 0.705 | 66.6 |
| 0 | 3 | 24 | 1 | 36.7 | 36.8 | 1.00 | 0.888 | 37.5 |
| 0 | 3 | 25 | 1 | 41.6 | 41.2 | 1.00 | 0.830 | 42.5 |
| 0 | 3 | 26 | 1 | 61.1 | 58.2 | 1.00 | 0.714 | 62.9 |
| 0 | 3 | 27 | 1 | 67.8 | 63.7 | 1.00 | 0.699 | 70.0 |
| 0 | 3 | 28 | 1 | 62.3 | 59.2 | 1.00 | 0.711 | 64.2 |
| 0 | 3 | 29 | 1 | 57.0 | 54.8 | 1.00 | 0.728 | 58.6 |
| 0 | 3 | 30 | 1 | 62.0 | 59.0 | 1.00 | 0.712 | 63.9 |
| 0 | 3 | 31 | 1 | 42.8 | 42.3 | 1.00 | 0.818 | 43.8 |
| 0 | 3 | 32 | 1 | 45.1 | 44.4 | 1.00 | 0.798 | 46.1 |
| 0 | 3 | 33 | 1 | 43.3 | 42.8 | 1.00 | 0.813 | 44.3 |
| 0 | 3 | 34 | 1 | 36.5 | 36.6 | 1.00 | 0.891 | 37.3 |
| 0 | 3 | 35 | 1 | 52.6 | 51.0 | 1.00 | 0.747 | 54.0 |
| 0 | 3 | 36 | 1 | 46.4 | 45.6 | 1.00 | 0.787 | 47.5 |
| 0 | 3 | 37 | 1 | 47.2 | 46.3 | 1.00 | 0.781 | 48.3 |
| 0 | 3 | 38 | 1 | 48.1 | 47.0 | 1.00 | 0.775 | 49.3 |
| 0 | 3 | 39 | 1 | 39.2 | 39.0 | 1.00 | 0.857 | 40.0 |
| 0 | 3 | 40 | 1 | 57.5 | 55.2 | 1.00 | 0.726 | 59.2 |
| 0 | 3 | 41 | 1 | 72.3 | 67.3 | 1.00 | 0.693 | 74.8 |
| 0 | 3 | 42 | 1 | 46.7 | 45.9 | 1.00 | 0.784 | 47.9 |
| 0 | 3 | 43 | 1 | 37.5 | 37.5 | 1.00 | 0.878 | 38.3 |
| 0 | 3 | 44 | 1 | 47.2 | 46.2 | 1.00 | 0.781 | 48.3 |
| 0 | 3 | 45 | 1 | 55.9 | 53.9 | 1.00 | 0.732 | 57.4 |
| 0 | 3 | 46 | 1 | 40.9 | 40.6 | 1.00 | 0.837 | 41.8 |
| 0 | 3 | 47 | 1 | 35.4 | 35.5 | 1.00 | 0.908 | 36.1 |
| 0 | 3 | 48 | 1 | 68.3 | 64.1 | 1.00 | 0.698 | 70.5 |
| 0 | 3 | 49 | 1 | 71.0 | 66.2 | 1.00 | 0.695 | 73.4 |
| 0 | 3 | 50 | 1 | 47.3 | 46.4 | 1.00 | 0.780 | 48.5 |
| 0 | 3 | 51 | 1 | 57.3 | 55.1 | 1.00 | 0.727 | 58.9 |
| 0 | 3 | 52 | 1 | 35.7 | 35.8 | 1.00 | 0.903 | 36.4 |
| 0 | 3 | 53 | 1 | 58.6 | 56.2 | 1.00 | 0.722 | 60.3 |
| 0 | 3 | 54 | 1 | 54.7 | 52.8 | 1.00 | 0.738 | 56.1 |
| 0 | 3 | 55 | 1 | 52.2 | 50.6 | 1.00 | 0.750 | 53.5 |
| 0 | 3 | 56 | 1 | 73.5 | 68.2 | 1.00 | 0.692 | 76.1 |
| 0 | 3 | 57 | 1 | 66.8 | 62.9 | 1.00 | 0.701 | 69.0 |
| 0 | 3 | 58 | 1 | 68.5 | 64.3 | 1.00 | 0.698 | 70.7 |
| 0 | 3 | 59 | 1 | 55.3 | 53.3 | 1.00 | 0.735 | 56.8 |
| 0 | 3 | 60 | 1 | 66.2 | 62.4 | 1.00 | 0.702 | 68.3 |
| 0 | 3 | 61 | 1 | 54.6 | 52.8 | 1.00 | 0.738 | 56.1 |
| 0 | 3 | 62 | 1 | 57.7 | 55.4 | 1.00 | 0.725 | 59.3 |
| 0 | 3 | 63 | 1 | 52.3 | 50.8 | 1.00 | 0.749 | 53.7 |
| 0 | 3 | 64 | 1 | 47.9 | 46.9 | 1.00 | 0.776 | 49.1 |
| 0 | 3 | 65 | 1 | 46.1 | 45.3 | 1.00 | 0.789 | 47.2 |
| 0 | 3 | 66 | 1 | 48.3 | 47.2 | 1.00 | 0.773 | 49.4 |
| 0 | 3 | 67 | 1 | 46.5 | 45.6 | 1.00 | 0.786 | 47.6 |
| 0 | 3 | 68 | 1 | 59.3 | 56.7 | 1.00 | 0.720 | 61.0 |
| 0 | 3 | 69 | 1 | 29.2 | 29.6 | 1.00 | 1.02 | 29.7 |
| 0 | 3 | 70 | 1 | 49.7 | 48.5 | 1.00 | 0.764 | 50.9 |
| 0 | 3 | 71 | 1 | 50.5 | 49.2 | 1.00 | 0.759 | 51.8 |
| 0 | 3 | 72 | 1 | 46.2 | 45.4 | 1.00 | 0.788 | 47.3 |
| 0 | 3 | 73 | 1 | 44.5 | 43.8 | 1.00 | 0.802 | 45.5 |
| 0 | 3 | 74 | 1 | 47.9 | 46.9 | 1.00 | 0.776 | 49.1 |
| 0 | 3 | 75 | 1 | 48.7 | 47.6 | 1.00 | 0.770 | 49.9 |
| 0 | 3 | 76 | 1 | 52.0 | 50.5 | 1.00 | 0.751 | 53.4 |
| 0 | 3 | 77 | 1 | 45.2 | 44.5 | 1.00 | 0.796 | 46.3 |
| 0 | 3 | 78 | 1 | 79.8 | 73.0 | 1.00 | 0.689 | 82.9 |
| 0 | 3 | 79 | 1 | 77.7 | 71.4 | 1.00 | 0.689 | 80.6 |
| 0 | 3 | 80 | 1 | 41.3 | 41.0 | 1.00 | 0.833 | 42.2 |
| 0 | 3 | 81 | 1 | 51.0 | 49.6 | 1.00 | 0.756 | 52.3 |
| 0 | 3 | 82 | 1 | 41.7 | 41.3 | 1.00 | 0.829 | 42.6 |
| 0 | 3 | 83 | 1 | 61.6 | 58.6 | 1.00 | 0.713 | 63.4 |
| 0 | 3 | 84 | 1 | 62.3 | 59.2 | 1.00 | 0.711 | 64.2 |
| 0 | 3 | 85 | 1 | 22.7 | 23.4 | 1.00 | 1.15 | 23.1 |
| 0 | 3 | 86 | 1 | 51.4 | 49.9 | 1.00 | 0.754 | 52.7 |
| 0 | 3 | 87 | 1 | 32.9 | 33.2 | 1.00 | 0.948 | 33.6 |
| 0 | 3 | 88 | 1 | 35.2 | 35.3 | 1.00 | 0.912 | 35.9 |
| 0 | 3 | 89 | 1 | 56.5 | 54.4 | 1.00 | 0.730 | 58.1 |
| 0 | 3 | 90 | 1 | 53.6 | 51.8 | 1.00 | 0.743 | 55.0 |
| 0 | 3 | 91 | 1 | 60.7 | 57.9 | 1.00 | 0.715 | 62.5 |
| 0 | 3 | 92 | 1 | 62.8 | 59.6 | 1.00 | 0.710 | 64.7 |
| 0 | 3 | 93 | 1 | 47.3 | 46.3 | 1.00 | 0.781 | 48.4 |
| 0 | 3 | 94 | 1 | 45.1 | 44.4 | 1.00 | 0.797 | 46.1 |
| 0 | 3 | 95 | 1 | 60.1 | 57.4 | 1.00 | 0.717 | 61.8 |
| 0 | 3 | 96 | 1 | 48.4 | 47.4 | 1.00 | 0.772 | 49.6 |
| 0 | 3 | 97 | 1 | 53.8 | 52.1 | 1.00 | 0.742 | 55.2 |
| 0 | 3 | 98 | 1 | 65.3 | 61.7 | 1.00 | 0.704 | 67.4 |
| 0 | 3 | 99 | 1 | 75.6 | 69.8 | 1.00 | 0.690 | 78.4 |
| 0 | 3 | 100 | 1 | 63.6 | 60.3 | 1.00 | 0.708 | 65.5 |
| 0 | 3 | 101 | 1 | 53.2 | 51.6 | 1.00 | 0.744 | 54.7 |
| 0 | 3 | 102 | 1 | 59.7 | 57.0 | 1.00 | 0.719 | 61.4 |
| 0 | 3 | 103 | 1 | 52.4 | 50.9 | 1.00 | 0.749 | 53.8 |
| 0 | 3 | 104 | 1 | 56.7 | 54.5 | 1.00 | 0.729 | 58.3 |
| 0 | 3 | 105 | 1 | 54.9 | 53.0 | 1.00 | 0.737 | 56.4 |
| 0 | 3 | 106 | 1 | 46.0 | 45.2 | 1.00 | 0.790 | 47.1 |
| 0 | 3 | 107 | 1 | 50.5 | 49.2 | 1.00 | 0.759 | 51.8 |
| 0 | 3 | 108 | 1 | 63.0 | 59.8 | 1.00 | 0.709 | 64.9 |
| 0 | 3 | 109 | 1 | 56.2 | 54.1 | 1.00 | 0.731 | 57.7 |
| 0 | 3 | 110 | 1 | 70.6 | 65.9 | 1.00 | 0.695 | 73.0 |
| 0 | 3 | 111 | 1 | 38.2 | 38.1 | 1.00 | 0.868 | 39.1 |
| 0 | 3 | 112 | 1 | 65.7 | 62.0 | 1.00 | 0.703 | 67.8 |
| 0 | 3 | 113 | 1 | 56.3 | 54.2 | 1.00 | 0.731 | 57.9 |
| 0 | 3 | 114 | 1 | 61.5 | 58.6 | 1.00 | 0.713 | 63.3 |
| 0 | 3 | 115 | 1 | 53.6 | 51.9 | 1.00 | 0.743 | 55.0 |
| 0 | 3 | 116 | 1 | 31.2 | 31.5 | 1.00 | 0.980 | 31.8 |
| 0 | 3 | 117 | 1 | 47.0 | 46.1 | 1.00 | 0.782 | 48.2 |
| 0 | 3 | 118 | 1 | 45.4 | 44.6 | 1.00 | 0.795 | 46.4 |
| 0 | 3 | 119 | 1 | 42.0 | 41.6 | 1.00 | 0.826 | 42.9 |
| 0 | 3 | 120 | 1 | 53.2 | 51.6 | 1.00 | 0.744 | 54.6 |
| 0 | 3 | 121 | 1 | 59.1 | 56.6 | 1.00 | 0.720 | 60.8 |
| 0 | 3 | 122 | 1 | 69.3 | 64.9 | 1.00 | 0.697 | 71.6 |
| 0 | 3 | 123 | 1 | 64.7 | 61.2 | 1.00 | 0.705 | 66.7 |
| 0 | 3 | 124 | 1 | 57.1 | 54.9 | 1.00 | 0.727 | 58.7 |
| 0 | 3 | 125 | 1 | 51.2 | 49.8 | 1.00 | 0.755 | 52.5 |
| 0 | 3 | 126 | 1 | 41.3 | 40.9 | 1.00 | 0.833 | 42.2 |
| 0 | 3 | 127 | 1 | 54.7 | 52.8 | 1.00 | 0.738 | 56.2 |
| 0 | 3 | 128 | 1 | 36.6 | 36.6 | 1.00 | 0.891 | 37.4 |
| 0 | 3 | 129 | 1 | 64.2 | 60.8 | 1.00 | 0.706 | 66.2 |
| 0 | 3 | 130 | 1 | 60.2 | 57.5 | 1.00 | 0.717 | 62.0 |
| 0 | 3 | 131 | 1 | 39.9 | 39.6 | 1.00 | 0.849 | 40.7 |
| 0 | 3 | 132 | 1 | 69.0 | 64.7 | 1.00 | 0.697 | 71.3 |
| 0 | 3 | 133 | 1 | 41.9 | 41.5 | 1.00 | 0.827 | 42.8 |
| 0 | 3 | 134 | 1 | 48.9 | 47.8 | 1.00 | 0.769 | 50.1 |
| 0 | 3 | 135 | 1 | 52.9 | 51.2 | 1.00 | 0.746 | 54.2 |
| 0 | 3 | 136 | 1 | 41.4 | 41.0 | 1.00 | 0.832 | 42.3 |
| 0 | 3 | 137 | 1 | 72.9 | 67.7 | 1.00 | 0.692 | 75.4 |
| 0 | 3 | 138 | 1 | 48.3 | 47.3 | 1.00 | 0.773 | 49.5 |
| 0 | 3 | 139 | 1 | 46.0 | 45.2 | 1.00 | 0.790 | 47.1 |
| 0 | 3 | 140 | 1 | 38.0 | 37.9 | 1.00 | 0.872 | 38.8 |
| 0 | 3 | 141 | 1 | 48.0 | 47.0 | 1.00 | 0.775 | 49.2 |
| 0 | 3 | 142 | 1 | 30.8 | 31.2 | 1.00 | 0.986 | 31.4 |
| 0 | 3 | 143 | 1 | 67.7 | 63.6 | 1.00 | 0.699 | 69.9 |
| 0 | 3 | 144 | 1 | 67.4 | 63.4 | 1.00 | 0.700 | 69.6 |
| 0 | 3 | 145 | 1 | 54.4 | 52.6 | 1.00 | 0.739 | 55.9 |
| 0 | 3 | 146 | 1 | 52.0 | 50.5 | 1.00 | 0.751 | 53.3 |
| 0 | 3 | 147 | 1 | 70.0 | 65.4 | 1.00 | 0.696 | 72.3 |
| 0 | 3 | 148 | 1 | 36.4 | 36.4 | 1.00 | 0.893 | 37.2 |
| 0 | 3 | 149 | 1 | 29.7 | 30.1 | 1.00 | 1.01 | 30.3 |
| 0 | 3 | 150 | 1 | 73.2 | 68.0 | 1.00 | 0.692 | 75.8 |
| 0 | 3 | 151 | 1 | 69.6 | 65.2 | 1.00 | 0.696 | 72.0 |
| 0 | 3 | 152 | 1 | 57.5 | 55.2 | 1.00 | 0.726 | 59.1 |
| 0 | 3 | 153 | 1 | 45.4 | 44.7 | 1.00 | 0.795 | 46.5 |
| 0 | 3 | 154 | 1 | 41.8 | 41.4 | 1.00 | 0.828 | 42.7 |
| 0 | 3 | 155 | 1 | 43.2 | 42.6 | 1.00 | 0.814 | 44.1 |
| 0 | 3 | 156 | 1 | 71.4 | 66.6 | 1.00 | 0.694 | 73.9 |
| 0 | 3 | 157 | 1 | 58.0 | 55.7 | 1.00 | 0.724 | 59.7 |
| 0 | 3 | 158 | 1 | 52.8 | 51.1 | 1.00 | 0.747 | 54.1 |
| 0 | 3 | 159 | 1 | 52.2 | 50.6 | 1.00 | 0.750 | 53.5 |
| 0 | 3 | 160 | 1 | 73.9 | 68.5 | 1.00 | 0.692 | 76.5 |
| 0 | 3 | 161 | 1 | 48.4 | 47.3 | 1.00 | 0.773 | 49.6 |
| 0 | 3 | 162 | 1 | 50.7 | 49.4 | 1.00 | 0.758 | 52.0 |
| 0 | 3 | 163 | 1 | 76.4 | 70.5 | 1.00 | 0.690 | 79.3 |
| 0 | 3 | 164 | 1 | 40.4 | 40.1 | 1.00 | 0.843 | 41.3 |
| 0 | 3 | 165 | 1 | 64.3 | 60.8 | 1.00 | 0.706 | 66.3 |
| 0 | 3 | 166 | 1 | 63.8 | 60.5 | 1.00 | 0.707 | 65.8 |
| 0 | 3 | 167 | 1 | 49.2 | 48.0 | 1.00 | 0.768 | 50.4 |
| 0 | 3 | 168 | 1 | 63.0 | 59.8 | 1.00 | 0.709 | 65.0 |
| 0 | 3 | 169 | 1 | 65.5 | 61.9 | 1.00 | 0.703 | 67.6 |
| 0 | 3 | 170 | 1 | 47.1 | 46.2 | 1.00 | 0.782 | 48.3 |
| 0 | 3 | 171 | 1 | 56.4 | 54.2 | 1.00 | 0.730 | 57.9 |
| 0 | 3 | 172 | 1 | 38.7 | 38.6 | 1.00 | 0.862 | 39.6 |
| 0 | 3 | 173 | 1 | 71.1 | 66.3 | 1.00 | 0.694 | 73.5 |
| 0 | 3 | 174 | 1 | 57.1 | 54.9 | 1.00 | 0.728 | 58.7 |
| 0 | 3 | 175 | 1 | 66.2 | 62.4 | 1.00 | 0.702 | 68.3 |
| 0 | 3 | 176 | 1 | 71.2 | 66.4 | 1.00 | 0.694 | 73.7 |
| 0 | 3 | 177 | 1 | 79.2 | 72.6 | 1.00 | 0.689 | 82.3 |
| 0 | 3 | 178 | 1 | 64.1 | 60.7 | 1.00 | 0.706 | 66.1 |
| 0 | 3 | 179 | 1 | 69.7 | 65.2 | 1.00 | 0.696 | 72.0 |
| 0 | 3 | 180 | 1 | 65.9 | 62.2 | 1.00 | 0.703 | 68.0 |
| 0 | 3 | 181 | 1 | 54.4 | 52.6 | 1.00 | 0.739 | 55.9 |
| 0 | 3 | 182 | 1 | 65.3 | 61.7 | 1.00 | 0.704 | 67.3 |
| 0 | 3 | 183 | 1 | 72.6 | 67.5 | 1.00 | 0.693 | 75.1 |
| 0 | 3 | 184 | 1 | 38.9 | 38.8 | 1.00 | 0.860 | 39.8 |
| 0 | 3 | 185 | 1 | 55.9 | 53.9 | 1.00 | 0.732 | 57.5 |
| 0 | 3 | 186 | 1 | 56.7 | 54.5 | 1.00 | 0.729 | 58.2 |
| 0 | 3 | 187 | 1 | 48.8 | 47.7 | 1.00 | 0.770 | 50.1 |
| 0 | 3 | 188 | 1 | 51.5 | 50.0 | 1.00 | 0.754 | 52.8 |
| 0 | 3 | 189 | 1 | 46.2 | 45.4 | 1.00 | 0.788 | 47.3 |
| 0 | 3 | 190 | 1 | 45.4 | 44.6 | 1.00 | 0.795 | 46.4 |
| 0 | 3 | 191 | 1 | 48.6 | 47.5 | 1.00 | 0.771 | 49.8 |
| 0 | 3 | 192 | 1 | 46.9 | 46.0 | 1.00 | 0.783 | 48.0 |
| 0 | 3 | 193 | 1 | 68.8 | 64.5 | 1.00 | 0.698 | 71.0 |
| 0 | 3 | 194 | 1 | 53.1 | 51.4 | 1.00 | 0.745 | 54.5 |
| 0 | 3 | 195 | 1 | 44.5 | 43.8 | 1.00 | 0.802 | 45.5 |
| 0 | 3 | 196 | 1 | 39.8 | 39.6 | 1.00 | 0.850 | 40.7 |
| 0 | 3 | 197 | 1 | 45.0 | 44.3 | 1.00 | 0.798 | 46.1 |
| 0 | 3 | 198 | 1 | 66.5 | 62.7 | 1.00 | 0.701 | 68.7 |
| 0 | 3 | 199 | 1 | 54.0 | 52.2 | 1.00 | 0.741 | 55.4 |
| 0 | 3 | 200 | 1 | 45.6 | 44.9 | 1.00 | 0.793 | 46.7 |
pp_res <- as.data.frame(nca_res$result)
cmax_median <- median(pp_res$PPORRES[pp_res$PPTESTCD == "cmax"], na.rm = TRUE)
hl_median <- median(pp_res$PPORRES[pp_res$PPTESTCD == "half.life"], na.rm = TRUE)
knitr::kable(data.frame(
metric = c("Cmax (ng/mL)", "Apparent half-life (h)"),
this_sim_med = c(round(cmax_median, 1), round(hl_median, 2)),
paper_target = c("~66 (Discussion, page 4)", "~0.31 (Discussion, page 4)")
))| metric | this_sim_med | paper_target |
|---|---|---|
| Cmax (ng/mL) | 51.90 | ~66 (Discussion, page 4) |
| Apparent half-life (h) | 0.74 | ~0.31 (Discussion, page 4) |
Assumptions and deviations
-
Per-m^2 PK scale and dosing unit. Han 2015 reports
PK parameters on a body-surface-area-normalized scale (L/h per m^2 and L
per m^2); this is the convention for cytotoxic dosing in oncology. Doses
are consequently entered in
mg/m^2(notmg), and the central compartment carriesmg/m^2–central / vcyieldsmg/Ldirectly. Users who wish to dose inmgfor a patient with known BSA must pre-multiply the absolute mg dose by1 / BSA(m^2) before passing it to the model, or alternatively rescale the per-m^2 PK parameters by their patient’s BSA. The trial protocol always recorded doses inmg/m^2/day, so the per-m^2 model is the operational convention. -
No covariates in the final model. Han 2015 reports
“no meaningful covariate was found in either the patient demographic or
clinical variables”, so
covariateData = list(). Demographic facts (age range 19-64 years, 40% female, all Korean) are recorded inpopulationmetadata for downstream filtering but do not affect simulation. -
Vc, Vp, Q, ktr_N, ktr_P, GAMMA_P, and IMK have no
IIV. Table 3’s BSV column reports “NE” (not estimated) for
these parameters; the Methods says “BSV … was the only random effect
which could be estimated, except for the proportional residual error”
for PK CL. The model carries these as typical-value-only parameters (no
corresponding eta in
ini()), consistent with the paper’s reporting. - Friberg / Wallin transit kinetics use a single ktr. Both ANC and PLT chains use one structural ktr (the rate constant of inter- compartmental movement, reported in 1/h directly in Table 3) applied uniformly to the proliferation, transit, and circulating compartments. This matches the Wallin 2009 form the paper cites (reference 33). The implied mean transit time MTT = 4 / ktr is 303 h (12.6 days) for ANC and 164 h (6.8 days) for PLT.
-
Time-varying platelet baseline enters via feedback
only. The
BASE_P_t = BASE_P + IMP * (1 - exp(-IMK * TIME))structure substitutes for BASE_P inside the Friberg feedback term(BASE_P_t / circ_plt)^GAMMA_Ponly; the transit kinetics use the structuralktr_Punchanged, and the initial conditionsprecursor*_plt(0) = circ_plt(0) = BASE_Pare correct becauseBASE_P_t(t = 0) = BASE_P. This faithfully reproduces the paper’s second formula in “Overall mixed-effect PK-PD analysis”. -
Time origin for IMK. The paper writes the platelet
asymptote in terms of
TIME(time from initiation of decitabine treatment). The model uses rxode2’s reserved variablet, which is simulation time; for any rxode2 events table that places the first dose att = 0the two are identical. Users who define event tables with t < 0 for pre-dose observations will seeBASE_P_t < BASE_Pbecause1 - exp(-IMK*t) < 0fort < 0; the canonical usage is to start att = 0. -
Initial-condition simplification. Friberg chains
are placed at steady-state at
t = 0(all five compartments equal to BASE, consistent with the Friberg derivation where the unperturbed system hasprecursor1 = ... = circat the baseline value). The paper does not provide a separate ramp-in period; the trial enrolled patients whose blood counts had recovered to PC > 30,000/mm^3 and ANC > 1000/mm^3 prior to decitabine initiation. -
Half-life cross-check. The paper’s Discussion
reports an “average terminal half-life … of 0.31 h in this study”. With
CL/Vc = 87.8 / 18.5 = 4.745 /h the rapid distribution half-life is
ln(2)/4.745 = 0.146 h; the slower beta phase is around 1.4 h (per analytic 2-cmt eigenvalues from CL, Vc, Vp, Q). The simulated single-dose half-life PKNCA estimates (above) reflect the average behaviour across the observed sampling window (3 h post-dose) where the alpha and beta phases mix; the apparent half-life depends sensitively on which terminal-phase points the NCA algorithm uses. The published “0.31 h” is an empirical estimate from non-compartmental analysis on the actual clinical samples (Discussion, p. 4) – the PKNCA value here is on simulated typical-value data and is reported only as a sanity check, not as a faithful reproduction of the empirical estimate. -
circ_anc,precursor*_anc,circ_plt,precursor*_pltcompartment names deviate from the canonical compartment register (depot,central,peripheral<n>,effect, …). They are retained because they directly mirror the standard Friberg / Wallin notation (proliferation -> 3 transits -> circulating); the Friberg-precedent files (Friberg_2002_paclitaxelin DDMORE,Petrov_2024_romiplostim,Netterberg_2017_docetaxel,Guo_2022_PF_06939999) use the same naming.checkModelConventions()flags these as warnings ofcompartmentsseverity; the deviation is intentional. -
Residual error stored in
ini()on the canonical 10^9/L PD unit. Han 2015 reports the PD additive residual variances assigma^2_PD,N = 754 /mm^3^2andsigma^2_PD,P = 25,000 /mm^3^2. The SDs inmm^-3aresqrt(754) = 27.46andsqrt(25000) = 158.1. To matchaddSd_ANC/addSd_PLTto the canonical PD observation unit of10^9 cells/L(i.e.1000 / mm^3), the SDs inini()are divided by 1000 to give0.0275and0.158. - Successful-bootstrap convergence not propagated. Han 2015 reports bootstrap convergence rates of 78.8% (PK) and 78.0% (PD) with median parameter estimates that closely match the point estimates (Table 3, Bootstrap median column). The model carries the point estimates rather than the bootstrap medians; the differences are < 5% for every reported parameter.