diff --git a/wilson-basic/.DS_Store b/wilson-basic/.DS_Store new file mode 100644 index 0000000..800b9dd Binary files /dev/null and b/wilson-basic/.DS_Store differ diff --git a/wilson-basic/app.R b/wilson-basic/app.R new file mode 100755 index 0000000..f5dcfb2 --- /dev/null +++ b/wilson-basic/app.R @@ -0,0 +1,506 @@ +library(shiny) +library(DT) +library(shinydashboard) +library(shinythemes) +library(colourpicker) +library(wilson) + +# +# Data options +# +# Specify the input file here +wilson_input <- "data/prmt5_example.se" + +# +# UI options +# +# width of the side panel +wilson_sidepanelwidth <- 2 + +# width of the main panel +wilson_mainpanelwidth <- 10 + +# +# Server options +# +# Set to false to disable images from the wilson package +wilson_images_enabled <- TRUE + +# Allow the server to print messages to the console +wilson_logging <- TRUE + +# Redirect stdout to stderr when run on a server. This will print all output into the log file. +wilson_redirect_stdout <- FALSE + +# Enable logging of reactive events, which can be viewed later with the showReactLog function. This incurs a substantial performance penalty and should not be used in production. +wilson_enable_reactive_event_logging <- FALSE + +# Enable automatic reload of files that change during the runtime. All connected Shiny sessions will be reloaded. This incurs a substantial performance penalty and should not be used in production. +wilson_enable_auto_reload <- FALSE + +# Customize the patterns for files that shiny will monitor for automatic reloading +wilson_auto_reload_pattern <- ".*\\.(r|se|R)$" +# wilson_auto_reload_pattern <- ".*\\.(r|html?|js|css|png|jpe?g|gif)$" + +# Sets the auto reload polling interval in milliseconds +wilson_auto_reload_interval <- 3000 + +# +# WIlsON application logic +# +if (wilson_logging) options(shiny.trace = TRUE) +if (wilson_enable_reactive_event_logging) options(shiny.reactlog=TRUE) +if (wilson_images_enabled) shiny::addResourcePath(prefix = "wilson_www", directoryPath = "inst/www/") +if (wilson_enable_auto_reload) { + options(shiny.autoreload = TRUE) + options(shiny.autoreload.pattern = wilson_auto_reload_pattern) + options(shiny.autoreload.interval = wilson_auto_reload_interval) +} + +# Redirect stdout to stderr when running on server. All output will end up in the log file +if (wilson_redirect_stdout & !interactive() ) { + sink(stderr(), type="output") +} + +# Load and parse data +table <- parser(wilson_input) +data <- table$data +metadata <- table$metadata + +# Define the UI +ui <- dashboardPage(header = dashboardHeader(disable = TRUE), sidebar = dashboardSidebar(disable = TRUE), + body = dashboardBody( + tags$style(type="text/css", "body {padding-top: 60px;}"), + tags$style(type="text/css", + "#filter1, + #filter_geneviewer_static, + #filter_geneviewer_interactive, + #filter_pca, + #filter_global_cor_heatmap, + #filter_simple_scatter_static, + #filter_simple_scatter_interactive, + #filter_duoscatter_static, + #filter_duoscatter_interactive, + #filter_heatmap_static, + #filter_heatmap_interactive, + #filter_h1, + #filter_h_geneviewer_static, + #filter_h_geneviewer_interactive, + #filter_h_pca, #filter_h_global_cor_heatmap, + #filter_h_simple_scatter_static, + #filter_h_simple_scatter_interactive, + #filter_h_duoscatter_static, + #filter_h_duoscatter_interactive, + #filter_h_heatmap_static, + #filter_h_heatmap_interactive {font-size: 10px}"), + navbarPage(title = "WIlsON", theme = shinytheme("sandstone"), position = "fixed-top", + # introduction ------------------------------------------------------------ + navbarMenu( + title = "Introduction", + start(), + format() + ), + # feature Selection ------------------------------------------------------- + tabPanel(title = "Feature Selection", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter1"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h1"), + tags$h3("Global Parameters"), + uiOutput("features") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, + tabPanel(title = "Data", + featureSelectorUI("featureSelector") + ), + tabPanel(title = "Highlight", + featureSelectorUI("featureSelector_h") + ) + ) + ) + ) + ), + # geneview --------------------------------------------------------------- + navbarMenu( + title = "Geneview", + tabPanel(title = "static", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_geneviewer_static"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_geneviewer_static"), + tags$h3("Global Parameters") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "GeneViewer", + tabPanel(title = "GeneViewer", + geneViewUI("geneviewer_static") + ), + tabPanel(title = "Data", + dataTableOutput("geneviewer_static_table") + ) + ) + ) + ) + ), + tabPanel(title = "interactive", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_geneviewer_interactive"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_geneviewer_interactive"), + tags$h3("Global Parameters") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "GeneViewer", + tabPanel(title = "GeneViewer", + geneViewUI("geneviewer_interactive") + ), + tabPanel(title = "Data", + dataTableOutput("geneviewer_interactive_table") + ) + + ) + ) + ) + ) + ) + , + # data reduction ---------------------------------------------------------- + navbarMenu( + title = "Data Reduction", + tabPanel(title = "PCA", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_pca"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_pca"), + tags$h3("Global Parameters") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "PCA", id = "pca_tabs", + tabPanel(title = "PCA", + pcaUI("pca") + ), + tabPanel(title = "Data", + uiOutput("pca_data_tabs") + ) + ) + ) + ) + ), + tabPanel(title = "Global Correlation Heatmap", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_global_cor_heatmap"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_global_cor_heatmap"), + tags$h3("Global Parameters") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Global correlation heatmap", + tabPanel(title = "Global correlation heatmap", + global_cor_heatmapUI("glob_cor_heat") + ), + tabPanel(title = "Data", + dataTableOutput("glob_cor_heat_data") + ) + ) + ) + ) + ) + ), + # scatterplot ------------------------------------------------------------- + navbarMenu( + title = "Scatterplot", + "Static", + tabPanel( + title = "Simple Scatter", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_simple_scatter_static"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_simple_scatter_static"), + tags$h3("Global Parameters"), + markerUI("marker_simple_scatter_static") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Simple Scatter", + tabPanel(title = "Simple Scatter", + scatterPlotUI("simple_scatter_static") + ), + tabPanel(title = "Data", + dataTableOutput("simple_scatter_static_table") + ) + ) + ) + ) + ), + tabPanel( + title = "Duoscatter", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_duoscatter_static"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_duoscatter_static"), + tags$h3("Global Parameters"), + markerUI("marker_duoscatter_static") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Duoscatter", + tabPanel(title = "Data (left)", + dataTableOutput("duoscatter_static_table_1") + ), + tabPanel(title = "Duoscatter", + fluidRow( + column(width = 6, + scatterPlotUI("duoscatter_static_1") + ), + column(width = 6, + scatterPlotUI("duoscatter_static_2") + ) + ) + ), + tabPanel(title = "Data (right)", + dataTableOutput("duoscatter_static_table_2") + ) + ) + ) + ) + ), + "Interactive", + tabPanel( + title = "Simple Scatter", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_simple_scatter_interactive"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_simple_scatter_interactive"), + tags$h3("Global Parameters"), + markerUI("marker_simple_scatter_interactive") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Simple Scatter", + tabPanel(title = "Simple Scatter", + scatterPlotUI("simple_scatter_interactive") + ), + tabPanel(title = "Data", + dataTableOutput("simple_scatter_interactive_table") + ) + ) + ) + ) + ), + tabPanel( + title = "Duoscatter", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_duoscatter_interactive"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_duoscatter_interactive"), + tags$h3("Global Parameters"), + markerUI("marker_duoscatter_interactive") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Duoscatter", + tabPanel(title = "Data (left)", + dataTableOutput("duoscatter_interactive_table_1") + ), + tabPanel(title = "Duoscatter", + fluidRow( + column(width = 6, + scatterPlotUI("duoscatter_interactive_1") + ), + column(width = 6, + scatterPlotUI("duoscatter_interactive_2") + ) + ) + ), + tabPanel(title = "Data (right)", + dataTableOutput("duoscatter_interactive_table_2") + ) + ) + ) + ) + ) + ), + # heatmap ----------------------------------------------------------------- + navbarMenu( + title = "Heatmap", + tabPanel(title = "Static", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_heatmap_static"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_heatmap_static"), + tags$h3("Global Parameters") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Heatmap", + tabPanel(title = "Heatmap", + heatmapUI("heatmap_static") + ), + tabPanel(title = "Data", + dataTableOutput("heatmap_static_table") + ) + ) + ) + ) + ), + tabPanel(title = "Interactive", + sidebarLayout( + sidebarPanel(width = wilson_sidepanelwidth, + tags$h6("Selected Features"), + verbatimTextOutput("filter_heatmap_interactive"), + tags$h6("Highlighted Features"), + verbatimTextOutput("filter_h_heatmap_interactive"), + tags$h3("Global Parameters") + ), + mainPanel(width = wilson_mainpanelwidth, + tabBox(width = 12, selected = "Heatmap", + tabPanel(title = "Heatmap", + heatmapUI("heatmap_interactive", row.label = FALSE) + ), + tabPanel(title = "Data", + dataTableOutput("heatmap_interactive_table") + ) + ) + ) + ) + ) + ) + + ) + ) +) + +# Define the server function +server <- function(session, input, output) { + text <- reactive(paste(fs()$filter, collapse = "\n")) + output$filter1 <- output$filter_geneviewer_static <- output$filter_geneviewer_interactive <- output$filter_pca <- output$filter_global_cor_heatmap <- output$filter_simple_scatter_static <- output$filter_simple_scatter_interactive <- output$filter_duoscatter_static <- output$filter_duoscatter_interactive <- output$filter_heatmap_static <- output$filter_heatmap_interactive <- renderText(text()) + + text_h <- reactive(paste(fsh()$filter, collapse = "\n")) + output$filter_h1 <- output$filter_h_geneviewer_static <- output$filter_h_geneviewer_interactive <- output$filter_h_pca <- output$filter_h_global_cor_heatmap <- output$filter_h_simple_scatter_static <- output$filter_h_simple_scatter_interactive <- output$filter_h_duoscatter_static <- output$filter_h_duoscatter_interactive <- output$filter_h_heatmap_static <- output$filter_h_heatmap_interactive <- renderText(text_h()) + + # featureSelection -------------------------------------------------------- + output$features <- renderUI({ + selectInput(inputId = "selectFeatures", label = "Features to select from", choices = metadata[[1]], multiple = TRUE) + }) + + fs <- callModule(featureSelector, "featureSelector", data = data, features = reactive(input$selectFeatures), feature.grouping = metadata[, c(1,3)], step = 100) + fsh <- callModule(featureSelector, "featureSelector_h", data = reactive(fs()$data), features = reactive(input$selectFeatures), selection.default = "none") + + # geneviewer -------------------------------------------------------------- + gene_static <- callModule(geneView, "geneviewer_static", data = reactive(fs()$data), metadata = metadata, level = metadata[level != "feature"][["level"]], plot.method = "static") + gene_interactive <- callModule(geneView, "geneviewer_interactive", data = reactive(fs()$data), metadata = metadata, level = metadata[level != "feature"][["level"]], plot.method = "interactive") + + output$geneviewer_static_table <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + gene_static() + }) + + output$geneviewer_interactive_table <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + gene_interactive() + }) + + # data reduction ---------------------------------------------------------- + # pca + pca <- callModule(pca, "pca", data = reactive(fs()$data), metadata = metadata, level = metadata[level != "feature"][["level"]], entryLabel = "Ensembl gene") + + output$pca_data_tabs <- renderUI({ + tabs <- lapply(names(pca()), function(name) { + tabPanel( + title = name, + dataTableOutput(outputId = name) + ) + }) + do.call(tabsetPanel, tabs) + }) + + observe({ + if(input$pca_tabs == "Data" & !is.null(pca())){ + for(name in names(pca())) { + #local so each item get's own id, else tables will be overwritten + local({ + local_name <- name + output[[local_name]] <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), + pca()[[local_name]] + ) + }) + } + } + }) + + # global clustering heatmap + glob_cor_table <- callModule(global_cor_heatmap, "glob_cor_heat", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")]) + + output$glob_cor_heat_data <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + glob_cor_table() + }) + + # scatterplot ------------------------------------------------------------- + ## static + marker_simple_static <- callModule(marker, "marker_simple_scatter_static", highlight.labels = reactive(names(fsh()$data))) + marker_duo_static <- callModule(marker, "marker_duoscatter_static", highlight.labels = reactive(names(fsh()$data))) + + scatter_static <- callModule(scatterPlot, "simple_scatter_static", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], features = reactive(fsh()$data), markerReac = marker_simple_static, entryLabel = "Ensembl gene") + duo_static_1 <- callModule(scatterPlot, "duoscatter_static_1", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], features = reactive(fsh()$data), markerReac = marker_duo_static, entryLabel = "Ensembl gene") + duo_static_2 <- callModule(scatterPlot, "duoscatter_static_2", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], features = reactive(fsh()$data), markerReac = marker_duo_static, entryLabel = "Ensembl gene") + + output$simple_scatter_static_table <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + scatter_static() + }) + output$duoscatter_static_table_1 <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + duo_static_1() + }) + output$duoscatter_static_table_2 <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + duo_static_2() + }) + + ## interactive + marker_simple_interactive <- callModule(marker, "marker_simple_scatter_interactive", highlight.labels = reactive(names(fsh()$data))) + marker_duo_interactive <- callModule(marker, "marker_duoscatter_interactive", highlight.labels = reactive(names(fsh()$data))) + + scatter_interactive <- callModule(scatterPlot, "simple_scatter_interactive", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], features = reactive(fsh()$data), markerReac = marker_simple_interactive, entryLabel = "Ensembl gene", plot.method = "interactive") + duo_interactive_1 <- callModule(scatterPlot, "duoscatter_interactive_1", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], features = reactive(fsh()$data), markerReac = marker_duo_interactive, entryLabel = "Ensembl gene", plot.method = "interactive") + duo_interactive_2 <- callModule(scatterPlot, "duoscatter_interactive_2", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], features = reactive(fsh()$data), markerReac = marker_duo_interactive, entryLabel = "Ensembl gene", plot.method = "interactive") + + output$simple_scatter_interactive_table <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + scatter_interactive() + }) + output$duoscatter_interactive_table_1 <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + duo_interactive_1() + }) + output$duoscatter_interactive_table_2 <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + duo_interactive_2() + }) + + # heatmap ----------------------------------------------------------------- + ## static + heatmap_static_table <- callModule(heatmap, "heatmap_static", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], plot.method = "static", entryLabel = "Ensembl gene") + + output$heatmap_static_table <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + heatmap_static_table() + }) + + ## interactive + heatmap_interactive_table <- callModule(heatmap, "heatmap_interactive", data = reactive(fs()$data), types = metadata[level != "feature", c("key", "level")], plot.method = "interactive", entryLabel = "Ensembl gene") + + output$heatmap_interactive_table <- renderDataTable(options = list(pageLength = 10, scrollX = TRUE), { + heatmap_interactive_table() + }) +} + +# Run the application +shinyApp(ui = ui, server = server) diff --git a/wilson-basic/introduction/Thumbs.db b/wilson-basic/introduction/Thumbs.db new file mode 100755 index 0000000..5ceb099 Binary files /dev/null and b/wilson-basic/introduction/Thumbs.db differ diff --git a/wilson-basic/introduction/case1_1_no_filter.png b/wilson-basic/introduction/case1_1_no_filter.png new file mode 100755 index 0000000..78cf6d5 Binary files /dev/null and b/wilson-basic/introduction/case1_1_no_filter.png differ diff --git a/wilson-basic/introduction/case1_2_contrast1.png b/wilson-basic/introduction/case1_2_contrast1.png new file mode 100755 index 0000000..e48883e Binary files /dev/null and b/wilson-basic/introduction/case1_2_contrast1.png differ diff --git a/wilson-basic/introduction/case1_2_contrast2.png b/wilson-basic/introduction/case1_2_contrast2.png new file mode 100755 index 0000000..42d0bbe Binary files /dev/null and b/wilson-basic/introduction/case1_2_contrast2.png differ diff --git a/wilson-basic/introduction/case1_2_feature.png b/wilson-basic/introduction/case1_2_feature.png new file mode 100755 index 0000000..e013601 Binary files /dev/null and b/wilson-basic/introduction/case1_2_feature.png differ diff --git a/wilson-basic/introduction/case1_3_table.png b/wilson-basic/introduction/case1_3_table.png new file mode 100755 index 0000000..3225e52 Binary files /dev/null and b/wilson-basic/introduction/case1_3_table.png differ diff --git a/wilson-basic/introduction/case1_4_plot1.png b/wilson-basic/introduction/case1_4_plot1.png new file mode 100755 index 0000000..9bcdc97 Binary files /dev/null and b/wilson-basic/introduction/case1_4_plot1.png differ diff --git a/wilson-basic/introduction/case1_4_plot2.png b/wilson-basic/introduction/case1_4_plot2.png new file mode 100755 index 0000000..33cbaaf Binary files /dev/null and b/wilson-basic/introduction/case1_4_plot2.png differ diff --git a/wilson-basic/introduction/case1_4_plot3.png b/wilson-basic/introduction/case1_4_plot3.png new file mode 100755 index 0000000..1bcd009 Binary files /dev/null and b/wilson-basic/introduction/case1_4_plot3.png differ diff --git a/wilson-basic/introduction/case1_4_ui.png b/wilson-basic/introduction/case1_4_ui.png new file mode 100755 index 0000000..e655332 Binary files /dev/null and b/wilson-basic/introduction/case1_4_ui.png differ diff --git a/wilson-basic/introduction/case2_1_pvalue.png b/wilson-basic/introduction/case2_1_pvalue.png new file mode 100755 index 0000000..b9e4c97 Binary files /dev/null and b/wilson-basic/introduction/case2_1_pvalue.png differ diff --git a/wilson-basic/introduction/case2_2_pathway.png b/wilson-basic/introduction/case2_2_pathway.png new file mode 100755 index 0000000..e567130 Binary files /dev/null and b/wilson-basic/introduction/case2_2_pathway.png differ diff --git a/wilson-basic/introduction/case2_3_lineplot.png b/wilson-basic/introduction/case2_3_lineplot.png new file mode 100755 index 0000000..f127712 Binary files /dev/null and b/wilson-basic/introduction/case2_3_lineplot.png differ diff --git a/wilson-basic/introduction/case2_4_fin_subset.png b/wilson-basic/introduction/case2_4_fin_subset.png new file mode 100755 index 0000000..da8df04 Binary files /dev/null and b/wilson-basic/introduction/case2_4_fin_subset.png differ diff --git a/wilson-basic/introduction/case2_4_reorder.png b/wilson-basic/introduction/case2_4_reorder.png new file mode 100755 index 0000000..a331cb1 Binary files /dev/null and b/wilson-basic/introduction/case2_4_reorder.png differ diff --git a/wilson-basic/introduction/case2_5_lineplot.png b/wilson-basic/introduction/case2_5_lineplot.png new file mode 100755 index 0000000..a6e391d Binary files /dev/null and b/wilson-basic/introduction/case2_5_lineplot.png differ diff --git a/wilson-basic/introduction/clarion_excel.png b/wilson-basic/introduction/clarion_excel.png new file mode 100755 index 0000000..72fb482 Binary files /dev/null and b/wilson-basic/introduction/clarion_excel.png differ diff --git a/wilson-basic/introduction/clarion_excel_colored.png b/wilson-basic/introduction/clarion_excel_colored.png new file mode 100755 index 0000000..7cb4a9f Binary files /dev/null and b/wilson-basic/introduction/clarion_excel_colored.png differ diff --git a/wilson-basic/introduction/clarion_sublime.PNG b/wilson-basic/introduction/clarion_sublime.PNG new file mode 100755 index 0000000..c3b1b1f Binary files /dev/null and b/wilson-basic/introduction/clarion_sublime.PNG differ diff --git a/wilson-basic/introduction/data.png b/wilson-basic/introduction/data.png new file mode 100755 index 0000000..12584ab Binary files /dev/null and b/wilson-basic/introduction/data.png differ diff --git a/wilson-basic/introduction/example_barplot.png b/wilson-basic/introduction/example_barplot.png new file mode 100755 index 0000000..eae7d32 Binary files /dev/null and b/wilson-basic/introduction/example_barplot.png differ diff --git a/wilson-basic/introduction/example_boxplot.png b/wilson-basic/introduction/example_boxplot.png new file mode 100755 index 0000000..e5e33a2 Binary files /dev/null and b/wilson-basic/introduction/example_boxplot.png differ diff --git a/wilson-basic/introduction/example_global_corr_heatmap1.png b/wilson-basic/introduction/example_global_corr_heatmap1.png new file mode 100755 index 0000000..87539f5 Binary files /dev/null and b/wilson-basic/introduction/example_global_corr_heatmap1.png differ diff --git a/wilson-basic/introduction/example_global_corr_heatmap2.png b/wilson-basic/introduction/example_global_corr_heatmap2.png new file mode 100755 index 0000000..cf06e1c Binary files /dev/null and b/wilson-basic/introduction/example_global_corr_heatmap2.png differ diff --git a/wilson-basic/introduction/example_heatmap1.png b/wilson-basic/introduction/example_heatmap1.png new file mode 100755 index 0000000..18bb538 Binary files /dev/null and b/wilson-basic/introduction/example_heatmap1.png differ diff --git a/wilson-basic/introduction/example_heatmap2.png b/wilson-basic/introduction/example_heatmap2.png new file mode 100755 index 0000000..289d07b Binary files /dev/null and b/wilson-basic/introduction/example_heatmap2.png differ diff --git a/wilson-basic/introduction/example_heatmap3_NOT USED.png b/wilson-basic/introduction/example_heatmap3_NOT USED.png new file mode 100755 index 0000000..d76d8f2 Binary files /dev/null and b/wilson-basic/introduction/example_heatmap3_NOT USED.png differ diff --git a/wilson-basic/introduction/example_heatmap4.png b/wilson-basic/introduction/example_heatmap4.png new file mode 100755 index 0000000..ca9f69e Binary files /dev/null and b/wilson-basic/introduction/example_heatmap4.png differ diff --git a/wilson-basic/introduction/example_lineplot.png b/wilson-basic/introduction/example_lineplot.png new file mode 100755 index 0000000..f83d078 Binary files /dev/null and b/wilson-basic/introduction/example_lineplot.png differ diff --git a/wilson-basic/introduction/example_pca.png b/wilson-basic/introduction/example_pca.png new file mode 100755 index 0000000..977c47d Binary files /dev/null and b/wilson-basic/introduction/example_pca.png differ diff --git a/wilson-basic/introduction/example_pca2.png b/wilson-basic/introduction/example_pca2.png new file mode 100755 index 0000000..394e7d7 Binary files /dev/null and b/wilson-basic/introduction/example_pca2.png differ diff --git a/wilson-basic/introduction/example_scatterplot1.png b/wilson-basic/introduction/example_scatterplot1.png new file mode 100755 index 0000000..72ec86f Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot1.png differ diff --git a/wilson-basic/introduction/example_scatterplot2.png b/wilson-basic/introduction/example_scatterplot2.png new file mode 100755 index 0000000..f28f8de Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot2.png differ diff --git a/wilson-basic/introduction/example_scatterplot3.png b/wilson-basic/introduction/example_scatterplot3.png new file mode 100755 index 0000000..600daa1 Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot3.png differ diff --git a/wilson-basic/introduction/example_scatterplot4.png b/wilson-basic/introduction/example_scatterplot4.png new file mode 100755 index 0000000..b953596 Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot4.png differ diff --git a/wilson-basic/introduction/example_scatterplot5.png b/wilson-basic/introduction/example_scatterplot5.png new file mode 100755 index 0000000..eebdc2a Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot5.png differ diff --git a/wilson-basic/introduction/example_scatterplot6.png b/wilson-basic/introduction/example_scatterplot6.png new file mode 100755 index 0000000..77b9cb9 Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot6.png differ diff --git a/wilson-basic/introduction/example_scatterplot7.png b/wilson-basic/introduction/example_scatterplot7.png new file mode 100755 index 0000000..6de75ba Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot7.png differ diff --git a/wilson-basic/introduction/example_scatterplot8.png b/wilson-basic/introduction/example_scatterplot8.png new file mode 100755 index 0000000..32f89f0 Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot8.png differ diff --git a/wilson-basic/introduction/example_scatterplot9.png b/wilson-basic/introduction/example_scatterplot9.png new file mode 100755 index 0000000..4a02e9d Binary files /dev/null and b/wilson-basic/introduction/example_scatterplot9.png differ diff --git a/wilson-basic/introduction/example_violinplot.png b/wilson-basic/introduction/example_violinplot.png new file mode 100755 index 0000000..e54fa20 Binary files /dev/null and b/wilson-basic/introduction/example_violinplot.png differ diff --git a/wilson-basic/introduction/feature_selector_annotation_field.PNG b/wilson-basic/introduction/feature_selector_annotation_field.PNG new file mode 100755 index 0000000..03db965 Binary files /dev/null and b/wilson-basic/introduction/feature_selector_annotation_field.PNG differ diff --git a/wilson-basic/introduction/feature_selector_filter_ui_NOT USED.PNG b/wilson-basic/introduction/feature_selector_filter_ui_NOT USED.PNG new file mode 100755 index 0000000..8577edb Binary files /dev/null and b/wilson-basic/introduction/feature_selector_filter_ui_NOT USED.PNG differ diff --git a/wilson-basic/introduction/feature_selector_range_slider.PNG b/wilson-basic/introduction/feature_selector_range_slider.PNG new file mode 100755 index 0000000..4e01527 Binary files /dev/null and b/wilson-basic/introduction/feature_selector_range_slider.PNG differ diff --git a/wilson-basic/introduction/feature_selector_row_selector.png b/wilson-basic/introduction/feature_selector_row_selector.png new file mode 100755 index 0000000..e31669c Binary files /dev/null and b/wilson-basic/introduction/feature_selector_row_selector.png differ diff --git a/wilson-basic/introduction/feature_selector_table.png b/wilson-basic/introduction/feature_selector_table.png new file mode 100755 index 0000000..56cb697 Binary files /dev/null and b/wilson-basic/introduction/feature_selector_table.png differ diff --git a/wilson-basic/introduction/format.md b/wilson-basic/introduction/format.md new file mode 100755 index 0000000..ab25e1e --- /dev/null +++ b/wilson-basic/introduction/format.md @@ -0,0 +1,114 @@ +--- +output: html_document +--- +# Data Format +

+ CLARION: generiC fiLe formAt foR quantItative cOmparsions of high throughput screeNs +

+ CLARION is a data format especially developed to be used with WIlsON, which relies on a tab-delimited table with a metadata header to describe the following columns. It is based on the Summarized Experiment format and supports all types of data which can be reduced to features (e.g. genes, transcripts, proteins, probes) with assigned numerical values (e.g. count, score, log2foldchange, zscore, pvalue). Most result tables derived from RNA-Seq, ChIP/ATAC-Seq, Proteomics, Microarrays, and many other analyses can thus be easily reformatted to become compatible, without having to modify the code of WIlsON for each specific experiment. +

+ +

+

+ The format consists of three blocks of data with distinct structures: +

+

+

+ +
+## Header: + +

+

+

+### Parameters: +

+

+

+ +
+## Metadata: + +

+

+

+### Columns: +

+

+

+ +
+## Data: + +

+

+

diff --git a/wilson-basic/introduction/global_corr_heatmap.png b/wilson-basic/introduction/global_corr_heatmap.png new file mode 100755 index 0000000..ba2c700 Binary files /dev/null and b/wilson-basic/introduction/global_corr_heatmap.png differ diff --git a/wilson-basic/introduction/guide_button.png b/wilson-basic/introduction/guide_button.png new file mode 100755 index 0000000..ba0240b Binary files /dev/null and b/wilson-basic/introduction/guide_button.png differ diff --git a/wilson-basic/introduction/header.png b/wilson-basic/introduction/header.png new file mode 100755 index 0000000..4577fab Binary files /dev/null and b/wilson-basic/introduction/header.png differ diff --git a/wilson-basic/introduction/heatmap.png b/wilson-basic/introduction/heatmap.png new file mode 100755 index 0000000..ac6629e Binary files /dev/null and b/wilson-basic/introduction/heatmap.png differ diff --git a/wilson-basic/introduction/help_button.png b/wilson-basic/introduction/help_button.png new file mode 100755 index 0000000..cdcc938 Binary files /dev/null and b/wilson-basic/introduction/help_button.png differ diff --git a/wilson-basic/introduction/intro.html b/wilson-basic/introduction/intro.html new file mode 100755 index 0000000..7ad97c0 --- /dev/null +++ b/wilson-basic/introduction/intro.html @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+

WIlsON: Webbased Interactive Omics visualizatioN

+

+

The WIlsON app is based on a clearly defined tab-delimited input file format derived from the “summarized experiment” format called CLARION. All types of data which can be broken down to a feature with assigned numerical values can be deployed on the WIlsON server (e.g. multi-omics). A user can then generate various plots following four basic steps:

+
    +
  1. +Filter for features of interest based on categorical or numerical values (e.g. transcripts, genes, proteins, probes) +
  2. +
  3. +Select plot type +
  4. +
  5. +Adjust plot parameters +
  6. +
  7. +Render/download result +
  8. +
+

+
+

Examples

+

+
+
+
+

Basic Structure

+

+The layout of each page is fairly similar. The top bar permits selection of a plotting application while the remaining space is usually divided the following way: +

+ ### Sidebar +

+It shows the currently selected features and also sometimes global parameters depending on the plot/filter. +

+
+

Options

+

+These tabs provide access to different subsections: different plots, plot variants, filters or data tables. Tables contain the specific subset of data used for the plot. +

+
+
+

Plot area / result

+

+This part of the page will show the result of the current computation: either a plot or the data as a table. +

+
+
+

Interface

+

+The bottom interface contains most of the parameters defining the plot. +

+
+
+
+
+

Feature Selection

+

+As mentioned above to start using WIlsON the first step should be almost always to select the tab “Feature Selection” at the top of the page. This will allow to select a subset of data to be used for plotting (otherwise all features of the dataset will be plotted).
The table at the top of the “Feature Selection” page shows the currently selected features. Several tabs will be located below that permit the filtering based on annotation or numerical data available per feature.
With a click on “highlight” it is possible to create a second subset of features. The highlighted data will be used in certain plots which support highlighting (e.g. scatterplot) to either add a fixed color or exclusively display this subset of features.
After everything is filtered, please proceed to the plots which are also selected via the tabs on top. +

+
+

Table

+

+

+This is an example on how the data will be displayed after filtering. With this table you are able to browse trough the currently selected dataset. Also you may have noticed that some of the cells are truncated (‘…’): to see these data just hover over the specific cell. +

+
+
+

Filter

+

+Based on the columns content being textual or numeric, WIlsON’s featureSelector will provide a different filter module enabling an efficient way to select data. +

+
+

Textual (Annotation)

+ +

+Annotations can be filtered by clicking a dropdown menu containing all available items. Furthermore these items can be filtered by entering a search text. Use ‘Backspace’ to deselect unwanted selections. +

+
+
+

Numeric (Value)

+ +

+This filter permits to select a range of numeric values. To do so choose one of the options ‘inner’ or ‘outer’: this will either select the range between the points (inner) or outside of the points (outer), which is also displayed trough the slider coloring. The range is picked by dragging the points which can also be moved together by clicking between them. As the step size can be rather large compared to the distributed data, the selectable values on the slider can be changed. This is done by effectively changing the minimum and maximum value which causes the slider to recalculate its range and step size. This is accomplished by changing the values for the number fields located lefft and right of the slider. +

+
+
+
+

Additional options (coming soon)

+

+After the data is filtered, the remaining subset of features is diplayed on top of the page (see table above). This pool can further be filtered by a keyword search field on the top right of the table. Additionally the table can be reordered with a click on one of the column names which will be done after searching. +

+
+

+Finally specific rows can be selected via this slider which is working like the numeric slider above. And to specifiy even further they also can be selected/ deselected by clicking on the specific row. +

+
+
+
+
+

Plots

+
+

Gene View

+

+ The Gene Viewer consists of multiple plot types including line-, box-, violin- & barplots. You can use it to view and compare individual genes or conditions. +

+
+
+

Data Reduction

+
+

PCA (Principal Component Analysis)

+

+ A PCA is used to get an overview of the variation of the data based on the selected features. By default the two dimensions with the most variation are selected, which will result in a two-dimensional scatterplot showing groups of similar samples. +

+
+
+

Global Correlation Heatmap

+

+ Similar to the PCA, this plot will show the global clustering of samples or conditions based on the selected features. A distance matrix is created using one of various options (e.g. euclidean, pearson, spearman, etc.) and clustered using a heatmap. +

+
+
+
+

Scatterplot

+

+ This plot can be used to display the dependence of two (X/Y axes) or three (color) attributes. Also a density estimation (kernel smoothing) and a reference line can be enabled. The axes to be displayed can be freely chosen among the numeric columns to e.g. create Volcano, MA, or other kinds of scatter plots, if the respective data was supplied. Furthermore a subset of data can be used to highlight specific points in the set. +

+
+
+

Heatmap

+

+ Various parameters permit the creation of highly customized heatmaps of the selected features. Among these are different kinds of clusterings, transformations (log2, log10, rlog, zscore), and color schemes. +

+
+
+
+
+

Help

+

+

    +
  • +Click on for a step by step guide on how to use the current page. +
  • +
  • +For more information search for . +
  • +
+

+
+
+ + + + +
+ + + + + + + + diff --git a/wilson-basic/introduction/intro.md b/wilson-basic/introduction/intro.md new file mode 100755 index 0000000..9c3e556 --- /dev/null +++ b/wilson-basic/introduction/intro.md @@ -0,0 +1,259 @@ +--- +output: html_document +--- + + + + +# WIlsON: Webbased Interactive Omics visualizatioN + +

+ The WIlsON app is based on a tab-delimited input file format derived from a "summarized experiment" of interest (format is called CLARION, see Introduction-->Data Format). All types of data which can be broken down to a feature with assigned numerical values can be deployed on the WIlsON server (e.g. multi-omics). A user can then generate various plots following four basic steps:
+ +

    +
  1. Filter for features of interest based on categorical or numerical values (e.g. transcripts, genes, proteins, probes)
  2. +
  3. Select plot type
  4. +
  5. Adjust plot parameters
  6. +
  7. Render/download result
  8. +
+

+ +## Examples + + + + + + + + + + + + + + +
+## Basic Structure + +

+ The layout of each page is fairly similar. The top bar permits selection of a plotting application while the remaining space is usually divided the following way: +

+ + +### Sidebar +

+ It shows the currently selected features as well as global parameters depending on the plot/filter. +

+### Options +

+ These tabs provide access to several subsections: plots, plot variants, filters or data tables. Tables contain the specific subset of data used for the plot. +

+### Plot area / result +

+ This area will show the result of the current rendering/filtering: either a plot or the data as a table. +

+### Interface +

+ The bottom interface contains most of the parameters defining a plot, including axis transformation, coloring etc. +

+ +
+## Feature Selection + +

+ As mentioned above, the first step of WILsON is to select the tab "Feature Selection" at the top menue. This allows to select a subset of data to be used for plotting by applying filtering steps (without filtering all features of the dataset will be plotted). + The table at the top of the "Feature Selection" page displays the current selection. Several tabs located below the table are intended for filtering steps based on various criteria available per feature.WILsON supports a presorting for sample, condition and contrasts among others. + The "highlight" pane supports the creation of a subset of the selected features. The highlighted data can be used in certain plots which support highlighting (e.g. scatterplot) to either add a fixed color or labels. + After filtering, plots of interest can be selected and generated via the tabs on top. +

+ +### Table + + +

+ This is an example on a dataset filtered for various criteria. Within the selected feature table browsing, sorting and selection is supported. Some cells are truncated due to long text blocks('...'): to display these data just hover over the specific cell. +

+ +### Filter +

+ Based on the columns content (textual, multi textual,numeric) WIlsON's featureSelector will provide a appropriate filter visualization, enabling an efficient way to select data. +

+ +#### **Textual (Annotation)** + +

+ Annotations can be filtered by clicking a dropdown menu containing all available values. The filter box supports querying as well. 'Backspace' can be used to deselect prior selections. + +

+ +#### **Numeric (Value)** + +

+ This filter is intented to select a numeric range. The 'inner' or 'outer' options allows the definition of either the range within the set markers (inner) or outside of the marker (outer), which is also displayed trough the slider coloring. The markers are draggable. As the step size is scaled according to the spread of the data, editable value fields aside the slider can be utilized to change the minimum and maximum value (slider range is recalculate). + +

+ +### Additional options +

+ Once the data is filtered, the remaining subset of features is displayed in the table on top of the feature selection page (see table above). This selection can be narrowed down further by e.g. a keyword search field on the top right of the table. Additionally, manual selection of rows by marking is supported as well. Sorting on specific columns by clicking the column title might help to find spcific features of interest. Once the table is given in the correct order, it can be filtered for a specific number of entries as given below. +

+ +
+

+Finally, specific rows (row numbers) can be selected from the feature table via the slider shown above, a powerful filter in combination with column sorting and nummeric filtering on e.g. fold changes. For example, this filter allows the generation of a featureset of the top 50 up and down regulated genes on chromosome 3. + +

+ +
+## Plots + +### Gene View +

+ + The Gene Viewer consists of multiple plot types including line-, box-, violin- & barplots. It supports the visualization and comparison of individual genes and/or conditions. +

+ +### Data Reduction +#### PCA (Principal Component Analysis) +

+ + A PCA is used to get an overview on the variation of the data based on the selected features. By default the two dimensions with the highest variation are selected (PC 1 and PC2), presented in a two-dimensional scatterplot. +

+ +#### Global Correlation Heatmap +

+ + Similar to the PCA, this plot will show the global clustering of samples or conditions based on the selected features. A distance matrix is created using one of various options (e.g. euclidean, pearson, spearman, etc.) and visualized by a heatmap. +

+ +### Scatterplot +

+ + This plot illustrates the dependency of two (X/Y axes) or three (X/Y/color) attributes. It supports a density estimation (kernel smoothing) and trend lines. The axes to be displayed can be chosen among the numeric columns to e.g. create Volcano, MA, or other kinds of scatter plots. The scatterplot supports highlighting of a subset of data (feature selection, pane highlight). +

+ +### Heatmap +

+ + Various parameters permit the creation of highly customized heatmaps of the selected features. Among these are different kinds of clusterings, transformations (log2, log10, rlog, zscore), and color schemes. The Heatmap module supports interactive and static heatmaps. +

+ +
+## Interactivity +

+Thanks to the plotly package, several plots are available as an interactive version offering a range of additional options: +

+ + + +

+It should be noted that the plotly plot versions generate a higher computational load (slower) than the default ggplot2 versions. +
+

+ + +
+## Help + +

+

+

+ +
+## Use Cases + +### Case 1 +

+Create a heatmap of significantly differentially expressed protein coding genes involved in BMP signaling pathway
+
+ Whenever planning a plot it is vital to filter the available features/values down to the required set. By default the whole dataset will be used, which might result in a non-sensical plot and a warning message. +

+ + +

+ In order to filter, use the Feature Selection tab in a first step. For this example we want to filter for significantly differentially expressed genes, which is done on the contrast level. Set the following thresholds using inner/outer in combination with the range slider: log2 fold change less than -1 or greater than 1 and adjusted p-value smaller than 0.01. As the latter might be difficult to select due to the tiny interval, change the max value of the slider using the box on the right side (essentially a zoom). +

+

+ + +

+ In order to narrow down the selection further to protein coding genes involved in the BMP signaling pathway, select the feature level next and enter the desired annotation filters. +

+ + +

+ Finally click the select button to apply all filters and create the subset of interest, leading to the table below. +

+ + +

+ Now with this preselction of features move on to the heatmap module (here not interactive). Select the samples of interest and click on the plot button. +

+ + +

+ The resulting plot is troubled by the large range of the values (0-7000) which can reduce the recognition of patterns. A row-wise z-score Transformation might help. +

+ + +

+ Since the z-score transformation leads to a diverging (2-sided: -x..0..+x) distribution of values, another color palette would be optimal. Set Data distribution to diverging and select the spectral color scheme. To simplify interpretation, a label should be set for the legend (e.g. z score). +

+ + + +### Case 2 +

+Plot Top15 most highly expressed genes, which are significantly differentially expressed, and involved in apoptosis
+
+To accomplish this task the first step is to create a suitable subset. Use the feature selector to filter for significant genes by setting the threshold of the multiple testing adjusted p-value (padj) to <= 0.01. This is done in the contrast level. +

+ + +

+Further filter for the apoptosis pathway within the feature level. +

+ + +

+The following line plot shows the counts per condition per gene using a random order and including also genes with a low expression on average. +

+ + +

+To only select genes with a relatively high expression, reorder the table by clicking the desired column name. In this case we reorder the table descending after the baseMean column (=average counts of both conditions). Furthermore the amount of features is limited to the top 15 with the slider below. Now the first 15 rows will be highlighted and are forwarded for plotting. +

+ + diff --git a/wilson-basic/introduction/intro_old.md b/wilson-basic/introduction/intro_old.md new file mode 100755 index 0000000..1a3fdbd --- /dev/null +++ b/wilson-basic/introduction/intro_old.md @@ -0,0 +1,242 @@ +--- +output: html_document +--- + + + + +# WIlsON: Webbased Interactive Omics visualizatioN + +

+ The WIlsON app is based on a clearly defined tab-delimited input file format derived from the "summarized experiment" format called CLARION. All types of data which can be broken down to a feature with assigned numerical values can be deployed on the WIlsON server (e.g. multi-omics). A user can then generate various plots following four basic steps:
+ +

    +
  1. Filter for features of interest based on categorical or numerical values (e.g. transcripts, genes, proteins, probes)
  2. +
  3. Select plot type
  4. +
  5. Adjust plot parameters
  6. +
  7. Render/download result
  8. +
+

+ +## Examples + + + + + + + + + + + + + + +
+## Basic Structure + +

+ The layout of each page is fairly similar. The top bar permits selection of a plotting application while the remaining space is usually divided the following way: +

+ + +### Sidebar +

+ It shows the currently selected features and also sometimes global parameters depending on the plot/filter. +

+### Options +

+ These tabs provide access to different subsections: different plots, plot variants, filters or data tables. Tables contain the specific subset of data used for the plot. +

+### Plot area / result +

+ This part of the page will show the result of the current computation: either a plot or the data as a table. +

+### Interface +

+ The bottom interface contains most of the parameters defining the plot. +

+ +
+## Feature Selection + +

+ As mentioned above to start using WIlsON the first step should be almost always to select the tab "Feature Selection" at the top of the page. This will allow to select a subset of data to be used for plotting (otherwise all features of the dataset will be plotted). +
+ The table at the top of the "Feature Selection" page shows the currently selected features. Several tabs will be located below that permit the filtering based on annotation or numerical data available per feature.
+ With a click on "highlight" it is possible to create a second subset of features. The highlighted data will be used in certain plots which support highlighting (e.g. scatterplot) to either add a fixed color or exclusively display this subset of features.
+ After everything is filtered, please proceed to the plots which are also selected via the tabs on top. +

+ +### Table + + +

+ This is an example on how the data will be displayed after filtering. With this table you are able to browse trough the currently selected dataset. Also you may have noticed that some of the cells are truncated ('...'): to see these data just hover over the specific cell. +

+ +### Filter +

+ Based on the columns content being textual or numeric, WIlsON's featureSelector will provide a different filter module enabling an efficient way to select data. +

+ +#### Textual (Annotation) + +

+ Annotations can be filtered by clicking a dropdown menu containing all available items. Furthermore these items can be filtered by entering a search text. Use 'Backspace' to deselect unwanted selections. +

+ +#### Numeric (Value) + +

+ This filter permits to select a range of numeric values. To do so choose one of the options 'inner' or 'outer': this will either select the range between the points (inner) or outside of the points (outer), which is also displayed trough the slider coloring. The range is picked by dragging the points which can also be moved together by clicking between them. As the step size can be rather large compared to the distributed data, the selectable values on the slider can be changed. This is done by effectively changing the minimum and maximum value which causes the slider to recalculate its range and step size. This is accomplished by changing the values for the number fields located lefft and right of the slider. +

+ +### Additional options (coming soon) +

+ After the data is filtered, the remaining subset of features is diplayed on top of the page (see table above). This pool can further be filtered by a keyword search field on the top right of the table. Additionally the table can be reordered with a click on one of the column names which will be done after searching. +

+ +
+

+ Finally specific rows can be selected via this slider which is working like the numeric slider above. And to specifiy even further they also can be selected/ deselected by clicking on the specific row. +

+ +
+## Plots + +### Gene View +

+ + The Gene Viewer consists of multiple plot types including line-, box-, violin- & barplots. You can use it to view and compare individual genes or conditions. +

+ +### Data Reduction +#### PCA (Principal Component Analysis) +

+ + A PCA is used to get an overview of the variation of the data based on the selected features. By default the two dimensions with the most variation are selected, which will result in a two-dimensional scatterplot showing groups of similar samples. +

+ +#### Global Correlation Heatmap +

+ + Similar to the PCA, this plot will show the global clustering of samples or conditions based on the selected features. A distance matrix is created using one of various options (e.g. euclidean, pearson, spearman, etc.) and clustered using a heatmap. +

+ +### Scatterplot +

+ + This plot can be used to display the dependence of two (X/Y axes) or three (color) attributes. Also a density estimation (kernel smoothing) and a reference line can be enabled. The axes to be displayed can be freely chosen among the numeric columns to e.g. create Volcano, MA, or other kinds of scatter plots, if the respective data was supplied. Furthermore a subset of data can be used to highlight specific points in the set. +

+ +### Heatmap +

+ + Various parameters permit the creation of highly customized heatmaps of the selected features. Among these are different kinds of clusterings, transformations (log2, log10, rlog, zscore), and color schemes. +

+ +
+## Interactivity +

+Thanks to the plotly package several of the plots are interactive. These plots yield two major advantages zooming and supplementary information. +To be able to zoom use the UI on the top right of the plot. It will only appear if the mouse hovers over the plot. +The UI grants the ability to: +

+ + + +

+Furthermore on hover a hovertext will appear which contains information to the specific point.
+
+Note: Interactive plots are really great. But as great as they are sometimes they just can't get it right. In such cases please resort to their none interactive counterparts. +

+ + +
+## Help + +

+

+

+ +
+## Use Cases + +### Case 1 +

+Create a heatmap of significantly differentially expressed protein coding genes involved in BMP signaling pathway
+
+ To create a plot like this data is needed which internally is forwarded to the plot. On default the whole dataset will be used. Which means that if we don't filter, go to the heatmap and select in this case all the samples we will get a warning message: +

+ + +

+ So back to the Feature Selection where a reasonable subset can be created.
+ For this instance we want to filter for significantly differentially expressed genes. To do so we need to filter for contrasts therefore we expand the contrasts box. +

+ + +

+ Now as the filter elements are shown it is possible to filter for a log2 fold change less than -1 and greater than 1. And also for a p-adjusted value smaller than 0.01 but as it is difficult to select such a small value on this slider we rearrange it's intervall by setting the maximum value 0.02 which essentially causes the slider to zoom. +

+ + +

+ Moreover only protein coding genes which are involved in the BMP signaling pathway should be filtered. Which are selected after expanding the feature box. +

+ + +

+ Last but not least the now selected filter must be applied to create a subset. This is done by clicking on the select button which should lead to a table like this. +

+ + +

+ Now with a meaningful subset we return to the heatmap (here not interactive). If the samples aren't selected from our previous attempt we select them and click on the plot button. +

+ + +

+ This already rather nice looking plot can be improved by applying a row-wise zscore transformation. Which will compensate a high range on the data so differences can be seen a lot easier. +

+ + +

+ The last touch for this heatmap should be to use a more fitting color scheme. With the z-score transformation the plots data is now diverging. This can be selected via 'data distribution' thus enabling diverging color schemes below. In this example the scheme 'spectral' was selected. Also for clarification a label can be set for the legend as we used the z-score transformation it will be 'z score' for this plot. +

+ + diff --git a/wilson-basic/introduction/layout.png b/wilson-basic/introduction/layout.png new file mode 100755 index 0000000..b2d2715 Binary files /dev/null and b/wilson-basic/introduction/layout.png differ diff --git a/wilson-basic/introduction/lineplot.png b/wilson-basic/introduction/lineplot.png new file mode 100755 index 0000000..c18e346 Binary files /dev/null and b/wilson-basic/introduction/lineplot.png differ diff --git a/wilson-basic/introduction/metadata.png b/wilson-basic/introduction/metadata.png new file mode 100755 index 0000000..858dc20 Binary files /dev/null and b/wilson-basic/introduction/metadata.png differ diff --git a/wilson-basic/introduction/pca.png b/wilson-basic/introduction/pca.png new file mode 100755 index 0000000..345e4a9 Binary files /dev/null and b/wilson-basic/introduction/pca.png differ diff --git a/wilson-basic/introduction/plotly_ui.png b/wilson-basic/introduction/plotly_ui.png new file mode 100755 index 0000000..dfd9f69 Binary files /dev/null and b/wilson-basic/introduction/plotly_ui.png differ diff --git a/wilson-basic/introduction/pre.header.png b/wilson-basic/introduction/pre.header.png new file mode 100755 index 0000000..5ff798d Binary files /dev/null and b/wilson-basic/introduction/pre.header.png differ diff --git a/wilson-basic/introduction/scatterplot.png b/wilson-basic/introduction/scatterplot.png new file mode 100755 index 0000000..bddb427 Binary files /dev/null and b/wilson-basic/introduction/scatterplot.png differ