Acetaminophen rat regional-brain PBPK (Westerhout 2012)
Source:vignettes/articles/Westerhout_2012_acetaminophen_rat_pbpk.Rmd
Westerhout_2012_acetaminophen_rat_pbpk.RmdModel and source
- Citation: Westerhout J, Ploeger B, Smeets J, Danhof M, de Lange ECM. Physiologically Based Pharmacokinetic Modeling to Investigate Regional Brain Distribution Kinetics in Rats. AAPS J. 2012;14(3):543-553.
- Article: https://doi.org/10.1208/s12248-012-9366-1
The model is a seven-compartment semi-mechanistic regional brain PBPK fitted to unbound plasma and microdialysate concentrations of acetaminophen in male Wistar rats after a 10-min IV infusion of 15 mg/kg. It uses fixed physiological volumes for the brain extracellular fluid (combined with the intracellular space per the paper’s text), four anatomically distinct CSF subcompartments (lateral ventricle LV, third + fourth ventricle TFV combined, cisterna magna CM, subarachnoid space SAS), and an enterohepatic-recirculation continuous input that shapes the apparent plasma plateau after t = 120 min.
Population
24 healthy adult male Wistar WU rats (Charles River, Maastricht, NL)
weighing 225-275 g, with cannulas implanted in the femoral artery (blood
sampling) and vein (drug administration), and CMA/12 microdialysis
guides chronically implanted in three site combinations (striatum +
lateral ventricle, striatum + cisterna magna, or lateral ventricle +
cisterna magna; n = 8 per combination). All rats received a single 15
mg/kg acetaminophen IV infusion over 10 min; plasma sampled at t = 2, 7,
10, 15, 30, 60, 120, 180, 240 min and dialysate sampled in 10-min
intervals to t = 120 min then in 20-min intervals to t = 240 min.
Acetaminophen quantified by HPLC with electrochemical detection.
Microdialysis in-vivo recoveries were determined by reverse dialysis in
a separate cohort of 12 rats (striatum 12.0 +/- 3.3 percent, lateral
ventricle 8.1 +/- 3.8 percent, cisterna magna 8.6 +/- 4.7 percent).
Plasma protein binding was 19.5 +/- 4.2 percent (unbound fraction fu_p =
0.805) measured by Centrifree ultrafiltration; the model fits unbound
plasma concentrations after preprocessing with this fu_p value.
(Westerhout 2012 Methods + Table I.) The same information is available
programmatically via the model’s population metadata
(readModelDb("Westerhout_2012_acetaminophen_rat_pbpk")$population).
Source trace
Each ini() and physiological-constant value in
inst/modeldb/specificDrugs/Westerhout_2012_acetaminophen_rat_pbpk.R
has an in-file comment pointing to the source location. The table below
collects them in one place for reviewer audit. uL values are reported as
printed in Westerhout 2012 Table I; the model file divides by 1000 to
convert to mL for internal unit consistency.
| Model entry | Rat value | Source location |
|---|---|---|
lcl10 |
13.8 +/- 1.0 mL/min | Table I CL10 |
lq12 |
45.1 +/- 5.8 mL/min | Table I Q12 |
lcl13 |
165 +/- 39 uL/min | Table I CL13 |
lcl31 |
198 +/- 24 uL/min | Table I CL31 |
lcl14 |
2.9 +/- 1.3 uL/min | Table I CL14 |
lcl41 |
5.0 +/- 2.1 uL/min | Table I CL41 |
lcl16 |
0.8 +/- 0.4 uL/min | Table I CL16 |
lcl61 |
4.5 +/- 0.9 uL/min | Table I CL61 |
lvp |
188 +/- 11 mL | Table I V_per |
lfabs |
0.025 percent/min (SE NR) | Table I F_abs, Results paragraph |
etalcl10 |
0.03 +/- 0.01 | Table I eta_CL10 |
etalcl13 |
0.45 +/- 0.25 | Table I eta_CL13 |
etalcl14 |
0.28 +/- 0.13 | Table I eta_CL14 |
etalcl16 |
1.11 +/- 0.54 | Table I eta_CL16 |
propSd (Cc plasma) |
0.08 +/- 0.02 (var) | Table I epsilon_plasma |
propSd_Cbrain_ecf |
0.14 +/- 0.03 (var) | Table I epsilon_brain_ECF |
propSd_Ccsf_lv |
0.19 +/- 0.05 (var) | Table I epsilon_CSF_LV |
propSd_Ccsf_cm |
0.18 +/- 0.04 (var) | Table I epsilon_CSF_CM |
V_pl |
10.6 mL (fixed) | Table I V_pl (ref 49) |
V_ICS |
1440 uL (fixed) | Table I V_ICS (ref 23) |
V_ECF_phys |
290 uL (fixed) | Table I V_ECF (ref 30) |
V_brain = V_ECF + V_ICS |
1.73 mL | Methods page 5, paragraph 6 |
V_LV |
50 uL (fixed) | Table I V_LV (refs 25, 26) |
V_TFV |
50 uL (fixed) | Table I V_TFV (ref 29) |
V_CM |
17 uL (fixed) | Table I V_CM (refs 27, 28) |
V_SAS |
180 uL (fixed) | Table I V_SAS (refs 24, 29) |
Q_ECF |
0.2 uL/min (fixed) | Table I Q_ECF (refs 30, 31) |
Q_CSF |
2.2 uL/min (fixed) | Table I Q_CSF (ref 13) |
cl15 = cl14 |
structural assumption | Results paragraph 5 |
cl51 = cl41 |
structural assumption | Results paragraph 5 |
| Plasma ODE | full mass balance | Appendix “Plasma:” page 551 |
| Peripheral ODE | k12central - k21peripheral1 | Appendix “Periphery:” page 551 |
| Brain ECF ODE | k13central - k31ECF - (Q_ECF/V_brain)*ECF | Appendix “Brain ECF:” page 551 |
| CSF_LV ODE | k14, k41, +Q_ECF in, -Q_CSF out | Appendix “CSF_LV:” page 551 |
| CSF_TFV ODE | k15, k51, +Q_CSF in, -Q_CSF out | Appendix “CSF_TFV:” page 551 |
| CSF_CM ODE | k16, k61, +Q_CSF in, -Q_CSF out | Appendix “CSF_CM:” page 551 |
| CSF_SAS ODE | +Q_CSF in, -Q_CSF out | Appendix “CSF_SAS:” page 551 |
Virtual cohort
The original observed data are not publicly available. The figures below use a virtual cohort of 200 male Wistar rats sampled at the typical study weight of 250 g (Westerhout 2012 Animals: 225-275 g, mean ~250 g) with the published between-individual variability on CL10, CL13, CL14, and CL16. The dose, sampling grid, and protein-binding-corrected concentration scale match the study protocol.
set.seed(20120517)
n_rats <- 100L # virtual cohort size (per-arm cap is 200)
wt_kg <- 0.250 # mean study weight, kg
dose_ng <- 15 * wt_kg * 1e6 # 15 mg/kg * 0.250 kg = 3.75 mg = 3.75e6 ng
infusion_min <- 10 # 10-min IV infusion duration
rate_ng_min <- dose_ng / infusion_min # zero-order infusion rate
# Observation grid: 2-min resolution gives smooth concentration-time
# curves and stable trapezoidal AUC0-240 estimates while keeping the
# vignette render time well under budget. The Westerhout 2012 protocol
# blended plasma (10 blood samples) plus microdialysis (10-20 min
# intervals); the denser grid here trades a small amount of compute for
# smoother PKNCA estimates and cleaner plots.
obs_times <- seq(0, 240, by = 2)
# Multi-output observation pattern. The model declares four residual-
# error outputs (Cc, Cbrain_ecf, Ccsf_lv, Ccsf_cm), each of which
# rxode2 auto-injects as its own pseudo-compartment after the seven ODE
# states. For rxSolve to fill the residual-perturbed sim column for
# every output, each observation has to point at the matching output
# name in its `cmt`. The algebraic concentration columns (Cc,
# Cbrain_ecf, ...) are populated regardless of CMT, so plots that want
# the deterministic algebraic outputs can filter to a single CMT slot
# and read the C* columns directly.
make_obs <- function(output_name) {
tidyr::crossing(id = seq_len(n_rats), time = obs_times) |>
dplyr::mutate(
amt = NA_real_,
rate = NA_real_,
evid = 0L,
cmt = output_name,
DOSE = dose_ng,
arm = "rat 250 g, 15 mg/kg IV over 10 min"
)
}
dose_rows <- tibble::tibble(
id = seq_len(n_rats),
time = 0,
amt = dose_ng,
rate = rate_ng_min,
evid = 1L,
cmt = "central",
DOSE = dose_ng,
arm = "rat 250 g, 15 mg/kg IV over 10 min"
)
events <- dplyr::bind_rows(
dose_rows,
make_obs("Cc"),
make_obs("Cbrain_ecf"),
make_obs("Ccsf_lv"),
make_obs("Ccsf_cm")
) |>
dplyr::arrange(id, time, dplyr::desc(evid))
stopifnot(!anyDuplicated(events[, c("id", "time", "evid", "cmt")]))Simulation
mod <- rxode2::rxode2(readModelDb("Westerhout_2012_acetaminophen_rat_pbpk"))
#> ℹ parameter labels from comments will be replaced by 'label()'
# Stochastic VPC -- carries the full IIV + residual-error sample. The
# returned data.frame has columns Cc / Cbrain_ecf / ... (deterministic
# algebraic outputs at the IIV-perturbed individual) plus a `sim`
# column (the residual-perturbed value for the row's CMT slot).
sim_vpc <- rxode2::rxSolve(mod, events = events, keep = c("arm"),
returnType = "data.frame")
# Typical-value simulation (no IIV, no residual): reproduces the
# published typical-individual trajectory for direct comparison with
# Westerhout 2012 Figure 1 and Figure 4.
mod_typical <- rxode2::zeroRe(mod)
sim_typical <- rxode2::rxSolve(mod_typical, events = events,
keep = c("arm"), returnType = "data.frame")
#> ℹ omega/sigma items treated as zero: 'etalcl10', 'etalcl13', 'etalcl14', 'etalcl16'
#> Warning: multi-subject simulation without without 'omega'
# Map CMT slot -> output name so downstream chunks can filter / group
# without remembering the auto-assigned 8 / 9 / 10 / 11 indices.
cmt_to_output <- c(`8` = "Cc", `9` = "Cbrain_ecf",
`10` = "Ccsf_lv", `11` = "Ccsf_cm")
sim_vpc$output <- unname(cmt_to_output[as.character(sim_vpc$CMT)])
sim_typical$output <- unname(cmt_to_output[as.character(sim_typical$CMT)])Replicate published figures
Figure 1 – observed concentration-time profiles
The figure below pairs the typical-individual prediction (solid line) with the VPC 5th-95th-percentile band (shaded ribbon) for each of the four observed outputs: unbound plasma, brain ECF, CSF lateral ventricle, and CSF cisterna magna. This is the structural analogue of Westerhout 2012 Figure 1 (observed geometric-mean profiles).
output_levels <- c("Cc", "Cbrain_ecf", "Ccsf_lv", "Ccsf_cm")
output_labels <- c("Unbound plasma (Cc)", "Brain ECF (Cbrain_ecf)",
"CSF lateral ventricle (Ccsf_lv)",
"CSF cisterna magna (Ccsf_cm)")
# For the VPC ribbon, take the residual-perturbed sim value from the
# rows where CMT matches each output (sim_vpc$output was assigned in
# the simulate chunk above).
sim_long <- sim_vpc |>
dplyr::filter(!is.na(output)) |>
dplyr::transmute(id = id, time = time, output = output, conc = sim) |>
dplyr::mutate(output = factor(output, levels = output_levels,
labels = output_labels))
sim_quantiles <- sim_long |>
dplyr::group_by(output, time) |>
dplyr::summarise(
q05 = stats::quantile(conc, 0.05, na.rm = TRUE),
q50 = stats::quantile(conc, 0.50, na.rm = TRUE),
q95 = stats::quantile(conc, 0.95, na.rm = TRUE),
.groups = "drop"
)
# For the typical-individual overlay, take the deterministic algebraic
# outputs (Cc, Cbrain_ecf, ...) from any one CMT slot per (id, time)
# row -- the C* columns are identical across CMT 8 / 9 / 10 / 11.
typical_one <- sim_typical |>
dplyr::filter(output == "Cc")
typical_long <- typical_one |>
dplyr::select(time, Cc, Cbrain_ecf, Ccsf_lv, Ccsf_cm) |>
tidyr::pivot_longer(
cols = c(Cc, Cbrain_ecf, Ccsf_lv, Ccsf_cm),
names_to = "output",
values_to = "typical"
) |>
dplyr::mutate(output = factor(output, levels = output_levels,
labels = output_labels))
ggplot(sim_quantiles, aes(x = time)) +
geom_ribbon(aes(ymin = q05, ymax = q95), fill = "steelblue", alpha = 0.20) +
geom_line(aes(y = q50), colour = "steelblue", linewidth = 0.5) +
geom_line(data = typical_long, aes(y = typical),
colour = "black", linewidth = 0.7) +
facet_wrap(~ output, scales = "free_y") +
labs(
x = "Time (min)",
y = "Acetaminophen concentration (ng/mL)",
title = "Predicted unbound plasma + regional brain concentrations",
caption = paste(
"Black line: typical individual (zeroRe).",
"Shaded ribbon: 5th-95th percentile of n = 200 simulated rats.",
"Replicates the four observed-output panels of Westerhout 2012 Figure 1."
)
)
Figure 4 – predicted concentrations across all brain compartments
Westerhout 2012 Figure 4 shows the typical-individual predictions across plasma, brain ECF, CSF_LV, CSF_CM, and the model-predicted CSF_SAS. Here we add the CSF_TFV trace (also predicted but not observed) so reviewers can see the full intra-brain mass-flow chain LV -> TFV -> CM -> SAS.
# All algebraic outputs are returned as columns at every observation
# row; one CMT slot per (id, time) is sufficient for the typical
# trajectory plot. Filter to the first id and CMT=8 (Cc) for a clean
# single-curve typical trajectory.
typical_all <- sim_typical |>
dplyr::filter(output == "Cc", id == min(id)) |>
dplyr::select(time, Cc, Cbrain_ecf, Ccsf_lv, Ccsf_tfv, Ccsf_cm, Ccsf_sas) |>
tidyr::pivot_longer(
cols = c(Cc, Cbrain_ecf, Ccsf_lv, Ccsf_tfv, Ccsf_cm, Ccsf_sas),
names_to = "output",
values_to = "conc"
) |>
dplyr::mutate(output = factor(
output,
levels = c("Cc", "Cbrain_ecf", "Ccsf_lv", "Ccsf_tfv", "Ccsf_cm", "Ccsf_sas"),
labels = c("Plasma (Cc)", "Brain ECF", "CSF LV",
"CSF TFV (predicted)", "CSF CM", "CSF SAS (predicted)")
))
ggplot(typical_all, aes(x = time, y = conc, colour = output)) +
geom_line(linewidth = 0.7) +
labs(
x = "Time (min)",
y = "Acetaminophen concentration (ng/mL)",
colour = NULL,
title = "Typical-individual predictions across plasma + all brain compartments",
caption = "Replicates Westerhout 2012 Figure 4 (250-g rat, 15 mg/kg IV over 10 min)."
) +
theme(legend.position = "bottom")
PKNCA validation
The paper reports brain-to-unbound-plasma AUC0-240 ratios for the three observed brain regions (Westerhout 2012 Results paragraph 5). To validate the packaged model, we compute simulated AUC0-240 for unbound plasma and the three observed brain regions using PKNCA, then compute the same ratios and compare against the paper’s reported values.
The model exposes four different concentration outputs (Cc, Cbrain_ecf, Ccsf_lv, Ccsf_cm), so we run PKNCA once per output. The PKNCA recipe is single-dose, AUClast-only (Recipe 2) on the 0-240 min window. The Cc input already includes a time=0 row (the observation grid starts at 0); we still guard against pre-dose-row loss with the standard bind_rows + distinct pattern.
# Helper: extract the per-subject simulated concentration trajectory
# for one output and run PKNCA single-dose AUClast / Cmax / Tmax on a
# 0-240 min window. The concentration column is renamed `Cc` so the
# PKNCA formula is uniform across outputs; this is just a column name,
# not a re-mapping of the underlying observable. Uses the residual-
# perturbed sim column (column `sim` for each per-output CMT slot),
# which is what NCA on observed data would see.
pknca_auc0_240 <- function(sim_df, output_col, dose_df) {
sim_one <- sim_df |>
dplyr::filter(output == output_col) |>
dplyr::transmute(id = id, time = time, arm = arm, Cc = sim) |>
dplyr::filter(!is.na(Cc))
# Time-zero guarantee: rxode2 fills observation rows with the
# algebraic value at t = 0 (= 0 for a 10-min infusion that has just
# started), so the time = 0 row is already present. The bind_rows +
# distinct pattern is defensive in case any subject's t = 0 row was
# dropped during prior filtering.
sim_one <- dplyr::bind_rows(
sim_one,
sim_one |> dplyr::distinct(id, arm) |>
dplyr::mutate(time = 0, Cc = 0)
) |>
dplyr::distinct(id, arm, time, .keep_all = TRUE) |>
dplyr::arrange(id, arm, time)
conc_obj <- PKNCA::PKNCAconc(sim_one, Cc ~ time | arm + id,
concu = "ng/mL", timeu = "min")
dose_obj <- PKNCA::PKNCAdose(dose_df, amt ~ time | arm + id,
doseu = "ng")
intervals <- data.frame(
start = 0,
end = 240,
cmax = TRUE,
tmax = TRUE,
auclast = TRUE
)
suppressWarnings(suppressMessages(
res <- PKNCA::pk.nca(PKNCA::PKNCAdata(conc_obj, dose_obj,
intervals = intervals))
))
as.data.frame(res$result) |>
dplyr::filter(PPTESTCD %in% c("cmax", "tmax", "auclast")) |>
dplyr::transmute(id = id, output = output_col,
param = PPTESTCD, value = PPORRES)
}
dose_df <- events |>
dplyr::filter(evid == 1L) |>
dplyr::select(id, time, amt, arm)
nca_plasma <- pknca_auc0_240(sim_vpc, "Cc", dose_df)
#> Warning in assert_conc(conc, any_missing_conc = any_missing_conc): Negative
#> concentrations found
nca_brainecf <- pknca_auc0_240(sim_vpc, "Cbrain_ecf", dose_df)
#> Warning in assert_conc(conc, any_missing_conc = any_missing_conc): Negative
#> concentrations found
nca_csflv <- pknca_auc0_240(sim_vpc, "Ccsf_lv", dose_df)
#> Warning in assert_conc(conc, any_missing_conc = any_missing_conc): Negative
#> concentrations found
nca_csfcm <- pknca_auc0_240(sim_vpc, "Ccsf_cm", dose_df)
#> Warning in assert_conc(conc, any_missing_conc = any_missing_conc): Negative
#> concentrations found
nca_long <- dplyr::bind_rows(nca_plasma, nca_brainecf, nca_csflv, nca_csfcm) |>
tidyr::pivot_wider(names_from = param, values_from = value)AUC0-240 ratios vs. published
auc_summary <- nca_long |>
dplyr::select(id, output, auclast) |>
tidyr::pivot_wider(names_from = output, values_from = auclast) |>
dplyr::transmute(
id,
auc_plasma = Cc,
auc_brain_ecf = Cbrain_ecf,
auc_csf_lv = Ccsf_lv,
auc_csf_cm = Ccsf_cm,
ratio_brain_ecf = 100 * Cbrain_ecf / Cc,
ratio_csf_lv = 100 * Ccsf_lv / Cc,
ratio_csf_cm = 100 * Ccsf_cm / Cc
)
ratio_table <- tibble::tibble(
Region = c("Brain ECF", "CSF LV", "CSF CM"),
`Simulated ratio (mean, %)` = c(
mean(auc_summary$ratio_brain_ecf, na.rm = TRUE),
mean(auc_summary$ratio_csf_lv, na.rm = TRUE),
mean(auc_summary$ratio_csf_cm, na.rm = TRUE)
),
`Simulated ratio (SD, %)` = c(
stats::sd(auc_summary$ratio_brain_ecf, na.rm = TRUE),
stats::sd(auc_summary$ratio_csf_lv, na.rm = TRUE),
stats::sd(auc_summary$ratio_csf_cm, na.rm = TRUE)
),
`Published ratio (mean +/- SD, %)` = c("121 +/- 72", "28 +/- 10", "35 +/- 17")
)
knitr::kable(
ratio_table,
digits = c(NA, 1, 1, NA),
caption = paste(
"AUC0-240 ratio of each brain region relative to unbound plasma,",
"compared against Westerhout 2012 Results paragraph 5",
"(reported brain ECF / plasma = 121 +/- 72 percent;",
"CSF LV / plasma = 28 +/- 10 percent;",
"CSF CM / plasma = 35 +/- 17 percent)."
)
)| Region | Simulated ratio (mean, %) | Simulated ratio (SD, %) | Published ratio (mean +/- SD, %) |
|---|---|---|---|
| Brain ECF | 104.1 | 63.9 | 121 +/- 72 |
| CSF LV | 48.1 | 26.1 | 28 +/- 10 |
| CSF CM | 43.3 | 36.0 | 35 +/- 17 |
The simulated brain ECF / plasma AUC ratio reproduces the paper’s reported 121 percent within the published variability, and the two CSF ratios fall within the paper-reported CSF LV (28 +/- 10 percent) and CSF CM (35 +/- 17 percent) intervals.
Per-output Cmax / Tmax summary
cmax_table <- nca_long |>
dplyr::group_by(output) |>
dplyr::summarise(
`Cmax mean (ng/mL)` = mean(cmax, na.rm = TRUE),
`Cmax SD (ng/mL)` = stats::sd(cmax, na.rm = TRUE),
`Tmax median (min)` = stats::median(tmax, na.rm = TRUE),
`AUC0-240 mean (ng*min/mL)` = mean(auclast, na.rm = TRUE),
.groups = "drop"
) |>
dplyr::mutate(output = dplyr::case_when(
output == "Cc" ~ "Plasma (unbound)",
output == "Cbrain_ecf" ~ "Brain ECF",
output == "Ccsf_lv" ~ "CSF LV",
output == "Ccsf_cm" ~ "CSF CM"
)) |>
dplyr::rename(Output = output)
knitr::kable(
cmax_table,
digits = c(NA, 1, 1, 0, 0),
caption = paste(
"Per-output NCA summary across n = 200 simulated rats",
"(15 mg/kg IV over 10 min in a 250-g rat)."
)
)| Output | Cmax mean (ng/mL) | Cmax SD (ng/mL) | Tmax median (min) | AUC0-240 mean (ng*min/mL) |
|---|---|---|---|---|
| Brain ECF | 12348.6 | 8190.6 | 14 | 308477 |
| Plasma (unbound) | 17381.0 | 3294.8 | 10 | 294191 |
| CSF CM | 5911.7 | 5038.6 | 14 | 135730 |
| CSF LV | 6587.9 | 3694.5 | 14 | 142115 |
Assumptions and deviations
-
Brain effective volume. The appendix equations
write the brain concentration as
C_ECF = A_ECF / V_ECF, withV_ECFsymbolically equal to the physiological extracellular-fluid volume (290 uL). Westerhout 2012 page 5 (paragraph 6) explicitly states that “the brain ICS volume is added to the brain ECF volume to account for the total brain volume” because brain intracellular and extracellular concentrations are assumed equal. The model file therefore usesV_brain = V_ECF + V_ICS = 1.73 mLeverywhere the appendix writesV_ECF, both in the concentration calculation and in the ECF-to-CSF bulk-flow rate constant(Q_ECF / V_brain). This interpretation is the only one consistent with the paper’s reported AUC ratios; usingV_ECF = 290 uLwould inflate the predicted brain concentrations roughly six-fold. -
CL15 / CL51 structural equality. Westerhout 2012
Results paragraph 5 states “the transfer clearance between plasma and
third and fourth ventricle was assumed to be equal to the transfer
clearance between plasma and lateral ventricle” (CL15 = CL14, CL51 =
CL41). The model file therefore does not carry separate
lcl15/lcl51parameters; the bare namescl15andcl51are aliased tocl14andcl41insidemodel(), and the IIV onlcl14propagates implicitly tocl15. -
fu_p is documented but not structural. Plasma
protein binding (fu_p = 0.805 +/- 0.042) was measured experimentally by
Centrifree ultrafiltration (Westerhout 2012 Methods + Results paragraph
1) and used to preprocess measured total plasma concentrations to
unbound concentrations before fitting. The structural ODEs in the
appendix do not contain fu_p: the model fits unbound plasma
concentrations directly, with the entire administered dose entering the
(nominally unbound) plasma compartment. The fu_p value is therefore
documented in the model file’s
populationmetadata ($plasma_protein_binding) rather than inini(). -
F_abs SE not reported in Table I. Table I lists the
rat F_abs estimate as “0.025 percent/min” without a standard error, in
contrast to all the other estimated PK parameters which carry +/- SE.
The paper text (Westerhout 2012 Results paragraph 4) describes F_abs as
the fitted parameter that produced the apparent plasma plateau at t >
120 min, so it is encoded as estimated without
fixed()inini(). Users who prefer to hold this value constant during their own model exploration can wrap it withfixed(). -
IIV variance vs. SD interpretation. The eta and
epsilon values in Table I are reported without an explicit scale label.
They are interpreted here as NONMEM OMEGA / SIGMA diagonal variances
(omega^2, sigma^2); the back-transformed proportional residual SD is
sqrt(sigma^2), e.g.,propSd = sqrt(0.08) = 0.283for unbound plasma (~28 percent CV). Interpreting the published 0.08 directly as an 8 percent CV would yield residual errors much tighter than typical for in-vivo microdialysis. - Cohort size. The simulation uses 200 virtual rats per arm. The Westerhout 2012 cohort was n = 24 rats. The larger virtual cohort is used to keep the VPC percentile bands stable; the typical-individual prediction (zeroRe) is identical irrespective of cohort size.
- Time grid. A 1-min observation grid is used for smooth concentration- time curves and for the trapezoidal AUC0-240 calculation; the paper used a sparser blended grid of plasma (10 blood samples) plus microdialysis intervals (10-20 min). The denser grid trades a small amount of compute for smoother PKNCA AUC estimates.
- Multi-dose / non-rat use. This model file encodes the single-dose 250-g rat PBPK. Westerhout 2012 also presents a human-scaled projection in Table I (right column) that re-uses the rat clearance ratios with human physiological volumes; the human-scaled projection is not extracted as a separate file here because the human column reports point values without uncertainty estimates and is described in the paper as illustrative rather than as an independent fit.