ui.R 32 KB
Newer Older
Stevenn Volant's avatar
Stevenn Volant committed
1

Stevenn Volant's avatar
Stevenn Volant committed
2
3
4
5
6
if(!require(shinydashboard)){
  install.packages('shinydashboard')
  library(shinydashboard)
}

stevenn's avatar
stevenn committed
7
8
if (!require(psych)) {
  install.packages('psych')
Stevenn Volant's avatar
Stevenn Volant committed
9
  
stevenn's avatar
stevenn committed
10
  library(psych)
Stevenn Volant's avatar
Stevenn Volant committed
11
  
stevenn's avatar
stevenn committed
12
}
Stevenn Volant's avatar
Stevenn Volant committed
13

stevenn's avatar
stevenn committed
14
if (!require(ggplot2)) {
Stevenn Volant's avatar
Stevenn Volant committed
15
  
stevenn's avatar
stevenn committed
16
  install.packages('ggplot2')
Stevenn Volant's avatar
Stevenn Volant committed
17
  
stevenn's avatar
stevenn committed
18
  library(ggplot2)
Stevenn Volant's avatar
Stevenn Volant committed
19
  
stevenn's avatar
stevenn committed
20
}
Stevenn Volant's avatar
Stevenn Volant committed
21

stevenn's avatar
stevenn committed
22
if (!require(vegan)) {
Stevenn Volant's avatar
Stevenn Volant committed
23
  
stevenn's avatar
stevenn committed
24
  install.packages('vegan')
Stevenn Volant's avatar
Stevenn Volant committed
25
  
stevenn's avatar
stevenn committed
26
  library(vegan)
Stevenn Volant's avatar
Stevenn Volant committed
27
  
stevenn's avatar
stevenn committed
28
}
Stevenn Volant's avatar
Stevenn Volant committed
29

stevenn's avatar
stevenn committed
30
if (!require(dendextend)) {
Stevenn Volant's avatar
Stevenn Volant committed
31
  
stevenn's avatar
stevenn committed
32
  install.packages('dendextend')
Stevenn Volant's avatar
Stevenn Volant committed
33
  
stevenn's avatar
stevenn committed
34
  library(dendextend)
Stevenn Volant's avatar
Stevenn Volant committed
35
  
stevenn's avatar
stevenn committed
36
}
Stevenn Volant's avatar
Stevenn Volant committed
37

stevenn's avatar
stevenn committed
38
if (!require(circlize)) {
Stevenn Volant's avatar
Stevenn Volant committed
39
  
stevenn's avatar
stevenn committed
40
  install.packages('circlize')
Stevenn Volant's avatar
Stevenn Volant committed
41
  
stevenn's avatar
stevenn committed
42
  library(circlize)
Stevenn Volant's avatar
Stevenn Volant committed
43
  
stevenn's avatar
stevenn committed
44
}
Stevenn Volant's avatar
Stevenn Volant committed
45

stevenn's avatar
stevenn committed
46
if (!require(biom)) {
Stevenn Volant's avatar
Stevenn Volant committed
47
  
stevenn's avatar
stevenn committed
48
  install.packages('biom')
Stevenn Volant's avatar
Stevenn Volant committed
49
  
stevenn's avatar
stevenn committed
50
  library(biom)
Stevenn Volant's avatar
Stevenn Volant committed
51
  
stevenn's avatar
stevenn committed
52
}
Stevenn Volant's avatar
Stevenn Volant committed
53

stevenn's avatar
stevenn committed
54
if (!require(DT)) {
Stevenn Volant's avatar
Stevenn Volant committed
55
  
stevenn's avatar
stevenn committed
56
  install.packages('DT')
Stevenn Volant's avatar
Stevenn Volant committed
57
  
stevenn's avatar
stevenn committed
58
  library(DT)
Stevenn Volant's avatar
Stevenn Volant committed
59
  
stevenn's avatar
stevenn committed
60
}
Stevenn Volant's avatar
Stevenn Volant committed
61

stevenn's avatar
stevenn committed
62
if (!require(RColorBrewer)) {
Stevenn Volant's avatar
Stevenn Volant committed
63
  
stevenn's avatar
stevenn committed
64
  install.packages('RColorBrewer')
Stevenn Volant's avatar
Stevenn Volant committed
65
  
stevenn's avatar
stevenn committed
66
  library(RColorBrewer)
Stevenn Volant's avatar
Stevenn Volant committed
67
  
stevenn's avatar
stevenn committed
68
}
Stevenn Volant's avatar
Stevenn Volant committed
69

stevenn's avatar
stevenn committed
70
if (!require(gplots)) {
Stevenn Volant's avatar
Stevenn Volant committed
71
  
stevenn's avatar
stevenn committed
72
  install.packages('gplots')
Stevenn Volant's avatar
Stevenn Volant committed
73
  
stevenn's avatar
stevenn committed
74
  library(gplots)
Stevenn Volant's avatar
Stevenn Volant committed
75
  
stevenn's avatar
stevenn committed
76
}
Stevenn Volant's avatar
Stevenn Volant committed
77

stevenn's avatar
stevenn committed
78
if (!require(DESeq2)) {
Stevenn Volant's avatar
Stevenn Volant committed
79
  
stevenn's avatar
stevenn committed
80
  source("https://bioconductor.org/biocLite.R")
Stevenn Volant's avatar
Stevenn Volant committed
81
  
stevenn's avatar
stevenn committed
82
  biocLite("DESeq2")
Stevenn Volant's avatar
Stevenn Volant committed
83
  
stevenn's avatar
stevenn committed
84
  library(DESeq2)
Stevenn Volant's avatar
Stevenn Volant committed
85
  
stevenn's avatar
stevenn committed
86
}
Stevenn Volant's avatar
Stevenn Volant committed
87

stevenn's avatar
stevenn committed
88
if (!require(ade4)) {
Stevenn Volant's avatar
Stevenn Volant committed
89
  
stevenn's avatar
stevenn committed
90
  install.packages('ade4')
Stevenn Volant's avatar
Stevenn Volant committed
91
  
stevenn's avatar
stevenn committed
92
  library(ade4)
Stevenn Volant's avatar
Stevenn Volant committed
93
94
  
}
stevenn's avatar
stevenn committed
95
96

sidebar <- dashboardSidebar(
Stevenn Volant's avatar
Stevenn Volant committed
97
  
stevenn's avatar
stevenn committed
98
  sidebarMenu(
Stevenn Volant's avatar
Stevenn Volant committed
99
    
stevenn's avatar
stevenn committed
100
    menuItem("Home", tabName = "Home", icon = icon("home")),
Stevenn Volant's avatar
Stevenn Volant committed
101
    
102
    menuItem("Tutorial", tabName = "Tutorial", icon = icon("book")),
Stevenn Volant's avatar
Stevenn Volant committed
103
    
stevenn's avatar
stevenn committed
104
    menuItem("Upload your data", tabName = "Upload", icon = icon("upload")),
Stevenn Volant's avatar
Stevenn Volant committed
105
    
Stevenn Volant's avatar
logo    
Stevenn Volant committed
106
107
    menuItemOutput("dymMenu"),
    
Stevenn Volant's avatar
Stevenn Volant committed
108
    img(src = "logo.jpg", height = 75.4, width = 200,style="position:absolute;bottom:0;margin:0 0 15px 10px;")
Stevenn Volant's avatar
Stevenn Volant committed
109
    
stevenn's avatar
stevenn committed
110
  )
Stevenn Volant's avatar
Stevenn Volant committed
111
  
stevenn's avatar
stevenn committed
112
113
114
)

body <- dashboardBody(
Stevenn Volant's avatar
Stevenn Volant committed
115
  
stevenn's avatar
stevenn committed
116
  tabItems(
Stevenn Volant's avatar
Stevenn Volant committed
117
    
stevenn's avatar
stevenn committed
118
    tabItem(tabName = "Home",
Stevenn Volant's avatar
Stevenn Volant committed
119
            
120
            tabBox(title="Welcome to SHAMAN", id="tabset1", width = 12,
Stevenn Volant's avatar
Stevenn Volant committed
121
                   
122
                   tabPanel("About", p("SHAMAN is a SHiny application for Metagenomic ANalysis including the normalization,
Stevenn Volant's avatar
Stevenn Volant committed
123
124
125
                                       
                                       the differential analysis and mutiple visualization.",style = "font-family: 'times'; font-si16pt"),
                            
Stevenn Volant's avatar
Stevenn Volant committed
126
                            p("SHAMAN is based on DESeq2 R package", a("[Anders and Huber 2010]", href="http://www.ncbi.nlm.nih.gov/pubmed/20979621"), "for the analysis of metagenomic data, as suggested in", a("[McMurdie and Holmes 2014]",href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3974642/"),
Stevenn Volant's avatar
Stevenn Volant committed
127
                              
Stevenn Volant's avatar
Stevenn Volant committed
128
                              ". SHAMAN robustly identifies the differential abundant genera with the Generalized Linear Model implemented in DESeq2", a("[Love 2014]", href="http://www.ncbi.nlm.nih.gov/pubmed/25516281"),".
Stevenn Volant's avatar
Stevenn Volant committed
129
130
131
132
133
                              
                              Resulting p-values are adjusted according to the Benjamini and Hochberg procedure [Benjamini and Hochberg 1995].
                              
                              The PCOA is performed with the", a("ade4 R package",href="http://pbil.univ-lyon1.fr/ade4/"), "and plots are generated with", a("ggplot2",href="http://ggplot2.org/"), "or", a("D3.js packages",href="http://d3js.org/"), ".", style = "font-family: 'times'; font-si16pt")),
                   
Stevenn Volant's avatar
Stevenn Volant committed
134
                   tabPanel("Authors", h3("The main contributors to SHAMAN:"),
Stevenn Volant's avatar
Stevenn Volant committed
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
                            
                            p(a("Stevenn Volant", href="mailto:stevenn.volant@pasteur.fr"), "(Initiator, coding, testing, documentation, evaluation)"),
                            
                            p(a("Amine Ghozlane",href="mailto:amine.ghozlane@pasteur.fr"), "(Coding, testing, documentation, evaluation)"),
                            
                            p(a("Hugo Varet",href="mailto:hugo.varet@pasteur.fr"), "(Coding, testing, feature suggestions)"),
                            
                            p(a("Pierre Lechat",href="mailto:pierre.lechat@pasteur.fr"), "(Coding, testing, feature suggestions)"),
                            
                            p(a("Marie-Agnès Dillies",href="mailto:marie-agnes.dillies@pasteur.fr"), "(Evaluation)"),
                            
                            p(a("Sean Kennedy",href="mailto:sean.kennedy@pasteur.fr"), "(Evaluation)"),
                            
                            h3("Acknowledgements"),
                            
                            p("Thanks to the following people for patches and other suggestions for improvements:"),
                            
152
                            p(a("Christophe Malabat",href="mailto:christophe.malabat@pasteur.fr"),a("Julien Tap",href="mailto:julien.tap@danone.com"),a(", Anna Zhukova",href="mailto:anna.zhukova@pasteur.fr"), a(", Rachel Torchet",href="mailto:rachel.torchet@pasteur.fr"))
Stevenn Volant's avatar
logo    
Stevenn Volant committed
153
                          ),
Stevenn Volant's avatar
Stevenn Volant committed
154
                   
Stevenn Volant's avatar
Stevenn Volant committed
155
                   tabPanel("Citing SHAMAN",p("No papers about SHAMAN have been published yet, but a manuscript is in preparation.",style = "font-family: 'times'; font-si16pt"),
Stevenn Volant's avatar
Stevenn Volant committed
156
                            
Stevenn Volant's avatar
Stevenn Volant committed
157
                            p("For now, if you have any comments, questions or suggestions, or want to use SHAMAN please contact", a("Dr. Marie-Agnès Dillies", href="mailto:marie-agnes.dillies@pasteur.fr"),".", style = "font-family: 'times'; font-si16pt; color:red"))
Stevenn Volant's avatar
logo    
Stevenn Volant committed
158
159
            )
                   
Stevenn Volant's avatar
Stevenn Volant committed
160
161
162
    ),      

    
163
    tabItem(tabName = "Tutorial",
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
            tabBox(title="How to use SHAMAN", id="tabset1", width = 12,
                   
            tabPanel("Introduction",
            p(" You can test SHAMAN with the dataset from", a("[Tap et al. 2015]",href="http://www.ncbi.nlm.nih.gov/pubmed/26235304"),
              ", which is available", a("here",target="_blank",href="Alimintest.zip"),"."),
            p("The zip archive contains 4 different files :", br(),
              "- the otu count matrix : Alimintest_otu_table.csv,", br(),
              "- the otu annotation table : Alimintest_otu_table.csv,", br(),
              "- the experimental design : Alimintest_target.csv,", br(),
              "- the contrast table : Alimintest_contrasts.csv."),
            p("Two groups of person follow two  strict diet periods that involve the intake of 40g following 10g of fiber per day, or 10g of fiber after a 40g fiber intake period :"),
            img(src = "tutorial/FigS1.png",height = 400, width = 700),
            p("The 16S rRNA (V3 - V4 regions) from fece samples was sequenced at time stamp : 2, 3, 4 and 5.", br(),
              "The analysis will consider the different impact of the different fiber intake and the comparison to patient metabolic data.")),
            tabPanel("1-Load 16S data",
            p("The first step consist to load the count matrix and the annotation table as follow :"),
            p("- Select 'Upload your data'", br(),
              "- Load the counts table :",br(), img(src = "tutorial/tutorial_upload1.png"),br(),
              "- Load the annotation table :", br(), img(src = "tutorial/tutorial_upload2.png"),br(),
              "- When successfully loaded, the tables are accessible as bellow :",br(),
              img(src = "tutorial/tutorial_upload3.png"),img(src = "tutorial/tutorial_upload4.png"))),
            tabPanel("2-Differential analysis",
            p("The second step consist to load the experimental design and the contrast table as follow :"),
            p("- Select 'Run differential analysis'",br(),
              "- Load the target file :",br(),img(src = "tutorial/tutorial_target.png"),br(),
              "- Identify the taxonomy level where the analysis will be performed :",br(),img(src = "tutorial/tutorial_target1.png"),br(),
              "- Identify the interactions :",br(),img(src = "tutorial/tutorial_target2.png"),br(),
              "- Run the analysis :",br(),img(src = "tutorial/tutorial_target3.png"),br(),
              "- When successfully loaded, the tables are accessible as bellow :",br(),img(src = "tutorial/tutorial_target4.png")),
            p("- Finaly, load the contrast file :",br(),img(src = "tutorial/tutorial_contraste.png"),br(),
              "- Contrasts can be visualized as follow :",br(),img(src = "tutorial/tutorial_contraste1.png"))),
            tabPanel("3-Diagnostic plots",
            p("'Diagnostic plots' section provides several visualization to control the analysis",br(),
              "- Total mapped read count",br(),img(src="tutorial/tutorial_total_barplot.png"),br(),
              "- Nul barplot count",br(),img(src="tutorial/tutorial_nul_barplot.png"),br(),
              "- Maj taxonomy count",br(),img(src="tutorial/tutorial_maj_taxonomy.png"),br(),
              "- Density of counts",br(),img(src="tutorial/tutorial_density.png"),br(),
              "- Size factors vs total number of reads",br(),img(src="tutorial/tutorial_size_factor.png"),br(),
              "- PCA",br(),img(src="tutorial/tutorial_pca.png"),br(),
              "- PCOA",br(),img(src="tutorial/tutorial_pcoa.png"),br(),
              "- Clustering",br(),img(src="tutorial/tutorial_clustering.png"))),
            tabPanel("4-Differential analysis results",
            img(src = "tutorial/tutorial_table.png")),
            tabPanel("5-Visualization",
                     p("'Diagnostic plots' section provides several visualization to control the analysis",br(),
                     "- Barplot",br(),img(src="tutorial/tutorial_barplot.png"),br(),
                     "- Heatmap",br(),img(src="tutorial/tutorial_heatmap.png"),br(),
                     "- Boxplot",br(),img(src="tutorial/tutorial_boxplot.png"),br(),
                     "- Diversity",br(),img(src="tutorial/tutorial_diversity.png"),br(),
                     "- Rarefaction",br(),img(src="tutorial/tutorial_rarefaction.png"))))
214
    ),
Stevenn Volant's avatar
Stevenn Volant committed
215
    
stevenn's avatar
stevenn committed
216
217
218
    tabItem(tabName = "Upload",
            tags$style(type='text/css', ".well { max-width: 20em; }"),
            fluidRow(
Stevenn Volant's avatar
Stevenn Volant committed
219
220
221
222
223
224
225
              column(width=3,valueBoxOutput("valueErrorPercent",width=NULL)),
              column(width=3,infoBoxOutput("InfoErrorCounts",width=NULL)),
              column(width=3,infoBoxOutput("InfoErrorTaxo",width=NULL))
            ),
            br(),
             fluidRow(
                box(title="Select your file format",width = 3,status = "success", solidHeader = TRUE,collapsible = FALSE,
stevenn's avatar
stevenn committed
226
                  selectInput("FileFormat","",c("Counts table & taxonomy"="fileCounts","BIOM file"="fileBiom"),selected="fileCounts")
Stevenn Volant's avatar
Stevenn Volant committed
227
                ),
stevenn's avatar
stevenn committed
228
                conditionalPanel(condition="input.FileFormat=='fileCounts'",
Stevenn Volant's avatar
Stevenn Volant committed
229
                  box(title="Load the counts table",width = 3,height = "250px", status = "primary", solidHeader = TRUE,collapsible = FALSE,
stevenn's avatar
stevenn committed
230
                    fileInput('fileCounts', h6(strong('Select your file')),width="100%")
stevenn's avatar
stevenn committed
231
                  ),
stevenn's avatar
stevenn committed
232
                  
Stevenn Volant's avatar
Stevenn Volant committed
233
234
235
236
237
238
239
                  box(title="Load the taxonomy file",width = 3,height = "250px", status = "primary", solidHeader = TRUE,collapsible = FALSE,
                      fluidRow(
                        column(width=6,radioButtons("TypeTaxo",h6(strong("Format:")),c("Table"="Table","RDP"="RDP"))),
                        column(width=6,
                             conditionalPanel(condition="input.TypeTaxo=='RDP'",numericInput("RDP_th",h6(strong("Threshold:")),0.5,step=0.01,min=0.01,max=1))
                        )
                      ),
stevenn's avatar
stevenn committed
240
                      fileInput('fileTaxo', h6(strong('Select your file')),width="100%")
stevenn's avatar
stevenn committed
241
242
243
244
245
                  )
                  
                ),
                
                conditionalPanel(condition="input.FileFormat=='fileBiom'",
Stevenn Volant's avatar
Stevenn Volant committed
246
                                 box(title="Load the BIOM file",width = 3,height = "250px", status = "primary", solidHeader = TRUE,collapsible = FALSE,
stevenn's avatar
stevenn committed
247
248
249
                                     fileInput('fileBiom', h5(strong('Select your file')),width="100%")
                                 )           
                )
Stevenn Volant's avatar
Stevenn Volant committed
250
             ),
stevenn's avatar
stevenn committed
251
252
253
              column(12,uiOutput("TabBoxData"))

              
Stevenn Volant's avatar
Stevenn Volant committed
254
          
stevenn's avatar
stevenn committed
255
256
    ),
    
stevenn's avatar
stevenn committed
257
258
259
  #### Statistical analysis

    tabItem(tabName = "RunDiff",
stevenn's avatar
stevenn committed
260
261
262
            fluidRow(
              column(width=3,infoBoxOutput("RowTarget",width=NULL)),
              column(width=3,infoBoxOutput("InfoTaxo",width=NULL)),
263
264
              column(width=3,infoBoxOutput("InfoDESeq",width=NULL)),
              column(width=3,conditionalPanel(condition="input.RunDESeq>=1",infoBoxOutput("InfoContrast",width=NULL)))
Stevenn Volant's avatar
Stevenn Volant committed
265
            ),            
stevenn's avatar
stevenn committed
266
            fluidRow(
stevenn's avatar
stevenn committed
267
268
269
              column(width=5,
                box(title="Experimental design",width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed = FALSE,
                  fluidRow(
stevenn's avatar
stevenn committed
270
271
                    column(width=6,fileInput('fileTarget', h6(strong('Select your target file')),width="100%")),
                    column(width=6,uiOutput("SelectTaxo"))
stevenn's avatar
stevenn committed
272
273
274
275
                  ),
                  fluidRow( 
                    column(width=6,uiOutput("SelectInterestVar")),
                    column(width=6,uiOutput("SelectInteraction2")),
276
                    column(width=6,uiOutput("RunButton"))
stevenn's avatar
stevenn committed
277
                  )
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
278
279
280
                ),
                uiOutput("BoxTarget"),
                uiOutput("BoxCountsMerge")
stevenn's avatar
stevenn committed
281
              ),
stevenn's avatar
stevenn committed
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
       
              column(width=7,
                box(title="Options",width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed = TRUE,
                  fluidRow(
                    column(width=3,
                      radioButtons("TransType",h6(strong("Type of transformation")),choices = c("VST"="VST","rlog"="rlog"))
                    ), 
                    column(width=3,
                      radioButtons("IndFiltering",h6(strong("Independent filtering")),choices = c("True"=TRUE,"False"=FALSE))
                    ),
                    column(width=3,
                      radioButtons("AdjMeth",h6(strong("p-value adjustement")),choices = c("BH"="BH","BY"="BY"))
                    ),
                    column(width=3,
                      textInput("AlphaVal",h6(strong("Level of significance")),value=0.05)
                    )
                  ),
                  fluidRow(
                    column(width=3,
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
301
                           radioButtons("CooksCutOff",h6(strong("Cooks cut-off")),choices = c("Auto"='Auto',"No cut-off"=Inf,"Value"="val")),
stevenn's avatar
stevenn committed
302
303
304
305
306
307
308
309
310
                           conditionalPanel(condition="input.CooksCutOff=='val'",textInput("CutOffVal",h6("Cut-off:"),value=0))
                    ),
                    
                    column(width=3,
                      radioButtons("locfunc",h6(strong("Local function")),choices = c("Median"="median","Shorth"="shorth"))
                    ),  
                    column(width=3,
                      radioButtons("fitType",h6(strong("Relationship")),choices = c("Parametric"="parametric","Local"="local"))
                    ),
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
311
312
313
314
315
                    column(width=3,
                      conditionalPanel(condition="input.FileFormat=='fileCounts' && input.TypeTaxo=='RDP'",
                        sliderInput("ThreshProba",h6(strong("Probability threshold (rdp annotation)")),min=0.01, max=1,value=0.5,step = 0.01)
                      )
                    ),
stevenn's avatar
stevenn committed
316
317
                    column(width=3,uiOutput("RefSelect"))
                  )
stevenn's avatar
stevenn committed
318
                ),
319
320
                fluidRow(
                column(width=8,
Stevenn Volant's avatar
Stevenn Volant committed
321
#                        uiOutput("contrastBox"),
322
323
324
325
326
327
                       uiOutput("contrastBoxAdvanced")
                       ),
                column(width=4,
                       uiOutput("contrastDefined")
                )  
                ) 
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
328
              )
stevenn's avatar
stevenn committed
329
330
            )
            
stevenn's avatar
stevenn committed
331
    ),
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
332
    tabItem(tabName = "DiagPlotTab",
stevenn's avatar
stevenn committed
333
            fluidRow(
stevenn's avatar
stevenn committed
334
              column(width=9,
Stevenn Volant's avatar
Stevenn Volant committed
335
336
337
                     
                plotOutput("PlotDiag",height="100%"),
                br(),
338
                conditionalPanel(condition="input.DiagPlot=='SfactorsVStot'",
stevenn's avatar
stevenn committed
339
340
341
                  box(title = "Size factors",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= TRUE,
                    dataTableOutput("SizeFactTable")
                  )
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
342
343
344
345
                ),
                  
                conditionalPanel(condition="input.DiagPlot=='pcaPlot'",
                                 box(title = "Eigen values",  width = 6, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= FALSE,
Stevenn Volant's avatar
Stevenn Volant committed
346
                                    plotOutput("PlotEigen",height="100%")
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
347
348
349
350
                                 )
                ),
                conditionalPanel(condition="input.DiagPlot=='pcoaPlot'",
                                 box(title = "Eigen values",  width = 6, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= FALSE,
Stevenn Volant's avatar
Stevenn Volant committed
351
                                     plotOutput("PlotpcoaEigen",height="100%")
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
352
                                 )
stevenn's avatar
stevenn committed
353
                )
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
354
                
stevenn's avatar
stevenn committed
355
356
              ),
              column(width=3,
357
358
359
                box(title = "Select your plot",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = FALSE,collapsed= FALSE,
                  selectInput("DiagPlot","",c("Total barplot"="barplotTot","Nul barplot"="barplotNul",
                                              "Maj. taxonomy"="MajTax", "Density"="densityPlot", 
360
                                              "Size factors VS total"="SfactorsVStot", "PCA"="pcaPlot", "PCoA"="pcoaPlot","Clustering" = "clustPlot"))
361
                    ),
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
362
                box(title = "Options",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= FALSE,
363
                    
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
364
365
366
                    conditionalPanel(condition="input.DiagPlot!='Sfactors' && input.DiagPlot!='SfactorsVStot' ",uiOutput("VarIntDiag")),
                    conditionalPanel(condition="input.DiagPlot=='pcoaPlot'",
                                     h5(strong("Select the modalities")),
Stevenn Volant's avatar
Stevenn Volant committed
367
368
369
370
371
372
                                     uiOutput("ModMat")
                    ),
                    conditionalPanel(condition="input.DiagPlot=='pcoaPlot' || input.DiagPlot=='SERE' || input.DiagPlot=='clustPlot' ",
                      selectInput("DistClust","Distance",c("euclidean", "SERE"="sere", "canberra", "bray", "kulczynski", "jaccard", 
                                                         "gower", "altGower", "morisita", "horn","mountford","raup","binomial",
                                                         "chao","cao","mahalanobis"),selected="jaccard")
373
                    )
Stevenn Volant's avatar
Stevenn Volant committed
374
                    
stevenn's avatar
stevenn committed
375
376
377
378
379
380
381
#                 conditionalPanel(condition="input.RadioPlotBi=='Nuage'",selectInput("ColorBiplot", "Couleur",choices=c("Bleue" = 'blue',"Rouge"='red',"Vert"='green', "Noir"='black'),width="50%")),
#                 sliderInput("TransAlphaBi", "Transparence",min=1, max=100, value=50, step=1),
#                 conditionalPanel(condition="input.RadioPlotBi!='Nuage'", radioButtons("SensGraphBi","Sens du graph",choices=c("Vertical"="Vert","Horizontal"="Hori"))),
#                 conditionalPanel(condition="input.RadioPlotBi=='box'", checkboxInput("CheckAddPointsBoxBi","Ajouter les données",value=FALSE)) 
               ),
                box(
                  title = "Appearance",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= TRUE,
382
383
384
385
#                     conditionalPanel(condition="input.DiagPlot=='Sfactors'",
#                                      h6(strong("Layout")),
#                                      numericInput("NbcolSfactors", h6("Columns"),min=1,value = NA)
#                     ),
Stevenn Volant's avatar
Stevenn Volant committed
386
387
                  sliderInput("heightDiag", "Height",min=100,max=1500,value = 500,step =10),

Amine  GHOZLANE's avatar
Amine GHOZLANE committed
388
389
390
391
392
393
394
395
396
397
398
399
                  conditionalPanel(condition="input.DiagPlot=='clustPlot'",
                                   h6(strong("Layout")),
                                   selectInput("typeHculst", h6("Type"),c("Horizontal"="hori","Fan"="fan")),
                                   checkboxInput("colorHC","Add color",value=TRUE)
                  ),
                  conditionalPanel(condition="input.DiagPlot=='pcoaPlot'",  selectInput("labelPCOA","Label type",c("Group", "Sample"),selected="Group"),
                                   #checkboxInput("colorgroup","Same color for the group",value=FALSE),
                                   sliderInput("cexcircle", "Circle size",min=0,max=2,value = 0.9,step =0.1),
                                   sliderInput("cexpoint", "Point size",min=0,max=3,value = 1,step =0.1),
                                   sliderInput("cexstar", "Star height",min=0,max=1,value = 0.95,step =0.1)
                                   
                  ),
Stevenn Volant's avatar
Stevenn Volant committed
400
401
402
403
404
405
406
407
408
409
410
                  conditionalPanel(condition="input.DiagPlot=='SfactorsVStot'",
                    checkboxInput("addLabelSFact","Add label",FALSE)
                  ),

                  fluidRow(
                    column(width=12, p(strong("Size"))),
                    column(width=6,sliderInput("cexTitleDiag", h6("Axis"),min=0,max=5,value = 1,step =0.1)),
                    conditionalPanel(condition="input.DiagPlot=='SfactorsVStot' || input.DiagPlot=='pcaPlot'",column(width=6,sliderInput("cexLabelDiag", h6("Points"),min=0,max=5,value = 1,step =0.1)))
                    
                  )

Amine  GHOZLANE's avatar
Amine GHOZLANE committed
411
412
#                   sliderInput("widthDiag", "width",min=100,max=1500,value = 1000,step =10)
                 
stevenn's avatar
stevenn committed
413

stevenn's avatar
stevenn committed
414
415
416
417
418
419
420
421
422
423
424
425
426
427
              ),
              box(title = "Export",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= TRUE,
                  selectInput("Exp_format",h5(strong("Export format")),c("png"="png","pdf"="pdf","eps"="eps","svg"="svg"), multiple = FALSE),
                  fluidRow(
                  column(width=6,numericInput("heightDiagExport", "Height (in px)",min=100,max=NA,value = 500,step =1)),
                  column(width=6,numericInput("widthDiagExport", "Width (in px)",min=100,max=NA,value = 500,step =1))
                  ),
                  downloadButton("exportdiag", "Export")
                  
#                   downloadButton("exportPDFdiag", "Download pdf"),
#                   downloadButton("exportPNGdiag", "Download png"),
#                   downloadButton("exportEPSdiag", "Download eps"),
#                   downloadButton("exportSVGdiag", "Download svg"),
                  
stevenn's avatar
stevenn committed
428
429
430
              )
            )
        )
stevenn's avatar
stevenn committed
431
432
433
    ),
    tabItem(tabName = "TableDiff",
            fluidRow(
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
434
435
436
437
438
              column(width=9,uiOutput("TabBoxDataDiff")),
              column(width=3,
                     box(title = "Select your contrast",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= FALSE,
                         selectInput("ContrastList_table",h6(strong("Contrast list")),"", multiple = FALSE),
                         htmlOutput("ContrastOverviewTable")
439
440
441
442
443
                     ),
                     box(title = "Export",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= TRUE,
                         fluidRow(column(width=12,selectInput("WhichExportTable", "Select the table to export",c("Complete"="Complete","Up"="Up","Down"="Down")))),
                         uiOutput("ExportTableButton")   
                     )
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
444
445
            )
            )
stevenn's avatar
stevenn committed
446
447
448
449
    ),
  
  #### Data Viz
  
450
  tabItem(tabName = "Visu",
stevenn's avatar
stevenn committed
451
          fluidRow(
452
            column(width=9,
Stevenn Volant's avatar
Stevenn Volant committed
453
                   uiOutput("plotVisu")
454
            ),
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
455
456

            column(width=3,
457
458
459
460
461
462
463
464
465
466
467
468
469
              box(title = "Select your plot",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = FALSE,collapsed= FALSE,
                  selectizeInput("PlotVisuSelect","",c("Barplot"="Barplot","Heatmap"="Heatmap","Boxplot"="Boxplot","Diversity"="Diversity","Rarefaction"="Rarefaction"),selected = "Barplot")
              ),
              
              
              
              ########################################################################
              ###
              ###               Options Visualization
              ###
              ########################################################################
              
              
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
470
              box(title = "Options",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= FALSE,
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
                  
                  conditionalPanel(condition="input.PlotVisuSelect!='Rarefaction'",
                                    uiOutput("VarIntVisu")
                  ),
                  conditionalPanel(condition="input.PlotVisuSelect!='Rarefaction' && input.PlotVisuSelect!='Diversity'",
                                   radioButtons("SelectSpecifTaxo","Select the features",c("Most abundant"="Most","All"="All", "Differential features" = "Diff"))
                  ),
                  conditionalPanel(condition="input.PlotVisuSelect!='Rarefaction' && input.PlotVisuSelect!='Diversity' && input.SelectSpecifTaxo=='Diff'",
                                   selectizeInput("ContrastList_table_Visu","",choices = "", multiple = FALSE)
                  ),
                  conditionalPanel(condition="input.PlotVisuSelect!='Rarefaction' && input.PlotVisuSelect!='Diversity'",
                                   uiOutput("TaxoToPlotVisu")
                  ),

                  
                  
                ##################
                ## BARPLOT
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Barplot'",
                                 selectizeInput(inputId = "CountsOrProp",label = h6(strong("Type of data")),choices = c("Proportions" = "prop", "Counts" = "counts"),selected = "prop")
                ),
                
                
                ##################
                ## HEATMAP
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Heatmap'",
                                 selectizeInput(inputId = "HeatMapType",label = h6(strong("Type of data")),choices = c("Counts" = "Counts", "Log2FC" = "Log2FC"),selected = "Counts")                                 
                ),
                conditionalPanel(condition="input.PlotVisuSelect=='Heatmap' && input.HeatMapType=='Log2FC'",
                                 selectizeInput("ContrastList_table_FC",h6(strong("Contrasts (Min = 2)")),choices = "", multiple = TRUE)
                ),
                conditionalPanel(condition="input.PlotVisuSelect=='Heatmap'",
                                 selectizeInput(inputId = "scaleHeatmap",label = h6(strong("Scale:")),choices = c("None" = "none", "Rows" = "row", "Column" = "col"),selected = "none")
                                 
                ),
                
                ##################
                ## BOXPLOT
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Boxplot'",
                                 selectizeInput("typeDataBox",h6(strong("Type of data")),c("Log2"="Log2","Relative"="Relative"))
                ),
                
                ##################
                ## DIVERSITY
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Diversity'",
                                 selectizeInput("WhichDiv",h6(strong("Diversity")),c('Alpha','Beta','Gamma'),selected  = c('Alpha','Beta','Gamma'),multiple=TRUE),
                                 checkboxInput("AddBoxplotDiv","AddBoxplot",value=FALSE)
                ),
                conditionalPanel(condition="input.PlotVisuSelect=='Diversity' && input.AddBoxplotDiv",
                                 uiOutput("SelectVarBoxDiv")
                )
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
526
              ),
527
528
529
530
531
532
533
534
535
              
              
              ########################################################################
              ###
              ###               Appearance Visualization
              ###
              ########################################################################
              
              
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
536
              box(title = "Appearance",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= TRUE,
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
537
                sliderInput("heightVisu", h6(strong("Height")),min=100,max=4000,value = 800),
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
538

Stevenn Volant's avatar
Stevenn Volant committed
539
540

                
541
542
543
544
                ##################
                ## BOXPLOT
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Boxplot'",
Stevenn Volant's avatar
Stevenn Volant committed
545
                                 radioButtons("ScaleBoxplot","Scales",c("Fixed"="fixed","Free"="free"),inline=TRUE),
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
                                 checkboxInput("CheckAddPointsBox","Add points",value=TRUE)
                ),
                
                ##################
                ## DIVERSITY
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Diversity'",
                                 sliderInput("sizePointGlobal", h6(strong("Points size")),min=0.5,max=10,value =3,step=0.5),
                                 checkboxInput("SplitVisuGlobal","Split diversity",value=FALSE)
                ),
                
                ##################
                ## HEATMAP
                ##################
                conditionalPanel(condition="input.PlotVisuSelect=='Heatmap' && input.HeatMapType!='Log2FC'",
Stevenn Volant's avatar
Stevenn Volant committed
561
                                 selectInput("colors", label=h6(strong("Gradient of colors")),choices = c("green-blue", "blue-white-red", "purple-white-orange", "red-yellow-green"),selected = "blue-white-red")
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
                ),
                conditionalPanel(condition="input.PlotVisuSelect=='Heatmap'",
                                 fluidRow(
                                   column(width=12,h6(strong("Labels options"))),
                                   column(width=6,sliderInput("LabelSizeHeatmap", h6("Size"),min=0.1,max=2,value = 0.7,step = 0.1)),
                                   column(width=6,sliderInput("LabelOrientHeatmap", h6("Orientation"),min=0,max=90,value = 0,step = 5)),
                                   column(width=6,sliderInput("LabelColOffsetHeatmap", h6("Column offset"),min=0,max=4,value = 0,step = 0.5)),
                                   column(width=6,sliderInput("LabelRowOffsetHeatmap", h6("Row offset"),min=0,max=4,value = 0,step = 0.5)),
                                   
                                   column(width=12,h6(strong("Margins options"))),
                                   column(width=6,sliderInput("rightMargin", h6("Right"),min=0,max=20,value = 6,step = 1)),
                                   column(width=6,sliderInput("lowerMargin", h6("Lower"),min=0,max=20,value = 6,step = 1))
                                 )
                ),              
                
                ##################
                ## ALL
                ##################
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
580

581
582
583
584
                conditionalPanel(condition="input.PlotVisuSelect!='Rarefaction'",
                                 radioButtons(inputId = "SensPlotVisu",label = h6(strong("Orientation")),choices = c("Vertical" = "Vertical", "Horizontal" = "Horizontal"),selected = "Vertical",inline = TRUE)
                )
                
Stevenn Volant's avatar
Stevenn Volant committed
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
              ),
              box(title = "Export",  width = NULL, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= TRUE,
                  ##################
                  ## BARPLOT
                  ##################
                  conditionalPanel(condition="input.PlotVisuSelect=='Barplot'",
                                   radioButtons("positionBarPlot","Position",c("Grouped"="fill","Stacked"="dodge"),inline=TRUE)
                  ),
                  
                  selectInput("Exp_format_Visu",h5(strong("Export format")),c("png"="png","pdf"="pdf","eps"="eps","svg"="svg"), multiple = FALSE),
                  fluidRow(
                    column(width=6,numericInput("heightVisuExport", "Height (in px)",min=100,max=NA,value = 500,step =1)),
                    column(width=6,numericInput("widthVisuExport", "Width (in px)",min=100,max=NA,value = 500,step =1))
                  ),
                  downloadButton("exportVisu", "Export")
                  
601
              )
Stevenn Volant's avatar
Stevenn Volant committed
602
              
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
603
604
605
            )
          )
  ),
606
  
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
607
608
609



stevenn's avatar
stevenn committed
610
611
  #### Krona plot
  tabItem(tabName = "Krona",
Amine  GHOZLANE's avatar
Amine GHOZLANE committed
612
613
614
 
         fluidRow(
            column(width=3,tableOutput("krona") )
Stevenn Volant's avatar
Stevenn Volant committed
615
 #includeHTML("file:///home/aghozlan/workspace/SHAMAN_App/www/text.krona.html")
stevenn's avatar
stevenn committed
616
617
          )  
  )       
stevenn's avatar
stevenn committed
618
              
stevenn's avatar
stevenn committed
619
620
             )
     
stevenn's avatar
stevenn committed
621
622
623
    
    
  )
stevenn's avatar
stevenn committed
624

Stevenn Volant's avatar
logo    
Stevenn Volant committed
625
626
627
628
  ## Logo SHAMAN
  dbHeader <- dashboardHeader(title = "SHAMAN")
  dbHeader$children[[2]]$children <-  tags$a(tags$img(src='akuaku.png',height='40',width='50',style="margin:5px 0 5px 0;",align='left'), tags$h3("SHAMAN",style="font-family:Purisa; margin:15px 25px 5px 0;color:white;"))
  
stevenn's avatar
stevenn committed
629
# Put them together into a dashboardPage
Stevenn Volant's avatar
logo    
Stevenn Volant committed
630
631
632
633
634
  dashboardPage(skin="blue",
    dbHeader,
    sidebar,
    body
  )
stevenn's avatar
stevenn committed
635
636