library(testthat)
context("Test the simulate method with the NOCB/LOCF switch")
seed <- 1
source(paste0("", "testUtils.R"))
test_that(getTestName("Weight as a time-varying covariate, NOCB vs LOCF"), {
if (skipLongTest) return(TRUE)
model <- model_suite$testing$nonmem$advan4_trans4
equation <- model %>% find(Equation("CL"))
model <- model %>% replace(Equation("CL", paste0(equation@rhs, "*pow(BW/70, 0.75)")))
dataset <- Dataset(4) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Observations(times=c(0,3,9,16,24,26,48)))
# Left join time-varying BW column
table <- dataset %>% export(dest="RxODE", model=model, seed=seed) # CAREFUL, SEED NEEDED FOR REPRODUCIBILITY
weight <- data.frame(TIME=c(0,3,9,16,24,26,48), BW=c(150,20,100,250,40,170,10))
table <- table %>% dplyr::left_join(weight, by="TIME")
# Dataset non-regression test
datasetRegressionTest(dataset, model, seed=seed, filename="wt_as_time_varying_cov")
# LOCF tests
regFilename <- "wt_as_time_varying_cov_locf"
simulation <- expression(simulate(model=model, dataset=table, dest=destEngine, settings=Settings(NOCB(FALSE), Declare("BW")), seed=seed))
# Note: argument declare is only needed for mrgsolve
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB tests
regFilename <- "wt_as_time_varying_cov_nocb"
simulation <- expression(simulate(model=model, dataset=table, dest=destEngine, settings=Settings(NOCB(TRUE), Declare("BW")), seed=seed))
# Note: argument declare is only needed for mrgsolve
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
})
test_that(getTestName("NOCB/LOCF should not have any effect on treatment occasion"), {
if (skipLongTest) return(TRUE)
model <- model_suite$testing$nonmem$advan4_trans4 %>%
delete(Equation("KA")) %>%
add(Equation("KA", "0")) %>%
add(IfStatement("OCC==1", Equation("KA", "THETA_KA*1.5*exp(ETA_KA)"))) %>%
add(IfStatement("OCC==2", Equation("KA", "THETA_KA*0.5*exp(ETA_KA)"))) %>%
add(IfStatement("OCC==3", Equation("KA", "THETA_KA*0.1*exp(ETA_KA)")))
dataset <- Dataset(3) %>%
add(Bolus(time=0, amount=1000, compartment=1)) %>%
add(Bolus(time=12, amount=1000, compartment=1)) %>%
add(Bolus(time=24, amount=1000, compartment=1)) %>%
add(Occasion("OCC", values=c(1,2,3), doseNumbers=c(1,2,3))) %>%
add(Observations(times=seq(24, 36)))
regFilename <- "occ_as_time_varying_cov"
# table_rxode <- dataset %>% export(dest="RxODE", model=model, seed=seed)
# table_mrgsolve <- dataset %>% export(dest="mrgsolve", model=model, seed=seed)
# Dataset non-regression test
datasetRegressionTest(dataset, model, seed=seed, filename=regFilename)
# LOCF tests
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, settings=Settings(NOCB(FALSE, "OCC")), seed=seed, outvars="KA"))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB tests
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, settings=Settings(NOCB(TRUE, "OCC")), seed=seed, outvars="KA"))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
})
test_that(getTestName("NOCB/LOCF should not have any effect on IOV, e.g. on clearance"), {
if (skipLongTest) return(TRUE)
regFilename <- "3_boluses_iov_cl"
model <- model_suite$testing$nonmem$advan4_trans4
model <- model %>% replace(Equation("CL", rhs="THETA_CL*exp(ETA_CL + IOV_CL)"))
for(startTime in c(0, 20, 23, 24, 48)) {
obsTimes <- seq(startTime,72, by=5)
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)) %>% # BEFORE by 0.5, NOW by 5
add(IOV(colname="IOV_CL", distribution=FunctionDistribution(fun="rnorm", args=list(mean=0, sd=1))))
# table_rxode <- dataset %>% export(dest="RxODE", model=model, seed=seed)
# table_mrgsolve <- dataset %>% export(dest="mrgsolve", model=model, seed=seed)
# LOCF tests
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, settings=Settings(NOCB(FALSE, "IOV_CL")), seed=seed))
test <- expression(
outputRegressionTest(results, output="CP", filename=regFilename, times=obsTimes),
spaghettiPlot(results, "CP")
)
campsisTest(simulation, test, env=environment())
# NOCB tests
simulation <- expression(simulate(model=model, dataset=dataset, dest=destEngine, settings=Settings(NOCB(TRUE, "IOV_CL")), seed=seed))
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.