Diff of /uieasyroc.R [000000] .. [81de4e]

Switch to unified view

a b/uieasyroc.R
1
shinyUI(pageWithSidebar(
2
3
    titlePanel("easyROC: a web-tool for ROC curve analysis (ver. 1.1)"),
4
  
5
    sidebarPanel(
6
    # Sol panelde nelerin yer alacağı bu bölümde belirleniyor.
7
    # Tab panellerden veya sol panel içindeki çeşitli radyo butonlar
8
    # checkbox'lar gibi seçimlerden sonra panelde nelerin değişeceği de
9
    # ayrıca bir conditionalPanel() bloğu ile burada tanımlanabiliyor.
10
    
11
        conditionalPanel(condition="input.tabs1=='Introduction'",
12
            HTML('<p><img src="multi.png" width=400 height=400></p>'),
13
            tags$head(includeScript("google-analytics.js"))
14
15
        ),
16
17
        conditionalPanel(condition="input.tabs1=='Data upload'",
18
            h4("Input data"),
19
            #radioButtons("dataInput", "", list("Load example data"=1, "Upload a file"=2, "Paste your data"=3), selected=1),
20
            radioButtons("dataInput", "", list("Load example data"=1, "Upload a file"=2), selected=1),
21
            
22
            selectizeInput("statusVar", "Name of the status variable", choices = NULL, multiple = FALSE),
23
            textInput("valueStatus", "Value of the status:", ""),
24
            HTML('<br>'),
25
            
26
            conditionalPanel(condition="input.dataInput=='1'",
27
                h5("Load example data:"),
28
                radioButtons("sampleData", "", list("Mayo data (n=312, p=4)"=1, "PBC data set (n=418, p=20)"=2), selected=1),
29
                HTML('<p>n: number of observations</p>'),
30
                HTML('<p>p: number of variables</p>')
31
            ),
32
33
            conditionalPanel(condition="input.dataInput=='2'",
34
                h5("Upload a delimited text file (max. 10MB): "),
35
                #HTML('<i class="fa fa-beer fa-lg"></i>'),
36
                fileInput("upload", "", multiple = FALSE),
37
                radioButtons("fileSepDF", "Delimiter:", list("Comma"=1, "Tab"=2, "Semicolon"=3, "Space"=4),selected=2),
38
                
39
                conditionalPanel(condition="input.fileSepDF!='1'",
40
                    checkboxInput(inputId = "decimal", label = "Use comma as decimal", value = FALSE)
41
                ),
42
        
43
                HTML('<br>'),
44
                HTML('<p>You can upload your data as separated by comma, tab, semicolon or space.</p>'),
45
                HTML('<p><b>Note</b>: First row must be header.</p>')
46
            ),
47
            
48
            conditionalPanel(condition="input.dataInput=='3'",
49
                h5("Paste or enter your data below:"),
50
                tags$textarea(id="myData", rows=10, cols=5, ""),
51
                actionButton('clearText_button','Clear data'),
52
                HTML('<br>'),
53
                HTML('<br>'),
54
55
                radioButtons("fileSepP", "Separator:", list("Comma"=1,"Tab"=2,"Semicolon"=3), selected=2),
56
                HTML('<p>You can paste or manually enter your data as separated by comma, tab or semicolon.</p>'),
57
                HTML('<p>Note: First row must be header.</p>')
58
            )
59
        ),
60
        
61
        conditionalPanel(condition="input.tabs1=='ROC curve'",
62
            
63
            selectizeInput("markerInput", "Select markers (*)", choices = NULL, multiple = TRUE),
64
            checkboxInput("lowhigh", "Higher values indicate disease", TRUE),
65
            
66
            HTML('<br>'),
67
            
68
            conditionalPanel(condition = "input.navbarROCcurve == 'Multiple Comparisons'",
69
                selectInput(inputId = "MultipleCompMethod", label = "Multiple Comparison Method", selected = "bonferroni",
70
                            choices = c("Bonferroni" = "bonferroni", "False discovery rate" = "fdr", "None" = "none")
71
                            ),
72
                HTML('<br>')
73
            ),
74
75
76
            helpText("(*) Multiple markers are allowed."),
77
            HTML('<br>'),
78
79
80
            checkboxInput(inputId = "advanced", label = "Advanced options", value = FALSE),
81
            
82
            conditionalPanel(condition = "input.advanced",
83
                radioButtons(inputId = "StdErr", label = "1. Select a method for SE estimation", 
84
                             choices = list("Mann-Whitney"="MW", "DeLong(1988)[+]"="DeLong", "Under Null Hyp."="Null", "Binomial"="Binomial"), selected = "DeLong"),
85
                             
86
                radioButtons(inputId = "ConfInt", label = "2. Select a method for Conf. Interval", 
87
                             choices = list("Mann-Whitney"="MW", "DeLong(1988)[+]"="DeLong", "Under Null Hyp."="Null", "Binomial Exact"="Exact"), selected = "DeLong"),
88
                numericInput(inputId = "alpha", label = "Type I error", value = 0.05, min = 0, max = 1, step = 0.01),
89
                HTML('<br>'),
90
                HTML('<br>'),
91
                helpText("[+]: Default options."),
92
                HTML('<br>')
93
            ),
94
            
95
            checkboxInput(inputId = "ROCplotOpts", label = "Plot options", value = FALSE),
96
97
98
            
99
            conditionalPanel(condition = "input.ROCplotOpts",
100
                fluidRow(column(5,sliderInput("myheight", "Plot height:", value=400, min=200, max=1200)),
101
                         column(2),
102
                         column(5,sliderInput("mywidth", "Plot width:", value=400, min=200, max=1200 ))
103
                ),
104
                
105
                HTML('<br>'),
106
                
107
                fluidRow(
108
                    column(10, selectizeInput("fontfamilyRC", "Font family", 
109
                                              choices = c("Times New Roman" = "serif", "Arial" = "sans", 
110
                                                          "Corier New" = "mono"), selected = "sans"))
111
                ),
112
                
113
                HTML('<br>'),
114
                
115
                selectizeInput("subGrpsRC", "", choices = c("Edit x-axis" = "xAxis", "Edit y-axis" = "yAxis",
116
                                                            "Other options" = "others"), selected = "xAxis"),
117
                
118
                conditionalPanel(condition = "input.subGrpsRC == 'others'",
119
                                 fluidRow(
120
                                     column(5, textInput("mainRC", "Graph title", "ROC Curve")),
121
                                     column(1),
122
                                     column(5, selectizeInput("font.mainRC", "Title font", choices = c("Regular" = "1", "Bold" = "2", 
123
                                                                                                       "Italic" = "3", "Bold Italic" = "4"), 
124
                                                              selected = "2"))
125
                                 ),
126
                                 
127
                                 fluidRow(
128
                                     column(5, textInput("col.mainRC", "Title color", "black")),
129
                                     column(1),
130
                                     column(5, numericInput("cex.mainRC", "Title size", min=0.1, max=5, value = 1.2, step = 0.1))
131
                                 ),
132
                                 
133
                                 fluidRow(
134
                                     column(5, textInput("ROCcolRC", "ROC line color", "black,red")),
135
                                     column(1),
136
                                     column(5, selectizeInput("ROCltyRC", "ROC line type", 
137
                                                              choices = c("\U2500\U2500\U2500\U2500\U2500\U2500\U2500" = "1",
138
                                                                          "\U2574 \U2574 \U2574 \U2574 \U2574 \U2574" = "2", 
139
                                                                          "\U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7" = "3",
140
                                                                          "\U2574 \U00B7 \U2574 \U00B7 \U2574 \U00B7 \U2574" = "4",
141
                                                                          "\U2500 \U2500 \U2500 \U2500 \U2500" = "5",
142
                                                                          "\U2500 \U2574 \U2500 \U2574 \U2500 \U2574" = "6"),
143
                                                              selected = "1"))
144
                                 ),
145
                                 
146
                                 textInput(inputId = "legend.namesRC", label = "Legend names", value = "")
147
                ),
148
                
149
                conditionalPanel(condition = "input.subGrpsRC == 'xAxis'",
150
                                 h5('X-axis options:'),
151
                                 
152
                                 ## X axis label options
153
                                 fluidRow(
154
                                     column(5, textInput("xlabRC", "Axis label", "1-Specificity")),
155
                                     column(1),
156
                                     column(5, selectizeInput("xfont.labRC", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
157
                                                                                                       "Italic" = "3", "Bold Italic" = "4"), 
158
                                                              selected = "1"))    
159
                                 ),
160
                                 
161
                                 fluidRow(
162
                                     column(5, textInput("xcol.labRC", "Label color", "black")),
163
                                     column(1),
164
                                     column(5, numericInput("xcex.labRC", "Label size", min=0.1, max=5, value = 1, step = 0.1))
165
                                 ),
166
                                 
167
                                 ## X axis annotation options
168
                                 fluidRow(
169
                                     column(5, textInput("xcol.axisRC", "Annotation color", "black")),
170
                                     column(1),
171
                                     column(5, numericInput("xcex.axisRC", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
172
                                 )
173
                                 
174
                                 #fluidRow(
175
                                 #  column(5, textInput("xcol11", "Axis color", "black")),
176
                                 #  column(1),
177
                                 #  column(5, textInput("xcol.ticks11", "Tickmarks color", "black"))
178
                                 #),
179
                ),
180
                
181
                conditionalPanel(condition = "input.subGrpsRC == 'yAxis'",
182
                                 h5('Y-axis options:'),
183
                                 
184
                                 ## Y axis label options
185
                                 fluidRow(
186
                                     column(5, textInput("ylabRC", "Axis label", "Sensitivity")),
187
                                     column(1),
188
                                     column(5, selectizeInput("yfont.labRC", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
189
                                                                                                       "Italic" = "3", "Bold Italic" = "4"), 
190
                                                              selected = "1"))  
191
                                 ),
192
                                 
193
                                 fluidRow(
194
                                     column(5, textInput("ycol.labRC", "Label color", "black")),
195
                                     column(1),
196
                                     column(5, numericInput("ycex.labRC", "Label size", min=0.1, max=5, value = 1, step = 0.1))
197
                                 ),
198
                                 
199
                                 ## Y axis annotation options
200
                                 fluidRow(
201
                                     column(5, textInput("ycol.axisRC", "Annotation color", "black")),
202
                                     column(1),
203
                                     column(5, numericInput("ycex.axisRC", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
204
                    )
205
                )
206
207
            ),
208
209
            conditionalPanel(condition = "input.navbarROCcurve == 'Partial AUC'",
210
211
                checkboxInput(inputId = "partialAUC", label = "Partial AUC", value = TRUE),
212
213
                    conditionalPanel(condition = "input.partialAUC",
214
215
                        fluidRow(
216
                            column(5, numericInput("pointA", "Value 1", min=0, max=1, value = 0.5, step = 0.1)),
217
                            column(1),
218
                            column(5, numericInput("pointB", "Value 2", min=0, max=1, value = 1, step = 0.1))
219
                        ),
220
221
                    selectizeInput("sensSpec", "Select a measure", choices = c("Sensitivity", "Specificity"), multiple = FALSE, selected = "Sensitivity")
222
223
                )
224
            )
225
226
        ),
227
228
229
230
231
232
        conditionalPanel(condition="input.tabs1=='Cut points'",
233
            h5("1. Select a marker"),
234
            selectizeInput("cutoffMarker", "", choices = NULL, multiple = FALSE),
235
            HTML('<br>'),
236
            h5("2. Select a method for optimal cut-off (*)"),
237
            selectizeInput("cutOffMethods", "", choices = c("Youden", "CB", "MCT", "MinValueSp", "MinValueSe", "ValueSe", "ValueSp", "MinValueSpSe", 
238
                                                            "MaxSp", "MaxSe", "MaxSpSe", "MaxProdSpSe", "ROC01", "SpEqualSe", "MaxEfficiency", 
239
                                                            "Minimax", "MaxDOR", "MaxKappa", "MinValueNPV", "MinValuePPV", "ValueNPV", "ValuePPV", 
240
                                                            "MinValueNPVPPV", "PROC01", "NPVEqualPPV", "MaxNPVPPV", "MaxSumNPVPPV", "MaxProdNPVPPV", 
241
                                                            "ValueDLR.Negative", "ValueDLR.Positive", "MinPvalue", "ObservedPrev", "MeanPrev", 
242
                                                            "PrevalenceMatching"), multiple = FALSE),
243
            #HTML('<br>'),
244
245
            conditionalPanel(condition="input.cutOffMethods=='Youden'",
246
                HTML('<p><b>Youden:</b> Youden index</p>'),
247
                HTML('<br>'),
248
                numericInput(inputId = "CFP_Youden", label = "Cost of a False Positive", value = 1, min = 0, max = 9999999),
249
                numericInput(inputId = "CFN_Youden", label = "Cost of a False Negative", value = 1, min = 0, max = 9999999),
250
                checkboxInput(inputId = "generalized_Youden", label = "Generalized Youden Index", value = FALSE),
251
                checkboxInput(inputId = "costs_benefits_Youden", label = "Cost-benefit based Youden Index", value = FALSE)
252
            ),
253
254
            conditionalPanel(condition="input.cutOffMethods=='CB'",
255
                HTML('<p><b>CB:</b> cost-benefit method</p>'),
256
                HTML('<br>'),
257
                numericInput(inputId = "costs_ratio", label = "Cost ratio", value = 1, min = 0, max = 99999999)
258
            ),
259
260
            conditionalPanel(condition="input.cutOffMethods=='MCT'",
261
                HTML('<p><b>MCT:</b> minimizes misclassification cost term</p>'),
262
                HTML('<br>'),
263
                numericInput(inputId = "CFP_MCT", label = "Cost of a False Positive", value = 1, min = 0, max = 9999999),
264
                numericInput(inputId = "CFN_MCT", label = "Cost of a False Negative", value = 1, min = 0, max = 9999999)
265
            ),
266
267
            conditionalPanel(condition="input.cutOffMethods=='MinValueSp'",
268
                HTML('<p><b>MinValueSp:</b> a minimum value set for specificity</p>'),
269
                HTML('<br>'),
270
                numericInput(inputId = "valueSp_MVSp", label = "Value of Specificity", value = 0.85, min = 0, max = 1, step = 0.01)
271
            ),
272
273
            conditionalPanel(condition="input.cutOffMethods=='MinValueSe'",
274
                HTML('<p><b>MinValueSe:</b> a minimum value set for sensitivity</p>'),
275
                HTML('<br>'),
276
                numericInput(inputId = "valueSe_MVSe", label = "Value of Sensitivity", value = 0.85, min = 0, max = 1, step = 0.01)
277
            ),
278
279
            conditionalPanel(condition="input.cutOffMethods=='ValueSe'",
280
                HTML('<p><b>ValueSe:</b> a value set for sensitivity</p>'),
281
                HTML('<br>'),
282
                numericInput(inputId = "valueSe_VSe", label = "Value of Sensitivity", value = 0.85, min = 0, max = 1, step = 0.01)
283
            ),
284
            
285
            conditionalPanel(condition="input.cutOffMethods=='ValueSp'",
286
                HTML('<p><b>ValueSp:</b> a value set for specificity</p>'),
287
                HTML('<br>'),
288
                numericInput(inputId = "valueSp_VSp", label = "Value of Specificity", value = 0.85, min = 0, max = 1, step = 0.01)
289
            ),
290
291
            conditionalPanel(condition="input.cutOffMethods=='MinValueSpSe'",
292
                HTML('<p><b>MinValueSpSe:</b> a minimum value set for specificity and sensitivity</p>'),
293
                HTML('<br>'),
294
                numericInput(inputId = "valueSe_MVSpSe", label = "Value of Sensitivity", value = 0.85, min = 0, max = 1, step = 0.01),
295
                numericInput(inputId = "valueSp_MVSpSe", label = "Value of Specificity", value = 0.85, min = 0, max = 1, step = 0.01),
296
                checkboxInput(inputId = "maxSp_MVSpSe", label = "Maximum specificity", value = TRUE)
297
            ),
298
299
            conditionalPanel(condition="input.cutOffMethods=='MaxSp'",
300
                HTML('<p><b>MaxSp:</b> maximizes specificity</p>')
301
            ),
302
303
            conditionalPanel(condition="input.cutOffMethods=='MaxSe'",
304
                HTML('<p><b>MaxSe:</b> maximizes sensitivity</p>')
305
            ),
306
307
            conditionalPanel(condition="input.cutOffMethods=='MaxSpSe'",
308
                HTML('<p><b>MaxSpSe:</b> maximizes sensitivity and specificity simultaneously</p>')
309
            ),
310
311
            conditionalPanel(condition="input.cutOffMethods=='MaxProdSpSe'",
312
                HTML('<p><b>MaxProdSpSe:</b> maximizes the product of sensitivity and specificity or accuracy area</p>')
313
            ),
314
315
            conditionalPanel(condition="input.cutOffMethods=='ROC01'",
316
                HTML('<p><b>ROC01:</b> minimizes distance between ROC plot and point (0,1)</p>')
317
            ),
318
319
            conditionalPanel(condition="input.cutOffMethods=='SpEqualSe'",
320
                HTML('<p><b>SpEqualSe:</b> sensitivity = specificity</p>')
321
            ),
322
323
            conditionalPanel(condition="input.cutOffMethods=='MaxEfficiency'",
324
                HTML('<p><b>MaxEfficiency:</b> maximizes efficiency or accuracy, similar to minimize error rate </p>'),
325
                HTML('<br>'),
326
                checkboxInput(inputId = "costs_benefits_Efficiency", label = "Cost-benefit based Efficiency", value = FALSE),
327
                checkboxInput(inputId = "standard_deviation_accuracy", label = "Standart deviation accuracy", value = FALSE)
328
            ),
329
330
            conditionalPanel(condition="input.cutOffMethods=='Minimax'",
331
                HTML('<p><b>Minimax:</b> minimizes the most frequent error</p>')
332
            ),
333
334
            conditionalPanel(condition="input.cutOffMethods=='MaxDOR'",
335
                HTML('<p><b>MaxDOR:</b> maximizes diagnostic odds ratio</p>')
336
            ),
337
338
            conditionalPanel(condition="input.cutOffMethods=='MaxKappa'",
339
                HTML('<p><b>MaxKappa:</b> maximizes kappa index</p>'),
340
                HTML('<br>'),
341
                numericInput(inputId = "CFP_MK", label = "Cost of a False Positive", value = 1, min = 0, max = 9999999),
342
                numericInput(inputId = "CFN_MK", label = "Cost of a False Negative", value = 1, min = 0, max = 9999999),
343
                checkboxInput(inputId = "weighted_Kappa", label = "Weighted Kappa", value = FALSE)
344
            ),
345
346
            conditionalPanel(condition="input.cutOffMethods=='MinValueNPV'",
347
                HTML('<p><b>MinValueNPV:</b> a minimum value set for negative predictive value</p>'),
348
                HTML('<br>'),
349
                numericInput(inputId = "valueNPV_MVNPV", label = "Value of NPV", value = 0.85, min = 0, max = 1, step = 0.01)
350
            ),
351
352
            conditionalPanel(condition="input.cutOffMethods=='MinValuePPV'",
353
                HTML('<p><b>MinValuePPV:</b> a minimum value set for positive predictive value</p>'),
354
                HTML('<br>'),
355
                numericInput(inputId = "valuePPV_MVPPV", label = "Value of PPV", value = 0.85, min = 0, max = 1, step = 0.01)
356
            ),
357
358
            conditionalPanel(condition="input.cutOffMethods=='ValueNPV'",
359
                HTML('<p><b>ValueNPV:</b> a value set for negative predictive value</p>'),
360
                HTML('<br>'),
361
                numericInput(inputId = "valueNPV_VNPV", label = "Value of NPV", value = 0.85, min = 0, max = 1, step = 0.01)
362
            ),
363
364
            conditionalPanel(condition="input.cutOffMethods=='ValuePPV'",
365
                HTML('<p><b>ValuePPV:</b> a value set for positive predictive value</p>'),
366
                HTML('<br>'),
367
                numericInput(inputId = "valuePPV_VPPV", label = "Value of PPV", value = 0.85, min = 0, max = 1, step = 0.01)
368
            ),
369
370
            conditionalPanel(condition="input.cutOffMethods=='MinValueNPVPPV'",
371
                HTML('<p><b>MinValueNPVPPV:</b> a minimum value set for predictive values</p>'),
372
                HTML('<br>'),
373
                numericInput(inputId = "valuePPV_MVNPVPPV", label = "Value of PPV", value = 0.85, min = 0, max = 1, step = 0.01),
374
                numericInput(inputId = "valueNPV_MVNPVPPV", label = "Value of NPV", value = 0.85, min = 0, max = 1, step = 0.01),
375
                checkboxInput(inputId = "maxNPV_MVNPVPPV", label = "Maximum NPV", value = TRUE)
376
            ),
377
378
            conditionalPanel(condition="input.cutOffMethods=='PROC01'",
379
                HTML('<p><b>PROC01:</b> minimizes distance between PROC plot and point (0,1)</p>')
380
            ),
381
382
            conditionalPanel(condition="input.cutOffMethods=='NPVEqualPPV'",
383
                HTML('<p><b>NPVEqualPPV:</b> negative predictive value = positive predictive value</p>')
384
            ),
385
386
            conditionalPanel(condition="input.cutOffMethods=='MaxNPVPPV'",
387
                HTML('<p><b>MaxNPVPPV:</b> maximizes positive predictive value and negative predictive value simultaneously</p>')
388
            ),
389
390
            conditionalPanel(condition="input.cutOffMethods=='MaxSumNPVPPV'",
391
                HTML('<p><b>MaxSumNPVPPV:</b> maximizes the sum of the predictive values</p>')
392
            ),
393
394
            conditionalPanel(condition="input.cutOffMethods=='MaxProdNPVPPV'",
395
                HTML('<p><b>MaxProdNPVPPV:</b> maximizes the product of predictive values</p>')
396
            ),
397
398
            conditionalPanel(condition="input.cutOffMethods=='ValueDLR.Negative'",
399
                HTML('<p><b>ValueDLR.Negative:</b> a value set for negative diagnostic likelihood ratio</p>'),
400
                HTML('<br>'),
401
                numericInput(inputId = "valueDLR_Negative", label = "Value of Negative DLR", value = 0.5, min = 0, max = 999999)
402
            ),
403
404
            conditionalPanel(condition="input.cutOffMethods=='ValueDLR.Positive'",
405
                HTML('<p><b>ValueDLR.Positive:</b> a value set for positive diagnostic likelihood ratio</p>'),
406
                HTML('<br>'),
407
                numericInput(inputId = "valueDLR_Positive", label = "Value of Positive DLR", value = 2, min = 0, max = 999999)
408
            ),
409
410
            conditionalPanel(condition="input.cutOffMethods=='MinPvalue'",
411
                HTML('<p><b>MinPvalue:</b> minimizes p-value associated with the statistical Chi-squared test which measures the association between the marker and the binary result obtained on using the cutpoint</p>'),
412
                HTML('<br>'),
413
                selectInput(inputId = "adjusted_pvalue", label = "Adjustment method for p-value", 
414
                            choices = c("Miller and Siegmund" = "PADJMS", "Altman_5" = "PALT5", "Altman_10" = "PALT10"),
415
                            multiple = FALSE, selected = "PADJMS")
416
            ),
417
418
            conditionalPanel(condition="input.cutOffMethods=='ObservedPrev'",
419
                HTML('<p><b>ObservedPrev:</b> the closest value to observed prevalence</p>')
420
            ),
421
422
            conditionalPanel(condition="input.cutOffMethods=='MeanPrev'",
423
                HTML('<p><b>MeanPrev:</b> the closest value to the mean of the diagnostic test values</p>')
424
            ),
425
426
            conditionalPanel(condition="input.cutOffMethods=='PrevalenceMatching'",
427
                HTML('<p><b>PrevalenceMatching:</b> the value for which predicted prevalence is practically equal to observed prevalence</p>')
428
            ),
429
430
            HTML('<br>'),
431
            HTML('<p>(*) See <a href="http://cran.r-project.org/web/packages/OptimalCutpoints/index.html" target="_blank"> OptimalCutpoints</a> package from R</p>'),
432
            HTML('<br>'),
433
            
434
            checkboxInput("showPlots", "Include plots.", FALSE),
435
            
436
            conditionalPanel(condition="input.showPlots",
437
                fluidRow(
438
                    column(1),
439
                    column(5, sliderInput("myheightCutoff", "Plot height:", value=600, min=400, max=1400)),
440
                    column(1),
441
                    column(5, sliderInput("mywidthCutoff", "Plot width:", value=800, min=400, max=1400 ))
442
                ),
443
                
444
                HTML('<br>'),
445
                checkboxInput("cutoffPlotsOpts", "More plot options (See Manual)", FALSE),
446
                HTML('<br>')
447
            ),
448
            
449
            conditionalPanel(condition="input.cutoffPlotsOpts",
450
                fluidRow(
451
                    column(10, selectizeInput("fontfamily", "Font family", 
452
                                            choices = c("Times New Roman" = "serif", "Arial" = "sans", 
453
                                                        "Corier New" = "mono"), selected = "sans"))
454
                ),
455
456
                radioButtons("selectedGraph", "", list("Top Left \U2003 \U2003" = 1, "Top Right \U2003 \U2003" = 2, 
457
                                                        "Bottom Left \U2002\U2008" = 3, "Bottom Right" = 4), selected=1),
458
                
459
                HTML('<br>'),
460
                
461
                selectizeInput("subGrps", "", choices = NULL, selected = NULL),
462
                
463
                ## First graph options (11)
464
                conditionalPanel(condition = "input.selectedGraph == '1'",
465
                    
466
                    conditionalPanel(condition = "input.subGrps == 'others'",
467
                        fluidRow(
468
                        column(5, textInput("main11", "Graph title", "ROC Curve")),
469
                        column(1),
470
                        column(5, selectizeInput("font.main11", "Title font", choices = c("Regular" = "1", "Bold" = "2", 
471
                                                                                        "Italic" = "3", "Bold Italic" = "4"), 
472
                                                selected = "2"))
473
                        ),
474
                    
475
                        fluidRow(
476
                            column(5, textInput("col.main11", "Title color", "black")),
477
                            column(1),
478
                            column(5, numericInput("cex.main11", "Title size", min=0.1, max=5, value = 1.2, step = 0.1))
479
                        ),
480
                    
481
                        fluidRow(
482
                            column(5, textInput("ROCcol11", "ROC line color", "black")),
483
                            column(1),
484
                            column(5, selectizeInput("ROClty11", "ROC line type", 
485
                                                    choices = c("\U2500\U2500\U2500\U2500\U2500\U2500\U2500" = "1",
486
                                                                "\U2574 \U2574 \U2574 \U2574 \U2574 \U2574" = "2", 
487
                                                                "\U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7" = "3",
488
                                                                "\U2574 \U00B7 \U2574 \U00B7 \U2574 \U00B7 \U2574" = "4",
489
                                                                "\U2500 \U2500 \U2500 \U2500 \U2500" = "5",
490
                                                                "\U2500 \U2574 \U2500 \U2574 \U2500 \U2574" = "6"),
491
                                                    selected = "1"))
492
                        )
493
                    ),
494
                    
495
                    conditionalPanel(condition = "input.subGrps == 'xAxis'",
496
                        h5('X-axis options:'),
497
                        
498
                        ## X axis label options
499
                        fluidRow(
500
                            column(5, textInput("xlab11", "Axis label", "1-Specificity")),
501
                            column(1),
502
                            column(5, selectizeInput("xfont.lab11", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
503
                                                                                            "Italic" = "3", "Bold Italic" = "4"), 
504
                                                    selected = "1"))    
505
                        ),
506
                        
507
                        fluidRow(
508
                            column(5, textInput("xcol.lab11", "Label color", "black")),
509
                            column(1),
510
                            column(5, numericInput("xcex.lab11", "Label size", min=0.1, max=5, value = 1, step = 0.1))
511
                        ),
512
                        
513
                        ## X axis annotation options
514
                        fluidRow(
515
                            column(5, textInput("xcol.axis11", "Annotation color", "black")),
516
                            column(1),
517
                            column(5, numericInput("xcex.axis11", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
518
                        )
519
                        
520
                        #fluidRow(
521
                        #   column(5, textInput("xcol11", "Axis color", "black")),
522
                        #   column(1),
523
                        #   column(5, textInput("xcol.ticks11", "Tickmarks color", "black"))
524
                        #),
525
                    ),
526
                    
527
                    conditionalPanel(condition = "input.subGrps == 'yAxis'",
528
                        h5('Y-axis options:'),
529
                        
530
                        ## Y axis label options
531
                        fluidRow(
532
                            column(5, textInput("ylab11", "Axis label", "Sensitivity")),
533
                            column(1),
534
                            column(5, selectizeInput("yfont.lab11", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
535
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
536
                                                    selected = "1"))    
537
                        ),
538
                        
539
                        fluidRow(
540
                            column(5, textInput("ycol.lab11", "Label color", "black")),
541
                            column(1),
542
                            column(5, numericInput("ycex.lab11", "Label size", min=0.1, max=5, value = 1, step = 0.1))
543
                        ),
544
                        
545
                        ## Y axis annotation options
546
                        fluidRow(
547
                            column(5, textInput("ycol.axis11", "Annotation color", "black")),
548
                            column(1),
549
                            column(5, numericInput("ycex.axis11", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
550
                        )
551
                    )   
552
                ),
553
                
554
                ## Second graph options (12)
555
                conditionalPanel(condition = "input.selectedGraph == '2'",
556
                    
557
                    conditionalPanel(condition = "input.subGrps == 'others'",
558
                        fluidRow(
559
                            column(5, textInput("main12", "Graph title", "Sens. & Spec. Curve")),
560
                            column(1),
561
                            column(5, selectizeInput("font.main12", "Title font", choices = c("Regular" = "1", "Bold" = "2", 
562
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
563
                                                    selected = "2"))
564
                        ),
565
                    
566
                        fluidRow(
567
                            column(5, textInput("col.main12", "Title color", "black")),
568
                            column(1),
569
                            column(5, numericInput("cex.main12", "Title size", min=0.1, max=5, value = 1.2, step = 0.1))
570
                        ),
571
                    
572
                        fluidRow(
573
                            column(5, textInput("specCol", "Spec. line color", "blue")),
574
                            column(1),
575
                            column(5, selectizeInput("specType", "Spec. line type", 
576
                                                    choices = c("\U2500\U2500\U2500\U2500\U2500\U2500\U2500" = "1",
577
                                                                "\U2574 \U2574 \U2574 \U2574 \U2574 \U2574" = "2", 
578
                                                                "\U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7" = "3",
579
                                                                "\U2574 \U00B7 \U2574 \U00B7 \U2574 \U00B7 \U2574" = "4",
580
                                                                "\U2500 \U2500 \U2500 \U2500 \U2500" = "5",
581
                                                                "\U2500 \U2574 \U2500 \U2574 \U2500 \U2574" = "6"),
582
                                                    selected = "1"))
583
                        ),
584
                        
585
                        fluidRow(
586
                            column(5, textInput("sensCol", "Sens. line color", "red")),
587
                            column(1),
588
                            column(5, selectizeInput("sensType", "Sens. line type", 
589
                                                    choices = c("\U2500\U2500\U2500\U2500\U2500\U2500\U2500" = "1",
590
                                                                "\U2574 \U2574 \U2574 \U2574 \U2574 \U2574" = "2", 
591
                                                                "\U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7" = "3",
592
                                                                "\U2574 \U00B7 \U2574 \U00B7 \U2574 \U00B7 \U2574" = "4",
593
                                                                "\U2500 \U2500 \U2500 \U2500 \U2500" = "5",
594
                                                                "\U2500 \U2574 \U2500 \U2574 \U2500 \U2574" = "6"),
595
                                                    selected = "1"))
596
                        )
597
                    ),
598
                    
599
                    conditionalPanel(condition = "input.subGrps == 'Legend'",
600
                        fluidRow(
601
                            column(5, selectizeInput("legendPos12", "Position", choices = c("Top right" = "topright", "Top left" = "topleft", "Bottom right" = "bottomright", "Bottom left" = "bottomleft", "xy coord." = "xy"),
602
                                                        selected = "topright")),
603
                            column(1),
604
                            column(2,
605
                                conditionalPanel(condition = "input.legendPos12 == 'xy'",
606
                                    numericInput("legendXpos12", "x", value = 0, step = 0.1)
607
                                )
608
                            ),
609
                            column(1),
610
                            column(2,
611
                                conditionalPanel(condition = "input.legendPos12 == 'xy'",
612
                                    numericInput("legendYpos12", "y", value = 0, step = 0.02)
613
                                )
614
                            )
615
                        ),
616
                        
617
                        fluidRow(
618
                            column(7, textInput("legendNames12", "Leg. labels (comma sep.)", "Sens.,Spec.")),
619
                            column(1),
620
                            column(3, numericInput("cex.legend12", "Leg. size", min = 0.5, max = 5, step = 0.1, value = 1))
621
                        ),
622
                        
623
                        fluidRow(
624
                            column(5, textInput("legendTitle12", "Title", "")),
625
                            column(1),
626
                            column(5, textInput("col.legendTitle12", "Title color", "black"))
627
                        ),
628
                        
629
                        checkboxInput("borderless12", label = "Remove borders.", value = FALSE)
630
                    ),
631
                    
632
                    conditionalPanel(condition = "input.subGrps == 'xAxis'",
633
                        h5('X-axis options:'),
634
                        
635
                        ## X axis label options
636
                        fluidRow(
637
                            column(5, textInput("xlab12", "Axis label", "Marker Name")),
638
                            column(1),
639
                            column(5, selectizeInput("xfont.lab12", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
640
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
641
                                                    selected = "1"))    
642
                        ),
643
                        
644
                        fluidRow(
645
                            column(5, textInput("xcol.lab12", "Label color", "black")),
646
                            column(1),
647
                            column(5, numericInput("xcex.lab12", "Label size", min=0.1, max=5, value = 1, step = 0.1))
648
                        ),
649
                        
650
                        ## X axis annotation options
651
                        fluidRow(
652
                            column(5, textInput("xcol.axis12", "Annotation color", "black")),
653
                            column(1),
654
                            column(5, numericInput("xcex.axis12", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
655
                        )
656
                    ),
657
                    
658
                    conditionalPanel(condition = "input.subGrps == 'yAxis'",
659
                        h5('Y-axis options:'),
660
                        
661
                        ## Y axis label options
662
                        fluidRow(
663
                            column(5, textInput("ylab12", "Axis label", "Value")),
664
                            column(1),
665
                            column(5, selectizeInput("yfont.lab12", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
666
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
667
                                                    selected = "1"))    
668
                        ),
669
                        
670
                        fluidRow(
671
                            column(5, textInput("ycol.lab12", "Label color", "black")),
672
                            column(1),
673
                            column(5, numericInput("ycex.lab12", "Label size", min=0.1, max=5, value = 1, step = 0.1))
674
                        ),
675
                        
676
                        ## Y axis annotation options
677
                        fluidRow(
678
                            column(5, textInput("ycol.axis12", "Annotation color", "black")),
679
                            column(1),
680
                            column(5, numericInput("ycex.axis12", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
681
                        )
682
                    )
683
                ),
684
                
685
                ## Third graph options (21)
686
                conditionalPanel(condition = "input.selectedGraph == '3'",
687
                    
688
                    conditionalPanel(condition = "input.subGrps == 'others'",
689
                        fluidRow(
690
                            column(5, textInput("main21", "Graph title", "Distribution Graph")),
691
                            column(1),
692
                            column(5, selectizeInput("font.main21", "Title font", choices = c("Regular" = "1", "Bold" = "2", 
693
                                                                                            "Italic" = "3", "Bold Italic" = "4"), 
694
                                                    selected = "2"))
695
                        ),
696
                    
697
                        fluidRow(
698
                            column(5, textInput("col.main21", "Title color", "black")),
699
                            column(1),
700
                            column(5, numericInput("cex.main21", "Title size", min=0.1, max=5, value = 1.2, step = 0.1))
701
                        ),
702
                    
703
                        fluidRow(
704
                            column(6, textInput("lineColD", "Line color (Diseased)", "red")),
705
                            column(1),
706
                            column(5, selectizeInput("lineTypeD", "Line type", 
707
                                                    choices = c("\U2500\U2500\U2500\U2500\U2500\U2500\U2500" = "1",
708
                                                                "\U2574 \U2574 \U2574 \U2574 \U2574 \U2574" = "2", 
709
                                                                "\U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7" = "3",
710
                                                                "\U2574 \U00B7 \U2574 \U00B7 \U2574 \U00B7 \U2574" = "4",
711
                                                                "\U2500 \U2500 \U2500 \U2500 \U2500" = "5",
712
                                                                "\U2500 \U2574 \U2500 \U2574 \U2500 \U2574" = "6"),
713
                                                    selected = "1"))
714
                        ),
715
                        
716
                        fluidRow(
717
                            column(6, textInput("lineColH", "Line color (Healthy)", "blue")),
718
                            column(1),
719
                            column(5, selectizeInput("lineTypeH", "Line type", 
720
                                                    choices = c("\U2500\U2500\U2500\U2500\U2500\U2500\U2500" = "1",
721
                                                                "\U2574 \U2574 \U2574 \U2574 \U2574 \U2574" = "2", 
722
                                                                "\U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7 \U00B7" = "3",
723
                                                                "\U2574 \U00B7 \U2574 \U00B7 \U2574 \U00B7 \U2574" = "4",
724
                                                                "\U2500 \U2500 \U2500 \U2500 \U2500" = "5",
725
                                                                "\U2500 \U2574 \U2500 \U2574 \U2500 \U2574" = "6"),
726
                                                    selected = "1"))
727
                        )
728
                    ),
729
                    
730
                    conditionalPanel(condition = "input.subGrps == 'Legend'",
731
                        fluidRow(
732
                            column(5, selectizeInput("legendPos21", "Position", choices = c("Top right" = "topright", "Top left" = "topleft", "Bottom right" = "bottomright", "Bottom left" = "bottomleft", "xy coord." = "xy"),
733
                                                        selected = "topright")),
734
                            column(1),
735
                            column(2,
736
                                conditionalPanel(condition = "input.legendPos21 == 'xy'",
737
                                    numericInput("legendXpos21", "x", value = 0, step = 0.1)
738
                                )
739
                            ),
740
                            column(1),
741
                            column(2,
742
                                conditionalPanel(condition = "input.legendPos21 == 'xy'",
743
                                    numericInput("legendYpos21", "y", value = 0, step = 0.1)
744
                                )
745
                            )
746
                        ),
747
                        
748
                        fluidRow(
749
                            column(7, textInput("legendNames21", "Leg. labels (comma sep.)", "Diseased,Healthy")),
750
                            column(1),
751
                            column(3, numericInput("cex.legend21", "Leg. Size", min = 0.5, max = 5, step = 0.1, value = 1))
752
                        ),
753
                        
754
                        fluidRow(
755
                            column(5, textInput("legendTitle21", "Title", "")),
756
                            column(1),
757
                            column(5, textInput("col.legendTitle21", "Title color", "black"))
758
                        ),
759
                        
760
                        checkboxInput("borderless21", label = "Remove borders.", value = FALSE)
761
                    ),
762
                    
763
                    conditionalPanel(condition = "input.subGrps == 'xAxis'",
764
                        h5('X-axis options:'),
765
                        
766
                        ## X axis label options
767
                        fluidRow(
768
                            column(5, textInput("xlab21", "Axis label", "Marker Name")),
769
                            column(1),
770
                            column(5, selectizeInput("xfont.lab21", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
771
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
772
                                                    selected = "1"))    
773
                        ),
774
                        
775
                        fluidRow(
776
                            column(5, textInput("xcol.lab21", "Label color", "black")),
777
                            column(1),
778
                            column(5, numericInput("xcex.lab21", "Label size", min=0.1, max=5, value = 1, step = 0.1))
779
                        ),
780
                        
781
                        ## X axis annotation options
782
                        fluidRow(
783
                            column(5, textInput("xcol.axis21", "Annotation color", "black")),
784
                            column(1),
785
                            column(5, numericInput("xcex.axis21", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
786
                        )
787
                    ),
788
                    
789
                    conditionalPanel(condition = "input.subGrps == 'yAxis'",
790
                        h5('Y-axis options:'),
791
                        
792
                        ## Y axis label options
793
                        fluidRow(
794
                            column(5, textInput("ylab21", "Axis label", "Density")),
795
                            column(1),
796
                            column(5, selectizeInput("yfont.lab21", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
797
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
798
                                                    selected = "1"))    
799
                        ),
800
                        
801
                        fluidRow(
802
                            column(5, textInput("ycol.lab21", "Label color", "black")),
803
                            column(1),
804
                            column(5, numericInput("ycex.lab21", "Label size", min=0.1, max=5, value = 1, step = 0.1))
805
                        ),
806
                        
807
                        ## Y axis annotation options
808
                        fluidRow(
809
                            column(5, textInput("ycol.axis21", "Annotation color", "black")),
810
                            column(1),
811
                            column(5, numericInput("ycex.axis21", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
812
                        )
813
                    )
814
                ),
815
                
816
                ## Fourth graph options (22)
817
                conditionalPanel(condition = "input.selectedGraph == '4'",
818
                    conditionalPanel(condition = "input.subGrps == 'others'",
819
                        fluidRow(
820
                            column(5, textInput("main22", "Graph title", "Distribution Graph")),
821
                            column(1),
822
                            column(5, selectizeInput("font.main22", "Title font", choices = c("Regular" = "1", "Bold" = "2", 
823
                                                                                            "Italic" = "3", "Bold Italic" = "4"), 
824
                                                    selected = "2"))
825
                        ),
826
                    
827
                        fluidRow(
828
                            column(5, textInput("col.main22", "Title color", "black")),
829
                            column(1),
830
                            column(5, numericInput("cex.main22", "Title size", min=0.1, max=5, value = 1.2, step = 0.1))
831
                        ),
832
                        
833
                        numericInput("jitterAmount", "Amount of jittering", min=0.01, max = 0.5, value = 0.05, step = 0.01),
834
                        
835
                        ## pch options for Healthy and Diseased subjects
836
                        fluidRow(
837
                            column(8, textInput("colPoints", "Point colors (comma sep.)", "black,black")),
838
                            column(1),
839
                            column(2, numericInput("pchPoints", "Type", min = 0, max = 25, step = 1, value = 1))
840
                        ),
841
                        
842
                        fluidRow(
843
                            column(3, numericInput("pchSize", "Point size", min = 0.1, max = 5, step = 0.1, value = 1)),
844
                            column(1),
845
                            column(7,
846
                                conditionalPanel(condition = "input.pchPoints > 20",
847
                                    textInput("pchFill", "Fill points with color" ,"white,white")
848
                                )
849
                            )
850
                        )
851
                    ),
852
                    
853
                    conditionalPanel(condition = "input.subGrps == 'xAxis'",
854
                        h5('X-axis options:'),
855
                        
856
                        ## X axis label options
857
                        fluidRow(
858
                            column(5, textInput("xlab22", "Axis label", "Disease Status")),
859
                            column(1),
860
                            column(5, selectizeInput("xfont.lab22", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
861
                                                                                            "Italic" = "3", "Bold Italic" = "4"), 
862
                                                    selected = "1"))    
863
                        ),
864
                        
865
                        fluidRow(
866
                            column(5, textInput("xcol.lab22", "Label color", "black")),
867
                            column(1),
868
                            column(5, numericInput("xcex.lab22", "Label size", min=0.1, max=5, value = 1, step = 0.1))
869
                        ),
870
                        
871
                        ## X axis annotation options
872
                        fluidRow(
873
                            column(12, textInput("xlabels22", "Annotation names (comma seperated)", "Healthy,Diseased"))
874
                        ),
875
                        
876
                        fluidRow(
877
                            column(5, textInput("xcol.axis22", "Annotation color", "black")),
878
                            column(1),
879
                            column(5, numericInput("xcex.axis22", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
880
                        )
881
                    ),
882
                    
883
                    conditionalPanel(condition = "input.subGrps == 'yAxis'",
884
                        h5('Y-axis options:'),
885
                        
886
                        ## Y axis label options
887
                        fluidRow(
888
                            column(5, textInput("ylab22", "Axis label", "Marker Name")),
889
                            column(1),
890
                            column(5, selectizeInput("yfont.lab22", "Label font", choices = c("Regular" = "1", "Bold" = "2", 
891
                                                                                                "Italic" = "3", "Bold Italic" = "4"), 
892
                                                    selected = "1"))    
893
                        ),
894
                        
895
                        fluidRow(
896
                            column(5, textInput("ycol.lab22", "Label color", "black")),
897
                            column(1),
898
                            column(5, numericInput("ycex.lab22", "Label size", min=0.1, max=5, value = 1, step = 0.1))
899
                        ),
900
                        
901
                        ## Y axis annotation options
902
                        fluidRow(
903
                            column(5, textInput("ycol.axis22", "Annotation color", "black")),
904
                            column(1),
905
                            column(5, numericInput("ycex.axis22", "Annotation size", min=0.1, max=5, value = 1, step = 0.1))
906
                        )
907
                    )   
908
                )
909
            )
910
        ),
911
912
913
conditionalPanel(condition="input.tabs1=='Sample size'",
914
915
h5("Choose one of the following methods (*):"),
916
HTML('<br>'),
917
918
919
checkboxInput("singleTest", "Single diagnostic test", FALSE),
920
921
conditionalPanel(condition="input.singleTest",
922
923
numericInput(inputId = "alpha1", label = "Type I error", value = 0.05, min = 0, max = 1, step = 0.01),
924
numericInput(inputId = "power1", label = "Power", value = 0.80, min = 0, max = 1, step = 0.1),
925
numericInput(inputId = "auc", label = "Area under the ROC curve", value = 0.60, min = 0.5, max = 1, step = 0.1),
926
numericInput(inputId = "ratio", label = "Allocation ratio", value = 1, min = 0, step = 0.1)
927
928
),
929
930
HTML('<br>'),
931
932
checkboxInput("twoTests", "Comparison of two diagnostic tests", FALSE),
933
934
conditionalPanel(condition="input.twoTests",
935
936
numericInput(inputId = "alpha2", label = "Type I error", value = 0.05, min = 0, max = 1, step = 0.01),
937
numericInput(inputId = "power2", label = "Power", value = 0.80, min = 0, max = 1, step = 0.1),
938
numericInput(inputId = "auc01", label = "AUC for 1st test under null hypothesis", value = 0.80, min = 0.5, max = 1, step = 0.1),
939
numericInput(inputId = "auc02", label = "AUC for 2nd test under null hypothesis", value = 0.80, min = 0.5, max = 1, step = 0.1),
940
numericInput(inputId = "auc11", label = "AUC for 1st test under alternative hypothesis", value = 0.90, min = 0.5, max = 1, step = 0.1),
941
numericInput(inputId = "auc12", label = "AUC for 2nd test under alternative hypothesis", value = 0.70, min = 0.5, max = 1, step = 0.1),
942
numericInput(inputId = "ratio2", label = "Allocation ratio", value = 1, min = 0, step = 0.1)
943
944
),
945
HTML('<br>'),
946
947
948
checkboxInput("StandardVsNew", "Noninferiority of a new test to a standard test", FALSE),
949
950
951
conditionalPanel(condition="input.StandardVsNew",
952
953
numericInput(inputId = "alpha3", label = "Type I error", value = 0.05, min = 0, max = 1, step = 0.01),
954
numericInput(inputId = "power3", label = "Power", value = 0.80, min = 0, max = 1, step = 0.1),
955
numericInput(inputId = "aucs", label = "AUC for standard test", value = 0.80, min = 0.5, max = 1, step = 0.1),
956
numericInput(inputId = "aucn", label = "AUC for new test", value = 0.80, min = 0.5, max = 1, step = 0.1),
957
numericInput(inputId = "sd", label = "Smallest difference", value = 0.1, step = 0.1),
958
numericInput(inputId = "ratio3", label = "Allocation ratio", value = 1, min = 0, step = 0.1)
959
960
),
961
962
HTML('<br>'),
963
HTML('<p>(*) See <a href="http://66.199.228.237/boundary/complex_decision_making_and_ethics/ROC_Analysis.pdf" target="_blank"> Obuchowski, 2005</a> for further details.</p>'),
964
HTML('<br>')
965
966
967
),
968
969
970
        conditionalPanel(condition="input.tabs1=='Manual'",
971
              HTML('<p align="center"><img src="manual.png" width=200 height=200></p>')
972
        ),
973
974
        conditionalPanel(condition="input.tabs1=='Authors & News'",
975
            HTML('<p align="center"> <a href="https://www.hacettepe.edu.tr/english/" target="_blank"><img src="hulogo.JPEG" width=150 height=150></a> </p>')
976
        )
977
    ),
978
979
980
    mainPanel(
981
    # Tab panelinden herhangi bir sekme seçildiği zaman ana bölmede (Ekranın orta kısmı)
982
    # nelerin görüneceği bu kısımda tanımlanıyor. Belirli koşullar tanımlanmak istenir ise
983
    # ayrıca bir conditionalPanel() bloğu burada tanımlanabilir.
984
        tabsetPanel(
985
            tabPanel(title="Introduction", 
986
                 h5("The easiest way to perform ROC analysis!"),
987
                 HTML('<p> A receiver operating characteristics (ROC) curve is a graphical approach which 
988
                      assess the performance of a binary classifier system. The ROC curve analysis is widely 
989
                      used in medicine, radiology, biometrics and various application of machine learning. </p>'),
990
                 HTML('<p align="justify"> Here we developed an easy way to carry out ROC analysis.
991
                      This application creates ROC curves, calculates area under the curve (AUC)
992
                      values and confidence intervals for the AUC values, and performs multiple comparisons 
993
                      for ROC curves in a user-friendly, up-to-date and comprehensive way. Moreover,
994
                      easyROC computes and compares partial AUCs. It can also perform sample size calculation.</p>'),
995
                 
996
                 HTML('<p> An important feature of this application is to determine cut-off values especially 
997
                      for diagnostic tests. For this task, we made use of 
998
                      <a href="http://cran.r-project.org/web/packages/OptimalCutpoints/index.html" target="_blank">OptimalCutpoints</a> package (Lopez-Raton et al, 2014) of R [1].</p>'),
999
1000
#HTML('<br>'),
1001
1002
                HTML('<p><div align="center"><table cellpadding="0" cellspacing="0"><tr><td><img src="ROCplot.png" width="300" height="300" border="10000"></td><td><img src="CutOff_Plots.png" width="400" height="400" border="70"></td></tr></table></div></p>'),
1003
1004
# HTML('<br>'),
1005
1006
1007
                h6("[1] Monica Lopez-Raton, Maria Xose Rodriguez-Alvarez, Carmen Cadarso Suarez, Francisco Gude Sampedro (2014). OptimalCutpoints: An R Package for Selecting Optimal Cutpoints in Diagnostic Tests. Journal of Statistical Software, 61(8), 1-36.")
1008
            ),
1009
1010
            tabPanel("Data upload",
1011
                navbarPage(title = '',
1012
                    tabPanel('Data', dataTableOutput('RawData'))
1013
                )
1014
            ),
1015
1016
            tabPanel("ROC curve",
1017
                downloadButton("downloadROCStats", "Download ROC statistics as txt-file"),
1018
                downloadButton("downloadROCData", "Download ROC coordinates as txt-file"),
1019
                downloadButton("downloadROCPlot", "Download plot as pdf-file"),
1020
                
1021
                h4(textOutput(outputId = "section1")),
1022
                navbarPage(id = "navbarROCcurve",
1023
                    title = '',
1024
                    tabPanel('Statistics',          dataTableOutput('ROCstatistics')),
1025
                    tabPanel('ROC Coordinates',     dataTableOutput('ROCcoordinates')),
1026
                    tabPanel('Multiple Comparisons',     dataTableOutput('ROCcomparisons')),
1027
                    tabPanel('Partial AUC',     dataTableOutput('resultPAuc'))
1028
1029
1030
1031
                ),
1032
1033
                conditionalPanel(condition = "input.navbarROCcurve != 'ROC Coordinates'",
1034
                    textOutput(outputId = "CIreminderLine1"),
1035
                    h6(textOutput(outputId = "CIreminderLine2"))
1036
                ),
1037
                
1038
                HTML('<br>'),
1039
                h4(textOutput(outputId = "section2")),
1040
                plotOutput("ROCplot")
1041
1042
1043
1044
#verbatimTextOutput("resultPAuc")
1045
            ),
1046
1047
            tabPanel("Cut points",
1048
                downloadButton("downloadCutOffresults", "Download results as txt-file"),
1049
                downloadButton("downloadCutOffPlotPDF", "Download plots as pdf-file"),   
1050
                verbatimTextOutput("cutPoints"),
1051
                
1052
                ## İçeriği sayfada ortalamak için kullanılan HTML kodu.
1053
                HTML('<div align="center">'),
1054
                    plotOutput("cutPointsPlot"),
1055
                HTML('</div>')
1056
            ),
1057
1058
tabPanel(title="Sample size",
1059
1060
downloadButton("downloadSampleSizeResults", "Download results as txt-file"),
1061
verbatimTextOutput("SampleSizeForRoc")
1062
1063
1064
),
1065
1066
            tabPanel(title="Manual",
1067
                h5("Detailed manual will be released soon...")
1068
            ),
1069
1070
            tabPanel("Authors & News",
1071
                h4("Authors"),
1072
                HTML('<p><a href="http://www.biostatistics.hacettepe.edu.tr/cv/Dincer_Goksuluk_CV_Eng.pdf" target="_blank"> <b>Dincer Goksuluk</b></a><p>'),
1073
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
1074
                HTML('<p><a href="mailto:dincer.goksuluk@hacettepe.edu.tr" target="_blank">dincer.goksuluk@hacettepe.edu.tr</a><p>'),
1075
                HTML('<p><a href="http://yunus.hacettepe.edu.tr/~selcuk.korkmaz/" target="_blank"> <b>Selcuk Korkmaz</b></a><p>'),
1076
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
1077
                HTML('<p><a href="mailto:selcuk.korkmaz@hacettepe.edu.tr" target="_blank">selcuk.korkmaz@hacettepe.edu.tr</a><p>'),
1078
                HTML('<p><a href="http://www.biostatistics.hacettepe.edu.tr/cv/Gokmen_Zararsiz_CV_Eng.pdf" target="_blank"> <b>Gokmen Zararsiz</b></a><p>'),
1079
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
1080
                HTML('<p><a href="mailto:gokmen.zararsiz@hacettepe.edu.tr" target="_blank">gokmen.zararsiz@hacettepe.edu.tr</a><p>'),
1081
                HTML('<br>'),
1082
                h4("News"),
1083
                HTML('<br>'),
1084
                HTML('<p><b> Version 1.1 (June 23, 2015) </b><p>'),
1085
                HTML('<p> (1) Partial AUC feature has been added.<p>'),
1086
                HTML('<p> (2) Sample size calculation tab has been added.<p>'),
1087
                HTML('<p> (3) Minor improvements and bug fixes.<p>'),
1088
1089
                HTML('<br>'),
1090
                HTML('<p><b> Version 1.0 (March 19, 2015)</b><p>'),
1091
                HTML('<p> (1) Initial version has been released.<p>'),
1092
                HTML('<br>'),
1093
1094
1095
            h5("Other Tools"),
1096
1097
            HTML('<p><a href="http://www.biosoft.hacettepe.edu.tr/MLViS/" target="_blank"> <b>MLViS: a machine learning-based virtual screening tool</b></a><p>'),
1098
            HTML('<p><a href="http://www.biosoft.hacettepe.edu.tr/MVN/" target="_blank"> <b>MVN: a web-tool for assessing multivariate normality </b></a><p>'),
1099
            HTML('<p><a href="http://www.biosoft.hacettepe.edu.tr/DDNAA/" target="_blank"> <b>DDNAA: Decision support system for differential diagnosis of nontraumatic acute abdomen </b></a><p>'),
1100
            HTML('<br>'),
1101
1102
                h6("Please feel free to send us bugs and feature requests.")
1103
            ),
1104
1105
            #tabPanel("News",
1106
            #    h4("New Features")
1107
            #),
1108
            id="tabs1"
1109
            ),
1110
1111
            tags$head(tags$style(type="text/css", "label.radio { display: inline-block; }", ".radio input[type=\"radio\"] { float: none; }"),
1112
            tags$style(type="text/css", "select { max-width: 200px; }"),
1113
            tags$style(type="text/css", "textarea { max-width: 185px; }"),
1114
            tags$style(type="text/css", ".jslider { max-width: 200px; }"),
1115
            tags$style(type='text/css', ".well { max-width: 330px; }"),
1116
            tags$style(type='text/css', ".span4 { max-width: 330px; }")),
1117
1118
            tags$head(
1119
            tags$link(rel = "shortcut icon", href = "favicon-2.ico"))
1120
1121
        )
1122
))
1123
1124
1125
1126