tests/testthat/test-as-nonmem2rx.R

test_that("as.nonmem2rx", {
  skip_on_cran()

  mod <- nonmem2rx(system.file("mods/cpt/runODE032.ctl", package="nonmem2rx"),
                   determineError=FALSE, lst=".res", save=FALSE)

  mod2 <-function() {
    ini({
      lcl <- 1.37034036528946
      lvc <- 4.19814911033061
      lq <- 1.38003493562413
      lvp <- 3.87657341967489
      RSV <- c(0, 0.196446108190896, 1)
      eta.cl ~ 0.101251418415006
      eta.v ~ 0.0993872449483344
      eta.q ~ 0.101302674763154
      eta.v2 ~ 0.0730497519364148
    })
    model({
      cmt(CENTRAL)
      cmt(PERI)
      cl <- exp(lcl + eta.cl)
      v <- exp(lvc + eta.v)
      q <- exp(lq + eta.q)
      v2 <- exp(lvp + eta.v2)
      v1 <- v
      scale1 <- v
      k21 <- q/v2
      k12 <- q/v
      d/dt(CENTRAL) <- k21 * PERI - k12 * CENTRAL - cl * CENTRAL/v1
      d/dt(PERI) <- -k21 * PERI + k12 * CENTRAL
      f <- CENTRAL/scale1
      f ~ prop(RSV)
    })
  }

  new <- as.nonmem2rx(mod2, mod)
  expect_false(is.null(new$ipredAtol))
  expect_false(is.null(new$predAtol))


  mod2 <-function() {
    ini({
      lcl <- 1.37034036528946
      lvc <- 4.19814911033061
      lq <- 1.38003493562413
      lvp <- 3.87657341967489
      RSV <- c(0, 0.196446108190896, 1)
      eta.cl ~ 0.101251418415006
      eta.v ~ 0.0993872449483344
      eta.q ~ 0.101302674763154
      eta.v2 ~ 0.07
    })
    model({
      cmt(CENTRAL)
      cmt(PERI)
      cl <- exp(lcl + eta.cl)
      v <- exp(lvc + eta.v)
      q <- exp(lq + eta.q)
      v2 <- exp(lvp + eta.v2)
      v1 <- v
      scale1 <- v
      k21 <- q/v2
      k12 <- q/v
      d/dt(CENTRAL) <- k21 * PERI - k12 * CENTRAL - cl * CENTRAL/v1
      d/dt(PERI) <- -k21 * PERI + k12 * CENTRAL
      f <- CENTRAL/scale1
      f ~ prop(RSV)
    })
  }

  expect_error(as.nonmem2rx(mod2, mod), "eta translation")

  mod2 <-function() {
    ini({
      lcl <- 1.37
      lvc <- 4.19814911033061
      lq <- 1.38003493562413
      lvp <- 3.87657341967489
      RSV <- c(0, 0.196446108190896, 1)
      eta.cl ~ 0.101251418415006
      eta.v ~ 0.0993872449483344
      eta.q ~ 0.101302674763154
      eta.v2 ~ 0.0730497519364148
    })
    model({
      cmt(CENTRAL)
      cmt(PERI)
      cl <- exp(lcl + eta.cl)
      v <- exp(lvc + eta.v)
      q <- exp(lq + eta.q)
      v2 <- exp(lvp + eta.v2)
      v1 <- v
      scale1 <- v
      k21 <- q/v2
      k12 <- q/v
      d/dt(CENTRAL) <- k21 * PERI - k12 * CENTRAL - cl * CENTRAL/v1
      d/dt(PERI) <- -k21 * PERI + k12 * CENTRAL
      f <- CENTRAL/scale1
      f ~ prop(RSV)
    })
  }

  expect_warning(as.nonmem2rx(mod2, mod), "initial estimate")

})

Try the nonmem2rx package in your browser

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

nonmem2rx documentation built on April 3, 2025, 11:05 p.m.