Skip to contents

Model and source

  • Citation: Kimura T, Fukaya Y, Hamada Y, Yoshimura K, Kawamoto H. Pharmacokinetics and Pharmacodynamics of Glucarpidase Rescue Treatment After High-dose Methotrexate Therapy Based on Modeling and Simulation. Anticancer Res. 2023;43(5):1919-1924. doi:10.21873/anticanres.16351
  • Description: Modified Michaelis-Menten PK/PD simulation model for glucarpidase (CPG2) rescue after high-dose methotrexate (Kimura 2023). MTX disposition is 2-compartment IV with renal-only first-order elimination (Kr fixed at ~10% of literature total MTX CL from Fukahara 2008); the remaining elimination is captured by a saturable hydrolysis term coupled to a 1-compartment IV CPG2 disposition. All structural parameters are literature-sourced point values (no estimation in the source paper).
  • Article: https://doi.org/10.21873/anticanres.16351

Kimura and colleagues developed a simulation-only modified Michaelis-Menten PK/PD model to support dose selection for a Japanese phase II study of glucarpidase (CPG2) rescue therapy after high-dose methotrexate (MTX). The PK parameters were taken from prior publications (Fukahara 2008 for MTX, Phillips 2008 for CPG2, and the 2021 EMA Voraxaze assessment for the Michaelis-Menten constants) and not re-estimated. Monte-Carlo simulations of 500 virtual patients per dose arm were used to evaluate the proportion of samples in which plasma MTX fell below 0.1 and 1.0 micromol/L at 70 h and 120 h after MTX administration.

Population

The simulation assumed a single virtual-patient archetype: 60 kg body weight, 1.73 m^2 body surface area, 80 mL/min creatinine clearance, and a methotrexate renal clearance set to 10% of the literature total CL of 5.57 L/h (giving the MTX clearance mean of 0.615 L/h reported in Kimura 2023 Table II). The remaining MTX elimination – modelled in the original Fukahara 2008 popPK fit as a Kd metabolic pathway – is replaced in this paper by the saturable CPG2-mediated hydrolysis term. The same population metadata is available programmatically via rxode2::rxode(readModelDb("Kimura_2023_glucarpidase"))$population.

Source trace

The per-parameter origin is recorded as an in-file comment next to each ini() entry in inst/modeldb/specificDrugs/Kimura_2023_glucarpidase.R. The table below collects them in one place.

Equation / parameter Value (typical) Units Source location
MTX cl (= Kr*Vc) 0.615 L/h Kimura 2023 Table II (Mean column)
MTX vc 26.683 L Kimura 2023 Table II (Mean column)
MTX vp 2.253 L Kimura 2023 Table II (Mean column)
MTX q 0.078 L/h Kimura 2023 Table II (Mean column)
CPG2 cl_cpg2 0.310 L/h Kimura 2023 Table II (Mean column)
CPG2 vc_cpg2 4.114 L Kimura 2023 Table II (Mean column)
km_cpg2 86 umol/L Kimura 2023 Table I ref 18 (EMA Voraxaze 2021)
alpha 2.88e6 L/h Kimura 2023 Table I ref 18 and Equation 3 (alpha = 800 mol/s at 1 mol/L CPG2 = 800 L/s = 2.88e6 L/h)
MTX 2-cmt structure n/a Kimura 2023 Equations 1, 4
CPG2 1-cmt structure n/a Kimura 2023 text page 1920 (Cat with V and Ke)
MM hydrolysis term alpha * [CPG2] * [MTX]/(Km + [MTX]) umol/h Kimura 2023 Equations 2-4

The Monte-Carlo simulations in the paper sampled each parameter independently from the Normal distributions in Table II (mean, SD, 95% CI). This file encodes the typical-value mean parameters; the vignette below reproduces a Monte-Carlo cohort by external sampling against those Normals.

Unit conventions

Amounts in the model are in micromol (umol); volumes in L; concentrations in umol/L; time in hours. The methotrexate molecular weight 454.44 g/mol and the glucarpidase activity-to-mole conversion 1 U = 1 umol substrate/min hydrolysis (the standard activity-unit definition for CPG2) together with the recombinant glucarpidase specific activity of approximately 1000 U/mg (per the EMA Voraxaze assessment, Kimura 2023 ref 18) and the glucarpidase homodimer molecular weight 83 kDa (Kimura 2023 page 1919, Introduction) fix the dose unit-conversions used below.

mw_mtx                <- 454.44     # g/mol
mw_cpg2_kDa           <- 83         # kDa = mg/umol
specific_activity_cpg2 <- 1000      # U/mg (recombinant CPG2; EMA Voraxaze)

Virtual cohort

The simulation arm uses the paper’s reference virtual patient: 60 kg body weight, 1.73 m^2 body surface area, 80 mL/min CrCl. MTX is given as a 4-h IV infusion at 1 g/m^2; CPG2 is given as an IV bolus at t = 24 h (after the MTX infusion has cleared the lung-protective window). Doses 20, 50, and 80 U/kg are simulated.

wt  <- 60                 # kg
bsa <- 1.73               # m^2

mtx_mg     <- 1000 * bsa                     # 1730 mg per subject
mtx_umol   <- mtx_mg / mw_mtx * 1000         # umol
mtx_rate   <- mtx_umol / 4                   # umol / h (4-h infusion)

cpg2_dose_umol <- function(dose_U_per_kg, body_weight_kg = wt) {
  # dose (U) -> mass (mg) -> umol
  dose_U <- dose_U_per_kg * body_weight_kg
  dose_mg <- dose_U / specific_activity_cpg2
  dose_mg / mw_cpg2_kDa
}

doses_Upkg <- c(20, 50, 80)

make_events <- function(dose_U_per_kg, t_cpg2 = 24, obs_grid = seq(0, 144, by = 0.25)) {
  cpg2_umol <- cpg2_dose_umol(dose_U_per_kg)
  et() |>
    et(dose = mtx_umol, rate = mtx_rate, cmt = "central",      time = 0) |>
    et(dose = cpg2_umol,                 cmt = "central_cpg2", time = t_cpg2) |>
    et(obs_grid) |>
    as.data.frame() |>
    mutate(treatment = paste0("CPG2 ", dose_U_per_kg, " U/kg"))
}

events <- bind_rows(lapply(doses_Upkg, make_events))

Simulation (typical individual)

The model has no IIV / residual error, so a typical-value simulation is the right primary check; Monte-Carlo follows below.

mod         <- readModelDb("Kimura_2023_glucarpidase")
mod_typical <- zeroRe(mod)
#> Warning: No omega parameters in the model
#> Warning: No sigma parameters in the model

sim_typical <- bind_rows(lapply(doses_Upkg, function(d) {
  ev <- make_events(d)
  s  <- rxSolve(mod_typical, ev) |> as.data.frame()
  s$treatment <- paste0("CPG2 ", d, " U/kg")
  s
}))

Replicates Figure 2 of Kimura 2023

Plasma MTX (black line family) and plasma CPG2 (green line family) on a log y-axis. Methotrexate is given as a 4-h infusion starting at t = 0; CPG2 is administered as an IV bolus at t = 24 h. The 20 and 50 U/kg panels mirror Figure 2A and 2B respectively.

sim_typical |>
  filter(treatment %in% c("CPG2 20 U/kg", "CPG2 50 U/kg")) |>
  pivot_longer(c(Cc, Cc_cpg2), names_to = "analyte", values_to = "conc_umolL") |>
  mutate(analyte = recode(analyte, Cc = "Plasma MTX", Cc_cpg2 = "Plasma CPG2")) |>
  filter(conc_umolL > 1e-4) |>
  ggplot(aes(time, conc_umolL, colour = analyte)) +
  geom_line(linewidth = 0.8) +
  facet_wrap(~ treatment) +
  scale_y_log10() +
  scale_colour_manual(values = c("Plasma MTX" = "black", "Plasma CPG2" = "darkgreen")) +
  labs(x = "Time (h)", y = "Concentration (umol/L)",
       title = "Replicates Figure 2 of Kimura 2023",
       caption = "Typical-value trajectory; paper Figure 2 shows the MC envelope.") +
  theme_bw()

Replicates Figure 3 of Kimura 2023

Mean plasma MTX vs time across all eight CPG2 dose arms (10 - 80 U/kg) on a log scale.

all_doses <- seq(10, 80, by = 10)
sim_all <- bind_rows(lapply(all_doses, function(d) {
  s <- rxSolve(mod_typical, make_events(d)) |> as.data.frame()
  s$dose_Upkg <- d
  s
}))

sim_all |>
  filter(Cc > 1e-4) |>
  ggplot(aes(time, Cc, colour = factor(dose_Upkg))) +
  geom_line(linewidth = 0.6) +
  scale_y_log10() +
  scale_colour_viridis_d() +
  labs(x = "Time (h)", y = "Plasma MTX (umol/L)", colour = "CPG2 (U/kg)",
       title = "Replicates Figure 3A of Kimura 2023",
       caption = "Typical-value MTX trajectory across CPG2 dose arms.") +
  theme_bw()

Monte-Carlo simulation (Figure 4)

The paper sampled each PK parameter independently from a truncated-Normal (non-negative) distribution at the Table II Mean and SD, for 500 virtual patients per CPG2 dose arm, and tabulated the proportion of patients whose plasma MTX was less than 0.1 umol/L at 70 h and 120 h. This vignette reproduces a smaller-N Monte-Carlo for runtime budget; increase n_per_arm for a fuller replication.

n_per_arm <- 200   # paper used 500
set.seed(1)

sample_parms <- function(n) {
  # Table II of Kimura 2023: independent (truncated) Normals per parameter.
  tibble(
    cl       = pmax(rnorm(n, mean = 0.615,  sd = 0.215),  1e-6),
    vc       = pmax(rnorm(n, mean = 26.683, sd = 9.749),  1e-3),
    vp       = pmax(rnorm(n, mean = 2.253,  sd = 1.038),  1e-3),
    q        = pmax(rnorm(n, mean = 0.078,  sd = 0.036),  1e-6),
    cl_cpg2  = pmax(rnorm(n, mean = 0.310,  sd = 0.062),  1e-6),
    vc_cpg2  = pmax(rnorm(n, mean = 4.114,  sd = 0.802),  1e-3)
  )
}

run_one_arm <- function(dose_U_per_kg, n) {
  parms <- sample_parms(n)
  parms$id <- seq_len(n)
  cpg2_umol <- cpg2_dose_umol(dose_U_per_kg)

  ev <- bind_rows(lapply(parms$id, function(i) {
    et() |>
      et(id = i, dose = mtx_umol, rate = mtx_rate, cmt = "central",      time = 0) |>
      et(id = i, dose = cpg2_umol,                 cmt = "central_cpg2", time = 24) |>
      et(id = i, c(70, 120)) |>
      as.data.frame()
  }))

  params_df <- with(parms, data.frame(
    id       = id,
    lcl      = log(cl),
    lvc      = log(vc),
    lvp      = log(vp),
    lq       = log(q),
    lcl_cpg2 = log(cl_cpg2),
    lvc_cpg2 = log(vc_cpg2)
  ))

  s <- rxSolve(mod_typical, events = ev, params = params_df,
               returnType = "data.frame")
  s$dose_Upkg <- dose_U_per_kg
  s
}

mc_results <- bind_rows(lapply(all_doses, function(d) run_one_arm(d, n_per_arm)))

mc_summary <- mc_results |>
  filter(time %in% c(70, 120)) |>
  group_by(dose_Upkg, time) |>
  summarise(
    pct_below_0p1 = mean(Cc < 0.1) * 100,
    pct_below_1p0 = mean(Cc < 1.0) * 100,
    .groups = "drop"
  )

knitr::kable(mc_summary,
             col.names = c("CPG2 dose (U/kg)", "Time (h)",
                           "% MTX < 0.1 umol/L", "% MTX < 1.0 umol/L"),
             caption = paste0("Monte-Carlo replication of Kimura 2023 Figure 4 (n = ",
                              n_per_arm, " per arm).") )
Monte-Carlo replication of Kimura 2023 Figure 4 (n = 200 per arm).
CPG2 dose (U/kg) Time (h) % MTX < 0.1 umol/L % MTX < 1.0 umol/L
10 70 31.5 96.5
10 120 29.5 95.5
20 70 41.0 99.5
20 120 31.0 96.5
30 70 52.5 98.0
30 120 37.5 96.5
40 70 60.5 100.0
40 120 40.5 97.5
50 70 66.5 100.0
50 120 45.0 98.0
60 70 81.5 100.0
60 120 50.0 99.0
70 70 82.5 99.5
70 120 48.0 98.0
80 70 83.5 100.0
80 120 50.0 99.0

For comparison, the paper reports:

CPG2 (U/kg) Time (h) % MTX < 0.1 umol/L (Kimura 2023)
20 70 71.8%
50 70 89.6%
20 120 46.4%
50 120 59.0%

Both the simulated and the paper’s tabulated proportions show the characteristic monotonic increase with CPG2 dose at 70 h and the plateau / rebound behaviour at 120 h that is the principal clinical finding of the study (the high proportion of patients with MTX > 0.1 umol/L at 120 h motivates the > 144 h monitoring recommendation in the paper’s Conclusion).

Assumptions and deviations

  • Dose unit conversion is operator-supplied. The model uses umol (amount) and umol/L (concentration); MTX in mg and CPG2 in U have to be converted at the event-table boundary. The vignette’s conversion factors use methotrexate MW = 454.44 g/mol (standard chemistry), glucarpidase MW = 83 kDa (Kimura 2023 page 1919, Introduction), and recombinant glucarpidase specific activity = 1000 U/mg (per EMA Voraxaze 2021, Kimura 2023 ref 18). A user with a different formulation or a different reported specific activity must adjust accordingly.
  • MTX ‘Clearance’ in Table II = Kr * Vc (renal arm only), not total CL. The paper describes the simulation virtual patients as having “methotrexate clearance of 10%”, which we interpret as Kr / CL_total = 0.10; the literature Fukahara 2008 total CL at CLcr 80 mL/min is 5.57 L/h. 10% of 5.57 = 0.557 L/h, close to but not identical to the 0.615 L/h reported in Table II Mean. The model uses the explicit Table II value 0.615 L/h since that is what the published Monte-Carlo runs actually sampled around.
  • No body-weight, age, or CrCl covariates in the model. The paper’s simulation fixes all of these to single virtual-patient values; encoding them as covariates is not faithful to what the paper actually ran. Users who want to extrapolate to a different weight / CLcr profile should re-derive the typical-value parameters from the upstream sources (Fukahara 2008 for MTX, Phillips 2008 for CPG2).
  • Monte-Carlo variability sits in the vignette, not the model file. Table II reports independent Normal distributions per parameter; this is not the standard log-normal-eta IIV form used elsewhere in the nlmixr2lib catalog, and forcing it into an eta* framework would misrepresent the source. The model file therefore carries the typical (Mean) values inside fixed() wrappers; the vignette reproduces the paper’s parameter-sampling MC externally.
  • CPG2 administration time fixed at 24 h. The paper says “After methotrexate treatment … for 4 h, CPG2 was intravenously administered”, without giving the exact administration time. Figure 2’s panels show the CPG2 spike around t = 20-24 h, consistent with the conventional clinical protocol of giving glucarpidase at ~ 24 h post-MTX. The vignette uses t = 24 h; users replicating other timing scenarios should adjust the event table accordingly.
  • MC replication is qualitative, not exact. With the Table II Normal distributions sampled independently (the paper does not state whether the draws were truncated, log-transformed, or correlated), the proportions reported in this vignette are systematically lower than those in Kimura 2023 Figure 4 / page 1921 – at 50 U/kg, 70 h, the paper reports 89.6% below 0.1 umol/L; this vignette gives ~67% (independent of N). The monotonic dose-response relationship, the plateau above 50 U/kg, and the rebound behaviour at 120 h are all reproduced; the absolute percentages are not. Per the skill’s no-tuning rule, no parameter values were adjusted to close the gap. Plausible contributors to the residual difference – none of them load-bearing on the published clinical recommendation – are
    1. a different sampling implementation in the original deSolve runs (paper-Methods does not specify the truncation rule), (b) an undocumented correlation between MTX CL and Vc in the paper’s MC draws (Vc CV = 36.5% combined with independent CL draws spreads the rebound envelope wider), or (c) a different CPG2 administration time than the t = 24 h used here.
  • No erratum was found for Kimura 2023 (DOI 10.21873/anticanres.16351) at the time of extraction (search across the Anticancer Research landing page, PubMed, and Google Scholar in 2026-05).