rxTest({
test_that("rxFix", {
One.comp.transit.allo <- function() {
ini({
# Where initial conditions/variables are specified
lktr <- log(1.15) #log k transit (/h)
lcl <- log(0.15) #log Cl (L/hr)
lv <- log(7) #log V (L)
ALLC <- fix(0.75) #allometric exponent cl
ALLV <- fix(1.00) #allometric exponent v
prop.err <- 0.15 #proportional error (SD/mean)
add.err <- 0.6 #additive error (mg/L)
eta.ktr ~ 0.5
eta.cl ~ 0.1
eta.v ~ 0.1
})
model({
#Allometric scaling on weight
cl <- exp(lcl + eta.cl + ALLC * logWT70)
v <- exp(lv + eta.v + ALLV * logWT70)
ktr <- exp(lktr + eta.ktr)
# RxODE-style differential equations are supported
d/dt(depot) = -ktr * depot
d/dt(central) = ktr * trans - (cl/v) * central
d/dt(trans) = ktr * depot - ktr * trans
## Concentration is calculated
cp = central/v
# And is assumed to follow proportional and additive error
cp ~ prop(prop.err) + add(add.err)
})
}
tmp <- rxFixPop(One.comp.transit.allo)
expect_equal(tmp$theta,
c(lktr = 0.139761942375159, lcl = -1.89711998488588, lv = 1.94591014905531,
prop.err = 0.15, add.err = 0.6))
tmp2 <- rxFixPop(tmp)
expect_equal(tmp2$theta,
c(lktr = 0.139761942375159, lcl = -1.89711998488588, lv = 1.94591014905531,
prop.err = 0.15, add.err = 0.6))
tmp3 <- rxFixPop(tmp2, returnNull = TRUE)
expect_true(is.null(tmp3))
nlmixr_threecmt_mm_no_add_wtcl_pdtg_kout_delay2 <- function() {
ini({
tf_sc <- log(999)
tf_infilt <- log(999)
tka_sc <- log(999)
tka_infilt <- log(999)
tcl_low <- log(999)
tcl_high <- log(999)
tcl_c50 <- log(3000)
e_wt_cl <- fixed(999)
tv <- log(999)
tq1 <- log(999)
tvp1 <- log(10)
tq2 <- log(999)
tvp2 <- log(20)
eta_cl~999
eta_v~999
prop_err <- 999
tg_bl <- log(999)
eta_tg_bl~999
tg_kel <- log(999)
tg_ec50 <- log(5000)
tg_emax_kel <- log(2)
ktr_tg <- log(999)
prop_err_tg <- 999
})
model({
# PK setup
f_sc <- exp(tf_sc)
f_infilt <- exp(tf_infilt)
ka_sc <- exp(tka_sc)
ka_infilt <- exp(tka_infilt)
cl_low <- exp(tcl_low + eta_cl)*(WEIGHT_BL/85)^e_wt_cl
cl_high <- exp(tcl_high + eta_cl)*(WEIGHT_BL/85)^e_wt_cl
cl_c50 <- exp(tcl_c50)
v <- exp(tv + eta_v)
q1 <- exp(tq1)
vp1 <- exp(tvp1)
q2 <- exp(tq2)
vp2 <- exp(tvp2)
# PK micro-parameters
ke_low <- cl_low/v
ke_high <- cl_high/v
kc_p1 <- q1/v
kp1_c <- q1/vp1
kc_p2 <- q2/v
kp2_c <- q2/vp2
# TG setup
tgbl <- exp(tg_bl + eta_tg_bl)
kin_tg <- tgbl*exp(tg_kel)
ktr_TG <- exp(ktr_tg)
TG(0) <- tgbl
# differential equations
cp <- CENTRAL/v*1e3 # 1e3 is for unit conversion
ke <- ke_low + (ke_high - ke_low)*cp/(cp + cl_c50)
kout_tg <- exp(tg_kel) + exp(tg_emax_kel)*TG_TR/(TG_TR + exp(tg_ec50))
d/dt(IVINFILT) = - ka_infilt * IVINFILT
d/dt(SC) = -ka_sc * SC
d/dt(CENTRAL) = ka_sc * SC + ka_infilt * IVINFILT - ke*CENTRAL - kc_p1*CENTRAL + kp1_c*P1 - kc_p2*CENTRAL + kp2_c*P2
d/dt(P1) = kc_p1*CENTRAL - kp1_c*P1
d/dt(P2) = kc_p2*CENTRAL - kp2_c*P2
f(SC) <- f_sc
f(IVINFILT) <- f_infilt
# TG transit model
d/dt(TG_TR) = ktr_tg*cp - ktr_tg*TG_TR
d/dt(TG) = kin_tg - kout_tg*TG
# Residual error models
cp ~ prop(prop_err)
TG ~ prop(prop_err_tg)
})
}
tmp <- rxFixPop(nlmixr_threecmt_mm_no_add_wtcl_pdtg_kout_delay2)
expect_equal(tmp$theta,
c(tf_sc = 6.90675477864855, tf_infilt = 6.90675477864855, tka_sc = 6.90675477864855,
tka_infilt = 6.90675477864855, tcl_low = 6.90675477864855, tcl_high = 6.90675477864855,
tcl_c50 = 8.00636756765025, tv = 6.90675477864855, tq1 = 6.90675477864855,
tvp1 = 2.30258509299405, tq2 = 6.90675477864855, tvp2 = 2.99573227355399,
prop_err = 999, tg_bl = 6.90675477864855, tg_kel = 6.90675477864855,
tg_ec50 = 8.51719319141624, tg_emax_kel = 0.693147180559945,
ktr_tg = 6.90675477864855, prop_err_tg = 999))
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.