#This file contains the output objects of the server
#############################################
########### main panel outputs ##############
#############################################
########################################## Home tab main panel
server_output <- function(input, output, server_env) {
output$files <- renderPrint({
if(!is.null(input$multiplepath) && !input$multiplepath){
if(server_env$path()==""){
print("Please Select or provide path to a directory")
}else{
path<-server_env$path()
print(path)
getFiles(path)
}
}else{
if(!is.null(input$multiplepath)){
if(input$medecom_path=="Loaded as object"){
medecom_set=input$medecom_path
}else{
medecom_set=getFiles(input$medecom_path)
}
if(input$annC_path=="Loaded as object"){
annC=input$annC_path
}else{
annC=getFiles(input$annC_path)
}
if(input$annS_path=="Loaded as object"){
annS=input$annS_path
}else{
annS=getFiles(input$annS_path)
}
if(input$ref_meth_path=="Loaded as object"){
ref_meth=ref_meth_path
}else{
ref_meth=getFiles(input$ref_meth_path)
}
files<-list("MeDeCom"=medecom_set,
"CpG"=annC,
"Sample"=annS,
"RefMeth"=ref_meth
)
print("MeDeCom Set:")
print(files$MeDeCom)
print("--------------------------------------------------------------------------------")
print("CpG Annotations:")
print(files$CpG)
print("--------------------------------------------------------------------------------")
print("Sample Annotations:")
print(files$Sample)
print("--------------------------------------------------------------------------------")
print("Reference Methylome:")
print(files$RefMeth)
}
}
})
getFiles<-function(path){
return(list.files(sub("/[^/]+$", "", path), pattern=sub('.*\\/', '', path)))
}
output$AnalysisRunDescriptionHeader <- renderUI({
server_env$df()
if (MEDSET_FLAG) {
wellPanel(#strong("Analysis Run:"),
h4(server_env$getAnalysisName()))
} else{
wellPanel(strong(server_env$check[[2]]))
}
})
output$AnalysisRunParameterTable <- renderTable({
server_env$df()
if (MEDSET_FLAG) {
withProgress(
message = 'Loading datasets in progress\n',
detail = 'This may take a while...',
value = 0,
style = getShinyOption('old'),
{
output <- list()
print("Starting table")
results <- server_env$dataset()
print("...............................MeDeComSet...........................")
print(
"...............................MeDeComSet_ende..........................."
)
for (name in names(ANALYSIS_META_INFO[["analysis_params"]])) {
incProgress(1 / length(names(ANALYSIS_META_INFO[["analysis_params"]])))
display_name <-
ANALYSIS_META_INFO[["analysis_params"]][name]
if (name %in% names(results@parameters)) {
val <- results@parameters[[name]]
if (name %in% c("lambdas")) {
val <- sort(val)
}
if (is.integer(val)) {
val <- as.character(val)
} else{
if (name %in% names(ANALYSIS_META_INFO[["param_extensions"]])) {
val_ext <- ANALYSIS_META_INFO[["param_extensions"]][[name]][val]
if (!is.na(val_ext)) {
val <- val_ext
}
}
}
} else if (name %in% "NO_OF_SAMPLES") {
val <- as.character(ncol(server_env$getMethData()))
} else if (name %in% "REFERENCE_PROFILES") {
val <- paste(colnames(server_env$getTrueT()), collapse = ", ")
} else{
val = ""
}
if (length(val) == 0) {
val = ""
}
if (is.recursive(val) || val != "") {
output[[name]] <- c(display_name, paste(val, collapse = ", "))
}
}
table <- do.call("rbind", output)
rownames(table) <- NULL
colnames(table) <- c("Parameter", "Value")
table
}
)
} else{
}
}, width='100%', include.rownames = FALSE, sanitize.text.function=identity)
##################################### K selection main panel
output$RMSEvsKplot <- renderPlot({
if (MEDSET_FLAG) {
server_env$doKselectionPlot()
}
})
######################## Lambda selection main panel
output$performancePanel <- renderUI({
if (!is.null(input$performanceMode) &&
!is.null(input$lambdaMin) && !is.null(input$lambdaMax)) {
if (input$performanceMode == "lineplots") {
list(
plotOutput('lineplot',
height = "800px",
width = "600px"),
br(),
downloadLink("lineplotPDF", "PDF")
)
} else if (input$performanceMode == "table") {
DT::dataTableOutput('performanceTable')
}
}
})
output$lineplot <- renderPlot({
server_env$doLambdaPlot()
})
######################## LMC main panel
output$componentsPanel <- renderUI({
K <- input$K_3
if (!is.null(input$componentPlotType)) {
if (input$componentPlotType == "mds plot" ||
input$componentPlotType == "dendrogram") {
h = "500px"
w = "500px"
} else if (input$componentPlotType == "heatmap") {
h = "500px"
w = sprintf("%dpx", max(500, 50 * as.integer(K)))
} else if (input$componentPlotType %in% c("scatterplot all", "scatterplot matching", "scatterplot avg matching")) {
h0 = 300
w0 = 300
ncol = min(3, as.integer(K))
nrow = (as.integer(K) %/% min(3, as.integer(K))) + as.integer(as.integer(K) %% min(3, as.integer(K)) >
0)
h = sprintf("%dpx", h0 * nrow)
w = sprintf("%dpx", h0 * ncol)
} else if (input$componentPlotType == "locus plot") {
h = 500
w = 1000
} else{
h0 = 300
w0 = 300
trueT <- server_env$getTrueT()
ncol <- min(3, ncol(trueT))
nrow <- min(2,
ncol(trueT) %/% ncol + as.integer(ncol(trueT) %% ncol > 0))
h = sprintf("%dpx", h0 * nrow)
w = sprintf("%dpx", h0 * ncol)
}
list(
plotOutput('componentPlot',
height = h,
width = w),
br(),
downloadLink("componentPlotPDF", "PDF")
)
}
})
output$componentPlot <- renderPlot({
server_env$doComponentPlot()
})
######################## Proportion Main Panel
output$proportionplot <- renderPlot({
if (!is.null(input$propPlotType)) {
server_env$doProportionPlot()
}
})
######################## Meta-Analysis Panel
output$metaAnalysisPanel <- renderUI({
if(!is.null(input$analysisType)){
if (input$analysisType == "compare LMCs") {
list(
plotOutput(
'comparisonPlot',
height = if (input$comparativePlotType == "dendrogram")
h
else
1.2 * h,
width = if (input$comparativePlotType == "dendrogram")
2 * w
else
2.5 * w
),
br()
)
} else if (input$analysisType == "differential methylation") {
list(plotOutput('diffCGPlot'),
downloadLink("diffCGPlotPDF", "PDF"),
DT::dataTableOutput('diffCGTable')
)
}
else if((input$analysisType == "Enrichments")){
if (input$diffOutputType == "GO Enrichments"){
list(plotOutput("metaPlot"),
if(!all(is.na(server_env$getGOEnrichmenttable()[[input$lmc_go]]))){
downloadLink("metaPlotPDF", "GO Plot PDF")
}else{
br()
},
DT::dataTableOutput('goEnrichementTable'))
}else if (input$diffOutputType == "LOLA Enrichments") {
list(plotOutput("metaPlot"),
if(!all(is.na(server_env$getLOLAEnrichmenttable()[[input$lmc_lola]]))){
downloadLink("metaPlotPDF", "Lola Plot PDF")
}else{
br()
},
DT::dataTableOutput('lolaEnrichementTable')
)
}else{
br()
}
} else if(input$analysisType=="Trait Association"){
list(plotOutput('TraitAssociation'),
downloadLink("TraitAssociationPDF", "PDF"))
}else{
br()
}
}
})
output$downloadPanel<-renderUI({
wellPanel(
h4("Input Data"),
{sprintf("Target data (intensities) for CpG subset # %s",input$cg_group_6)},
downloadLink('inputDataIntMat', label = "(.MAT)", class = NULL),
br(),
{sprintf("Target data (ratios) for CpG subset # %s",input$cg_group_6)},
downloadLink('inputDataMat', label = "(.MAT)", class = NULL),
br(),
{sprintf("CpG subset # %s (with respect to the RnBeads HM450 annotation)",input$cg_group_6)},
downloadLink('inputCGsubset', label = "(.MAT)", class = NULL),
br(),
{sprintf("Sample information")},
downloadLink('inputPheno', label = "(.MAT)", class = NULL),
br(),
{sprintf("Sample subset")},
downloadLink('inputSampleSubset', label = "(.MAT)", class = NULL),
br(),
{sprintf("Reference profiles (T^star) for CpG subset # %s ",input$cg_group_6)},
downloadLink('inputRefDataMat', label = "(.MAT)", class = NULL),
br(),
if(!is.null(server_env$getTrueA())) {sprintf("Known proportion matrix (A^star)")},
if(!is.null(server_env$getTrueA())) downloadLink('inputTrueA',label="(.MAT)"),
hr(),
h4("Results"),
{ sprintf("Results for CpG subset # %s , k %s, lambda %g",
input$cg_group_6, input$K_6, server_env$dataset()@parameters$lambdas[as.integer(input$lambda_6)])},
downloadLink('outputResults', label = "(.MAT)", class = NULL)
)
})
output$inputDataIntMat<-downloadHandler(
filename=function(){
gr_lists<-server_env$getRuns()[[input$analysisrun]][["cg_subsets"]]
group_names<-sapply(gr_lists, paste, collapse="_")
sprintf("input_data_M_U_cggroup_%s.mat",group_names[as.integer(input$cg_group)])
},
content=function(con){
ind<-getCGsubset()
#writeMat(con, D=getMethData()[ind,])
system(sprintf("cp %s %s", file.path(getRuns()[[input$analysisrun]][["data.dir"]], "MandU.mat") ,con))
}
)
output$TraitAssociation<-renderPlot({
server_env$doTraitAssociation()
})
output$diffCGPlot<-renderPlot({
server_env$doDiffCGPlot()
})
output$metaPlot<-renderPlot({
server_env$doMetaPlot()
})
output$comparisonPlot <- renderPlot({
server_env$doComparisonPlot()
})
output$phenotypeModelPlot<-renderPlot({
server_env$doPhenotypeModelPlot();
})
#############################################
############# Sidebar outputs ###############
#############################################
########################################### Sidebar outputs for Home tab
server_output_home(input, output, server_env)
########################################### Sidebar outputs for K selection tab
server_output_k_selec(input, output, server_env)
######################################## Sidebar outputs for lambda selection tab
server_output_l_selec(input, output, server_env)
#################################################### Sidebar output LMCs panel
server_output_lmc(input,output, server_env)
#################################################### Sidebar output Proportions panel
server_output_proportion(input, output, server_env)
################################################Sidebar output Meta Analysis panel
server_output_meta(input, output, server_env)
################################################Sidebar output Downloads panel
server_output_downloads(input, output, server_env)
}
server_output_home<-function(input, output, server_env){
output$multipleFiles<-renderUI({
if(inherits(PATH$MEDECOM_SET, "MeDeComSet")){
medecom<-"Loaded as object"
}else{
medecom<-PATH$MEDECOM_SET
}
if(is.data.frame(PATH$ANN_C)){
annc <- "Loaded as object"
}else{
annc<-PATH$ANN_C
}
if(is.data.frame(PATH$ANN_S)){
anns<-"Loaded as object"
}else{
anns<-PATH$ANN_S
}
if(is.matrix(PATH$REF_METH) || is.data.frame(PATH$REF_METH)){
ref_meth<-"Loaded as object"
}else{
ref_meth<-PATH$REF_METH
}
out<-list(
textInput("medecom_path", label="MeDeCom Set", value=medecom),
textInput("annC_path", label="CpG Annotations", value=annc),
textInput("annS_path", label="Sample Annotations", value=anns),
textInput("ref_meth_path", label="Reference Methylome", value=ref_meth)
)
})
}
server_tab_uniformity_keeper<-function(input, output, session, server_env){
###################### Handle CpG Subset
observeEvent(input$cg_group, server_env$Selected$CG<-input$cg_group)
observeEvent(input$cg_group_2, server_env$Selected$CG<-input$cg_group_2)
observeEvent(input$cg_group_3, server_env$Selected$CG<-input$cg_group_3)
observeEvent(input$cg_group_4, server_env$Selected$CG<-input$cg_group_4)
observeEvent(input$cg_group_5, server_env$Selected$CG<-input$cg_group_5)
observeEvent(input$cg_group_6, server_env$Selected$CG<-input$cg_group_6)
observeEvent(server_env$Selected$CG, updateSelectInput(session, "cg_group", selected=server_env$Selected$CG))
observeEvent(server_env$Selected$CG, updateSelectInput(session, "cg_group_2", selected=server_env$Selected$CG))
observeEvent(server_env$Selected$CG, updateSelectInput(session, "cg_group_3", selected=server_env$Selected$CG))
observeEvent(server_env$Selected$CG, updateSelectInput(session, "cg_group_4", selected=server_env$Selected$CG))
observeEvent(server_env$Selected$CG, updateSelectInput(session, "cg_group_5", selected=server_env$Selected$CG))
observeEvent(server_env$Selected$CG, updateSelectInput(session, "cg_group_6", selected=server_env$Selected$CG))
######################### Handle Lambdas
observeEvent(input$lambda, server_env$Selected$LAMBDA<-input$lambda)
observeEvent(input$lambda_3, server_env$Selected$LAMBDA<-input$lambda_3)
observeEvent(input$lambda_4, server_env$Selected$LAMBDA<-input$lambda_4)
observeEvent(input$lambda_5, server_env$Selected$LAMBDA<-input$lambda_5)
observeEvent(input$lambda_6, server_env$Selected$LAMBDA<-input$lambda_6)
observeEvent(server_env$Selected$LAMBDA, updateSelectInput(session, "lambda", selected=server_env$Selected$LAMBDA))
observeEvent(server_env$Selected$LAMBDA, updateSelectInput(session, "lambda_3", selected=server_env$Selected$LAMBDA))
observeEvent(server_env$Selected$LAMBDA, updateSelectInput(session, "lambda_4", selected=server_env$Selected$LAMBDA))
observeEvent(server_env$Selected$LAMBDA, updateSelectInput(session, "lambda_5", selected=server_env$Selected$LAMBDA))
observeEvent(server_env$Selected$LAMBDA, updateSelectInput(session, "lambda_6", selected=server_env$Selected$LAMBDA))
######################### Handle Ks
observeEvent(input$K_2, server_env$Selected$K<-input$K_2)
observeEvent(input$K_3, server_env$Selected$K<-input$K_3)
observeEvent(input$K_4, server_env$Selected$K<-input$K_4)
observeEvent(input$K_5, server_env$Selected$K<-input$K_5)
observeEvent(input$K_6, server_env$Selected$K<-input$K_6)
observeEvent(server_env$Selected$K, updateSelectInput(session, "K_2", selected=server_env$Selected$K))
observeEvent(server_env$Selected$K, updateSelectInput(session, "K_3", selected=server_env$Selected$K))
observeEvent(server_env$Selected$K, updateSelectInput(session, "K_4", selected=server_env$Selected$K))
observeEvent(server_env$Selected$K, updateSelectInput(session, "K_5", selected=server_env$Selected$K))
observeEvent(server_env$Selected$K, updateSelectInput(session, "K_6", selected=server_env$Selected$K))
observeEvent(input$dir, {
volumes<-c(computer = ("/"),
home = paste('/home/', CURRENT_USER, "/", sep = "")
)
pat<-parseDirPath(volumes,server_env$dir())
ret<-paste(pat, "/", sep="")
updateTextInput(session, "text_dir", value = ret)
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.