tests/testthat/test-rxode-issue-445.R

rxTest({
  test_that("rate and duration data mismatches; Issue RxODE#445", {
    
    TV_CLr <- 6.54 # L/h, (CLr/F)
    TV_CLnr <- 2.39 # L/h, (CLnr/F)
    TV_Vc <- 95.1 # L, (V/F)
    TV_alag <- 0.145 # h,
    TV_D <- 0.512 # h,
    TV_Q <- 2.1 # L/h, (Q/F)
    TV_Vp <- 23.3 # L, (Vp/F)
    
    # zero-order absorption with lag time 2-compartment
    
    mod <- rxode2({
      CL <- CLr + CLnr
      C2 <- central / Vc * 1000
      d / dt(central) <- -CL / Vc * central - Q / Vc * central + Q / Vp * periph
      d / dt(periph) <- Q / Vc * central - Q / Vp * periph
      alag(central) <- alag
      dur(central) <- D
    })
    
    ev <- et(amt = 2, cmt = "central", ii = 24, addl = 4) %>%
      et(seq(0, 120, 0.1))
    
    ### check whether infusion duration was considered in simulation
    
    theta2 <- c(D = TV_D * 10, CLr = TV_CLr, CLnr = TV_CLnr, Vc = TV_Vc, Vp = TV_Vp, Q = TV_Q, alag = TV_alag)
    #expect_warning(sim2 <- rxSolve(mod, theta2, ev), "dur()")
    
    
    ev2 <- et(amt = 2, cmt = "central", ii = 24, addl = 4, rate = -2) %>%
      et(seq(0, 120, 0.1))
    
    theta2 <- c(D = TV_D * 10, CLr = TV_CLr, CLnr = TV_CLnr, Vc = TV_Vc, Vp = TV_Vp, Q = TV_Q, alag = TV_alag)
    expect_warning(sim2 <- rxSolve(mod, theta2, ev2), NA)
    
    mod <- rxode2({
      CL <- CLr + CLnr
      C2 <- central / Vc * 1000
      d / dt(central) <- -CL / Vc * central - Q / Vc * central + Q / Vp * periph
      d / dt(periph) <- Q / Vc * central - Q / Vp * periph
      alag(central) <- alag
      rate(central) <- D
    })
    
    theta2 <- c(D = TV_D * 10, CLr = TV_CLr, CLnr = TV_CLnr, Vc = TV_Vc, Vp = TV_Vp, Q = TV_Q, alag = TV_alag)
    #expect_warning(sim2 <- rxSolve(mod, theta2, ev), "rate()")
    
    ev3 <- et(amt = 2, cmt = "central", ii = 24, addl = 4, rate = -1) %>%
      et(seq(0, 120, 0.1))
    
    theta2 <- c(D = TV_D * 10, CLr = TV_CLr, CLnr = TV_CLnr, Vc = TV_Vc, Vp = TV_Vp, Q = TV_Q, alag = TV_alag)
    expect_warning(sim2 <- rxSolve(mod, theta2, ev3), NA)
  })
})
nlmixr2/rxode2 documentation built on Jan. 11, 2025, 8:48 a.m.