-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.r
executable file
·123 lines (105 loc) · 4.03 KB
/
server.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
library(ggplot2)
# Source scripts outside of 'shinyServer'.
source("./utils.R")
source("./generateData.R")
source("./metaManagement.R")
source("./createTreatments.R")
source("./initialChar.R")
source("./operators.R")
source("./parseCharInput.R")
source("./validNames.R")
source("./createCovariates.R")
source("./allocateTreatments.R")
source("./createParameters.R")
source("./ectdStop.R")
source("./createNormalParameters.R")
source("./parseCovMatrix.R")
source("./checkSymmetricPDMatrix.R")
# Added separately.
source("./mvrnorm.R")
source("./createResponse.R")
source("./createResponseVariable.R")
source("./addResidualError.R")
source("./empty_plot.R")
# 'shinyServer' is executed by Shiny the first time when 'runApp' is called.
# Then shinyServer gives the unnamed 'function' to Shiny.
shinyServer(
# -----------------------------------------------------------------
# [USER_SPECIFIC_OBJECTS] are defined in the unnamed function but
# outside of 'render*'-calls.
# -----------------------------------------------------------------
# 'function' is the first argument to 'shinyServer', saved until
# a new user arrives. This function is run everytime a user visits
# the app -> builds a distinct set of reactive values for each user.
function(input, output) {
v <- reactiveValues(data=NULL)
observeEvent(input$run_simulation, {
# Reactive sources.
n <- input$n_patients
e0 <- input$e0
ed50 <- input$ed50
emax <- input$emax
gen_par_mean <- c(e0, ed50, emax)
gen_par_vcov <- c(0.5, 1.0, 1.0)
respEqn <- "E0+((DOSE*EMAX)/(DOSE+ED50))"
resp_vcov <- 2
interim_subj <- ".3, .7"
# Dosing.
d1 <- input$d1
d2 <- input$d2
d3 <- input$d3
d4 <- input$d4
d5 <- input$d5
treat_doses <- c(d1, d2, d3, d4, d5)
v$o <- generateData(replicateN=1, subjects=n, treatDoses=treat_doses,
genParNames="E0,ED50,EMAX", genParMean=gen_par_mean,
genParVCov=gen_par_vcov, respEqn=respEqn,
respVCov=resp_vcov, interimSubj=interim_subj)
v$densities <- getDensities(v$o)
#v$boxplot <- getBoxplots(v$o)
})
# Reactive endpoints, re-run every time the user changes a widget.
output$pwd <- renderText({
output <- paste(getwd(), dir())
print(output)
})
output$test <- renderText({
v$test
})
output$densities <- renderPlot({
# At startup of the app, the value of the action button is zero.
if(input$run_simulation==0) {
empty_plot
# For every click of the action button, the value is increments by one.
} else {
v$densities
}
})
output$boxplot <- renderPlot({
v$boxplot
})
observeEvent(input$reset, {
v$densities <- empty_plot
# v$boxplot <- NULL
})
getDensities <- function(r=o) {
g <- ggplot(r, aes(RESP, fill=as.factor(DOSE))) +
geom_density(alpha=0.2) +
labs(title="Hill-Equation Dose-Response Model",
x="RESPONSE", y="DENSITY") +
theme(plot.title=element_text(size=rel(2)),
axis.text=element_text(size=rel(1.5)),
axis.title=element_text(size=rel(1.5)),
legend.position="top", legend.text=element_text(size=rel(2)),
legend.title=element_text(size=rel(2))) +
guides(fill=guide_legend(title="DOSE:"))
g
}
# getBoxplots <- function(r=o) {
# g <- ggplot(r, aes(as.factor(DOSE), y=RESP)) +
# geom_boxplot() +
# theme(legend.position="top", text=element_text(size=20))
# g
# }
}
)