tests/testthat/test-simulate_bioavailability.R

library(testthat)

context("Test the simulate method with different bioavailabilities")

seed <- 1
source(file.path(getwd(), test_path(), "test-utils.R"))

test_that("Simulate a bolus, 2 arms, F1 only in arm1, in dataset", {
  model <- model_suite$testing$nonmem$advan4_trans4
  regFilename <- "bolus_2arms_bioavailability"

  arm1 <- Arm(1, subjects = 10) %>%
    add(Bolus(time = 0, amount = 2000, compartment = 1, f = 0.75)) %>%
    add(Observations(times = seq(0, 24, by = 0.5)))

  arm2 <- Arm(2, subjects = 10) %>%
    add(Bolus(time = 0, amount = 2000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 0.5)))

  dataset <- Dataset() %>%
    add(arm1) %>%
    add(arm2)

  dataset_regression_test(dataset, model, seed = seed, filename = regFilename)

  simulation <- expression(model %>% simulate(dataset, dest = destEngine, seed = seed))
  test <- expression(
    expect_equal(nrow(results), dataset %>% length() * 49)
  )
  campsis_test(simulation, test, env = environment())
})

test_that("Simulate a simple bolus with bioavailability, dataset versus model", {
  model <- model_suite$testing$nonmem$advan4_trans4
  regFilename <- "simple_bolus_bioavailability"

  # Bioavailability implemented in dataset
  dataset <- Dataset(3) %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1, f = 0.75)) %>%
    add(Observations(times = seq(0, 24, by = 0.5)))

  dataset_regression_test(dataset, model, seed = seed, filename = regFilename)

  simulation <- expression(model %>% simulate(dataset, dest = destEngine, seed = seed))
  test <- expression(
    expect_equal(nrow(results), dataset %>% length() * 49),
    output_regression_test(results, output = "CP", filename = regFilename)
  )
  campsis_test(simulation, test, env = environment())

  # Bioavailability implemented in model
  model <- model %>% add(Bioavailability(compartment = 1, rhs = "0.75"))

  dataset <- Dataset(3) %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 0.5)))

  simulation <- expression(model %>% simulate(dataset, dest = destEngine, seed = seed))
  test <- expression(
    expect_equal(nrow(results), dataset %>% length() * 49),
    output_regression_test(results, output = "CP", filename = regFilename)
  )
  campsis_test(simulation, test, env = environment())
})


test_that("Simulate several fixed F's at once", {
  model <- model_suite$testing$nonmem$advan4_trans4

  # Bioavailability implemented in dataset
  dataset <- Dataset(4) %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1, f = list(c(0.3, 0.6, 0.9, 1)))) %>%
    add(Observations(times = seq(0, 24, by = 0.5)))

  simulation <- expression(model %>% disable("IIV") %>% simulate(dataset, dest = destEngine, seed = seed))
  test <- expression(
    cmax <- results %>% dplyr::filter(TIME == 2.5) %>% dplyr::pull(CP),
    expect_equal(round(cmax, 2), c(2.89, 5.77, 8.66, 9.62))
  )
  campsis_test(simulation, test, env = environment())
})

Try the campsis package in your browser

Any scripts or data that you put into this service are public.

campsis documentation built on Aug. 5, 2026, 9:07 a.m.