Absorption with lag time
Specify the lagtime
when you create the model using
new_ode_model
. The lag time can either be a number, or a
string referring to a parameter (e.g. “ALAG”). If a single number or
parameter is specified, the lag time will apply to the default dose
compartment only. Alternatively, it is also possible to specify a vector
of lag times, with a value for each compartment.
library(PKPDsim)
pk <- new_ode_model(
code = " dAdt[1] = -KA * A[1]; dAdt[2] = KA*A[1] -(CL/V) * A[2] ",
obs = list(cmt = 2, scale = "V"),
dose = list(cmt = 1),
lagtime = "ALAG"
)
r <- new_regimen(
amt = c(100, 100, 100),
times = c(0, 12, 24),
cmt = 1
)
p <- list(CL = 5, V = 10, KA = 0.25, ALAG = 2)
res <- sim(
ode = pk,
n_ind = 25,
omega = cv_to_omega(
par_cv = list("CL" = 0.1, "V" = 0.1, "KA" = .1, "ALAG" = 0.3),
p
),
parameters = p,
regimen = r,
verbose = FALSE,
only_obs = TRUE
)
Absorption transit compartments
The code below implements the transit compartment model for absorption compartments as described by Savic et al. JPKPD 2007. Please note that this implementation assumes that all drug amount has been absorbed within the dosing interval. Such an assumption might not always hold. Also, for this implementation of dosing, it is essential to set the bioavailability for the dose compartment to 0, since dosing is now implemented using a separate analytical equation.
Note: a simplified way of coding the transit compartments model will be added soon to PKPDsim.
library(PKPDsim)
parameters <- list(CL = 15, V = 50, MTT = 2.5, N = 4, KA = 1)
reg1 <- new_regimen(amt = 100, n = 3, interval = 12) # needs dummy doses
mod <- new_ode_model(
code = "
tad = t - t_prv_dose
KTR = (N+1)/MTT
LNFAC= log(2.506628)+(N+0.5)*log(N)-N
dAdt[1] = exp(log(prv_dose) + log(KTR) + N*log(KTR * tad) - KTR * tad - LNFAC) - KA*A[1]
dAdt[2] = KA*A[1]-CL/V*A[2]
",
declare_variables = c("LNFAC", "KTR", "tad"),
parameters = parameters,
dose = list(cmt = 1, bioav = 0),
obs = list(cmt = 2, scale = "V")
)
res <- sim(
ode = mod,
regimen = reg1,
parameters = parameters,
n = 5,
omega = cv_to_omega(
list(CL = 0.1, V = 0.1, MTT = 0.2, N = 0.1, KA = 0.1),
parameters
),
t_obs = seq(0, 36, .5)
)