rxTest({
# Tests for absorption lag time.
mod <- rxode2({
a <- 6
b <- 0.6
d/dt(intestine) <- -a * intestine
d/dt(blood) <- a * intestine - b * blood
})
mod2 <- rxode2({
a <- 6
b <- 0.6
d / dt(intestine) <- -a * intestine
lag(intestine) <- 2
d / dt(blood) <- a * intestine - b * blood
})
et <- #et(time=0, amt= 5, ss=1, ii=1, cmt=1) %>%
et(time=0, cmt=1, amt=5, addl=10, ii=4) %>%
et(seq(0, 24, by=0.25/24))
tmp <- rxSolve(mod2, et)
plot(tmp, intestine)
et <- #et(time=0, amt= 5, ss=1, ii=1, cmt=1) %>%
et(time=0, cmt=1, amt=5, ii=4, ss=1) %>%
et(time=4, cmt=1, amt=5, addl=10, ii=4) %>%
et(seq(0, 24, by=0.25/24))
tmp <- rxSolve(mod2, et)
plot(tmp, intestine)
ms <- c("liblsoda", "lsoda", "dop853")
for (m in ms) {
skip_if_not_installed("units")
obs <- units::set_units(seq(0, 10, by = 1 / 24), "days")
et <- eventTable(time.units = "days")
et$add.sampling(obs)
et$add.dosing(
dose = 2 / 24, start.time = 0,
nbr.doses = 10, dosing.interval = 1
)
solve1 <- solve(mod, et, method = m)
solve2 <- solve(mod2, et, method = m)
test_that(sprintf("Test absorption lag-time with IV dosing (%s): Solves with lag times are different", m), {
expect_equal(obs, solve1$time)
expect_equal(obs, solve2$time)
expect_false(all(solve1$intestine == solve2$intestine))
expect_false(all(solve1$blood == solve2$blood))
})
et <- eventTable(time.units = "days")
et$add.sampling(seq(0, 10, by = 1 / 24))
et$add.dosing(
dose = 2 / 24, start.time = 2,
nbr.doses = 10, dosing.interval = 1
)
solve3 <- solve(mod, et, method = m)
test_that(sprintf("Test absorption lag-time with IV dosing (%s): Absorption lag shifts event by 2", m), {
expect_equal(obs, solve3$time)
expect_equal(solve3$intestine, solve2$intestine)
expect_equal(solve3$blood, solve2$blood)
})
test_that(sprintf("bad alag (%s)", m), {
## test bad solves -- These could depend on intestine indirectly so these are run-time errors
mod3 <- rxode2({
a <- 6
b <- 0.6
d / dt(intestine) <- -a * intestine
alag(intestine) <- 2 * intestine
d / dt(blood) <- a * intestine - b * blood
})
et <- eventTable(time.units = "days")
obs <- units::set_units(seq(0, 10, by = 1 / 24), "days")
et$add.sampling(obs)
et$add.dosing(
dose = 2 / 24, start.time = 0,
nbr.doses = 10, dosing.interval = 1
)
expect_error(solve(mod3, et))
})
}
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.