Commit 77909298 authored by svolant's avatar svolant
Browse files

add tree (unifrac) + stressplot

parent d3d4f423
......@@ -14,10 +14,21 @@ if(!require(shinydashboard)){
if(!require(rjson)){
install.packages('rjson')
library(rjson)
}
if(!require(ape)){
install.packages('ape')
library(ape)
}
if(!require(GUniFrac)){
install.packages('GUniFrac')
library(GUniFrac)
}
if(!require(devtools)){
install.packages('devtools')
library(devtools)
}
if (!require(psych)) {
......@@ -132,6 +143,14 @@ if (!require(scales)) {
install.packages('scales')
library(scales)
}
if (!require(phytools)) {
install.packages('phytools')
library(phytools)
}
# if(!require(plotly)){
# install.packages("plotly")
# library(plotly)
......
......@@ -252,7 +252,6 @@ GetData_venn <-function(input,SelContrast,BaseContrast,resDiff)
}
}
print(df.tot)
return(list(res=res,df.tot=df.tot))
}
......@@ -201,6 +201,19 @@ CheckContrast <- function(contrastFile,dds)
}
## Check the format of the tree file (for Unifrac distance)
CheckTreeFile <- function(tree)
{
Error = NULL
Warning = NULL
if(!is.phylo(tree) && is.null(Error)){Error = "The loaded file is not a phylogenetic tree"; tree = NULL}
if(!is.rooted(tree) && is.null(Error) ){Warning = "The tree has been rooted using midpoint method"; tree = midpoint.root(tree)}
return(list(Error=Error,Warning=Warning,tree=tree))
}
## Get the percentage of annotated OTU
PercentAnnot <- function(counts,taxo)
{
......@@ -295,6 +308,7 @@ GetCountsMerge <- function(input,dataInput,taxoSelect,target,design)
## Counts and taxo tables
CT = dataInput$counts
taxo = dataInput$taxo
namesTaxo = colnames(taxo)
# save(CT,target,taxo,file="testMerge.RData")
## Select cols in the target
......@@ -304,6 +318,7 @@ GetCountsMerge <- function(input,dataInput,taxoSelect,target,design)
## Get the normalization variable (normalization can be done according to this variable)
VarNorm = input$VarNorm
if(length(ind)==length(labels))
{
if(input$TypeTable == "MGS"){
......@@ -328,8 +343,19 @@ GetCountsMerge <- function(input,dataInput,taxoSelect,target,design)
CT_noNorm = CT
RowProd = sum(apply(CT_noNorm,1,prod))
merged_table = merge(CT, taxo, by="row.names")
CT = as.data.frame(merged_table[,2: (dim(CT)[2]+1)])
taxo = as.data.frame(merged_table[,(dim(CT)[2]+2):dim(merged_table)[2]])
rownames(CT) = merged_table[,1]
rownames(taxo) = merged_table[,1]
colnames(taxo) = namesTaxo
#ordOTU = order(rownames(taxo))
counts_annot = CT
## Create the dds object
dds <- DESeqDataSetFromMatrix(countData=CT, colData=target, design=design,ignoreRank=TRUE)
#save(dds,file="testdds.RData")
if(is.null(VarNorm)){
## Counts normalisation
......@@ -375,14 +401,14 @@ GetCountsMerge <- function(input,dataInput,taxoSelect,target,design)
# Only interesting OTU
# merged_table = merge(CT, taxo[order(rownames(CT)),], by="row.names")
merged_table = merge(CT, taxo, by="row.names")
CT = as.data.frame(merged_table[,2: (dim(CT)[2]+1)])
taxo = as.data.frame(merged_table[,(dim(CT)[2]+2):dim(merged_table)[2]])
rownames(CT) = merged_table[,1]
rownames(taxo) = merged_table[,1]
#ordOTU = order(rownames(taxo))
counts_annot = CT
# merged_table = merge(CT, taxo, by="row.names")
# CT = as.data.frame(merged_table[,2: (dim(CT)[2]+1)])
# taxo = as.data.frame(merged_table[,(dim(CT)[2]+2):dim(merged_table)[2]])
#
# rownames(CT) = merged_table[,1]
# rownames(taxo) = merged_table[,1]
# #ordOTU = order(rownames(taxo))
# counts_annot = CT
# ordOTU = order(rownames(taxo))
# indOTU_annot = which(rownames(CT)%in%rownames(taxo))
# counts_annot = CT[indOTU_annot[ordOTU],]
......
This diff is collapsed.
......@@ -49,10 +49,10 @@ TableDiff_print <- function(input,BaseContrast,resDiff, info = NULL)
### ??????????
res.name <- data.frame(Id = rownames(result[[name]]),
FC = round(2^(result[[name]][, "log2FoldChange"]), 3),
FoldChange = format(2^(result[[name]][, "log2FoldChange"]),scientific = TRUE),
log2FoldChange = round(result[[name]][, "log2FoldChange"], 3),
pvalue = result[[name]][, "pvalue"],
padj = result[[name]][, "padj"])
pvalue_adjusted = result[[name]][, "padj"])
complete.name <- merge(complete.name, res.name, by = "Id")
mcols.add <- data.frame(Id = rownames(counts(dds)),
dispGeneEst = mcols(dds)$dispGeneEst, dispFit = mcols(dds)$dispFit,
......@@ -66,16 +66,16 @@ TableDiff_print <- function(input,BaseContrast,resDiff, info = NULL)
mcols.add$outlier <- ifelse(mcols(dds)$maxCooks > cooksCutoff, "Yes", "No")
complete.name <- merge(complete.name, mcols.add, by = "Id")
complete[[name]] <- complete.name
complete.name=complete.name[order(complete.name$padj),]
significant.name <- complete.name[which(complete.name$padj <= alpha & complete.name$betaConv), ]
up.name <- complete.name[which(complete.name$padj <= alpha & complete.name$betaConv & complete.name$log2FoldChange>=0.0), ]
complete.name=complete.name[order(complete.name$pvalue_adjusted),]
significant.name <- complete.name[which(complete.name$pvalue_adjusted <= alpha & complete.name$betaConv), ]
up.name <- complete.name[which(complete.name$pvalue_adjusted <= alpha & complete.name$betaConv & complete.name$log2FoldChange>=0.0), ]
## useless order
#up.name <- up.name[order(up.name$padj), ]
down.name <- complete.name[which(complete.name$padj<=alpha & complete.name$betaConv & complete.name$log2FoldChange<=0.0), ]
#down.name <- down.name[order(down.name$padj), ]
#up.name <- up.name[order(up.name$pvalue_adjusted), ]
down.name <- complete.name[which(complete.name$pvalue_adjusted<=alpha & complete.name$betaConv & complete.name$log2FoldChange<=0.0), ]
#down.name <- down.name[order(down.name$pvalue_adjusted), ]
name <- gsub(" ", "", name)
keep <- c("Id","baseMean","FC","log2FoldChange","padj")
keep <- c("Id","baseMean","FoldChange","log2FoldChange","pvalue_adjusted")
# complete.complete[, paste(name, keep, sep = ".")] <- complete.name[, keep]
}
#return(list(complete=complete.name,up=up.name,down=down.name))
......
......@@ -33,7 +33,7 @@ GetInteraction2 <- function(target,VarInt)
## Get the dds object of DESeq2
Get_dds_object <- function(input,counts,target,design,normFactorsOTU,CT_noNorm,CT_Norm)
Get_dds_object <- function(input,counts,target,design,normFactorsOTU,CT_noNorm,CT_Norm,tree=NULL)
{
dds <- DESeqDataSetFromMatrix(countData=counts, colData=target, design=design,ignoreRank = TRUE)
sizeFactors(dds) = normFactorsOTU
......@@ -65,7 +65,7 @@ Get_dds_object <- function(input,counts,target,design,normFactorsOTU,CT_noNorm,C
}
countsNorm = counts(dds, normalized = TRUE)
#save(dds,file="dds.RData")
return(list(dds = dds,raw_counts=counts,countsNorm=countsNorm,target=target,design=design,normFactors = normFactorsOTU,CT_noNorm=CT_noNorm,CT_Norm=CT_Norm))
}
......
......@@ -646,6 +646,7 @@ CreateTableTree <- function(input,resDiff,CT_Norm_OTU,taxo_table,VarInt,ind_taxo
}
if (!is.null(val) && !is.null(list.val))
{
# save(val,list.val,VarInt,target,Taxonomy,counts,ind_taxo,file="testTree.RData")
## Create the variable to plot
targetInt = as.data.frame(target[,VarInt])
......@@ -669,19 +670,21 @@ CreateTableTree <- function(input,resDiff,CT_Norm_OTU,taxo_table,VarInt,ind_taxo
if(nrow(counts_tmp)>0 && nrow(targetInt)>0)
{
counts_tmp_combined = aggregate(t(counts_tmp),by=list(targetInt$AllVar),mean)
rownames(counts_tmp_combined) = counts_tmp_combined$Group.1
namesCounts = counts_tmp_combined$Group.1
rownames(counts_tmp_combined) = namesCounts
counts_tmp_combined = as.matrix(counts_tmp_combined[,-1])
}
## Ordering the counts
if(!is.null(counts_tmp_combined))
{
MeanCounts = apply(counts_tmp_combined,2,mean)
ord = order(MeanCounts,decreasing=TRUE)
counts_tmp_combined = as.matrix(counts_tmp_combined[,ord])
}
# if(!is.null(counts_tmp_combined))
# {
# MeanCounts = apply(counts_tmp_combined,2,mean)
# ord = order(MeanCounts,decreasing=TRUE)
# counts_tmp_combined = as.matrix(counts_tmp_combined[,ord])
#
# }
}
}
......@@ -707,7 +710,7 @@ Plot_Visu_Tree <- function(input,resDiff,CT_Norm_OTU,taxo_table)
## Get Input for BarPlot
VarInt = input$VisuVarInt
ind_taxo = input$selectTaxoPlot
nodeFind = input$TaxoTree
## Removed column with only 1 modality
ind = which(apply(taxo_table,2,FUN = function(x) length(unique(x[!is.na(x)])))==1)
if(length(ind)>0) taxo_table = taxo_table[,-ind]
......@@ -716,11 +719,17 @@ Plot_Visu_Tree <- function(input,resDiff,CT_Norm_OTU,taxo_table)
if(nrow(CT_Norm_OTU)>0 && !is.null(CT_Norm_OTU) && nrow(taxo_table)>0 && !is.null(taxo_table))
{
tmp = CreateTableTree(input,resDiff,CT_Norm_OTU,taxo_table,VarInt)
if(nrow(tmp$counts)>0 && !is.null(tmp$counts) && !is.null(input$TaxoTree))
{
save(tmp,taxo_table,nodeFind,file="testTree.RData")
merge_dat = merge(taxo_table,round(t(tmp$counts)),by="row.names")
colnames(merge_dat)[1] = "OTU"
levels <- c("OTU", colnames(taxo_table))
conditions <- rownames(tmp$counts)
......
......@@ -95,6 +95,50 @@ shinyServer(function(input, output,session) {
## Unifrac File (tree)
dataInputTree <-reactive({
data = NULL
inFile <- input$fileTree
if (is.null(inFile)) return(NULL)
try(read.tree(inFile$datapath)->data,silent=T)
CheckTree = CheckTreeFile(data)
data = CheckTree$tree
return(list(data=data,Error = CheckTree$Error,Warning = CheckTree$Warning))
})
# Infobox Tree (Unifrac)
output$InfoTreePhylo_box <- renderInfoBox({
input$fileTree
tree_tmp = isolate(dataInputTree())
tree = tree_tmp$data
res = infoBox(h6(strong("Phylogenetic tree")), subtitle = h6(strong("Load the phylogenetic tree (optional)")) ,color = "light-blue",width=NULL,fill=TRUE, icon = icon("upload"))
if(!is.null(tree)){
if(!is.null(isolate(input$fileTree))){
res = infoBox(h6(strong("Phylogenetic tree")), subtitle = h6("The phylogenetic has been loaded") ,color = "green",width=NULL,fill=TRUE, icon = icon("thumbs-o-up"))
if(!is.null(tree_tmp$Warning)){
res = infoBox(h6(strong("Phylogenetic tree")), subtitle = h6(tree_tmp$Warning) ,color = "orange",width=NULL,fill=TRUE, icon = icon("warning"))
}
if(!is.null(tree_tmp$Error)){
res = infoBox(h6(strong("Phylogenetic tree")), subtitle = h6(tree_tmp$Error),color = "red",width=NULL,fill=TRUE, icon = icon("thumbs-o-down"))
}
}
}
return(res)
})
## Input data
dataInput <-reactive({
......@@ -518,12 +562,14 @@ shinyServer(function(input, output,session) {
names = colnames(data)
## Change the rownames
if(!TRUE%in%duplicated(data[,1])) rownames(data)=as.character(data[,1])
if(!TRUE%in%duplicated(data[,1])) rownames(data)=gsub(pattern = "-",replacement = ".",as.character(data[,1]))
## Keep only the row which are in the count table
ind = which(rownames(data)%in%colnames(counts))
data = as.data.frame(data[ind,])
colnames(data) = names
## Replace "-" by "."
if(ncol(data)>1 && nrow(data)>1){
ind_num = which(sapply(as.data.frame(data[,-1]),is.numeric)) + 1
......@@ -534,6 +580,7 @@ shinyServer(function(input, output,session) {
}
if(length(ind_num)==0){data = as.data.frame(apply(data,2,gsub,pattern = "-",replacement = "."))}
}
values$TargetWorking = as.data.frame(data)
# ind_sel = Target_selection()
# if(length(ind))
......@@ -1395,7 +1442,10 @@ shinyServer(function(input, output,session) {
input$RunDESeq
resDiff = isolate(ResDiffAnal())
Plot_diag(input,resDiff)
## Phylogenetic tree
tree = dataInputTree()$data
Plot_diag(input,resDiff,tree)
},height = reactive(input$heightDiag), width = reactive(ifelse(input$modifwidthDiag,input$widthDiag,"auto")))
......@@ -1404,9 +1454,11 @@ shinyServer(function(input, output,session) {
output$PC1_sel <-renderUI ({
res = NULL
resDiff = ResDiffAnal()
## Phylogenetic tree
tree = dataInputTree()$data
if(!is.null(resDiff)){
pca_tab = Plot_diag(input,resDiff,getTable=TRUE)
pca_tab = Plot_diag(input,resDiff,tree,getTable=TRUE)
if(!is.null(pca_tab))
{
pc_axes = paste("PC",seq(1,ncol(pca_tab)),sep="")
......@@ -1419,9 +1471,11 @@ shinyServer(function(input, output,session) {
output$PC2_sel <-renderUI ({
res = NULL
resDiff = ResDiffAnal()
## Phylogenetic tree
tree = dataInputTree()$data
if(!is.null(resDiff)){
pca_tab = Plot_diag(input,resDiff,getTable=TRUE)
pca_tab = Plot_diag(input,resDiff,tree,getTable=TRUE)
if(!is.null(pca_tab))
{
pc_axes = paste("PC",seq(1,ncol(pca_tab)),sep="")
......@@ -1431,20 +1485,33 @@ shinyServer(function(input, output,session) {
return(res)
})
output$PlotnmdsStress <- renderPlot({
resDiff = ResDiffAnal()
## Phylogenetic tree
tree = dataInputTree()$data
Plot_diag_nmdsStress(input,resDiff,tree)
},height = 400)
output$PlotpcoaEigen <- renderPlot({
resDiff = ResDiffAnal()
Plot_diag_pcoaEigen(input,resDiff)
## Phylogenetic tree
tree = dataInputTree()$data
Plot_diag_pcoaEigen(input,resDiff,tree)
},height = 400)
output$PlotEigen <- renderPlot({
resDiff = ResDiffAnal()
Plot_diag_Eigen(input,resDiff)
},height =400)
SizeFactor_table <-reactive({
res = ResDiffAnal()
return(t(data.frame(Factor=res$normFactors)))
......@@ -1453,11 +1520,13 @@ shinyServer(function(input, output,session) {
output$ResPermaTestBox <- renderUI({
resDiff = ResDiffAnal()
resTest = Perma_test_Diag(input,resDiff)
## Phylogenetic tree
tree = dataInputTree()$data
resTest = Perma_test_Diag(input,resDiff,tree)
resBox = NULL
print(resTest)
if(!is.null(resDiff) && !is.null(resTest))
{
res = list()
......@@ -1476,6 +1545,28 @@ shinyServer(function(input, output,session) {
})
output$DistList <-renderUI ({
tree = dataInputTree()$data
ErrorTree = dataInputTree()$Error
TaxoSelect = input$TaxoSelect
res = selectInput("DistClust","Distance",c("euclidean", "SERE"="sere", "canberra", "bray", "kulczynski", "jaccard",
"gower", "altGower", "morisita", "horn","mountford","raup","binomial",
"chao","cao","mahalanobis"),selected="canberra")
## Add the unifrac distance
if(!is.null(tree) && !is.null(input$fileTree) && is.null(ErrorTree) && TaxoSelect == "OTU/Gene")
{
res = selectInput("DistClust","Distance",c("euclidean", "SERE"="sere", "canberra", "bray", "kulczynski", "jaccard",
"gower", "altGower", "morisita", "horn","mountford","raup","binomial",
"chao","cao","mahalanobis","Unifrac"),selected="canberra")
}
return(res)
})
output$SizeFactTable <- DT::renderDataTable(
SizeFactor_table(),
options = list(scrollX=TRUE,searching = FALSE, processing=FALSE
......@@ -1537,8 +1628,11 @@ shinyServer(function(input, output,session) {
else if(input$Exp_format=="pdf") pdf(file, width = input$widthDiagExport/96, height = input$heightDiagExport/96)
else if(input$Exp_format=="eps") postscript(file, width = input$widthDiagExport/96, height = input$heightDiagExport/96)
else if(input$Exp_format=="svg") svg(file, width = input$widthDiagExport/96, height = input$heightDiagExport/96)
resDiff = ResDiffAnal()
tree = isolate(dataInputTree()$data)
print(Plot_diag(input,ResDiffAnal()))
print(Plot_diag(input,resDiff,tree))
dev.off()
}
)
......@@ -1927,7 +2021,7 @@ shinyServer(function(input, output,session) {
## Export Diversitytable in .csv
output$ExportDiversitytable <- downloadHandler(
filename = function() {
if(input$sepdiversity) 'SHAMAN_Diversity.tsv'
if(input$sepdiversity=="\t") 'SHAMAN_Diversity.tsv'
else 'SHAMAN_Diversity.csv'
},
content = function(file){
......
......@@ -249,7 +249,8 @@ body <- dashboardBody(
fluidRow(
column(width=3,valueBoxOutput("valueErrorPercent",width=NULL)),
column(width=3,infoBoxOutput("InfoErrorCounts",width=NULL)),
column(width=3,infoBoxOutput("InfoErrorTaxo",width=NULL))
column(width=3,infoBoxOutput("InfoErrorTaxo",width=NULL)),
column(width=3,infoBoxOutput("InfoTreePhylo_box",width=NULL))
),
br(),
fluidRow(
......@@ -259,6 +260,7 @@ body <- dashboardBody(
checkboxInput("NoTaxoFile","No taxonomy table",value=FALSE)
)
),
conditionalPanel(condition="input.FileFormat=='fileCounts'",
box(title="Load the count table",width = 3,height = "260px", status = "primary", solidHeader = TRUE,collapsible = FALSE,
fluidRow(
......@@ -283,11 +285,6 @@ body <- dashboardBody(
fileInput('fileTaxo', h6(strong('Select your file')),width="100%"),
tags$script('$( "#fileTaxo" ).on( "click", function() { this.value = null; });')
)
),
fluidRow(column(width=3,
uiOutput("InfoCountsFile"),
uiOutput("InfoTaxoFile")
)
)
),
......@@ -295,9 +292,22 @@ body <- dashboardBody(
box(title="Load the BIOM file",width = 3, status = "primary", solidHeader = TRUE,collapsible = FALSE,
fileInput('fileBiom', h5(strong('Select your file')),width="100%"),
tags$script('$( "#fileBiom" ).on( "click", function() { this.value = null; });')
),
fluidRow(uiOutput("InfoBIOM"))
)
),
box(title="Load phylogenetic tree (optional)",width = 3, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed = TRUE,
fileInput('fileTree', h6(strong('Select your file (tree)')),width="100%"),
tags$script('$( "#fileTree" ).on( "click", function() { this.value = null; });')
),
fluidRow(column(width=3,
uiOutput("InfoCountsFile"),
uiOutput("InfoTaxoFile"),
uiOutput("InfoBIOM")
)
)
),
column(12,uiOutput("TabBoxData"))
......@@ -310,7 +320,6 @@ body <- dashboardBody(
tabItem(tabName = "RunDiff",
fluidRow(
column(width=3,valueBoxOutput("RowTarget",width=NULL)),
#column(width=3,infoBoxOutput("RowTarget",width=NULL)),
column(width=3,infoBoxOutput("InfoTaxo",width=NULL)),
column(width=3,infoBoxOutput("InfoDESeq",width=NULL)),
column(width=3,infoBoxOutput("InfoContrast",width=NULL))
......@@ -457,6 +466,11 @@ body <- dashboardBody(
plotOutput("PlotpcoaEigen",height="100%")
)
),
conditionalPanel(condition="input.DiagPlot=='nmdsPlot'",
box(title = "Stress plot", width = 6, status = "primary", solidHeader = TRUE,collapsible = TRUE,collapsed= FALSE,
plotOutput("PlotnmdsStress",height="100%")
)
),
conditionalPanel(condition="input.DiagPlot=='pcoaPlot' || input.DiagPlot=='nmdsPlot'",
uiOutput("ResPermaTestBox")
)
......@@ -487,10 +501,13 @@ body <- dashboardBody(
)
),
conditionalPanel(condition="input.DiagPlot=='pcoaPlot' || input.DiagPlot=='nmdsPlot' || 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="canberra")
)
uiOutput("DistList")
),
conditionalPanel(condition="input.DistClust=='Unifrac' && (input.DiagPlot=='pcoaPlot' || input.DiagPlot=='nmdsPlot' || input.DiagPlot=='clustPlot')",
column(width=12,
selectInput("DistClustUnifrac","Which unifrac distance ?",c("Weighted UniFrac"="WU", "Unweighted UniFrac"="UWU", "Variance adjusted weighted UniFrac"="VAWU"))
)
)
# conditionalPanel(condition="input.RadioPlotBi=='Nuage'",selectInput("ColorBiplot", "Couleur",choices=c("Bleue" = 'blue',"Rouge"='red',"Vert"='green', "Noir"='black'),width="50%")),
......@@ -498,6 +515,7 @@ body <- dashboardBody(
# 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,
# conditionalPanel(condition="input.DiagPlot=='Sfactors'",
......@@ -514,6 +532,7 @@ body <- dashboardBody(
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),
......@@ -521,6 +540,7 @@ body <- dashboardBody(
sliderInput("cexstar", "Star height",min=0,max=1,value = 0.95,step =0.1)
),
conditionalPanel(condition="input.DiagPlot=='SfactorsVStot'",
checkboxInput("addLabelSFact","Add label",FALSE)
),
......@@ -529,7 +549,6 @@ body <- dashboardBody(
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' || input.DiagPlot=='pcoaPlot' || input.DiagPlot=='nmdsPlot' ",column(width=6,sliderInput("cexLabelDiag", h6("Points"),min=0,max=5,value = 1,step =0.1)))
)
# sliderInput("widthDiag", "width",min=100,max=1500,value = 1000,step =10)
......@@ -566,7 +585,7 @@ body <- dashboardBody(
column(width=8,selectInput("WhichExportTable", "Select the table to export",c("Significant"="Significant","Complete"="Complete","Up"="Up","Down"="Down"))),
column(width=4,selectInput("sepexpdiff", "Separator:", c("Tab" = "\t", "Comma" = ",", "Semicolon" = ";")))
),
uiOutput("ExportTableButton")
uiOutput("ExportTableButton")
)
)
)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment