aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJohannes Ranke <jranke@uni-bremen.de>2022-02-28 11:17:56 +0100
committerJohannes Ranke <jranke@uni-bremen.de>2022-02-28 11:17:56 +0100
commitd68f7cc800fe2342642056780b915821dbe113e0 (patch)
tree969298f89c8c76bcb03d6d84186ab302c0fd26d7 /tests
parent6b7b93c29115d75bf10c63b61f565a61a2d74498 (diff)
With saemix 3.0 on CRAN there's no need to check for it in tests
Diffstat (limited to 'tests')
-rw-r--r--tests/testthat/setup_script.R25
-rw-r--r--tests/testthat/test-dmta.R64
-rw-r--r--tests/testthat/test_mixed.R3
-rw-r--r--tests/testthat/test_nlmixr.r99
-rw-r--r--tests/testthat/test_plot.R14
5 files changed, 79 insertions, 126 deletions
diff --git a/tests/testthat/setup_script.R b/tests/testthat/setup_script.R
index 693a2a25..4688b7d7 100644
--- a/tests/testthat/setup_script.R
+++ b/tests/testthat/setup_script.R
@@ -183,28 +183,25 @@ ds_biphasic <- lapply(ds_biphasic_mean, function(ds) {
})
# Mixed model fits
-saemix_available <- FALSE
-if (requireNamespace("saemix", quietly = TRUE)) {
- if(packageVersion("saemix") >= "3.0") saemix_available <- TRUE
-}
mmkin_sfo_1 <- mmkin("SFO", ds_sfo, quiet = TRUE, error_model = "tc", cores = n_cores)
mmkin_dfop_1 <- mmkin("DFOP", ds_dfop, quiet = TRUE, cores = n_cores)
mmkin_biphasic <- mmkin(list("DFOP-SFO" = DFOP_SFO), ds_biphasic, quiet = TRUE, cores = n_cores)
mmkin_biphasic_mixed <- mixed(mmkin_biphasic)
+# nlme
dfop_nlme_1 <- nlme(mmkin_dfop_1)
nlme_biphasic <- nlme(mmkin_biphasic)
-if (saemix_available) {
- sfo_saem_1 <- saem(mmkin_sfo_1, quiet = TRUE, transformations = "saemix")
+# saemix
+sfo_saem_1 <- saem(mmkin_sfo_1, quiet = TRUE, transformations = "saemix")
- dfop_saemix_1 <- saem(mmkin_dfop_1, quiet = TRUE, transformations = "mkin")
- dfop_saemix_2 <- saem(mmkin_dfop_1, quiet = TRUE, transformations = "saemix")
+dfop_saemix_1 <- saem(mmkin_dfop_1, quiet = TRUE, transformations = "mkin")
+dfop_saemix_2 <- saem(mmkin_dfop_1, quiet = TRUE, transformations = "saemix")
- saem_biphasic_m <- saem(mmkin_biphasic, transformations = "mkin", quiet = TRUE)
- saem_biphasic_s <- saem(mmkin_biphasic, transformations = "saemix", quiet = TRUE)
-}
+saem_biphasic_m <- saem(mmkin_biphasic, transformations = "mkin", quiet = TRUE)
+saem_biphasic_s <- saem(mmkin_biphasic, transformations = "saemix", quiet = TRUE)
+# UBA datasets
ds_uba <- lapply(experimental_data_for_UBA_2019[6:10],
function(x) subset(x$data[c("name", "time", "value")]))
names(ds_uba) <- paste("Dataset", 6:10)
@@ -216,7 +213,5 @@ f_uba_mmkin <- mmkin(list("SFO-SFO" = sfo_sfo_uba, "DFOP-SFO" = dfop_sfo_uba),
ds_uba, quiet = TRUE, cores = n_cores)
f_uba_dfop_sfo_mixed <- mixed(f_uba_mmkin[2, ])
-if (saemix_available) {
- f_uba_sfo_sfo_saem <- saem(f_uba_mmkin["SFO-SFO", ], quiet = TRUE, transformations = "saemix")
- f_uba_dfop_sfo_saem <- saem(f_uba_mmkin["DFOP-SFO", ], quiet = TRUE, transformations = "saemix")
-}
+f_uba_sfo_sfo_saem <- saem(f_uba_mmkin["SFO-SFO", ], quiet = TRUE, transformations = "saemix")
+f_uba_dfop_sfo_saem <- saem(f_uba_mmkin["DFOP-SFO", ], quiet = TRUE, transformations = "saemix")
diff --git a/tests/testthat/test-dmta.R b/tests/testthat/test-dmta.R
new file mode 100644
index 00000000..12bbcb8e
--- /dev/null
+++ b/tests/testthat/test-dmta.R
@@ -0,0 +1,64 @@
+local_edition(3)
+
+# Data
+dmta_ds <- lapply(1:7, function(i) {
+ ds_i <- dimethenamid_2018$ds[[i]]$data
+ ds_i[ds_i$name == "DMTAP", "name"] <- "DMTA"
+ ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i]
+ ds_i
+})
+names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title)
+dmta_ds[["Elliot"]] <- rbind(dmta_ds[["Elliot 1"]], dmta_ds[["Elliot 2"]])
+dmta_ds[["Elliot 1"]] <- dmta_ds[["Elliot 2"]] <- NULL
+
+# mkin
+nlm_dfop <- mmkin("DFOP", dmta_ds)
+nlm_dfop_tc <- mmkin("DFOP", dmta_ds, error_model = "tc")
+parms(nlm_dfop_tc)
+
+# nlme
+nlme_dfop_tc <- nlme(nlm_dfop_tc)
+summary(nlme_dfop_tc)
+intervals(nlme_dfop_tc)
+
+# saemix
+saem_saemix_dfop_tc <- saem(nlm_dfop_tc)
+saem_saemix_dfop_tc$so <- saemix::llgq.saemix(saem_saemix_dfop_tc$so)
+summary(saem_saemix_dfop_tc)
+intervals(saem_saemix_dfop_tc)
+AIC(saem_saemix_dfop_tc$so)
+AIC(saem_saemix_dfop_tc$so, "gq")
+AIC(saem_saemix_dfop_tc$so, "lin")
+saemix::plot(saem_saemix_dfop_tc$so, plot.type = "likelihood")
+saemix::plot(saem_saemix_dfop_tc$so, plot.type = "convergence")
+
+saem_saemix_dfop_tc_1k <- saem(nlm_dfop_tc, nbiter.saemix = c(1000, 100))
+AIC(saem_saemix_dfop_tc_1k$so)
+saemix::plot(saem_saemix_dfop_tc_1k$so, plot.type = "convergence")
+saemix::plot(saem_saemix_dfop_tc_1k$so, plot.type = "likelihood")
+intervals(saem_saemix_dfop_tc_1k)
+
+saem_saemix_dfop_tc_1.5k <- saem(nlm_dfop_tc, nbiter.saemix = c(1500, 100))
+saem_saemix_dfop_tc_1.5k$so <- saemix::llgq.saemix(saem_saemix_dfop_tc_1.5k$so)
+saemix::plot(saem_saemix_dfop_tc_1.5k$so, plot.type = "convergence")
+AIC(saem_saemix_dfop_tc_1.5k$so)
+AIC(saem_saemix_dfop_tc_1.5k$so, "gq")
+intervals(saem_saemix_dfop_tc_1.5k)
+
+# nlmixr saem
+saem_nlmixr_dfop_tc <- nlmixr(nlm_dfop_tc, est = "saem",
+ control = nlmixr::saemControl(nBurn = 300, nEm = 100, nmc = 9, print = 0))
+intervals(saem_nlmixr_dfop_tc)
+summary(saem_nlmixr_dfop_tc)
+AIC(saem_nlmixr_dfop_tc$nm)
+
+saem_nlmixr_dfop_tc_1k <- nlmixr(nlm_dfop_tc, est = "saem",
+ control = nlmixr::saemControl(nBurn = 1000, nEm = 300, nmc = 9, print = 0))
+intervals(saem_nlmixr_dfop_tc_1k)
+summary(saem_nlmixr_dfop_tc_1k)
+AIC(saem_nlmixr_dfop_tc_1k$nm)
+
+focei_nlmixr_dfop_tc <- nlmixr(nlm_dfop_tc, est = "focei")
+intervals(focei_nlmixr_dfop_tc)
+
+AIC(saem_nlmixr_dfop_tc$nm)
diff --git a/tests/testthat/test_mixed.R b/tests/testthat/test_mixed.R
index 6ac93295..40bd3fdf 100644
--- a/tests/testthat/test_mixed.R
+++ b/tests/testthat/test_mixed.R
@@ -1,7 +1,6 @@
context("Nonlinear mixed-effects models")
test_that("Parent fits using saemix are correctly implemented", {
- skip_if(!saemix_available)
expect_error(saem(fits), "Only row objects")
# Some fits were done in the setup script
@@ -97,7 +96,6 @@ test_that("Print methods work", {
expect_known_output(print(mmkin_biphasic_mixed, digits = 2), "print_mmkin_biphasic_mixed.txt")
expect_known_output(print(nlme_biphasic, digits = 1), "print_nlme_biphasic.txt")
- skip_if(!saemix_available)
expect_known_output(print(sfo_saem_1, digits = 1), "print_sfo_saem_1.txt")
})
@@ -126,7 +124,6 @@ test_that("nlme results are reproducible to some degree", {
test_that("saem results are reproducible for biphasic fits", {
- skip_if(!saemix_available)
test_summary <- summary(saem_biphasic_s)
test_summary$saemixversion <- "Dummy 0.0 for testing"
test_summary$mkinversion <- "Dummy 0.0 for testing"
diff --git a/tests/testthat/test_nlmixr.r b/tests/testthat/test_nlmixr.r
deleted file mode 100644
index dcbb50ac..00000000
--- a/tests/testthat/test_nlmixr.r
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-# dmta_ds <- lapply(1:8, function(i) {
-# ds_i <- dimethenamid_2018$ds[[i]]$data
-# ds_i[ds_i$name == "DMTAP", "name"] <- "DMTA"
-# ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i]
-# ds_i
-# })
-# names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title)
-# dmta_ds[["Borstel"]] <- rbind(dmta_ds[["Borstel 1"]], dmta_ds[["Borstel 2"]])
-# dmta_ds[["Borstel 1"]] <- NULL
-# dmta_ds[["Borstel 2"]] <- NULL
-# dmta_ds[["Elliot"]] <- rbind(dmta_ds[["Elliot 1"]], dmta_ds[["Elliot 2"]])
-# dmta_ds[["Elliot 1"]] <- NULL
-# dmta_ds[["Elliot 2"]] <- NULL
-# dfop_sfo3_plus <- mkinmod(
-# DMTA = mkinsub("DFOP", c("M23", "M27", "M31")),
-# M23 = mkinsub("SFO"),
-# M27 = mkinsub("SFO"),
-# M31 = mkinsub("SFO", "M27", sink = FALSE),
-# quiet = TRUE
-# )
-# f_dmta_mkin_tc <- mmkin(
-# list("DFOP-SFO3+" = dfop_sfo3_plus),
-# dmta_ds, quiet = TRUE, error_model = "tc")
-#
-# d_dmta_nlmixr <- nlmixr_data(f_dmta_mkin_tc)
-# m_dmta_nlmixr <- function ()
-# {
-# ini({
-# DMTA_0 = 98.7697627680706
-# eta.DMTA_0 ~ 2.35171765917765
-# log_k_M23 = -3.92162409637283
-# eta.log_k_M23 ~ 0.549278519419884
-# log_k_M27 = -4.33774620773911
-# eta.log_k_M27 ~ 0.864474956685295
-# log_k_M31 = -4.24767627688461
-# eta.log_k_M31 ~ 0.750297149164171
-# f_DMTA_tffm0_1_qlogis = -2.092409
-# eta.f_DMTA_tffm0_1_qlogis ~ 0.3
-# f_DMTA_tffm0_2_qlogis = -2.180576
-# eta.f_DMTA_tffm0_2_qlogis ~ 0.3
-# f_DMTA_tffm0_3_qlogis = -2.142672
-# eta.f_DMTA_tffm0_3_qlogis ~ 0.3
-# log_k1 = -2.2341008812259
-# eta.log_k1 ~ 0.902976221565793
-# log_k2 = -3.7762779983269
-# eta.log_k2 ~ 1.57684519529298
-# g_qlogis = 0.450175725479389
-# eta.g_qlogis ~ 3.0851335687675
-# sigma_low_DMTA = 0.697933852349996
-# rsd_high_DMTA = 0.0257724286053519
-# sigma_low_M23 = 0.697933852349996
-# rsd_high_M23 = 0.0257724286053519
-# sigma_low_M27 = 0.697933852349996
-# rsd_high_M27 = 0.0257724286053519
-# sigma_low_M31 = 0.697933852349996
-# rsd_high_M31 = 0.0257724286053519
-# })
-# model({
-# DMTA_0_model = DMTA_0 + eta.DMTA_0
-# DMTA(0) = DMTA_0_model
-# k_M23 = exp(log_k_M23 + eta.log_k_M23)
-# k_M27 = exp(log_k_M27 + eta.log_k_M27)
-# k_M31 = exp(log_k_M31 + eta.log_k_M31)
-# k1 = exp(log_k1 + eta.log_k1)
-# k2 = exp(log_k2 + eta.log_k2)
-# g = expit(g_qlogis + eta.g_qlogis)
-# f_DMTA_tffm0_1 = expit(f_DMTA_tffm0_1_qlogis + eta.f_DMTA_tffm0_1_qlogis)
-# f_DMTA_tffm0_2 = expit(f_DMTA_tffm0_2_qlogis + eta.f_DMTA_tffm0_2_qlogis)
-# f_DMTA_tffm0_3 = expit(f_DMTA_tffm0_3_qlogis + eta.f_DMTA_tffm0_3_qlogis)
-# f_DMTA_to_M23 = f_DMTA_tffm0_1
-# f_DMTA_to_M27 = (1 - f_DMTA_tffm0_1) * f_DMTA_tffm0_2
-# f_DMTA_to_M31 = (1 - f_DMTA_tffm0_1) * (1 - f_DMTA_tffm0_2) * f_DMTA_tffm0_3
-# d/dt(DMTA) = -((k1 * g * exp(-k1 * time) + k2 * (1 -
-# g) * exp(-k2 * time))/(g * exp(-k1 * time) + (1 -
-# g) * exp(-k2 * time))) * DMTA
-# d/dt(M23) = +f_DMTA_to_M23 * ((k1 * g * exp(-k1 * time) +
-# k2 * (1 - g) * exp(-k2 * time))/(g * exp(-k1 * time) +
-# (1 - g) * exp(-k2 * time))) * DMTA - k_M23 * M23
-# d/dt(M27) = +f_DMTA_to_M27 * ((k1 * g * exp(-k1 * time) +
-# k2 * (1 - g) * exp(-k2 * time))/(g * exp(-k1 * time) +
-# (1 - g) * exp(-k2 * time))) * DMTA - k_M27 * M27 +
-# k_M31 * M31
-# d/dt(M31) = +f_DMTA_to_M31 * ((k1 * g * exp(-k1 * time) +
-# k2 * (1 - g) * exp(-k2 * time))/(g * exp(-k1 * time) +
-# (1 - g) * exp(-k2 * time))) * DMTA - k_M31 * M31
-# DMTA ~ add(sigma_low_DMTA) + prop(rsd_high_DMTA)
-# M23 ~ add(sigma_low_M23) + prop(rsd_high_M23)
-# M27 ~ add(sigma_low_M27) + prop(rsd_high_M27)
-# M31 ~ add(sigma_low_M31) + prop(rsd_high_M31)
-# })
-# }
-# m_dmta_nlmixr_mkin <- nlmixr_model(f_dmta_mkin_tc, test_log_parms = TRUE)
-# f_dmta_nlmixr_saem <- nlmixr(f_dmta_mkin_tc, est = "saem", control = saemControl(print = 250))
-# f_dmta_nlmixr_focei <- nlmixr(f_dmta_mkin_tc, est = "focei", control = foceiControl(print = 250))
-# plot(f_dmta_nlmixr_saem)
-# plot(f_dmta_nlmixr_focei)
-#
diff --git a/tests/testthat/test_plot.R b/tests/testthat/test_plot.R
index e08fe277..4f484cf3 100644
--- a/tests/testthat/test_plot.R
+++ b/tests/testthat/test_plot.R
@@ -33,10 +33,8 @@ test_that("Plotting mkinfit, mmkin and mixed model objects is reproducible", {
plot_biphasic_mmkin <- function() plot(f_uba_dfop_sfo_mixed)
vdiffr::expect_doppelganger("mixed model fit for mmkin object", plot_biphasic_mmkin)
- if (saemix_available) {
- plot_biphasic_saem_s <- function() plot(f_uba_dfop_sfo_saem)
- vdiffr::expect_doppelganger("mixed model fit for saem object with saemix transformations", plot_biphasic_saem_s)
- }
+ plot_biphasic_saem_s <- function() plot(f_uba_dfop_sfo_saem)
+ vdiffr::expect_doppelganger("mixed model fit for saem object with saemix transformations", plot_biphasic_saem_s)
skip_on_travis()
@@ -46,12 +44,10 @@ test_that("Plotting mkinfit, mmkin and mixed model objects is reproducible", {
#plot_biphasic_mmkin <- function() plot(mixed(mmkin_biphasic))
# Biphasic fits with lots of data and fits have lots of potential for differences
plot_biphasic_nlme <- function() plot(nlme_biphasic)
- if (saemix_available) {
- #plot_biphasic_saem_s <- function() plot(saem_biphasic_s)
- plot_biphasic_saem_m <- function() plot(saem_biphasic_m)
+ #plot_biphasic_saem_s <- function() plot(saem_biphasic_s)
+ plot_biphasic_saem_m <- function() plot(saem_biphasic_m)
- vdiffr::expect_doppelganger("mixed model fit for saem object with mkin transformations", plot_biphasic_saem_m)
- }
+ vdiffr::expect_doppelganger("mixed model fit for saem object with mkin transformations", plot_biphasic_saem_m)
# different results when working with eigenvalues
plot_errmod_fit_D_obs_eigen <- function() plot_err(fit_D_obs_eigen, sep_obs = FALSE)

Contact - Imprint