Tumor growth inhibition model
Prediction intervals
[LONGITUDINAL] input={K, KDE, KPQ, KQPP, LAMBDAP, GAMMA, DELTAQP} PK: depot(target=C) EQUATION: PT_0=5 Q_0 = 40 PSTAR = PT+Q+QP ddt_C = -KDE*C ddt_PT = LAMBDAP*PT*(1-PSTAR/K) + KQPP*QP - KPQ*PT - GAMMA*KDE*PT*C ddt_Q = KPQ*PT - GAMMA*KDE*Q*C ddt_QP = GAMMA*KDE*Q*C - KQPP*QP - DELTAQP*QP ;---------------------------------------------------- [INDIVIDUAL] input={K_pop,omega_K,KDE_pop,omega_KDE,KPQ_pop,omega_KPQ,KQPP_pop,omega_KQPP, LAMBDAP_pop,omega_LAMBDAP,GAMMA_pop,omega_GAMMA,DELTAQP_pop,omega_DELTAQP} DEFINITION: K = {distribution=lognormal, prediction=K_pop, sd=omega_K} KDE = {distribution=lognormal, prediction=KDE_pop, sd=omega_KDE} KPQ = {distribution=lognormal, prediction=KPQ_pop, sd=omega_KPQ} KQPP = {distribution=lognormal, prediction=KQPP_pop, sd=omega_KQPP} LAMBDAP = {distribution=lognormal, prediction=LAMBDAP_pop, sd=omega_LAMBDAP} GAMMA = {distribution=lognormal, prediction=GAMMA_pop, sd=omega_GAMMA} DELTAQP = {distribution=lognormal, prediction=DELTAQP_pop, sd=omega_DELTAQP}
select the output to display,
select the time range where the prediction is computed,
select the number of time points of the grid where the prediction is computed.
select the level of the prediction interval (between 5% and 95%),
select the number of bands which form this prediction interval
the number of simulations used for estimating this prediction distribution.
By default a 80% prediction interval decomposed in 8 bands is used. Then, the 10th, 20th, 30th, …, 70th and 90th percentiles are displayed.
shinyUI(fluidPage( titlePanel( list(HTML('<p style="color:#4C0B5F; font-size:24px">Tumor growth inhibition model</p> <p style="color:#4C0B5F; font-size:18px">Prediction intervals</p>' )), windowTitle="tumor growth III"), tabsetPanel( tabPanel("Plot", fluidRow( column(3, tabsetPanel( tabPanel("input", sliderInput("tfd", "time of first dose:", value=0, min=-50, max = 50, step=5), sliderInput("nd", "number of doses:", value=6, min=0, max = 20, step=1), sliderInput("ii", "interdose interval:", value = 15, min = 1, max = 20, step=1), sliderInput("amt", "amount:", value = 1, min = 0, max = 5, step=0.2), br() ), tabPanel("output", br(), selectInput("output","",c("PSTAR" = "PSTAR","PT" = "PT","Q" = "Q","QP" = "QP")), br(), sliderInput("range", "time range", min = -100, max = 500, value = c(-50,200), step=10), br(), sliderInput("ngp", "grid size", min = 10, max = 1000, value = 200, step=10), br() ), tabPanel("parameters", br(), sliderInput("GAMMA", "GAMMA_pop:", value = 1, min = 0, max = 4, step=0.1), sliderInput("K", "K_pop:", value = 100, min = 0, max = 200, step=5), sliderInput("KDE", "KDE_pop:", value = 0.3, min = 0, max = 1, step=0.05), sliderInput("LAMBDAP", "LAMBDAP_pop:", value = 0.12, min = 0, max = 0.5, step=0.025) , sliderInput("DELTAQP", "DELTAQP_pop:", value = 0.01, min = 0, max = 0.05, step=0.0025), sliderInput("KPQ", "KPQ_pop:", value = 0.025, min = 0, max = 0.1, step=0.005), sliderInput("KQPP", "KQPP_pop:", value = 0.004, min = 0, max = 0.01, step=0.0005), br() ), tabPanel("omegas", br(), sliderInput("oGAMMA", "omega_GAMMA:", value = 0.2, min = 0, max = 1, step=0.05), sliderInput("oK", "omega_K:", value = 0.2, min = 0, max = 1, step=0.05), sliderInput("oKDE", "omega_KDE:", value = 0.2, min = 0, max = 1, step=0.05), sliderInput("oLAMBDAP", "omega_LAMBDAP:", value = 0.2, min = 0, max = 1, step=0.05), sliderInput("oDELTAQP", "omega_DELTAQP:", value = 0.2, min = 0, max = 1, step=0.05), sliderInput("oKPQ", "omega_KPQ:", value = 0.2, min = 0, max = 1, step=0.05), sliderInput("oKQPP", "omega_KQPP:", value = 0.2, min = 0, max = 1, step=0.05), br() ), tabPanel("settings", sliderInput("level", "level (%)", min = 5, max = 95, value = 80, step=5), sliderInput("nband", "number of bands", min = 1, max = 20, value = 8, step=1), sliderInput("nbsim", "number of simulations", min = 200, max = 2000, value = 600, step=200), br() ) )), column(9, plotOutput("plot1", height="500px")) )), # tabPanel("Legend", plotOutput("plot2")), tabPanel("Table", tableOutput("table")), tabPanel("Mlxtran", pre(includeText("tgi3_model.txt"))), tabPanel("ReadMe", withMathJax(), includeMarkdown("ReadMe.Rmd")), tabPanel("ui.R", pre(includeText("ui.R"))), tabPanel("server.R", pre(includeText("server.R"))) ) ))
source("../../initMlxR.R") shinyServer(function(input, output) { r <- reactive({ param.value=c(input$K,input$KDE,input$KPQ,input$KQPP,input$LAMBDAP,input$GAMMA,input$DELTAQP, input$oK,input$oKDE,input$oKPQ,input$oKQPP,input$oLAMBDAP,input$oGAMMA,input$oDELTAQP) t.value=seq(input$range[1],input$range[2],length.out=input$ngp) t1=0 t2=input$ii*(input$nd-1)+t1 if (t2>=t1){ t.dose=seq(t1,t2,by=input$ii) adm <- list(time=t.dose, amount=input$amt) }else{ adm <- list(time=t1, amount=0) } f <- list(name=c('PSTAR','PT','Q','QP'),time=t.value) p <- list(name=c('K_pop','KDE_pop','KPQ_pop','KQPP_pop','LAMBDAP_pop','GAMMA_pop','DELTAQP_pop', 'omega_K','omega_KDE','omega_KPQ','omega_KQPP','omega_LAMBDAP','omega_GAMMA','omega_DELTAQP'), value=param.value) g <- list(size=input$nbsim,level='individual') res <- simulx( model = 'tgi3_model.txt', treatment = adm, parameter = p, group = g, output = f) ro <- res[[input$output]] }) output$plot1 <- renderPlot({ withProgress(message = 'Creating plot', detail='Wait...', value = 0.1, expr={ r=r() # par(mar=c(5,4,0,2)) qr <- prctilemlx(r,band=list(level=input$level,number=input$nband)) print(qr) # par(mar=c(5,4,2,2)) }) }) # output$plot2 <- renderPlot({ # r=r() # rq <- prctilemlx(r,list(level=input$level,number=input$nband),plot=FALSE) # q <- rq$q*100 # nq <- length(q) # par(mgp=c(4,1,0),mai=c(1,1,1,0)) # plot(c(1,2),c(50,50),type="l",col=hsv(.8,1,.6),lwd=2, # xlim=c(1,2), ylim=c(0,100), xlab="", ylab="percentiles (%)", xaxt="n" , yaxt="n" ) # axis(2, at=round(q,1), las=2) # for (j in 1:(nq-1)) # polygon(c(1,2,2,1),c(q[j],q[j],q[j+1],q[j+1]),col=rq$color[j],border=NA) # }) output$table <- renderTable({ r=r() rq <- prctilemlx(r,list(level=input$level,number=input$nband),plot=FALSE) y=rq$y }) })