knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>")
library(rxode2)

Introduction

This briefly describes the syntax used to define models that rxode2 will translate into R-callable compiled code. It also describes the communication of variables between R and the rxode2 modeling specification.

Creating rxode2 models


Syntax


Bugs and/or deficiencies

Note

The ODE specification mini-language is parsed with the help of the open source tool \code{dparser}, Plevyak (2015).

Example model

Below is a commented example to quickly show the capabilities of rxode2 syntax.

Example

f <- function() {
  ini({

  })
  model({
    # An rxode2 model specification (this line is a comment).

    if(comed==0) {  # concomitant medication (con-med)?
      F <- 1.0     # full bioavailability w.o. con-med
    } else {
      F <- 0.80    # 20% reduced bioavailability
    }

    C2 <- centr/V2  # concentration in the central compartment
    C3 <- peri/V3   # concentration in the peripheral compartment

    # ODE describing the PK and PD

    d/dt(depot) <- -KA*depot
    d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3
    d/dt(peri)  <-                      Q*C2 - Q*C3
    d/dt(eff)   <- Kin - Kout*(1-C2/(EC50+C2))*eff
    eff(0)      <- 1
  })
}

Interface and data handling between R and the generated C code

Users specify which variables are the dynamic system's state variables via the d/dt(identifier) operator as part of the model specification, and which are model parameters via the params= argument in rxode2 solve() method:

m1 <- rxode2(model = ode, modName = "m1")

# model parameters -- a named vector is required
theta <-
   c(KA=0.29, CL=18.6, V2=40.2, Q=10.5, V3=297, Kin=1, Kout=1, EC50=200)

# state variables and their amounts at time 0 (the use of names is
# encouraged, but not required)
inits <- c(depot=0, centr=0, peri=0, eff=1)

# qd1 is an eventTable specification with a set of dosing and sampling
# records (code not shown here)

solve(theta, event = qd1, inits = inits)

The values of these variables at pre-specified time points are saved during model fitting/integration and returned as part of the fitted values (see the function et(), to define a set of time points when to capture the values of these variables) and returned as part of the modeling output.

The ODE specification mini-language is parsed with the help of the open source tool DParser, Plevyak (2015).



nlmixr2/rxode2 documentation built on Jan. 11, 2025, 8:48 a.m.