R/genShinyApp.template.R
genShinyApp.template.RdCreate a complete shiny application for exploring dosing regimens given a (hardcoded) PK/PD model.
a string with a directory where to store the shiny
app, by default is "shinyExample". The directory
appDir will be created if it does not exist.
logical specifying whether to write messages as the
shiny app is generated. Defaults to TRUE.
model name compiled and list of parameters sent to rxSolve().
List of statevars passed to to the write.template.ui() function. This usually isn't called directly.
A PK/PD model is defined using rxode2(), and
a set of parameters and initial values are defined. Then
the appropriate R scripts for the shiny's user interface ui.R
and the server logic server.R are created in the
directory appDir.
The function evaluates the following PK/PD model by default:
C2 = centr/V2;
C3 = peri/V3;
d/dt(depot) =-KA*depot;
d/dt(centr) = 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;This can be changed by the ODE.config parameter.
To launch the shiny app, simply issue the runApp(appDir)
R command.
None, these functions are used for their side effects.
These functions create a simple, but working example of a
dosing regimen simulation web application. Users may want to
modify the code to experiment creating shiny applications for
their specific rxode2 models.
rxode2(),eventTable(), and the package shiny (https://shiny.posit.co).
# \donttest{
# remove myapp when the example is complete
on.exit(unlink("myapp", recursive = TRUE, force = TRUE))
# create the shiny app example (template)
genShinyApp.template(appDir = "myapp")
#>
#> Generating an example (template) for a dosing regimen shiny app
#>
#> Using the following PK/PD model:
#> C2 = centr/V2;
#> C3 = peri/V3;
#> d/dt(depot) =-KA*depot;
#> d/dt(centr) = 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;
#>
#> Translating the PK/PD ODE model into C, compiling, etc.
#>
#>
#>
#> using C compiler: 'gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0'
#>
#> Parameters and their values:
#> KA CL V2 Q V3 Kin Kout EC50
#> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000
#>
#> Initial values in each compartment:
#> depot centr pari eff
#> 0 0 0 1
#>
#> Warning: 2 arguments not used by format '
#> #
#> # Dosing regimen template generated by rxode2::genShinyApp.template()
#> #
#>
#> debug = TRUE
#> #wd = sprintf("%%s/../", getwd())
#> #setwd(wd)
#>
#> # Server inputs: Dose, dosing regimen, dosing frequency,
#> # dosing cycle definition, number of dosing cycles
#>
#> library(shiny)
#> library(rxode2)
#>
#> # read objects from "rx_shiny_data.rda" in the AppDir folder,
#> # objects include, mod1, params, inits, method, atol, rtol.]
#>
#> load("./rx_shiny_data.rda")
#> if (!rxDynLoad(mod1)) mod1 <- rxode2(mod1, modName="mod1")
#> # Define server logic
#> shinyServer(function(input, output) {
#>
#> get.cp <- reactive({
#> ds <- input$Dose
#> reg <- switch(input$regimen, "QD"=1, "BID"=2)
#> cyc <- switch(input$cycle,
#> "continous"=c(7,0),
#> "1wkon 1wkoff"=c(7,7),
#> "2wkon 1wkoff"=c(14,7),
#> "3wkon 1wkoff"=c(21,7)
#> )
#> cyc <- [... truncated]
#> Shiny files (ui.R, server.R) plus R data saved.
#>
#> To launch the Shiny app, type the following two R commands:
#>
#> library(shiny)
#> runApp("myapp")
#>
# run the shiny app
if (requireNamespace("shiny", quietly=TRUE)) {
library(shiny)
# runApp("myapp") # Won't launch in environments without browsers
}
# }