Propofol (Levitt 2005)
Source:vignettes/articles/Levitt_2005_propofol_pbpk.Rmd
Levitt_2005_propofol_pbpk.RmdModel and source
- Citation: Levitt DG, Schnider TW (2005). Human physiologically based pharmacokinetic model for propofol. BMC Anesthesiology 5:4. doi:10.1186/1471-2253-5-4. Fitted to the individual arterial plasma data of Schnider TW, Minto CF, Gambus PL, Andresen C, Goodale DB, Shafer SL, Youngs EJ (1998). The influence of method of administration and covariates on the pharmacokinetics of propofol in adult volunteers. Anesthesiology 88:1170-1182. doi:10.1097/00000542-199805000-00006.
- Description: PBPK (whole-body). Human physiologically based pharmacokinetic model for propofol (Levitt and Schnider 2005 BMC Anesthesiology) fitted to the individual arterial plasma data of 24 adult volunteers in three age groups (18-34, 35-65, >65 years) from Schnider et al. 1998 Anesthesiology. Each subject received an initial ~20-second IV bolus (2 mg/kg for subjects <65; 1 mg/kg for subjects >65) followed 60 minutes later by a 60-minute constant infusion at 25, 50, 100, or 200 microg/kg/min. Twelve well-stirred flow-limited tissue compartments (liver, intestine [paper’s ‘portal’], muscle, kidney, brain, heart, lung, skin, adipose, bone, other [paper’s ‘other’ + ‘tendon’ connective tissue lumped], plus venous and arterial blood) use the PKQuest standard-human physiology (organ weights, blood flows, and fraction lipid from Table 1 for a 70-kg reference); propofol-specific tissue/blood partition coefficients are hard-coded from the paper text at the standard freepl = 0.022 (adipose 84, brain 1.87, liver 2.12, intestine 1.7, other tissues 1.45). Lean tissue weights and blood flows scale by lean body mass; adipose scales with body fat percent (Gallagher 1996 regression internally derives body fat from WT, HT, AGE, SEXF, RACE_ASIAN). Hepatic elimination is a single well-stirred apparent-clearance approximation (CL_liver = 0.76 * (Q_hepatic artery + Q_portal)) calibrated to the paper’s Table 4 age-averaged fractional liver clearance of 0.76; this replaces the paper’s Roberts-Rowland dispersion-model liver (dispersion number 0.3) with an ODE-compatible well-mixed compartment. Optional pulmonary sequestration compartment (paper-specific ‘lung_seq’) receives a bolus fraction frdose = max(0, 0.548 - 0.00891 * AGE) and releases it exponentially with time constant T = 80 min (paper’s average parameter set for Figs 9-11); the user allocates the sequestered bolus fraction via a second dose row on cmt = ‘lung_seq’. No IIV or formal residual-error variance was reported (individual fits; 15 percent average absolute weighted residual). All parameters are FIXED at the paper’s average values.
- Article: https://doi.org/10.1186/1471-2253-5-4 (open access)
Population
Levitt and Schnider (2005) fit a whole-body physiologically based pharmacokinetic (PBPK) model to the individual arterial plasma propofol concentrations of the 24 volunteers reported by Schnider, Minto, Gambus, and colleagues (Anesthesiology 1998; 88:1170-1182). The subjects were partitioned into three age groups of eight each: 18-34, 35-65, and greater than 65 years. Each subject received an initial approximately 20-second IV bolus (2 mg/kg for subjects less than 65 years old and 1 mg/kg for subjects older than 65), followed 60 minutes later by a 60-minute constant IV infusion at one of four rates: 25, 50, 100, or 200 microgram/kg/min. Arterial samples were collected at 0, 1, 2, 4, 8, 16, 30, 60, 62, 64, 68, 76, 90, 120, 122, 124, 136, 150, 180, 240, 300, and 600 minutes. The first data point used in the PBPK fit was at 2 minutes because of circulation and mixing-time effects on the earlier samples. Each subject was studied on two identical visits (propofol with and without EDTA); no meaningful difference was observed and the two visits were averaged.
Per-subject demographics (age, sex, weight, height) are tabulated in Table 1 of Schnider 1998 but are not reproduced in Levitt 2005 beyond age-group summaries (Table 4). Body fat percent is derived for every subject via the Gallagher 1996 regression with a Gallagher 2000 Asian correction (paper equation 2), and is the primary body-composition covariate used inside the model.
The population metadata list is available
programmatically:
readModelDb("Levitt_2005_propofol_pbpk")()$population
#> $species
#> [1] "human"
#>
#> $n_subjects
#> [1] 24
#>
#> $n_studies
#> [1] 1
#>
#> $age_range
#> [1] "18-34, 35-65, and >65 years (8 subjects per age group)"
#>
#> $weight_range
#> [1] "not tabulated per subject in Levitt 2005; Schnider 1998 Table 1 lists individual weights"
#>
#> $sex_female_pct
#> [1] NA
#>
#> $disease_state
#> [1] "Healthy adult volunteers. Data are the individual arterial propofol concentrations of Schnider TW et al. 1998 Anesthesiology 88:1170-1182 pooled across 24 subjects (8 per age group). Two identical visits per subject with and without EDTA formulation; the two visits were averaged since no meaningful difference was observed."
#>
#> $dose_range
#> [1] "IV bolus (~20-second injection) of 2 mg/kg for subjects <65 years or 1 mg/kg for subjects >65 years, followed 60 minutes later by a 60-minute constant infusion at 25, 50, 100, or 200 microgram/kg/min. Arterial plasma sampled at 0, 1, 2, 4, 8, 16, 30, 60, 62, 64, 68, 76, 90, 120, 122, 124, 136, 150, 180, 240, 300, and 600 minutes; the first sample used in the PBPK fit was at 2 minutes because of mixing-time effects."
#>
#> $regions
#> [1] "USA (Stanford University Medical Center)"
#>
#> $notes
#> [1] "The PBPK model uses the PKQuest standard-human physiology (organ weights, blood flows, and fraction lipid) from Table 1. Only the average parameter set (Table 4 and Figs 9-11) is implemented here; individual per-subject Tclr / frdose / T fits (Figs 5-7) are not carried across because they are not tabulated in a form that maps to a population model. The paper's Roberts-Rowland dispersion-model liver (dispersion number 0.3) is replaced by a well-stirred compartment with apparent clearance calibrated to the paper's average Table 4 fractional liver clearance of 0.76. Kp values are hard-coded at the paper's standard freepl = 0.022."Source trace
The per-parameter origin is recorded as an in-file comment next to
each ini() entry in
inst/modeldb/specificDrugs/Levitt_2005_propofol_pbpk.R. The
table below collects them in one place.
| Equation / parameter | Value | Source location |
|---|---|---|
| Body-fat regression (eq 2) | -10.0 + 1.46BMI - 11.6SEXM + 0.14AGE + RACE_ASIAN(95/BMI - 0.044*AGE) | Levitt 2005 Methods, eq 2 |
| Tissue weights, blood flows, fraction lipid | Table 1 (standard 70-kg human) | Levitt 2005 Table 1 |
| Kp adipose | 84 | Levitt 2005 Methods (page 3 paragraph after Table 1) |
| Kp brain | 1.87 | Levitt 2005 Methods (page 3) |
| Kp liver | 2.12 | Levitt 2005 Methods (page 3) |
| Kp intestine (paper ‘portal’) | 1.7 | Levitt 2005 Methods (page 3) |
| Kp all other tissues | 1.45 | Levitt 2005 Methods (page 3, ‘the rest 1.45’) |
| K_oil (propofol oil/water) | 4715 | Levitt 2005 Methods; Weaver et al. ref 1 |
| freepl_st (standard human) | 0.022 | Levitt 2005 Methods |
| rblpl_st (blood/plasma ratio) | 1.0 | Levitt 2005 Methods |
| Fractional liver clearance | 0.76 | Levitt 2005 Table 4 age-average; Fig 9 caption |
| Sequestration time constant T | 80 min | Levitt 2005 Fig 5 / Fig 9 caption (median across young subjects) |
| Sequestration release rate kseq | 1/T = 1/80 = 0.0125 1/min | Derived from T |
| frdose age regression (eq 13) | 0.548 - 0.00891*AGE | Levitt 2005 eq 13 (applied externally, see below) |
| Adipose perfusion | 0.0422 L/kg/min | Levitt 2005 Table 1 |
| Cardiac output for standard human | 5.5877 L/min | Levitt 2005 Table 1 |
| Well-stirred tissue ODE topology | d/dt A_i = Q_i * (C_art - C_i / Kp_i) | Levitt 2005 Methods (flow-limited well mixed) |
| Well-stirred liver approximation | CL_liver = 0.76 * (Q_hepatic + Q_portal) | This model (replaces Levitt 2005 Roberts-Rowland dispersion model DN = 0.3; see Assumptions) |
| Bolus dose (young + middle-aged) | 2 mg/kg IV bolus | Levitt 2005 / Schnider 1998 Methods |
| Bolus dose (>65 y) | 1 mg/kg IV bolus | Levitt 2005 / Schnider 1998 Methods |
| Constant-infusion rates | 25, 50, 100, 200 microg/kg/min for 60 min | Levitt 2005 / Schnider 1998 Methods |
| Residual error propSd (placeholder) | 0.15 (proportional) | Levitt 2005 Table 3 average weighted residual ~ 15% |
Virtual cohort
The Schnider 1998 individual demographics are not fully published in Levitt 2005; only age-group summaries appear in Table 4. To reproduce the paper’s typical-value figures we use three synthetic age-representative subjects: one per age group at each group’s median age.
set.seed(20260709)
# Three age-representative subjects (one per age group in Levitt 2005 Table 4).
# Weights and heights are typical adult values; Schnider 1998 baseline
# demographics were not tabulated in the Levitt 2005 paper beyond age.
cohort <- tibble::tribble(
~id, ~AGE, ~WT, ~HT, ~SEXF, ~RACE_ASIAN, ~group,
1L, 29, 70, 175, 0, 0, "18-34 y (young)",
2L, 52, 77, 175, 0, 0, "35-65 y (middle-aged)",
3L, 75, 70, 170, 0, 0, ">65 y (old)"
)
# Dosing: 2 mg/kg bolus (subjects <65) or 1 mg/kg bolus (>65),
# followed 60 min later by a 60-min infusion at 100 microg/kg/min
# (the middle rate reported in Fig 5-7).
build_events <- function(subj, infusion_ug_kg_min = 100) {
bolus_mg <- if (subj$AGE >= 65) 1 * subj$WT else 2 * subj$WT
inf_mg_per_min <- infusion_ug_kg_min * 1e-3 * subj$WT
inf_total_mg <- inf_mg_per_min * 60
et_obs <- rxode2::et(seq(0, 600, by = 1))
ev <- rxode2::et(id = subj$id) |>
rxode2::et(amt = bolus_mg, cmt = "venous", time = 0) |>
rxode2::et(amt = inf_total_mg, rate = inf_mg_per_min,
cmt = "venous", time = 60) |>
rxode2::et(seq(0, 600, by = 1))
df <- as.data.frame(ev)
df$WT <- subj$WT
df$HT <- subj$HT
df$AGE <- subj$AGE
df$SEXF <- subj$SEXF
df$RACE_ASIAN <- subj$RACE_ASIAN
df$group <- subj$group
df
}
events_no_seq <- dplyr::bind_rows(
build_events(cohort[1, ]),
build_events(cohort[2, ]),
build_events(cohort[3, ])
)
head(events_no_seq)
#> id time cmt amt rate evid WT HT AGE SEXF RACE_ASIAN group
#> 1 1 0 <NA> NA NA 0 70 175 29 0 0 18-34 y (young)
#> 2 1 0 venous 140 0 1 70 175 29 0 0 18-34 y (young)
#> 3 1 1 <NA> NA NA 0 70 175 29 0 0 18-34 y (young)
#> 4 1 2 <NA> NA NA 0 70 175 29 0 0 18-34 y (young)
#> 5 1 3 <NA> NA NA 0 70 175 29 0 0 18-34 y (young)
#> 6 1 4 <NA> NA NA 0 70 175 29 0 0 18-34 y (young)Simulation without pulmonary sequestration
First simulate without pulmonary sequestration to show the model’s response to the Schnider 1998 bolus + constant-infusion protocol.
mod <- readModelDb("Levitt_2005_propofol_pbpk")
mod_typical <- rxode2::zeroRe(mod)
#> Warning: No omega parameters in the model
sim_no_seq <- rxode2::rxSolve(mod_typical, events = events_no_seq,
keep = "group")
#> Warning: multi-subject simulation without without 'omega'Simulation with pulmonary sequestration
Levitt 2005 reports that 14 of 24 subjects were fit adequately
without pulmonary sequestration, but the 8 young subjects (18-34 y) and
2 of the 8 middle-aged subjects required sequestration to fit the bolus
phase. The paper’s “averaged” parameter set (Figs 9-11) uses the
age-dependent regression
frdose = max(0, 0.548 - 0.00891 * AGE) for the bolus
fraction sequestered in the lung, released with time constant T = 80
min.
Sequestration is applied outside the ODE system: the user splits the
bolus into two rows, one on cmt = "venous" for the
non-sequestered fraction and one on cmt = "lung_seq" for
the sequestered fraction. The lung_seq compartment then
releases exponentially into the arterial pool at rate
kseq = 1/T.
compute_frdose <- function(age) {
pmax(0, 0.548 - 0.00891 * age)
}
# Rebuild events, splitting the bolus by frdose(AGE).
build_events_seq <- function(subj, infusion_ug_kg_min = 100) {
bolus_mg <- if (subj$AGE >= 65) 1 * subj$WT else 2 * subj$WT
frd <- compute_frdose(subj$AGE)
inf_mg_per_min <- infusion_ug_kg_min * 1e-3 * subj$WT
inf_total_mg <- inf_mg_per_min * 60
ev <- rxode2::et(id = subj$id) |>
rxode2::et(amt = bolus_mg * (1 - frd),
cmt = "venous", time = 0) |>
rxode2::et(amt = bolus_mg * frd,
cmt = "lung_seq", time = 0) |>
rxode2::et(amt = inf_total_mg, rate = inf_mg_per_min,
cmt = "venous", time = 60) |>
rxode2::et(seq(0, 600, by = 1))
df <- as.data.frame(ev)
df$WT <- subj$WT
df$HT <- subj$HT
df$AGE <- subj$AGE
df$SEXF <- subj$SEXF
df$RACE_ASIAN <- subj$RACE_ASIAN
df$group <- subj$group
df$frdose <- frd
df
}
events_seq <- dplyr::bind_rows(
build_events_seq(cohort[1, ]),
build_events_seq(cohort[2, ]),
build_events_seq(cohort[3, ])
)
sim_seq <- rxode2::rxSolve(mod_typical, events = events_seq,
keep = "group")
#> Warning: multi-subject simulation without without 'omega'
# frdose per age
cohort |> dplyr::mutate(frdose = compute_frdose(AGE))
#> # A tibble: 3 × 8
#> id AGE WT HT SEXF RACE_ASIAN group frdose
#> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
#> 1 1 29 70 175 0 0 18-34 y (young) 0.290
#> 2 2 52 77 175 0 0 35-65 y (middle-aged) 0.0847
#> 3 3 75 70 170 0 0 >65 y (old) 0Replicate published figures
Figures 5-7 (individual PBPK fits, 100 microg/kg/min infusion)
The paper’s Figs 5-7 show semi-log arterial concentration vs. time for each individual, with per-subject fits. Here we plot the age-representative typical subjects with and without pulmonary sequestration overlaid.
sim_all <- dplyr::bind_rows(
sim_no_seq |> dplyr::mutate(seq_state = "no sequestration"),
sim_seq |> dplyr::mutate(seq_state = "with sequestration (paper eq 13)")
)
sim_all |>
dplyr::filter(time >= 2, time <= 600, Cc > 0) |>
ggplot(aes(time, Cc, colour = seq_state, linetype = seq_state)) +
geom_line(linewidth = 0.8) +
facet_wrap(~ group, ncol = 1) +
scale_y_log10() +
labs(x = "Time (min)", y = "Arterial plasma propofol (mg/L)",
colour = NULL, linetype = NULL,
title = "PBPK simulation for the three age representatives",
caption = paste0("Replicates the semi-log arterial-concentration ",
"panels of Levitt 2005 Figs 5-7 for the 100 ",
"microg/kg/min infusion group. Sequestration ",
"lowers the early bolus peak and raises the ",
"later shoulder in the young subject; it has no ",
"effect in the >65 y subject because ",
"frdose = 0 by paper eq 13.")) +
theme(legend.position = "bottom")
Figure 8 (age dependence of the pulmonary sequestration fraction)
Paper eq 13: frdose = 0.548 - 0.00891 * AGE, truncated
to 0 for elderly.
tibble::tibble(AGE = seq(18, 85, by = 1)) |>
dplyr::mutate(frdose = compute_frdose(AGE)) |>
ggplot(aes(AGE, frdose)) +
geom_line(linewidth = 0.8) +
geom_vline(xintercept = c(34, 65), linetype = "dashed", colour = "grey60") +
labs(x = "Age (years)", y = "Bolus fraction sequestered in lung (frdose)",
title = "Figure 8 age-dependence of the pulmonary sequestration fraction",
caption = "Replicates paper eq 13 and Fig 8. Dashed lines mark the paper's age-group boundaries.")
Figure 14 (normal-weight vs. morbidly obese subject)
Paper Fig 14: a 180-minute constant infusion at 0.1 mg/kg/min (100 microg/kg/min) in a normal-weight (20% body fat) vs. morbidly obese (50% body fat) subject.
obese_cohort <- tibble::tribble(
~id, ~AGE, ~WT, ~HT, ~SEXF, ~RACE_ASIAN, ~pct_fat_target, ~group,
11L, 50, 70, 175, 0, 0, 20, "normal (20% fat)",
12L, 50, 140, 175, 1, 0, 50, "morbidly obese (50% fat)"
)
# The Gallagher regression will produce a body fat that differs slightly
# from the target; the paper's simulation used the target directly.
# Here we accept the Gallagher-derived body fat because it exercises the
# same code path the general user would take.
build_infusion_events <- function(subj, rate_mg_kg_min = 0.1, dur_min = 180) {
inf_mg_per_min <- rate_mg_kg_min * subj$WT
inf_total_mg <- inf_mg_per_min * dur_min
ev <- rxode2::et(id = subj$id) |>
rxode2::et(amt = inf_total_mg, rate = inf_mg_per_min,
cmt = "venous", time = 0) |>
rxode2::et(seq(0, 720, by = 2)) # 3 h infusion + 8 h washout
df <- as.data.frame(ev)
df$WT <- subj$WT
df$HT <- subj$HT
df$AGE <- subj$AGE
df$SEXF <- subj$SEXF
df$RACE_ASIAN <- subj$RACE_ASIAN
df$group <- subj$group
df
}
events_obese <- dplyr::bind_rows(
build_infusion_events(obese_cohort[1, ]),
build_infusion_events(obese_cohort[2, ])
)
sim_obese <- rxode2::rxSolve(mod_typical, events = events_obese,
keep = "group")
#> Warning: multi-subject simulation without without 'omega'
sim_obese |>
dplyr::filter(Cc > 0) |>
ggplot(aes(time, Cc, colour = group)) +
geom_line(linewidth = 0.8) +
geom_vline(xintercept = 180, linetype = "dashed", colour = "grey60") +
labs(x = "Time (min)", y = "Arterial plasma propofol (mg/L)",
colour = NULL,
title = "Figure 14 - normal-weight vs. morbidly obese subject",
caption = paste0("Replicates the top panel of Levitt 2005 Fig 14 ",
"(constant 0.1 mg/kg/min infusion for 180 min, ",
"washout to 12 h). Dashed line marks the end of ",
"the infusion. Model-derived body fat via the ",
"Gallagher regression differs slightly from the ",
"paper's target values.")) +
theme(legend.position = "bottom")
PKNCA validation
We use PKNCA to compute NCA parameters from the sequestration-free young-subject simulation (constant 60-minute infusion at 100 microg/kg/min, starting 60 min after a 2 mg/kg bolus). Because propofol displays multi-phase disposition and the paper’s clearance and volume estimates are for the whole 600-min sampling window, we compute AUC over [0, 600] min.
# Concentrations for the young age-representative subject (no sequestration).
# Do NOT filter by time > 0 or Cc > 0 - that drops the t = 0 anchor and
# triggers PKNCA's "AUC range starting (0) before the first measurement"
# warning.
sim_nca <- sim_no_seq |>
dplyr::filter(id == 1) |>
dplyr::filter(!is.na(Cc)) |>
dplyr::select(id, time, Cc, group)
# Guarantee a t=0 row per (id, group).
sim_nca <- dplyr::bind_rows(
sim_nca,
sim_nca |> dplyr::distinct(id, group) |>
dplyr::mutate(time = 0, Cc = 0)
) |>
dplyr::distinct(id, group, time, .keep_all = TRUE) |>
dplyr::arrange(id, group, time)
conc_obj <- PKNCA::PKNCAconc(sim_nca, Cc ~ time | group + id)
# Doses: two rows (bolus at t = 0, infusion start at t = 60).
dose_df <- events_no_seq |>
dplyr::filter(id == 1, !is.na(amt), amt > 0) |>
dplyr::select(id, time, amt, group)
dose_obj <- PKNCA::PKNCAdose(dose_df, amt ~ time | group + id)
intervals <- data.frame(
start = 0,
end = 600,
cmax = TRUE,
tmax = TRUE,
auclast = TRUE,
half.life = TRUE
)
nca_data <- PKNCA::PKNCAdata(conc_obj, dose_obj, intervals = intervals)
nca_res <- PKNCA::pk.nca(nca_data)
nca_summary <- as.data.frame(nca_res$result) |>
dplyr::select(PPTESTCD, PPORRES) |>
dplyr::rename("NCA parameter" = PPTESTCD, "Simulated" = PPORRES)
knitr::kable(nca_summary,
digits = 3,
caption = paste0("Simulated NCA for the young ",
"age-representative subject (2 mg/kg bolus + ",
"60-min infusion at 100 microg/kg/min, 0-600 min)."),
align = c("l", "r"))| NCA parameter | Simulated |
|---|---|
| auclast | 480.088 |
| cmax | 13.883 |
| tmax | 1.000 |
| tlast | 600.000 |
| lambda.z | 0.002 |
| r.squared | 1.000 |
| adj.r.squared | 1.000 |
| lambda.z.time.first | 587.000 |
| lambda.z.time.last | 600.000 |
| lambda.z.n.points | 14.000 |
| clast.pred | 0.097 |
| half.life | 329.670 |
| span.ratio | 0.039 |
Comparison against published values
Levitt 2005 does not tabulate per-subject NCA parameters. The paper reports:
- median steady-state liver clearance 1.49 L/min for the standard 70-kg human (Discussion, Table 4);
- Vss around 1500 L for the standard 20%-body-fat subject and 980-3000 L across 12-40% body fat (Discussion, comparison against Campbell et al. 1988 and Morgan et al. 1990);
- individual weighted-residual error around 15% (Table 3).
The PBPK Cl_ss for the young age-representative here is
0.76 * (Q_liver + Q_intestine) at the subject’s individual
lean-scaled flows. For a 70-kg subject at 25% body fat this evaluates to
0.76 * (0.45 + 1.125) = 1.197 L/min, close to (but a little
lower than) the paper’s median 1.49 L/min because the paper’s median
value is based on a fractional-clearance of about 0.83 while this model
uses the age-averaged 0.76.
Assumptions and deviations
-
Roberts-Rowland dispersion-model liver replaced by a
well-stirred liver. The paper models the liver as a distributed
dispersion compartment (Roberts and Rowland, dispersion number DN = 0.3)
whose extraction ratio is a closed-form function of intrinsic clearance
and blood flow. rxode2 supports only ordinary differential equations, so
the ODE-compatible approximation used here is a single well-stirred
liver whose apparent clearance is calibrated to the paper’s Table 4
age-averaged fractional liver clearance of 0.76
(i.e.
CL_liver = 0.76 * (Q_hepatic + Q_portal)). The mapping from intrinsic to apparent clearance therefore differs from the paper’s Table 2 dispersion-model mapping; users who need the exact Table 2 conversion between intrinsic (Tclr) and apparent clearance should precompute their own fractional clearance and setlfrac_liver_clearanceaccordingly. -
Tendon lumped into
other. The paper’s Table 1 distinguishes two connective-tissue compartments (tendon: 3 kg, 0.03 L/min flow;other: 5.524 kg, 0.1104 L/min flow) with identical Kp = 1.45. They are lumped here into a singleothercompartment (weight 8.524 kg, flow 0.1404 L/min) so the model uses a single canonical bare-tissue name. The lumped compartment will equilibrate at a slightly different rate than the two separate compartments would; the impact on arterial concentration is small because propofol’s disposition is dominated by adipose. - Bone included as an inert compartment. Table 1 lists bone with fraction lipid 0 and perfusion 0 L/min. The compartment is retained for mass accounting but contributes nothing to distribution or elimination dynamics (d/dt(bone) = 0).
-
Portal renamed to
intestine. The paper’sportalcompartment (Fig 1, Table 1) refers to the aggregate of organs drained by the portal vein (gut). The nlmixr2lib canonical bare-tissue name for this compartment isintestine; the model equations are unchanged. -
No IIV. Levitt 2005 reports per-subject fits (Tclr
65-500 L/min, frdose 0-0.6, T 40-500 min for the young subjects) but
does not report a formal population-model variance for any parameter.
Consistent with the standing policy for unreported IIV where structural
parameters are present, all IIV variances are set to
fixed(0)implicitly (noetaparameters inini()). -
Residual error is a placeholder proportional 15%.
The paper reports an “average weighted residual” (WRE) of about 15% for
individual PBPK fits (Table 3). WRE is the mean absolute proportional
deviation, not a formal residual SD.
propSd = fixed(0.15)reproduces the WRE numerically but should be interpreted as a placeholder rather than an estimated residual standard deviation. -
Pulmonary sequestration is applied externally. The
paper’s eq 13
frdose = max(0, 0.548 - 0.00891 * AGE)is documented in the model file as inline comments and is applied by the user by splitting the bolus into two dose rows (one oncmt = "venous", one oncmt = "lung_seq"). The sequestration compartment then decays exponentially into the arterial pool at ratekseq = 1/T = 1/80 min. Sequestration is NOT applied to the constant-infusion phase (paper Fig 4: sequestering as little as 10% of the constant infusion significantly worsens the fit). -
Kp values fixed at freepl = 0.022. The paper’s
tissue/blood partition coefficients (adipose 84, brain 1.87, liver 2.12,
intestine 1.7, rest 1.45) were derived once at the standard human
freepl_st = 0.022. If a user wants to explore sensitivity tofreepl, they must recompute Kp externally using paper eqs 4-7 and update thelkp_*values. -
Cardiac output derived per-subject. The paper uses
a fixed cardiac output of 5.5877 L/min for the 70-kg standard human
(Table 1). Here cardiac output is computed as the sum of the lean-scaled
tissue flows plus the individual adipose flow, so it varies with body
composition. For an obese subject this produces a modestly higher CO
than the paper’s fixed value; users can pin CO by scaling
q_ref_*values externally if needed. - Individual per-subject Tclr / frdose / T fits (Figs 5-7) not packaged. The paper’s Figs 5-7 list individual fitted values but no population variance model. Only the “averaged” parameter set of Figs 9-11 (fractional liver clearance = 0.76, frdose per eq 13, T = 80 min) is packaged here.