a b/ui.R
1
shinyUI(fluidPage(
2
3
4
    titlePanel(title="voomDDA: Discovery of Diagnostic Biomarkers and Classification of RNA-Seq Data  (ver. 1.5)", windowTitle = "voomDDA for RNA-Seq"),
5
6
    sidebarPanel(width = 3,
7
        conditionalPanel(condition="input.tabs1=='Introduction'",
8
            HTML('<p align="center"><img src="voomdda.jpg" width=200 height=200></p>'),
9
            tags$head(includeScript("google-analytics.js"))
10
11
        ),
12
13
        conditionalPanel(condition="input.tabs1=='Manual'",
14
            HTML('<p align="center"><img src="manual.png" width=200 height=200></p>')
15
16
        ),
17
18
        conditionalPanel(condition="input.tabs1=='News'",
19
            HTML('<p align="center"><img src="news.png" width=200 height=200></p>')
20
21
        ),
22
23
        conditionalPanel(condition="input.tabs1=='Citation'",
24
            HTML('<p align="center"><img src="cite.png" width=200 height=200></p>')
25
        ),
26
27
        conditionalPanel(condition="input.tabs1=='voomDDA'",
28
            h4("1. Pre-processing"),
29
            h5("a) Filtering"),
30
            fluidRow(column(1),
31
                     column(10,
32
                            checkboxInput(inputId = "nearZeroF", label = "Near-zero variance filtering", value = TRUE),
33
                            checkboxInput(inputId = "varF", label = "Variance filtering", value = FALSE))
34
            ),
35
            HTML('<br>'),
36
            conditionalPanel(condition = "input.varF",
37
                textInput(inputId = "maxVar", label = "Number of genes with maximum variance", value = "")
38
            ),
39
            
40
            h5("b) Normalization"),
41
            fluidRow(column(1),
42
                     column(10,
43
                            radioButtons(inputId = "normMeth", label = "", choices = list("None" = "none", "DESeq median ratio" = "deseq", "TMM" = "TMM"), 
44
                                         selected = "none"))
45
            ),
46
            #HTML('<br>'),
47
            h4("2. Model building"),
48
            fluidRow(column(1),
49
                     column(11,
50
                            radioButtons(inputId = "models", label = "", selected = "vNSC",
51
                                               choices = c("voomNSC" = "vNSC",
52
                                                            "voomDLDA" = "vDLDA",
53
                                                            "voomDQDA" = "vDQDA"))
54
            )),
55
            HTML('<br>'),
56
            checkboxInput(inputId = "advanced", label = "Advanced options", value = FALSE),
57
58
            actionButton("runVoomDDA", "Run"),
59
            fluidRow(
60
                column(1),
61
                column(11, 
62
                       conditionalPanel(condition = "input.advanced",
63
                                 checkboxGroupInput(inputId = "advOpts", label = "", selected = c("trSummary","selGenes","selHeat"),
64
                                                    choices = c("Display training summary" = "trSummary",
65
                                                                "Display selected genes (voomNSC)" = "selGenes"))
66
                ))    
67
            )
68
            
69
        ),
70
71
72
        conditionalPanel(condition="input.tabs1=='Heatmap'",
73
74
            h4("Heatmap options"),
75
            actionButton(inputId = "runHeatMap", label = "Create heatmap"),
76
            checkboxInput(inputId = "centerHeat", label = "Center heatmap data", value = TRUE),
77
            checkboxInput(inputId = "darkTheme", label = "Dark theme", value = FALSE),
78
            selectInput("colorsHM", "Select a color scheme", choices = c("Blues" = "Blues", "Reds" = "Reds", "Greens" = "Greens"),
79
                              selected = "Blues")
80
81
82
83
84
            #sliderInput(inputId = "widthHM" , label = "Width", min = 200, max = 1000, value = 600, step = 50),
85
            #sliderInput(inputId = "heightHM" , label = "Height", min = 200, max = 1000, value = 600, step = 50)
86
87
88
        ),
89
90
        conditionalPanel(condition="input.tabs1=='Network'",
91
92
            actionButton(inputId = "runNetwork", label = "Create network plot")
93
94
        ),
95
96
97
        conditionalPanel(condition="input.tabs1=='GO'",
98
99
            radioButtons(inputId = "miRNAorGene", "", list("miRNA" = 1, "Gene" = 2), selected=1, inline = TRUE),
100
101
                conditionalPanel(condition="input.miRNAorGene=='1'",
102
103
                    numericInput(inputId = "topRNAs", "Select top genes", value = 20),  
104
                    
105
                    selectInput(inputId="goAlgorithm", "Select an algorithm", choices = c("classic"="classic" , "elim"="elim", "weight"="weight", "weight01"="weight01", "lea"="lea", "parentchild"="parentchild"), 
106
                                      selected = "classic"),
107
108
                    selectInput(inputId="goStatistic", "Select a statistic", choices = c("ks"="ks", "fisher"="fisher", "t"="t", "globaltest"="globaltest", "sum"="sum", "ks.ties"="ks.ties"), 
109
                                      selected = "ks"),
110
111
                    selectInput(inputId="showResults", "Show results for", choices = ""),
112
113
                    selectInput(inputId="ontology", "Ontology", choices = c("Biological process" = "BP", "Molecular function" = "MF", "Cellular components" = "CC"), 
114
                                      selected = "BP"),
115
                    
116
                    actionButton(inputId = "runRNAGO", label = "GO get it!")
117
              ),  
118
119
120
                conditionalPanel(condition="input.miRNAorGene=='2'",
121
122
                    numericInput(inputId = "topGenes", "Select top genes", value = 20),   
123
124
                    selectInput(inputId="goGeneAlgorithm", "Select an algorithm", choices = c("classic"="classic" , "elim"="elim", "weight"="weight", "weight01"="weight01", "lea"="lea", "parentchild"="parentchild"), 
125
                                      selected = "classic"),
126
127
                    selectInput(inputId="goGeneStatistic", "Select a statistic", choices = c("ks"="ks", "fisher"="fisher", "t"="t", "globaltest"="globaltest", "sum"="sum", "ks.ties"="ks.ties"), 
128
                                      selected = "ks"),
129
130
                    selectInput(inputId="ontologyGene", "Ontology", choices = c("Biological process" = "BP", "Molecular function" = "MF", "Cellular components" = "CC"), 
131
                                      selected = "BP"),
132
                    
133
                    actionButton(inputId = "runGeneGO", label = "GO get it!")
134
              ),
135
              br(),
136
              downloadButton("downloadGoPlot", "Download GO Plot")        
137
        ),
138
            
139
140
141
        conditionalPanel(condition="input.tabs1=='Authors & News'",
142
            HTML('<p align="center"> <a href="https://www.hacettepe.edu.tr/english/" target="_blank"><img src="hulogo.JPEG" width=150 height=150></a> </p>')
143
        ),
144
145
        conditionalPanel(condition="input.tabs1=='Data upload'",
146
            h4("Input data"),
147
            radioButtons("dataInput", "", list("Load example data"=1,"Upload a file"=2), selected=1),
148
149
            conditionalPanel(condition="input.dataInput=='1'",
150
                h5("Load example data:"),
151
                
152
                radioButtons("sampleData", "", list("Cervical cancer (miRNA expression data)"=1, "Lung cancer (Gene expression data)"=2),selected=1)
153
                
154
                #HTML('<p>n: number of observations</p>'),
155
                #HTML('<p>p: number of genes</p>')
156
            ),
157
            
158
            conditionalPanel(condition="input.dataInput=='2'",
159
                h5("Upload train set: "),
160
                fileInput("uploadTrain", "", multiple = FALSE),
161
162
                h5("Upload class labels: "),
163
                fileInput("uploadCond", "", multiple = FALSE),
164
                
165
                h5("Upload test set: "),
166
                fileInput("uploadTest", "", multiple = FALSE),
167
                
168
                radioButtons("fileSepDF", "Delimiter:", list("Comma"=1,"Tab"=2,"Semicolon"=3,"Space"=4),selected=2),  
169
170
                HTML('<p>You can upload your data as separated by comma, tab, semicolon or space.</p>'),
171
                HTML('<p>Note: Samples are in the column and genes are in the rows.</p>')
172
            )
173
        )
174
),
175
176
177
    mainPanel(
178
        tabsetPanel(
179
            tabPanel("Introduction",
180
                    HTML('<br>'),
181
                    HTML('<p>Identifying the relevant genes (or other genomic features such as transcripts, miRNAs, lncRNAs, etc.) across the conditions (e.g. tumor and non-tumor tissue samples) is a common research interest in gene-expression studies. In this gene selection, researchers are often interested in detecting a small set of genes for diagnostic purpose in medicine that involves identification of the minimal subset of genes that achieves maximal predictive performance. biomarker discovery and classification problem.</p>'),
182
                    HTML('<p>VoomDDA is a decision support tool developed for RNA-Sequencing datasets to assist researchers in their decisions for diagnostic biomarker discovery and classification problem. VoomDDA consists both sparse and non-sparse statistical learning classifiers adapted with voom method. Voom is a recent method that estimates the mean and variance relationship of the log-counts of RNA-Seq data (log counts per million, log-cpm) at observational level. It also provides precision weights for each observation that can be incorporated with the log-cpm values for further analysis. Algorithms in our tool incorporates the log-cpm values and the corresponding precision weights into biomarker discovery and classification problem. For this purpose, these algorithms use weighted statistics in estimating the discriminating functions of the used statistical learning algorithms.</p>'),
183
                    HTML('<p>VoomNSC is a sparse classifier that is developed to bring together two powerful methods for RNA-Seq classification:</p>'),
184
                     
185
                    h5("1.    to extend voom method for RNA-Seq classification studies,"),
186
                    h5("2.    to make nearest shrunken centroids (NSC) algorithm available for RNA-Seq technology."),
187
                    HTML('<p>VoomNSC both provides fast, accurate and sparser classification results for RNA-Seq data. More details can be found in the research paper. This tool also includes RNA-Seq extensions of diagonal linear and diagonal quadratic discriminant classifiers: (i) voomDLDA and (ii) voomDQDA.</p>'),
188
189
          
190
                h5("References"),
191
                HTML('<p> [1] Zararsiz, G., Goksuluk, G., Korkmaz, S., et al. (2015). VoomDDA: Discovery of Diagnostic Biomarkers and Classification of RNA-Seq Data.</p>'),
192
193
                HTML('<p> [2] Law, C.W., Chen, Y., Shi, W., et al. (2014). <a href="http://www.genomebiology.com/2014/15/2/R29">voom: Precision weights unlock linear model analysis tools for RNA-Seq read counts.</a> Genome Biology; 15:R29.</p>'),
194
195
                HTML('<p> [3] Tibshirani, R., Hastie, T., Narasimhan, B., et al. (2002). <a href="http://www.pnas.org/content/99/10/6567.abstract" target="_blank">Diagnosis of multiple cancer types by shrunken centroids of gene expression.</a> PNAS; 99(10): 6567-72. </p>'),
196
197
                HTML('<p> [4] Dudoit, S., Fridlyand, J. and Speed, T.P. (2002). <a href="http://amstat.tandfonline.com/doi/abs/10.1198/016214502753479248" target="_blank">Comparison of Discrimination Methods for the Classification of Tumors Using Gene Expression Data.</a> Journal of the American Statistical Association; 97(457): 77-87.</p>')
198
                  
199
            ),
200
201
            tabPanel("Data upload",
202
                navbarPage(
203
                               title = '',
204
tabPanel('Train',                DT::dataTableOutput('RawDataTrain')),
205
                               tabPanel('Test',              DT::dataTableOutput('RawDataTest'))
206
                 )
207
            ),
208
209
210
            tabPanel("voomDDA",
211
212
                #downloadButton("downloadNormTest", "Download univariate results"),
213
                #downloadButton("downloadNormPlot", "Download univariate plots"),
214
215
                verbatimTextOutput("trainConsole"),
216
                HTML('<br>'),
217
                HTML('<br>'),
218
                tagList(
219
                    tags$head(
220
                    tags$link(rel="stylesheet", type="text/css",href="style.css"),
221
                    tags$script(type="text/javascript", src = "busy.js")
222
                  )
223
                ),
224
225
                div(class = "busy",
226
                    p("Getting voomDDA results... this may take a while...."),
227
                    img(src="loading.gif")
228
                )
229
230
                #plotOutput("heatMap")
231
            ),
232
233
234
235
            tabPanel("Heatmap",
236
                  HTML('<br>'),
237
                  HTML('<br>'),
238
              d3heatmap::d3heatmapOutput("heatMap", width = "100%", height = "600px"),
239
                tagList(
240
                    tags$head(
241
                    tags$link(rel="stylesheet", type="text/css",href="style.css"),
242
                    tags$script(type="text/javascript", src = "busy.js")
243
                  )
244
                ),
245
246
                div(class = "busy",
247
                    p("Creating heatmap... this may take a while...."),
248
                    img(src="loading.gif")
249
                )
250
251
252
253
            ),
254
255
256
            tabPanel("Network",
257
258
                plotOutput('newtwork'),
259
                tagList(
260
                    tags$head(
261
                    tags$link(rel="stylesheet", type="text/css",href="style.css"),
262
                    tags$script(type="text/javascript", src = "busy.js")
263
                  )
264
                ),
265
266
                div(class = "busy",
267
                    p("Creating network plot... this may take a while...."),
268
                    img(src="loading.gif")
269
                )
270
271
272
            ),
273
274
            tabPanel("GO",
275
                h4('Gene ontology results'),
276
                #verbatimTextOutput('selectedGenes'),
277
                DT::dataTableOutput('geneOntologyTable'),
278
                plotOutput('geneOntologyPlot'),
279
                tagList(
280
                    tags$head(
281
                    tags$link(rel="stylesheet", type="text/css",href="style.css"),
282
                    tags$script(type="text/javascript", src = "busy.js")
283
                  )
284
                ),
285
286
                div(class = "busy",
287
                    p("Getting ontology results... this may take a while...."),
288
                    img(src="loading.gif")
289
                )
290
291
292
                #verbatimTextOutput("geneResult")
293
            ),
294
295
296
297
            tabPanel("Manual",
298
299
            h5("Tutorial"),
300
            HTML('<p><b>1.Uploading the data</b></p>'),
301
302
            HTML('<p>Two example datasets are available in voomDDA web application. Cervical cancer is a miRNA, lung cancer is a gene expression dataset. For GO analysis, users should select the necessary option (miRNA or gene) to obtain the related analysis results.</p>'),
303
            HTML('<p>VoomDDA application requires three inputs from the user. Train and test sets should be text files (.txt) that contain the raw mapped read counts in a matrix form, where rows correspond to genomic features (for simplicity of language, let’s say genes) and the columns correspond to observations (or samples). This type of count data can be obtained from feature counting softwares such as HTSeq [1] or featureCounts [2]. Note that this type of count data should contain the raw number of mapped reads, should not be normalized or contain RPKM values. Class labels should also be in a text file (.txt) and should contain each sample condition. Note that each row should contain only one label of a sample. Example datasets for Witten et al. cervical dataset are given as below:</p>'),
304
            HTML('<p><a href="cervical_train.txt" download>Training set of cervical data</a></p>'),
305
            HTML('<p><a href="cervical_test.txt" download>Test set of cervical data</a></p>'),
306
            HTML('<p><a href="cervical_cond.txt" download>Class labels of cervical data</a></p>'),
307
            HTML('<p>If the purpose is the prediction of the class labels of new test observations, users should upload all three necessary files. However, test set is not required, when the purpose is just the identification of the diagnostic biomarkers.</p>'),
308
            HTML('<p>After uploading the data, make sure that the data is displayed in the screen.</p>'),
309
            HTML('<br>'),
310
            HTML('<p><b>2. Pre-processing the Data</b></p>'),
311
            HTML('<p><b>2.1. Filtering</b></p>'),
312
            HTML('<p>VoomDDA classifiers (VoomNSC, VoomDLDA and VoomDQDA) introduced in this application have the same assumptions with voom+limma pipeline [3], that is to filter out the rows with zero or very very low counts. In RNA-Seq data, we often meet with count data that contains rows with single unique values (mostly zero). This type of data may lead to unreliable estimation of the mean and variance relationship of the data and unstable model fitting for the introduced classifiers. Three possible filtering criteria are available: (i) DESeq2 outlier and independent filtering, (ii) near-zero variance filtering, (iii) variance filtering.</p>'),
313
            HTML('<p>DESeq2 package [4] contains a filtering criteria based on outlier detection and independent filtering.  Outliers are detected based on the Cook’s distance and independent filtering is applied based on the gene-wise mean normalized counts. More details can be obtained in the vignette of DESeq2 package [5].</p>'),
314
            HTML('<p>Near-zero variance filtering is described in caret package of R [6]. This package applies filtering based on two criteria: (i) the frequency of the most frequent value to the most frequent second value is higher than 19 (95/5), (ii) the number of unique values divided by the sample size is less than 10%.</p>'),
315
            HTML('<p>Variance filtering is another option to filter out the non-informative genes. This option may also be selected to decrease the computational cost of the model building process for very large datasets. After selecting this option, users can enter the number of genes desired to be included to the classification models.</p>'),
316
            HTML('<p>After selecting one or multiple filtering criteria, filtering statistics are demonstrated in the screen.</p>'),
317
            HTML('<p><b>2.2. Normalization</b></p>'),
318
            HTML('<p>Library sizes for each observation are dependent on the experimental design and may lead to the existence of technical biases. These biases can have significant effect on the classification results and should be corrected before starting to classification model building. In our experiments, we found that normalization has a significant effect on the classification results for datasets that have very large library size differences across samples. Two normalization approaches are available in the application: (i) DESeq median ratio [7], (ii) trimmed mean of M values (TMM) [8]. More details about this approaches can be found in referenced papers.</p>'),
319
            HTML('<br>'),
320
            HTML('<p><b>3. Model Building for Classification</b></p>'),
321
            HTML('<p>After data processing, users can build classification models with three introduced algorithms: (i) voomNSC, (ii) voomDLDA, (iii) voomDQDA. VoomNSC is a sparse classifier that brings together two powerful methods, voom method [3] and nearest shrunken centroids algorithm [9], for the classification of RNA-Seq data. VoomDLDA and voomDQDA are non-sparse classifiers which are the extensions of diagonal discriminant classifiers [10]. Details of these classifiers are given in the referenced paper [11].</p>'),
322
            HTML('<p>After selecting any of the three classifiers, a summary of the fitting process is displayed in the screen. A confusion matrix and several statistical diagnostic measures are given to examine how successful the classifier fit to the given data. Furthermore, a heatmap plot is constructed to display the expression levels of genes and the gene-wise and sample-wise relationships. Heatmap is displayed for the entire unfiltered genes for non-sparse classifiers, while displayed for the selected gene subset for sparse voomNSC classifier.</p>'),
323
            HTML('<br>'),
324
            HTML('<p><b>4. Identification of Diagnostic Biomarkers</b></p>'),
325
            HTML('<p>If VoomNSC is the selected classifier, the subset of genes, that are most relevant with the class condition, are identified and the gene names are displayed in the screen. Several plots are also given. First plot demonstrates the selection of the threshold parameter. The parameter which fits the most accurate and sparsest model is identified as optimal. Second plot displays the distribution of selected genes in each class. Third plot displays the shrunken differences of the selected genes. Final plot is the heatmap plot discussed in the previous section.</p>'),
326
            HTML('<br>'),
327
            HTML('<p><b>5. Prediction</b></p>'),
328
            HTML('<p>Based on the selected classifier, predictions appear on the screen for each test observation. Note that the test observations should be processed as same as the training observations. Same experimental and computational procedures should be applied before obtaining the raw count data. Data should be in the same format as the training data to obtain the predictions. It should contain the raw mapped read counts, and the gene names should match with the training data.</p>'),
329
            HTML('<p>VoomDDA application filters and normalizes the test data based on the information obtained from the training data. Thus, the estimated parameters from the training data are used for the test data. This guarantees that both sets are on the same scale and homoscedastic each other.</p>'),
330
            HTML('<br>'),
331
            HTML('<p><b>6. Downstream Analysis</b></p>'),
332
            HTML('<p>After detecting diagnostic biomarkers via voomNSC algorithm, it may be useful to visualize the results to see the interactions or go further analysis, such as GO analysis. For this purpose, several downstream analysis tools are also available in this web application. These tools include heatmaps, network analysis and gene ontology analysis. Detailed information about gene ontology analysis can be found in topGO BIOCONDUCTOR package.</p>'),
333
            HTML('<br>'),
334
            HTML('<p><b>References</b></p>'),
335
            HTML('<p>[1] Anders, S., Pyl, P.T., and Huber, W. (2015) HTSeq - a Python framework to work with high-throughput sequencing data. Bioinformatics; 31(2):166-9.</p>'),
336
            HTML('<p>[2] Liao, Y., Smyth, G.K., and Shi, W. (2013). featureCounts: an efficient general-purpose program for assigning sequence reads to genomic features. Bioinformatics. doi: 10.1093/bioinformatics/btt656.</p>'),
337
            HTML('<p>[3] Law, C.W., Chen, Y., Shi, W. and Smyth, G.K. (2014). voom: Precision weights unlock linear model analysis tools for RNA-Seq read counts. Genome Biology; 15:R29.</p>'),
338
            HTML('<p>[4] Love, M.I., Huber, W. and Anders, S. (2015). Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2. Genome Biology; 15(550).  doi:10.1186/s13059-014-0550-8 .</p>'),
339
            HTML('<p>[5] Love, M.I., Huber, W. and Anders, S. (2015). Differential analysis of count data – the DESeq2 package. http://www.bioconductor.org/packages/release/bioc/vignettes/DESeq2/inst/doc/DESeq2.pdf (19.06.2015).</p>'),
340
            HTML('<p>[6] Kuhn, M. (2008). Building Predictive Models in R Using the caret Package. Journal of Statistical Software; 28(5).</p>'),
341
            HTML('<p>[7] Anders, S. and Huber, W. (2010). Differential expression analysis for sequence count data. Genome Biology; 11(R106): doi:10.1186/gb-2010-11-10-r106 .</p>'),
342
            HTML('<p>[8] Robinson, M.D., and Oshlack, A. (2010). A scaling normalization method for differential expression analysis of RNA-seq data. Genome Biology; 11(R25).</p>'),
343
            HTML('<p>[9] Tibshirani, R., Hastie, T., Narasimhan, B. and Chu, G. (2002). Diagnosis of multiple cancer types by shrunken centroids of gene expression. PNAS; 99(10): 6567–72.</p>'),
344
            HTML('<p>[10] Dudoit, S., Fridlyand, J. and Speed, T.P. (2002). Comparison of Discrimination Methods for the Classification of Tumors Using Gene Expression Data. Journal of the American Statistical Association; 97(457): 77-87.</p>'),
345
            HTML('<p>[11] Zararsiz, G., Goksuluk, D, Korkmaz, S., et al. (2015). VoomDDA: Discovery of Diagnostic Biomarkers and Classification of RNA-Seq Data.</p>')
346
            ),
347
348
            tabPanel("Authors & News",
349
                h4("Authors"),
350
                HTML('<p><a href="http://bit.do/gokmenzararsiz" target="_blank"> <b>Gokmen Zararsiz, PhD</b></a><p>'),
351
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
352
                HTML('<p><a href="mailto:gokmen.zararsiz@hacettepe.edu.tr" target="_blank">gokmen.zararsiz@hacettepe.edu.tr</a><p>'),
353
354
                br(),
355
356
                HTML('<p><a href="http://www.biostatistics.hacettepe.edu.tr/cv/Dincer_Goksuluk_CV_Eng.pdf" target="_blank"> <b>Dincer Goksuluk, PhD</b></a><p>'),
357
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
358
                HTML('<p><a href="mailto:dincer.goksuluk@hacettepe.edu.tr" target="_blank">dincer.goksuluk@hacettepe.edu.tr</a><p>'),
359
                br(),
360
361
                HTML('<p><a href="http://www-huber.embl.de/users/klaus/" target="_blank"> <b>Bernd Klaus, PhD</b></a><p>'),
362
                HTML('<p>EMBL Heidelberg<p>'),
363
                HTML('<p><a href="bernd.klaus@embl.de" target="_blank">bernd.klaus@embl.de</a><p>'),
364
                br(),
365
366
                HTML('<p><a href="http://yunus.hacettepe.edu.tr/~selcuk.korkmaz/" target="_blank"> <b>Selcuk Korkmaz, PhD</b></a><p>'),
367
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
368
                HTML('<p><a href="mailto:selcuk.korkmaz@hacettepe.edu.tr" target="_blank">selcuk.korkmaz@hacettepe.edu.tr</a><p>'),
369
                br(),
370
371
                HTML('<p><a href="http://aves.istanbul.edu.tr/vahap.eldem/" target="_blank"> <b>Vahap Eldem, PhD</b></a><p>'),
372
                HTML('<p>Istanbul University Faculty of Science <a href="http://fen.istanbul.edu.tr/biyoloji/#" target="_blank"> Department of Biology</a><p>'),
373
                HTML('<p><a href="mailto:vahap.eldem@istanbul.edu.tr" target="_blank">vahap.eldem@istanbul.edu.tr</a><p>'),
374
                br(),
375
376
                HTML('<p><a href="http://unverlab.karatekin.edu.tr" target="_blank"> <b>Turgay Unver, PhD</b></a><p>'),
377
                HTML('<p>Cankiri Karatekin University Faculty of Science <a href="http://biyoloji.karatekin.edu.tr/default.aspx" target="_blank"> Department of Biology</a><p>'),
378
                HTML('<p><a href="mailto:turgayunver@gmail.com" target="_blank">turgayunver@gmail.com</a><p>'),
379
                br(),
380
381
                HTML('<p><a href="http://www.biyoistatistik.hacettepe.edu.tr/erdem.html" target="_blank"> <b>Erdem Karabulut, PhD</b></a><p>'),
382
                HTML('<p>Hacettepe University Faculty of Medicine <a href="http://www.biostatistics.hacettepe.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
383
                HTML('<p><a href="mailto:ekarabul@hacettepe.edu.tr" target="_blank">ekarabul@hacettepe.edu.tr</a><p>'),
384
                br(),
385
386
                HTML('<p><a href="http://aves.erciyes.edu.tr/ahmetozturk/" target="_blank"> <b>Ahmet Ozturk, PhD</b></a><p>'),
387
                HTML('<p>Erciyes University Faculty of Medicine <a href="http://biyoistatistik.erciyes.edu.tr" target="_blank"> Department of Biostatistics</a><p>'),
388
                HTML('<p><a href="mailto:ahmets67@hotmail.com" target="_blank">ahmets67@hotmail.com</a><p>'),
389
390
391
                HTML('<br>'),
392
393
394
                h4("News"),
395
                h5("Version 1.5 (November 25, 2016)"),
396
                HTML('<p>(2) Lung cancer data added as an example dataset <p>'),
397
                HTML('<p>(2) Bug fixes and improvements <p>'),
398
399
                h5("Version 1.4 (November 14, 2016)"),
400
                HTML('<p>(1) Bug fixes and improvements <p>'),
401
402
                h5("Version 1.3 (November 5, 2016)"),
403
                HTML('<p>(1) Gene ontology results added <p>'),
404
                HTML('<p>(2) Gene ontology plot added <p>'),
405
                HTML('<p>(3) Bug fixes and improvements <p>'),
406
407
                h5("Version 1.2 (August 20, 2016)"),
408
                HTML('<p>(1) Heatmap added <p>'),
409
                HTML('<p>(2) Network plot added <p>'),
410
                HTML('<p>(3) Bug fixes and improvements <p>'),
411
412
                h5("Version 1.1 (July 18, 2016)"),
413
                HTML('<p>(1) Upgraded to shiny version 0.14 <p>'),
414
415
                h5("Version 1.0 (June 18, 2015)"),
416
                HTML('<p>(1) VoomDDA web application has been released. <p>'),
417
418
419
420
421
422
423
424
425
                HTML('<br>'),
426
427
                h5("Other Tools"),
428
429
                HTML('<p><a href="http://www.bioconductor.org/packages/release/bioc/html/MLSeq.html" target="_blank"> <b>MLSeq: Machine learning interface for RNA-Seq data </b></a><p>'),
430
                HTML('<p><a href="http://www.biosoft.hacettepe.edu.tr/MLViS/" target="_blank"> <b>MLViS: machine learning-based virtual screening tool </b></a><p>'),
431
                HTML('<p><a href="http://www.biosoft.hacettepe.edu.tr/easyROC" target="_blank"> <b>easyROC: a web-tool for ROC curve analysis </b></a><p>'),
432
                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>'),
433
                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>'),
434
                HTML('<br>'),
435
436
437
438
                h6("Please feel free to send us bugs and feature requests.")
439
440
            ),
441
442
            tabPanel("Citation",
443
             HTML('<br>'),
444
             HTML('<p>If you use this application, please cite it as below:</p>'),
445
             HTML('<p><b>Zararsiz, G., Goksuluk, D, Korkmaz, S., et al. (2015). VoomDDA: Discovery of Diagnostic Biomarkers and Classification of RNA-Seq Data. Available at: http://www.biosoft.hacettepe.edu.tr/voomDDA .</b></p>')
446
            ),
447
448
            id="tabs1", type = "pills"
449
        ),
450
451
        tags$head(tags$style(type="text/css", "label.radio { display: inline-block; }", ".radio input[type=\"radio\"] { float: none; }"),
452
        tags$style(type="text/css", "select { max-width: 200px; }"),
453
        tags$style(type="text/css", "textarea { max-width: 185px; }"),
454
        tags$style(type="text/css", ".jslider { max-width: 200px; }"),
455
        tags$style(type='text/css', ".well { max-width: 330px; }"),
456
        tags$style(type='text/css', ".span4 { max-width: 330px; }"))
457
458
     #   tags$head(
459
     #   tags$link(rel = "shortcut icon", href = "favicon-2.ico"))
460
461
 )
462
))
463
464
465
466