Learn R Programming

rxode2 (version 2.0.7)

rxCombineErrorLines: Combine Error Lines and create rxode2 expression

Description

Combine Error Lines and create rxode2 expression

Usage

rxCombineErrorLines(
  uiModel,
  errLines = NULL,
  prefixLines = NULL,
  paramsLine = NULL,
  modelVars = FALSE,
  cmtLines = TRUE,
  dvidLine = TRUE,
  lstExpr = NULL,
  useIf = TRUE
)

Arguments

uiModel

UI model

errLines

Error lines; If missing, get the error lines from rxGetDistributionSimulationLines()

prefixLines

Prefix lines, after param statement

paramsLine

Params line, if not present.

modelVars

Return model vars instead of rxode2 statement

cmtLines

Include trailing cmt lines

dvidLine

Include trailing dvid() specification

lstExpr

A list of expressions for model, or NULL. When NULL defaults to the model expressions accessible by uiModel$lstExpr.

useIf

Use an if (CMT == X) for endpoints

Value

quoted expression that can be evaluated to compiled rxode2 model

Details

This is exported to allow other functions to mangle the error lines to make other types of estimation methods (if needed)

Examples

Run this code
# NOT RUN {
# }
# NOT RUN {
one.cmt <- function() {
   ini({
     ## You may label each parameter with a comment
     tka <- 0.45 # Log Ka
     tcl <- log(c(0, 2.7, 100)) # Log Cl
     ## This works with interactive models
     ## You may also label the preceding line with label("label text")
     tv <- 3.45; label("log V")
     ## the label("Label name") works with all models
     eta.ka ~ 0.6
     eta.cl ~ 0.3
     eta.v ~ 0.1
     add.sd <- 0.7
   })
   model({
     ka <- exp(tka + eta.ka)
     cl <- exp(tcl + eta.cl)
     v <- exp(tv + eta.v)
     linCmt() ~ add(add.sd)
   })
}

f <- rxode2(one.cmt)

# You can get the simulation model easily by
rxCombineErrorLines(f)

# You can then get the compiled model by simply evaluting the model:
r <- eval(rxCombineErrorLines(f))

# This also works with multile endpoint models:
pk.turnover.emax <- function() {
  ini({
    tktr <- log(1)
    tka <- log(1)
    tcl <- log(0.1)
    tv <- log(10)
    ##
    eta.ktr ~ 1
    eta.ka ~ 1
    eta.cl ~ 2
    eta.v ~ 1
    prop.err <- 0.1
    pkadd.err <- 0.1
    ##
    temax <- logit(0.8)
    tec50 <- log(0.5)
    tkout <- log(0.05)
    te0 <- log(100)
    ##
    eta.emax ~ .5
    eta.ec50  ~ .5
    eta.kout ~ .5
    eta.e0 ~ .5
    ##
    pdadd.err <- 10
  })
  model({
    ktr <- exp(tktr + eta.ktr)
    ka <- exp(tka + eta.ka)
    cl <- exp(tcl + eta.cl)
    v <- exp(tv + eta.v)
    ##
    emax=expit(temax+eta.emax)
    ec50 =  exp(tec50 + eta.ec50)
    kout = exp(tkout + eta.kout)
    e0 = exp(te0 + eta.e0)
    ##
    DCP = center/v
    PD=1-emax*DCP/(ec50+DCP)
    ##
    effect(0) = e0
    kin = e0*kout
    ##
    d/dt(depot) = -ktr * depot
    d/dt(gut) =  ktr * depot -ka * gut
    d/dt(center) =  ka * gut - cl / v * center
    d/dt(effect) = kin*PD -kout*effect
    ##
    cp = center / v
    cp ~ prop(prop.err) + add(pkadd.err)
    effect ~ add(pdadd.err)
  })
}

f <- rxode2(pk.turnover.emax)
rxCombineErrorLines(f)

# Note that in the parsed form, you can also get the compiled rxode2
# model with $simulationModel

f$simulationModel

# }

Run the code above in your browser using DataLab