library(testthat)
context("Test the simulate method with IOV")
seed <- 1
source(paste0("", "testUtils.R"))
test_that(getTestName("Simulate 1000mg QD with IOV on KA (1)"), {
if (skipLongTest) return(TRUE)
regFilename <- "3_boluses_iov_ka_1"
model <- model_suite$testing$nonmem$advan4_trans4
model <- model %>% replace(Equation("KA", "THETA_KA*exp(ETA_KA + IOV_KA)"))
obsTimes1 <- c(15, 50, 55, 60, 65, 70) # by 0.5 in the non-regression file
obsTimes2 <- seq(0, 72, by=0.5)
for (obsTimes in list(obsTimes1, obsTimes2)) {
dataset <- Dataset(10) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Bolus(time=48, amount=1000, compartment=1)) %>%
add(Observations(times=obsTimes)) %>%
add(IOV(colname="IOV_KA", distribution=FunctionDistribution(fun="rnorm", args=list(mean=0, sd=0.2))))
expect_equal(dataset %>% getIOVs() %>% getNames(), "IOV_KA")
#table_rxode <- dataset %>% export(dest="RxODE", model=model, seed=seed, nocb=TRUE)
#table_mrgsolve <- dataset %>% export(dest="mrgsolve", model=model, seed=seed, nocb=TRUE)
# NOCB=FALSE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(FALSE, "IOV_KA"))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB=TRUE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(TRUE, "IOV_KA"))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
}
})
test_that(getTestName("Simulate 1000mg QD with IOV on KA (2)"), {
# This test could sometimes fail with RxODE version > 1.0.5 & < 1.1.0
if (skipLongTest) return(TRUE)
regFilename <- "3_boluses_iov_ka_2"
model <- model_suite$testing$nonmem$advan4_trans4
model <- model %>% replace(Equation("KA", "THETA_KA*exp(ETA_KA + IOV_KA)"))
model <- model %>% add(Omega("IOV_KA", value=0.2^2))
dataset <- Dataset(10) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Bolus(time=48, amount=1000, compartment=1)) %>%
add(Observations(times=seq(0,72, by=0.5))) %>%
add(IOV(colname="IOV_KA", distribution=EtaDistribution(model, omega="IOV_KA")))
# NOCB=FALSE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(FALSE, "IOV_KA"))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB=TRUE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(TRUE, "IOV_KA"))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
})
test_that(getTestName("Simulate IOV on F1"), {
# This test always failed with RxODE version > 1.0.5 & < 1.1.0
if (skipLongTest) return(TRUE)
regFilename <- "3_boluses_iiv_iov_f1"
# Model with IIV and IOV on F1
model <- model_suite$testing$nonmem$advan4_trans4 %>%
add(Theta("F1", value=0.75)) %>%
add(Omega("F1", value=0.2^2)) %>%
add(Omega("IOV_F1", index=7, index2=7, value=0.2^2, same=FALSE)) %>% # 20% IOV
add(Bioavailability(compartment=1, rhs="F1")) %>%
add(Equation("F1", "THETA_F1*exp(ETA_F1 + IOV_F1)"), Position(Equation("Q")))
getDataset <- function(model) {
dataset <- Dataset(10) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Bolus(time=48, amount=1000, compartment=1)) %>%
add(Observations(times=seq(0,72, by=4))) %>%
add(IOV(colname="IOV_F1", distribution=EtaDistribution(model, omega="IOV_F1")))
return(dataset)
}
# IIV only
model_no_iov <- model %>% disable("IOV")
dataset_no_iov <- getDataset(model_no_iov)
datasetRegressionTest(dataset_no_iov, model_no_iov, seed=seed, filename="3_boluses_iiv_f1")
# IIV + IOV (RxODE / mrgsolve)
dataset <- getDataset(model)
datasetRegressionTest(dataset, model, seed=seed, filename=regFilename)
# NOCB=FALSE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(FALSE))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB=TRUE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(TRUE))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
})
test_that(getTestName("Simulate IOV on ALAG1"), {
# This test always failed with RxODE version > 1.0.5 & < 1.1.0
if (skipLongTest) return(TRUE)
regFilename <- "3_boluses_iiv_iov_alag1"
# Model with IIV on ALAG1
model <- model_suite$testing$nonmem$advan4_trans4 %>%
add(Theta("ALAG1", value=5)) %>%
add(Omega("ALAG1", value=0.2^2)) %>%
add(Omega("IOV_ALAG1", value=0.2^2, same=FALSE)) %>% # 20% IOV in model
add(LagTime(compartment=1, rhs="ALAG1")) %>%
add(Equation("ALAG1", "THETA_ALAG1*exp(ETA_ALAG1 + IOV_ALAG1)"))
obsTimes <- seq(0,72, by=0.5)
getDataset <- function(model, times) {
dataset <- Dataset(10) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Bolus(time=48, amount=1000, compartment=1)) %>%
add(Observations(times=times)) %>%
add(IOV(colname="IOV_ALAG1", distribution=EtaDistribution(model, omega="IOV_ALAG1")))
return(dataset)
}
# IIV only
model_no_iov <- model %>% disable("IOV")
dataset_no_iov <- getDataset(model_no_iov, obsTimes)
datasetRegressionTest(dataset_no_iov, model_no_iov, seed=seed, filename="3_boluses_iiv_alag1")
# IIV + IOV (RxODE / mrgsolve)
dataset <- getDataset(model, obsTimes)
datasetRegressionTest(dataset, model, seed=seed, filename=regFilename)
startTimes <- c(0,24,47) # 47,48 NOT WORKING WITH MRGSOLVE LOCF
for (startTime in startTimes) {
#cat(startTime)
obsTimes <- seq(startTime, 72, by=1)
dataset <- getDataset(model, obsTimes)
#table_rxode <- dataset %>% export(dest="RxODE", model=model, seed=seed, nocb=FALSE)
#table_mrgsolve <- dataset %>% export(dest="mrgsolve", model=model, seed=seed, nocb=FALSE)
# NOCB=FALSE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(FALSE))))
test <- expression(
# Bug in RxODE/rxode2 (time 0 is there while it should not)
results <- if (startTime != 0) {results %>% dplyr::filter(TIME != 0)} else {results},
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB=TRUE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(TRUE))))
test <- expression(
# Bug in RxODE/rxode2 (time 0 is there while it should not)
results <- if (startTime != 0) {results %>% dplyr::filter(TIME != 0)} else {results},
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
}
})
test_that(getTestName("Simulate IOV on D1"), {
if (skipLongTest) return(TRUE)
regFilename <- "3_infusions_iiv_iov_d1"
# Model with IIV on D1
model <- model_suite$testing$nonmem$advan3_trans4 %>%
add(Theta("D1", value=5)) %>%
add(Omega("D1", value=0.2^2)) %>%
add(Omega("IOV_D1", value=0.5^2, same=FALSE)) %>% # 50% IOV
add(InfusionDuration(compartment=1, rhs="D1")) %>%
add(Equation("D1", "THETA_D1*exp(ETA_D1 + IOV_D1)"))
getDataset <- function(model) {
dataset <- Dataset(10) %>%
add(Infusion(time=0, amount=1000, compartment=1)) %>%
add(Infusion(time=24, amount=1000, compartment=1)) %>%
add(Infusion(time=48, amount=1000, compartment=1)) %>%
add(Observations(times=seq(0,72, by=0.5))) %>%
add(IOV(colname="IOV_D1", distribution=EtaDistribution(model, omega="IOV_D1")))
return(dataset)
}
# IIV only
model_no_iov <- model %>% disable("IOV")
dataset_no_iov <- getDataset(model_no_iov)
datasetRegressionTest(dataset_no_iov, model_no_iov, seed=seed, filename="3_infusions_iiv_d1")
# IIV + IOV (RxODE / mrgsolve)
dataset <- getDataset(model)
datasetRegressionTest(dataset, model, seed=seed, filename=regFilename)
# NOCB=FALSE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(FALSE))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB=TRUE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(TRUE))))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
})
test_that(getTestName("Simulate IOV on F1"), {
if (skipLongTest) return(TRUE)
regFilename <- "3_bolus_iov_on_f1"
# Model with IIV on D1
model <- model_suite$testing$nonmem$advan4_trans4 %>%
add(Theta("F1", value=0.75)) %>%
add(Omega("F1", value=0.09)) %>% # 30% CV
add(Equation("F1", "THETA_F1*exp(ETA_F1 + IOV_F1)")) %>%
add(Bioavailability(1, rhs="F1"))
startTimes <- c(0,24,47) # 47,48 NOT WORKING WITH MRGSOLVE LOCF
for (startTime in startTimes) {
#cat(startTime)
obsTimes <- seq(startTime, 72, by=1)
dataset <- Dataset(3) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Bolus(time=48, amount=1000, compartment=1)) %>%
add(Observations(times=obsTimes)) %>%
add(IOV(colname="IOV_F1", NormalDistribution(0, 0.5))) # 50% CV in addition
#table_rxode <- dataset %>% export(dest="RxODE", model=model, seed=seed)
#table_mrgsolve <- dataset %>% export(dest="mrgsolve", model=model, seed=seed)
# NOCB=FALSE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(FALSE)), outvars="F1"))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB=TRUE
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, seed=seed, settings=Settings(NOCB(TRUE)), outvars="F1"))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
}
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.