From dde6f2294d40eb9a39d3ab2a300b2a3bc07203cc Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Thu, 17 Jun 2021 09:46:32 -0400 Subject: [PATCH 001/100] added cluster labels to clustering tab, added different clustering options, changed download type to pdf --- GRN/functions.R | 39 ++++++++++++++++++++++++++++++--------- GRN/server.R | 21 +++++++++++---------- GRN/ui.R | 16 ++++++++++++---- 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 7e5dec2..467c4b8 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -478,8 +478,7 @@ plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_nu #' activity_test_tf1 <- create_activity_data(tf, "Cell","cortex", data_cortex$TF_and_ext) #' plot_UMAP(tf_number = 1,data_cortex$overall, activity_test_tf1) #' -plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, sample_number = 13000, - sample_reduce = TRUE){ #cell_metadata is the tsv with the +plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, dim_red_type){ #cell_metadata is the tsv with the #embedding coordinates for each cell in the dataset # if(tf_number == 1) tf_plot <- 2 # number of col, the first col is Cell, so start from 2 # else if(tf_number == 2) tf_plot <- 3 @@ -489,16 +488,16 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, sample_numbe tf_plot <- tf_number + 1 #replaces the above control flow - if(! sample_reduce) sample_number <- 27000 activity_tf <- cell_activity_data[,tf_plot][[1]] #extracts the TF activity from the cell_activity_data #and appends it to the cell_metadata to make cell meta with activity to plot - cell_meta_with_activity <- mutate(cell_metadata, activity_tf = activity_tf) %>% - sample_n(sample_number) + cell_meta_with_activity <- mutate(cell_metadata, activity_tf = activity_tf) + x_axis <- switch(dim_red_type, "umap" = "UMAP1", "tsne" = "tSNE_1", "pca" = "PC1") + y_axis <- switch(dim_red_type, "umap" = "UMAP2", "tsne" = "tSNE_2", "pca" = "PC2") - ggplot(data = cell_meta_with_activity, mapping = aes(x=UMAP1,y=UMAP2))+ + ggplot(data = cell_meta_with_activity, mapping = aes_string(x = x_axis, y = y_axis))+ geom_point(aes(color = activity_tf))+ scale_color_gradient(low = "grey", high = "red")+ theme_bw() + labs(color = 'TF Activity') @@ -507,10 +506,32 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, sample_numbe #if I want to include labeled clusters, then I need to map cells to the clusters #place a label at the mean of the umap coordinates for the cells that belong in that cluster -color_by_cluster <- function(cell_metadata, cluster_palette){ - ggplot(data = cell_metadata, mapping = aes(x=UMAP1,y=UMAP2))+ +color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type){ + + x_axis <- switch(dim_red_type, "umap" = "UMAP1", "tsne" = "tSNE_1", "pca" = "PC1") + y_axis <- switch(dim_red_type, "umap" = "UMAP2", "tsne" = "tSNE_2", "pca" = "PC2") + + # Store the center points (medians) of each cluster courtesy of Bhavyaa + centers <- cell_metadata %>% + group_by(Joint_cluster) %>% + summarise(center_x = median(get(x_axis)), + center_y = median(get(y_axis))) + + ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ geom_point(aes(color = Joint_cluster)) + theme_bw() + theme(legend.position="bottom") + - guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + + ggrepel::geom_label_repel(data = centers, + aes(x = center_x, y = center_y), + label = centers$Joint_cluster, + size = 4, + segment.color = 'grey50', + fontface = 'bold', + alpha = 0.8, + segment.alpha = 0.8, + label.size = NA, + force = 2, + segment.size = 0.5, + arrow = arrow(length = unit(0.01, 'npc'))) } #need to maybe change the colors, select out the numbers and rename legend, just cosmetic things diff --git a/GRN/server.R b/GRN/server.R index 0928b5b..89e04f0 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -48,6 +48,7 @@ server <- function(input, output, session) { l$time_point <- temp l$gene <- input$gene l$label <- input$label + l$dim_red <- input$dim_red # l$gene_file_path <- input$file_gene$datapath # print(l$gene_file_path) # l has following elements with same names for both options above: @@ -211,8 +212,8 @@ server <- function(input, output, session) { hm_joint_cluster_plot() }) - output$download_hm_joint <- downloadHandler(filename = "heatmap_joint.png", - contentType = "image/png", + output$download_hm_joint <- downloadHandler(filename = "heatmap_joint.pdf", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = hm_joint_cluster_plot(), width = 20, height = 25) @@ -224,7 +225,7 @@ server <- function(input, output, session) { }) output$download_hm_cluster <- downloadHandler(filename = "heatmap_cluster.png", - contentType = "image/png", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = hm_sample_cluster_plot(), width = 20, height = 25) @@ -243,22 +244,22 @@ server <- function(input, output, session) { # seems redundant, just needs one umap function here Umap_plot_1 <- reactive({ req(length(input_new()$tf)>0) - plot_UMAP(tf_number = 1,input_new()$cell_metadata, activity_data_cluster()) + plot_UMAP(tf_number = 1,input_new()$cell_metadata, activity_data_cluster(), input_new()$dim_red) }) Umap_plot_2 <- reactive({ req(length(input_new()$tf)>1) - plot_UMAP(tf_number = 2,input_new()$cell_metadata, activity_data_cluster()) + plot_UMAP(tf_number = 2,input_new()$cell_metadata, activity_data_cluster(), input_new()$dim_red) }) output$color_by_cluster <- renderPlot({ - color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette) + color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette, input_new()$dim_red) }) output$cluster1 <- renderPlot({ Umap_plot_1() }) - output$download_UMAP_1 <- downloadHandler(filename = "UMAP1.png", - contentType = "image/png", + output$download_UMAP_1 <- downloadHandler(filename = "UMAP1.pdf", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = Umap_plot_1(), width = 20, height = 20) @@ -269,8 +270,8 @@ server <- function(input, output, session) { }) - output$download_UMAP_2 <- downloadHandler(filename = "UMAP2.png", - contentType = "image/png", + output$download_UMAP_2 <- downloadHandler(filename = "UMAP2.pdf", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = Umap_plot_2(), width = 20, height = 20) diff --git a/GRN/ui.R b/GRN/ui.R index cf90b25..e425eba 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -108,6 +108,14 @@ ui <- fluidPage( selected = "e12") ), + conditionalPanel(condition = "input.tabs == 'Clustering'", + + radioButtons("dim_red", "Dimension Reduction Method", + choices = c("UMAP" = "umap", + "TSNE" = "tsne", + "PCA" = "pca"), + selected = "umap") + ), # 3. time series plot conditionalPanel(condition = "input.tabs == 'Time Series'"), @@ -194,12 +202,12 @@ ui <- fluidPage( fluidRow( plotOutput("heatmap_joint") ), - downloadButton("download_hm_joint", "Heatmap by Joint Cluster (PNG)"), + downloadButton("download_hm_joint", "Heatmap by Joint Cluster (PDF)"), div(style = "margin-left: 1.3em; margin-right: 1.3em;", fluidRow( plotOutput("heatmap_cluster") )), - downloadButton("download_hm_cluster", "Heatmap by Timepoint Cluster (PNG)"), + downloadButton("download_hm_cluster", "Heatmap by Timepoint Cluster (PDF)"), imageOutput("color_hm_palette", width = "6in", height = "4in") ), @@ -216,10 +224,10 @@ ui <- fluidPage( fluidRow( column(width = 6, plotOutput("cluster1",width = "4.2in", height = "4in"), - downloadButton("download_UMAP_1", "Transcription Factor 1 Activity Plot (PNG)")), + downloadButton("download_UMAP_1", "Transcription Factor 1 Activity Plot (PDF)")), column(width = 6, plotOutput("cluster2", width = "4.2in",height = "4in"), - downloadButton("download_UMAP_2", "Transcription Factor 2 Activity Plot (PNG)")), + downloadButton("download_UMAP_2", "Transcription Factor 2 Activity Plot (PDF)")), ) ), From 6c0cf36095940ea04d8d9f6a5cd035fc66e1d911 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Thu, 17 Jun 2021 17:43:05 -0400 Subject: [PATCH 002/100] Updated info/instructions for each tabs --- GRN/functions.R | 15 ++++++++------- GRN/global.R | 2 +- GRN/server.R | 49 ++++++++++++++++++++++++++++--------------------- GRN/ui.R | 48 ++++++++++++++++++++++++++++++++---------------- 4 files changed, 69 insertions(+), 45 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 467c4b8..0f58953 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -36,24 +36,25 @@ make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ #making a basic igraph object with an attribute for each gene indicating if it is a gene #target or transcription factor net <- graph_from_data_frame(d=edges, vertices = nodes) %>% - set_vertex_attr("Gene_Type", index = unique_gene_targets, "Gene Target") %>% - set_vertex_attr("Gene_Type", index = gene_list_in_network, "Input Gene") %>% + set_vertex_attr("Gene_Type", index = unique_gene_targets, "Target Genes") %>% + set_vertex_attr("Gene_Type", index = gene_list_in_network, "Input Target Genes") %>% set_vertex_attr("Gene_Type", index = unique_TF, "TF") #%>% #set_vertex_attr("label_always", index = unique_TF, "yes") if(labelNodes){ set.seed(2) ggnet2(net, color = "Gene_Type", label = labelNodes, label.size = 3, size = "Gene_Type", - size.palette = c("Gene Target" = 6, "TF" = 6, "Input Gene" = 6), - palette = c("Gene Target" = "grey", "TF" = "lightblue", "Input Gene" = "orange")) + + mode = "fruchtermanreingold", layout.par = list(niter = 1000), + size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + guides(size = FALSE) } else{ set.seed(2) ggnet2(net, color = "Gene_Type", label = tf, label.size = 3, size = "Gene_Type", - mode = "fruchtermanreingold", laout.par = list(niter = 1000), - size.palette = c("Gene Target" = 2, "TF" = 6, "Input Gene" = 6), - palette = c("Gene Target" = "grey", "TF" = "lightblue", "Input Gene" = "orange")) + + mode = "fruchtermanreingold", layout.par = list(niter = 1000), + size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + guides(size = FALSE) } diff --git a/GRN/global.R b/GRN/global.R index 206012d..7b72f41 100644 --- a/GRN/global.R +++ b/GRN/global.R @@ -13,7 +13,7 @@ library(ggplot2) library(cowplot) library(pheatmap) library(DT) -library(rcytoscapejs2) # downloaded from https://github.com/uc-bd2k/rcytoscapejs2 +#library(rcytoscapejs2) # downloaded from https://github.com/uc-bd2k/rcytoscapejs2 #could probably get rid of rcytoscape library(glue) library(GGally) diff --git a/GRN/server.R b/GRN/server.R index 89e04f0..3eb060c 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -62,16 +62,16 @@ server <- function(input, output, session) { # -----------------------------Tab1:table and network------------------------------------------ #def need to re-write this at the end - output$general_desc <- renderText({ - "This app designs for displaying transcription factor and gene data from mice brain (cortex & pons part) in various fancy ways by three main tabs; - - PROBLEM: There are some transcription factors from your input that may not have the corresponding data - in the following tabs. (Sometimes you may not see the information of that transcription factor or the plot - is not updated, etc. That is unfortunately because of the lack of data in the cell activity data in tab2, - or the binary cell activity data in tab3. - " - - }) + # output$general_desc <- renderText({ + # "This app designs for displaying transcription factor and gene data from mice brain (cortex & pons part) in various fancy ways by three main tabs; + # + # PROBLEM: There are some transcription factors from your input that may not have the corresponding data + # in the following tabs. (Sometimes you may not see the information of that transcription factor or the plot + # is not updated, etc. That is unfortunately because of the lack of data in the cell activity data in tab2, + # or the binary cell activity data in tab3. + # " + # + # }) #filter the data, add a column for logos, then display output$table <- renderDataTable({ # process data, filter the lines with our interested TF @@ -127,18 +127,27 @@ server <- function(input, output, session) { ) }) #check if there is a user input gene_list file, if there is, use it, if not, use the selectInput genes - - output$network <- renderPlot({ + network_graph <- reactive ({ if(is.null(gene_list$data)){ - gene_into_graph <- input_new()$gene + gene_into_graph <- input_new()$gene } else{ gene_into_graph <- gene_list$data } make_igraph(input_new()$tf, input_new()$TF_target_gene_info, gene_into_graph, input_new()$label) - #plot_ggnet(net, input_new()$gene) }) + output$network <- renderPlot({ + network_graph() + + }) + + output$download_network <- downloadHandler(filename = "network.pdf", + contentType = "application/pdf", + content = function(file){ + ggsave(filename = file, plot = network_graph(), + width = 8.5, height = 11) + }) #probably redo this entire part to visualize with ggNet # output$desc <- renderText({ @@ -323,18 +332,16 @@ server <- function(input, output, session) { for(tf_n in input_new()$tfs_not_exist_timeseries){ tf_nexist_string <- paste(tf_nexist_string,tf_n,sep = " " ) } - text <- glue("We do not have these followning tfs in this tab: {tf_nexist_string}") + text <- glue("We do not have data for the following trancription: {tf_nexist_string}") }) output$timeseries_desc <- renderText({ - text <- "Click option: You may double click the color palatte of cell types at the right side to - display that cell type ONLY; you could also click on one cell type to eliminate that in the - plot at left. - Mouse over the white vertical line on the plot to see the cell types. - We only support four plots of your first four tfs input for now." + text <- "Click option: double clicking a cell type in the legend displays that cell type ONLY; + single click removes that cell type from the plot. Mouse over ribbons in the plot to see the cell types. + We only support four plots of your first four transcripton factor inputs." }) @@ -368,7 +375,7 @@ server <- function(input, output, session) { }) output$download_ribbon_1 <- downloadHandler(filename = "timeseries_ribbon.png", - contentType = "image/png", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = ggplot_list_plot(), width = 20, height = 15) diff --git a/GRN/ui.R b/GRN/ui.R index e425eba..ee24011 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -3,7 +3,7 @@ ui <- fluidPage( #useShinyjs(), # Application title introBox( - titlePanel("Joint Cortex and Pons Transcription Factor Activity"), + titlePanel("Mouse Brain Transcriptional Regulation Atlas"), data.step = 1, data.intro = "This app displays transcription factor activity inference data from a developmental timecourse of the mouse Pons and Forebrain." @@ -62,7 +62,7 @@ ui <- fluidPage( # ), actionButton("reset", label = "Reset File"), - checkboxInput(inputId = "label", label = "Label Gene Target Nodes", value = FALSE) + checkboxInput(inputId = "label", label = "Label Target Gene Nodes", value = FALSE) ), # conditionalPanel(condition = "input.tabs == 'Table and Network'", @@ -134,12 +134,12 @@ ui <- fluidPage( tabsetPanel( tabPanel( - p("This tab displays information corresponding to the selected transcription factors and their predicted gene targets."), - p("- Strength of Association represents "), - p("- The top row is colored by cluster and the bottom row is colored by transcription factor activity"), - p("- Only the first two transcriptions factors are displayed"), + strong("This tab displays information corresponding to the selected transcription factors and their predicted target genes.") %>% p(), + p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, + as predicted with Genie3, with a higher value indicating a more likely regulatory link."), + p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), title = "Transcription Factor Target Information", - textOutput("general_desc"), + #textOutput("general_desc"), introBox( dataTableOutput("table"), data.step = 3, @@ -150,10 +150,17 @@ ui <- fluidPage( ), tabPanel( + strong("This tab displays a network visualisation of the inferred regulatory relationship between transcripton factors and target genes.") %>% p(), + p("• Transcription factors and target genes are represented as nodes with regulatory relationships represented as edges."), + p("• User input transcription factors are shown in blue. Target genes that are present in the current + network can be highlighted in orange based on user selection or based on a file containing a gene list."), + p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), + p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), title = "Regulatory Network Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc - textOutput("desc"), + #textOutput("desc"), plotOutput("network"), + downloadButton("download_network", "Network Visualisation Download (PDF)"), #need to work on visualization with the ggNet package introBox( data.step = 4, @@ -197,6 +204,10 @@ ui <- fluidPage( tabPanel( + strong("This tab displays a heatmap of user selected transcription factor activity per cluster") %>% p(), + p("• Joint clusters are clusters classified based on the combined data from every developmental + time-point per brain region (forebrain or pons); sample cluster are identified based on data from each + individual time-point per brain region."), title = "Heatmap", value = "Heatmap", fluidRow( @@ -212,13 +223,13 @@ ui <- fluidPage( ), tabPanel( - title = "Clustering", + title = "Transcription Factor Activity, by Region", value = "Clustering", fluidRow( #make each plot smaller to fit more - p("This tab displays the activity of selected transcription factors"), - p("- Cells are plotted in 2D according to UMAP dimensionality reduction algorithm"), - p("- The top row is colored by cluster and the bottom row is colored by transcription factor activity"), - p("- Only the first two transcriptions factors are displayed"), + p("This tab displays the activity of selected transcription factors") %>% strong(), + p("• Cells are plotted in 2D according to selected dimensionality reduction algorithm"), + p("• The top row is colored by joint cluster and the bottom row is colored by transcription factor activity"), + p("• Only the first two transcriptions factors are displayed"), column(width = 10, plotOutput("color_by_cluster", width = "6in", height = "7in")) ), fluidRow( @@ -252,12 +263,17 @@ ui <- fluidPage( # value = "Heatmap and Clustering" # ), tabPanel("Time Series", - textOutput("tf_timeseries_desc"), - textOutput("timeseries_desc"), + p("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given + transcriptional factor is active, broken down by cell type, to allow for visualizing activity + across the timecourse") %>% strong(), + textOutput("timeseries_desc"), + br(), + textOutput("tf_timeseries_desc"), + fluidRow( plotlyOutput("timeseries1"), - downloadButton("download_ribbon_1", "Timeseries ribbon plot (Png)"), + downloadButton("download_ribbon_1", "Timeseries ribbon plot (PDF)"), plotOutput("timeseries2"), imageOutput("timeseries_color"), #plotOutput("timeseries3"), From 0c75cab350437174bb8e1e0a2e653be4cc4f3b9b Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Thu, 17 Jun 2021 21:24:51 -0400 Subject: [PATCH 003/100] added toggleable labels on dimension reduction plots, turned network visualisation to plotly -pending further work to make it more interactive --- GRN/functions.R | 34 +++++++++++++++++++--------------- GRN/server.R | 8 +++++--- GRN/ui.R | 6 ++++-- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 0f58953..99bfd7e 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -507,7 +507,7 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, dim_red_type #if I want to include labeled clusters, then I need to map cells to the clusters #place a label at the mean of the umap coordinates for the cells that belong in that cluster -color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type){ +color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type, cluster_label){ x_axis <- switch(dim_red_type, "umap" = "UMAP1", "tsne" = "tSNE_1", "pca" = "PC1") y_axis <- switch(dim_red_type, "umap" = "UMAP2", "tsne" = "tSNE_2", "pca" = "PC2") @@ -518,21 +518,25 @@ color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type){ summarise(center_x = median(get(x_axis)), center_y = median(get(y_axis))) - ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ + gg <- ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ geom_point(aes(color = Joint_cluster)) + theme_bw() + theme(legend.position="bottom") + - guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + - ggrepel::geom_label_repel(data = centers, - aes(x = center_x, y = center_y), - label = centers$Joint_cluster, - size = 4, - segment.color = 'grey50', - fontface = 'bold', - alpha = 0.8, - segment.alpha = 0.8, - label.size = NA, - force = 2, - segment.size = 0.5, - arrow = arrow(length = unit(0.01, 'npc'))) + guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + + if(cluster_label){ + gg <- gg + ggrepel::geom_label_repel(data = centers, + aes(x = center_x, y = center_y), + label = centers$Joint_cluster, + size = 4, + segment.color = 'grey50', + fontface = 'bold', + alpha = 0.8, + segment.alpha = 0.8, + label.size = NA, + force = 2, + segment.size = 0.5, + arrow = arrow(length = unit(0.01, 'npc'))) + } + return(gg) } #need to maybe change the colors, select out the numbers and rename legend, just cosmetic things diff --git a/GRN/server.R b/GRN/server.R index 3eb060c..07b1390 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -49,6 +49,7 @@ server <- function(input, output, session) { l$gene <- input$gene l$label <- input$label l$dim_red <- input$dim_red + l$cluster_label <- input$cluster_label # l$gene_file_path <- input$file_gene$datapath # print(l$gene_file_path) # l has following elements with same names for both options above: @@ -137,8 +138,9 @@ server <- function(input, output, session) { make_igraph(input_new()$tf, input_new()$TF_target_gene_info, gene_into_graph, input_new()$label) }) - output$network <- renderPlot({ - network_graph() + output$network <- renderPlotly({ + net_plotly <- network_graph() %>% ggplotly() + net_plotly }) @@ -261,7 +263,7 @@ server <- function(input, output, session) { }) output$color_by_cluster <- renderPlot({ - color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette, input_new()$dim_red) + color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette, input_new()$dim_red, input_new()$cluster_label) }) output$cluster1 <- renderPlot({ diff --git a/GRN/ui.R b/GRN/ui.R index ee24011..20595e8 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -114,7 +114,9 @@ ui <- fluidPage( choices = c("UMAP" = "umap", "TSNE" = "tsne", "PCA" = "pca"), - selected = "umap") + selected = "umap"), + + checkboxInput(inputId = "cluster_label", label = "Show Cluster Labels", value = TRUE) ), # 3. time series plot conditionalPanel(condition = "input.tabs == 'Time Series'"), @@ -159,7 +161,7 @@ ui <- fluidPage( title = "Regulatory Network Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc #textOutput("desc"), - plotOutput("network"), + plotlyOutput("network"), downloadButton("download_network", "Network Visualisation Download (PDF)"), #need to work on visualization with the ggNet package introBox( From c75f3274483abedec1d27d81a1d5553f69b0f189 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 21 Jun 2021 15:35:10 -0400 Subject: [PATCH 004/100] Adjust gene label alignment, disable scroll for bubble plots --- clusters/server.R | 2 +- clusters/ui.R | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 8789303..26a95f3 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -170,7 +170,7 @@ server <- function(input, output, session) { }, - height = function() 20 + 28 * length(input_new()$gene), + height = function() 25 + 30 * length(input_new()$gene), width = 200 diff --git a/clusters/ui.R b/clusters/ui.R index b8d91f1..d0a5cf2 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -142,7 +142,8 @@ ui <- bootstrapPage( ), # Display the bubbleplot - div(style = "margin-top: 2em; margin-left: 1em; margin-bottom: -5em;", + div(style = "margin-top: 2em; margin-left: 1em; margin-bottom: -5em; + overflow-x: visible; overflow-y: visible;", fluidRow( splitLayout(cellWidths = c(1103, 200), From cd65cc7dc1952c23fce94b53dc1072e656bb9018 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 21 Jun 2021 17:30:04 -0400 Subject: [PATCH 005/100] Remove TODO for closed issue --- clusters/functions.R | 1 - 1 file changed, 1 deletion(-) diff --git a/clusters/functions.R b/clusters/functions.R index a5160a7..5a63c6b 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -117,7 +117,6 @@ bubble_prep <- function(gene, # width; to roughly the the # of characters in the gene w/ longest name # However, letters take up more pixels than spaces, so do less padding # for genes with longer names - # TODO: Fix alignment of bubble plot w/ dendrogram for long gene names (issue #7) mutate(Gene_padded = case_when( str_length(Gene) <= 5 ~ str_pad(Gene, 15, side = 'right', pad = " "), str_length(Gene) > 5 ~ str_pad(Gene, 12, side = 'right', pad = " ") From b504df3b2a236d1f2f571c820b4cc343a6e6af60 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Mon, 21 Jun 2021 20:32:19 -0400 Subject: [PATCH 006/100] added very basic hovering to network visualisation, added server side book marking, added custom styling (issue: braindex image not displayed) --- GRN/functions.R | 121 +++++++++++++++++++++++++----------------------- GRN/global.R | 3 ++ GRN/server.R | 31 ++++++++----- GRN/ui.R | 64 ++++++++++++++----------- 4 files changed, 121 insertions(+), 98 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 99bfd7e..389593b 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -17,7 +17,7 @@ addMotifPic <- function(subset_data){ #need to comment this and test to see if i #' @param tf_target_gene_info a data frame containing information for each association #' between a TF and a target gene; created in data_prep.R, loaded in global.R and used depending #' on the region input in input_new() -make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ +make_network <- function(tf, tf_target_gene_info, gene_list){ #add a step to select only the transcription factors that are in the list #create edgelist edges <- data_cortex$TF_target_gene_info %>% select(TF, gene, nMotifs, Genie3Weight.weight) %>% @@ -38,24 +38,27 @@ make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ net <- graph_from_data_frame(d=edges, vertices = nodes) %>% set_vertex_attr("Gene_Type", index = unique_gene_targets, "Target Genes") %>% set_vertex_attr("Gene_Type", index = gene_list_in_network, "Input Target Genes") %>% - set_vertex_attr("Gene_Type", index = unique_TF, "TF") #%>% - #set_vertex_attr("label_always", index = unique_TF, "yes") + set_vertex_attr("Gene_Type", index = unique_TF, "TF") +} +plot_network <- function(net, labelNodes, tf){ if(labelNodes){ - set.seed(2) + set.seed(0.926) ggnet2(net, color = "Gene_Type", label = labelNodes, label.size = 3, size = "Gene_Type", mode = "fruchtermanreingold", layout.par = list(niter = 1000), - size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), - palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + - guides(size = FALSE) + size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), + group = 1, text = names(V(net))) + + guides(size = FALSE, color = guide_legend(title= "Gene Type")) } else{ - set.seed(2) + set.seed(0.926) ggnet2(net, color = "Gene_Type", label = tf, label.size = 3, size = "Gene_Type", mode = "fruchtermanreingold", layout.par = list(niter = 1000), size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), - palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + - guides(size = FALSE) + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), + group = 1, text = names(V(net))) + + guides(size = FALSE, color = guide_legend(title = "Gene Type")) } } @@ -84,55 +87,55 @@ make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ #' network <- createCytoscapeJsNetwork(nodeData, edgeData) #' rcytoscapejs2(network$nodes, network$edges) #' -create_network <- function(tf, TF_target_gene, unique_TF, pathway_genes = c(), - shrink_gray = FALSE){ - TF_interest <- filter(TF_target_gene, TF %in% tf)[["TF"]] - gene_target <- filter(TF_target_gene, TF %in% tf)[["gene"]] - - source <- TF_interest - target <- gene_target - - id <- c(TF_interest, gene_target) - name <- id - nodeData <- data.frame(id,name, stringsAsFactors = FALSE) - edgeData <- data.frame(source, target, stringsAsFactors = FALSE) - - #unique_TF <- unique(TF_target_gene[["TF"]]) - - mutual_target <- edgeData %>% - # a character vector that indicates the nodes that are target of multiple selected TFs - count(target) %>% - filter(n > 1 & !target %in% tf ) %>% - .[[1]] - - nodeData <- nodeData %>% - # you can customize the color using the case_when structure easily, - # check the tfs in id column that exist in your vector, then you can control its size, - # shape and color easily - mutate(color = case_when(id %in% tf ~ "#9d4097", # orange - # orange nodes are tfs that are active in this region - id %in% pathway_genes ~ "green", - id %in% unique_TF ~ "#D6604D", - id %in% mutual_target ~ "#4fafc6", - TRUE ~ "lightgrey")) %>% - mutate(height = case_when(id %in% tf ~ "100", - TRUE ~ "70")) %>% - mutate(width = case_when(id %in% tf ~ "100", - TRUE ~ "70")) - - if(shrink_gray){ - nodeData <- nodeData %>% - mutate(height = case_when(color %in% "lightgrey" ~ "40", - TRUE ~ "70")) %>% - mutate(width = case_when(color %in% "lightgrey" ~ "40", - TRUE ~ "70")) - - } - - return(list(nodes = nodeData, - edges = edgeData - )) -} +# create_network <- function(tf, TF_target_gene, unique_TF, pathway_genes = c(), +# shrink_gray = FALSE){ +# TF_interest <- filter(TF_target_gene, TF %in% tf)[["TF"]] +# gene_target <- filter(TF_target_gene, TF %in% tf)[["gene"]] +# +# source <- TF_interest +# target <- gene_target +# +# id <- c(TF_interest, gene_target) +# name <- id +# nodeData <- data.frame(id,name, stringsAsFactors = FALSE) +# edgeData <- data.frame(source, target, stringsAsFactors = FALSE) +# +# #unique_TF <- unique(TF_target_gene[["TF"]]) +# +# mutual_target <- edgeData %>% +# # a character vector that indicates the nodes that are target of multiple selected TFs +# count(target) %>% +# filter(n > 1 & !target %in% tf ) %>% +# .[[1]] +# +# nodeData <- nodeData %>% +# # you can customize the color using the case_when structure easily, +# # check the tfs in id column that exist in your vector, then you can control its size, +# # shape and color easily +# mutate(color = case_when(id %in% tf ~ "#9d4097", # orange +# # orange nodes are tfs that are active in this region +# id %in% pathway_genes ~ "green", +# id %in% unique_TF ~ "#D6604D", +# id %in% mutual_target ~ "#4fafc6", +# TRUE ~ "lightgrey")) %>% +# mutate(height = case_when(id %in% tf ~ "100", +# TRUE ~ "70")) %>% +# mutate(width = case_when(id %in% tf ~ "100", +# TRUE ~ "70")) +# +# if(shrink_gray){ +# nodeData <- nodeData %>% +# mutate(height = case_when(color %in% "lightgrey" ~ "40", +# TRUE ~ "70")) %>% +# mutate(width = case_when(color %in% "lightgrey" ~ "40", +# TRUE ~ "70")) +# +# } +# +# return(list(nodes = nodeData, +# edges = edgeData +# )) +# } # ------------------------------------------------------------------------------------ #' Identify transcription factor data type #' diff --git a/GRN/global.R b/GRN/global.R index 7b72f41..67f2c4d 100644 --- a/GRN/global.R +++ b/GRN/global.R @@ -29,3 +29,6 @@ load("data/shared/common_prep.Rda") # metadata and colour_palettes # Custom functions source("functions.R") + +#allows server side save states +enableBookmarking(store = "server") diff --git a/GRN/server.R b/GRN/server.R index 07b1390..0517b60 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -74,7 +74,7 @@ server <- function(input, output, session) { # # }) #filter the data, add a column for logos, then display - output$table <- renderDataTable({ + output$table1 <- renderDataTable({ # process data, filter the lines with our interested TF subset_data <- input_new()$TF_target_gene_info %>% dplyr::filter(TF %in% input_new()$tf) %>% select(TF, gene, Genie3Weight.weight, nMotifs, bestMotif) @@ -84,7 +84,8 @@ server <- function(input, output, session) { colnames = c('Gene' = 'gene', 'Number of Motifs' = 'nMotifs', 'Best Motif' = 'bestMotif', 'Strength of Association' = 'Genie3Weight.weight', - 'Logo' = 'motif_logo')) + 'Logo' = 'motif_logo'), + rownames = FALSE) }) # observeEvent(input$reset, { # reset("file_gene") @@ -128,18 +129,24 @@ server <- function(input, output, session) { ) }) #check if there is a user input gene_list file, if there is, use it, if not, use the selectInput genes - network_graph <- reactive ({ + igraph_network <- reactive ({ if(is.null(gene_list$data)){ - gene_into_graph <- input_new()$gene + gene_to_highlight <- input_new()$gene } else{ - gene_into_graph <- gene_list$data + gene_to_highlight <- gene_list$data } - make_igraph(input_new()$tf, input_new()$TF_target_gene_info, - gene_into_graph, input_new()$label) + make_network(input_new()$tf, input_new()$TF_target_gene_info, + gene_to_highlight) #returns an igraph network object }) + network_ggplot <- reactive({ + plot_network(igraph_network(), input_new()$label, input_new()$tf) + }) + output$network <- renderPlotly({ - net_plotly <- network_graph() %>% ggplotly() + net_plotly <- network_ggplot() %>% ggplotly(height = 700, tooltip = "text") %>% + layout(xaxis = list(visible = FALSE), yaxis = list(visible = FALSE), + hovermode = "x", hoverdistance = 100) net_plotly }) @@ -147,7 +154,7 @@ server <- function(input, output, session) { output$download_network <- downloadHandler(filename = "network.pdf", contentType = "application/pdf", content = function(file){ - ggsave(filename = file, plot = network_graph(), + ggsave(filename = file, plot = network_ggplot(), width = 8.5, height = 11) }) @@ -220,7 +227,8 @@ server <- function(input, output, session) { }) output$heatmap_joint <- renderPlot({ - hm_joint_cluster_plot() + hm_joint <- hm_joint_cluster_plot() + hm_joint }) output$download_hm_joint <- downloadHandler(filename = "heatmap_joint.pdf", @@ -231,7 +239,8 @@ server <- function(input, output, session) { }) output$heatmap_cluster <- renderPlot({ - hm_sample_cluster_plot() + hm_sample <- hm_sample_cluster_plot() + hm_sample }) diff --git a/GRN/ui.R b/GRN/ui.R index 20595e8..9854725 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -1,19 +1,23 @@ +source("../www/ui_functions.R") + ui <- fluidPage( - introjsUI(), + #introjsUI(), #useShinyjs(), + includeCSS("../www/minimal.css"), + + navigation(), + + beginPage(), + # Application title - introBox( - titlePanel("Mouse Brain Transcriptional Regulation Atlas"), - data.step = 1, - data.intro = "This app displays transcription factor activity inference data from - a developmental timecourse of the mouse Pons and Forebrain." - ), + + titlePanel("Transcription Factor Activity in Single-cell Developmental Atlas", + windowTitle = "GRN"), sidebarLayout( sidebarPanel( width = 3, # choose which datasets to analyze for the whole app - actionButton("help", label = "See Instructions"), radioButtons("region", "Brain region", # use the names in the vector to display # use the character "joint_cortex" to match the path to import data @@ -121,16 +125,9 @@ ui <- fluidPage( # 3. time series plot conditionalPanel(condition = "input.tabs == 'Time Series'"), - introBox( # Update everything actionButton("update", label = "Update"), - data.hint = "click me to update everything!", - data.step = 2, - data.intro = "click it to update everything! Do this after you changed your - transcription factor input and options. Feel free to QUIT the intro first and update it to see the - table and plots", - data.position = "right" - ), + bookmarkButton(), ), mainPanel( tabsetPanel( @@ -142,12 +139,7 @@ ui <- fluidPage( p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), title = "Transcription Factor Target Information", #textOutput("general_desc"), - introBox( - dataTableOutput("table"), - data.step = 3, - data.intro = "This table displays the gene targets of the selected transcription factors - along with information about the genes." - ), + dataTableOutput("table1"), value = "Transcription Factor Target Information" ), @@ -156,19 +148,34 @@ ui <- fluidPage( p("• Transcription factors and target genes are represented as nodes with regulatory relationships represented as edges."), p("• User input transcription factors are shown in blue. Target genes that are present in the current network can be highlighted in orange based on user selection or based on a file containing a gene list."), + p("• Click on the \"Label Target Gene Nodes\" option to see the label of every gene target and enable a hover option. + Currently, hover only displays gene name but more information to come soon!"), p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), title = "Regulatory Network Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc #textOutput("desc"), plotlyOutput("network"), + br(),#so the plotly doesn't overlap with the download button + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), downloadButton("download_network", "Network Visualisation Download (PDF)"), #need to work on visualization with the ggNet package - introBox( - data.step = 4, - data.intro = "This table displays a network of your selected transcription factors and - their top gene targets." - ), + value = "Regulatory Network Visualization" ), # tabPanel( @@ -286,5 +293,6 @@ ui <- fluidPage( )) ), - + # Custom styling + endPage() ) \ No newline at end of file From ae78b81d132b4b164e9d2d4b8f485049ffbac4e9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 12:12:41 -0400 Subject: [PATCH 007/100] Implement bookmark button beside update button --- clusters/ui.R | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index d0a5cf2..81d9ab3 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -4,7 +4,9 @@ source("../www/ui_functions.R") # Load names of genes detected in mouse to provide choices in input genes_mouse <- data.table::fread("data/joint_mouse/joint_mouse.gene_names.tsv", data.table = FALSE)$genes -ui <- bootstrapPage( +ui <- function(request){ + + bootstrapPage( # Custom styling includeCSS("../www/minimal.css"), @@ -19,6 +21,7 @@ ui <- bootstrapPage( #### ---- Sidebar (input) ---- sidebarLayout( + sidebarPanel(width = 3, # Gene input field, shared across tabs @@ -110,8 +113,16 @@ ui <- bootstrapPage( ), ), - # Update button for all sidebar inputs - actionButton("update", label = "Update") + # Update button for all sidebar inputs. Coloured to differentiate + # from the bookmark button. + tags$head( + tags$style(HTML('#update{background-color:#4863A0; + color:#FFFFFF;}')) + ), + actionButton("update", label = "Update"), + + # Bookmark button to store current inputs / state of app + bookmarkButton() ), @@ -146,14 +157,16 @@ ui <- bootstrapPage( overflow-x: visible; overflow-y: visible;", fluidRow( + # Set cellWidths equal to the actual width of each plot (server.R) splitLayout(cellWidths = c(1103, 200), + # Bubble plot(s) (plotOutput("bubble", hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% withSpinner(type = 5)), # Gene labels - #No spinner to prevent confusing user, because there is only 1 plot + # No spinner to prevent confusing user, because there is only 1 plot (plotOutput("bubble_labels")) ) @@ -172,7 +185,7 @@ ui <- bootstrapPage( #### ---- Expression table tab output ---- - tabPanel("Expression table", #TODO: confirm a better name + tabPanel("Expression table", tags$br(), p("This table compares the expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas"), @@ -365,4 +378,4 @@ ui <- bootstrapPage( # Custom styling endPage() -) +)} From 352e0fc01c4a6d72f841306c0bfa1c5600829ea9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 12:13:28 -0400 Subject: [PATCH 008/100] Enable url-based bookmarking --- clusters/global.R | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/clusters/global.R b/clusters/global.R index 75e0cff..3aaebbc 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -1,7 +1,7 @@ # This file will be run first, and anything in this file will be available # for the other R files required for the shiny app (e.g. server.R, ui.R) -# Load required packages ---- +# ---- Load required packages ---- library(feather) library(tidyr) library(dplyr) @@ -16,8 +16,9 @@ library(readr) library(shinyWidgets) library(plotly) library(shinycssloaders) +library(shiny) -# Set-up / load common data ---- +# ---- Set-up / load common data ---- # Cluster-level metadata metadata <- data.table::fread("data/joint_mouse/metadata_20190715_select.tsv", @@ -33,4 +34,10 @@ pons_palette_joint <- readRDS("data/joint_pons/joint_pons.palette_ID_20190715_ load("data/joint_mouse/joint_mouse.palette_ID_20190715.Rda") # Vector specifying the order of clusters in the dendrogram -load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") \ No newline at end of file +load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") + + +# ---- Shiny settings ---- + +# Enable bookmarking +enableBookmarking(store = "url") \ No newline at end of file From 94c7d514134a195c933a386fc133aa35b3be4827 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 12:24:19 -0400 Subject: [PATCH 009/100] Streamline loading spinner code using ui_functions file --- clusters/ui.R | 35 ++++++++++++----------------------- www/ui_functions.R | 4 ++-- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index 81d9ab3..dfe5f1e 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -114,7 +114,7 @@ ui <- function(request){ ), # Update button for all sidebar inputs. Coloured to differentiate - # from the bookmark button. + # from the bookmark button beside it tags$head( tags$style(HTML('#update{background-color:#4863A0; color:#FFFFFF;}')) @@ -162,8 +162,7 @@ ui <- function(request){ # Bubble plot(s) (plotOutput("bubble", - hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% - withSpinner(type = 5)), + hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% ws), # Gene labels # No spinner to prevent confusing user, because there is only 1 plot @@ -195,8 +194,7 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( - DT::dataTableOutput("cluster_table", width = 1100) %>% - withSpinner(type = 5) + DT::dataTableOutput("cluster_table", width = 1100) %>% ws ), # Only display download button if update has been pressed at least once @@ -242,15 +240,13 @@ ui <- function(request){ conditionalPanel(condition = "input.plotly_ribbon", # Plot the ribbon plot & legend as a plotly (interactive) plot - plotlyOutput("plotlyRibbon", height = "5in", width = "11.5in") %>% - withSpinner(type = 5) + plotlyOutput("plotlyRibbon", height = "5in", width = "11.5in") %>% ws ), conditionalPanel(condition = "!(input.plotly_ribbon)", # Plot the ribbon plot & legend as static plots with ggplot2 - plotOutput("plotRibbon", height = "8.5in", width = "8in") %>% - withSpinner(type = 5) + plotOutput("plotRibbon", height = "8.5in", width = "8in") %>% ws ), # Only display download button if update has been pressed at least once @@ -282,8 +278,7 @@ ui <- function(request){ p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), fluidRow( - # plotOutput("scatter_joint", width = "10in", height = "4in") %>% - # withSpinner(type = 5) + # plotOutput("scatter_joint", width = "10in", height = "4in") %>% ws splitLayout(cellWidths = c(432, 512), # 432 = 4.5in, 512px = 5.33in #cellArgs = list(style = "padding: 6px"), @@ -291,15 +286,13 @@ ui <- function(request){ (plotOutput("dr_joint", #width = "4.5in", height = "4in", - hover = hoverOpts(id = "dr_joint_hover", clip = TRUE)) %>% - withSpinner(type = 5)), + hover = hoverOpts(id = "dr_joint_hover", clip = TRUE)) %>% ws), (plotOutput("feature_joint", #width = "5.33in", height = "4in" #, hover = hoverOpts(id = "feature_joint_hover", clip = TRUE) - ) %>% - withSpinner(type = 5)) + ) %>% ws) ) ), @@ -311,8 +304,7 @@ ui <- function(request){ #fluidRow(uiOutput("feature_joint_hover_info")), fluidRow( - plotOutput("vln_joint", width = "11in", height = "4in") %>% - withSpinner(type = 5) + plotOutput("vln_joint", width = "11in", height = "4in") %>% ws ), # Specify the value to use when checking if this tab is selected @@ -338,13 +330,11 @@ ui <- function(request){ p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), fluidRow( - plotOutput("dr_sample", width = "12.5in", height = "2.6in") %>% - withSpinner(type = 5) + plotOutput("dr_sample", width = "12.5in", height = "2.6in") %>% ws ), fluidRow( - plotOutput("feature_sample", width = "12.5in", height = "3in") %>% - withSpinner(type = 5) + plotOutput("feature_sample", width = "12.5in", height = "3in") %>% ws ) ), @@ -360,8 +350,7 @@ ui <- function(request){ p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), fluidRow( - plotOutput("vln_sample", width = "10in", height = "20in") %>% - withSpinner(type = 5) + plotOutput("vln_sample", width = "10in", height = "20in") %>% ws ) ) diff --git a/www/ui_functions.R b/www/ui_functions.R index 640a8b8..6edc02a 100644 --- a/www/ui_functions.R +++ b/www/ui_functions.R @@ -1,8 +1,8 @@ library(shinycssloaders) -ws <- function(ui) withSpinner(ui, type = 3, size = 0.5, - color.background = "white", color = "#8896AE") +ws <- function(ui) withSpinner(ui, type = 5, + color.background = "white") navigation <- function() { includeHTML('../www/layout/navigation.html') From aaf15803b9d624740051d03bbdef0972e8734792 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Tue, 22 Jun 2021 13:04:59 -0400 Subject: [PATCH 010/100] added serverside bookmarking, custom formatting --- GRN/server.R | 18 +++++----- .../77655bbf62e621d2/input.rds | Bin 0 -> 291 bytes .../892a770dbf7ac7d4/input.rds | Bin 0 -> 296 bytes GRN/ui.R | 33 ++++++++++-------- GRN/www/braindex.png | Bin 0 -> 575538 bytes 5 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 GRN/shiny_bookmarks/77655bbf62e621d2/input.rds create mode 100644 GRN/shiny_bookmarks/892a770dbf7ac7d4/input.rds create mode 100644 GRN/www/braindex.png diff --git a/GRN/server.R b/GRN/server.R index 0517b60..ee3b3c6 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -9,22 +9,22 @@ server <- function(input, output, session) { # Dynamic UI, change the selectInput tf lists on display depending on the brain region that is selected observeEvent(input$region,{ if(input$region == "cortex"){ - updateSelectInput(session, inputId = "TF", choices = data_cortex$unique_active_TFs_bare, - selected = c("Arx","Lef1")) - updateSelectInput(session, inputId = "gene", choices = unique(data_cortex$TF_target_gene_info$gene), - selected = c("Dlx6","Sox6") ) + updateSelectizeInput(session, inputId = "TF", choices = data_cortex$unique_active_TFs_bare, + selected = c("Arx","Lef1"), server = TRUE) + updateSelectizeInput(session, inputId = "gene", choices = unique(data_cortex$TF_target_gene_info$gene), + selected = c("Dlx6","Sox6"), server = TRUE ) } else{ - updateSelectInput(session, inputId = "TF", choices = data_pons$unique_active_TFs_bare, - selected = c("Lhx5","Pax7")) - updateSelectInput(session, inputId = "gene", choices = unique(data_pons$TF_target_gene_info$gene), - selected = c("Gad2")) + updateSelectizeInput(session, inputId = "TF", choices = data_pons$unique_active_TFs_bare, + selected = c("Lhx5","Pax7"), server = TRUE) + updateSelectizeInput(session, inputId = "gene", choices = unique(data_pons$TF_target_gene_info$gene), + selected = c("Gad2"), server = TRUE) } #updateRadioButtons(session, "show", selected = "stop") #resets the network visualization }) - + #uses the input update button to update a list of the parameters of the app for the following functions input_new <- eventReactive(input$update,{ diff --git a/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds b/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds new file mode 100644 index 0000000000000000000000000000000000000000..e917a6c34fd76354e2d599bae676ad4db0894af3 GIT binary patch literal 291 zcmV+;0o?u{iwFP!000002CYzCOT#b}O+UxR27=&o|3U})J{6xtL}mCkvi7cvrpZWd zu=B^OcWa}i`e@*ibMEKiJWm*75sO*CqJ$tzukQ2t`JA!vl-QKwgd(JlG5ztiY%V;0 z)P&o5(B&e?X_QTlspE@gKR6D1tw|xdwS)a5p%5xC9X+#Kq4tXcg;tjiQL81F4yf`m zIGns_8vUaXyPEF?x$FTdCpl`f&+Y)e~+k0WJZzq=a4Ie~z z>+p-Rc<6g$Er8UnlGV9%KEdV(hyG+VVuBho(_e6jP=Oxll{sr7K=nC49{oa`w>rIU>63NU$;rP4L+JHOp~pZ{ezW=bP; zGr3@=J7@d}%5;*YH_uPf8eD#Bw^V@yhmqF~M}i(fIHJJ-Iv+LQNfjeomRvwS5m^+x u&NUR@n)GPgX4@1L-C(St>LVMNpY2DqVWKq%Iv*U^Aie;CmF;130ssK+8;1=5 literal 0 HcmV?d00001 diff --git a/GRN/ui.R b/GRN/ui.R index 9854725..0594460 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -26,11 +26,16 @@ ui <- fluidPage( selected = "cortex"), #actionButton("update_tf", label = "Update transcription factors to see the plots"), - selectInput(inputId = "TF", - label = "Transcription Factor", - choices = data_cortex$unique_active_TFs_bare, - multiple = TRUE, - selected = c("Arx","Lef1")), + selectizeInput(inputId = "TF", + label = "Transcription Factor Input", + choices = NULL, + multiple = TRUE, + selected = c("Arx", "Lef1")), + # selectInput(inputId = "TF", + # label = "Transcription Factor", + # choices = data_cortex$unique_active_TFs_bare, + # multiple = TRUE, + # selected = c("Arx","Lef1")), # fileInput("file_tf", "Choose CSV File containing your tf list", # accept = c( # "text/csv", @@ -45,11 +50,11 @@ ui <- fluidPage( ), conditionalPanel( condition = "input.tabs == 'Regulatory Network Visualization'", - selectInput(inputId = "gene", - label = "Genes of Interest", - choices = unique(data_cortex$TF_target_gene_info$gene), - multiple = TRUE, - selected = c("Dlx6","Sox6")), + selectizeInput(inputId = "gene", + label = "Genes of Interest", + choices = NULL, + multiple = TRUE, + selected = c("Dlx6","Sox6")), #allows user to input a file containing a list of genes to query #this input returns a dataframe with 4 columns: name, size, type, datapath #each file entered is one row @@ -137,7 +142,7 @@ ui <- fluidPage( p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, as predicted with Genie3, with a higher value indicating a more likely regulatory link."), p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), - title = "Transcription Factor Target Information", + title = "TF Target Information", #textOutput("general_desc"), dataTableOutput("table1"), value = "Transcription Factor Target Information" @@ -152,7 +157,7 @@ ui <- fluidPage( Currently, hover only displays gene name but more information to come soon!"), p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), - title = "Regulatory Network Visualization", + title = "GRN Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc #textOutput("desc"), plotlyOutput("network"), @@ -217,7 +222,7 @@ ui <- fluidPage( p("• Joint clusters are clusters classified based on the combined data from every developmental time-point per brain region (forebrain or pons); sample cluster are identified based on data from each individual time-point per brain region."), - title = "Heatmap", + title = "TF Activity Heatmap", value = "Heatmap", fluidRow( plotOutput("heatmap_joint") @@ -232,7 +237,7 @@ ui <- fluidPage( ), tabPanel( - title = "Transcription Factor Activity, by Region", + title = "TF Activity, by Region", value = "Clustering", fluidRow( #make each plot smaller to fit more p("This tab displays the activity of selected transcription factors") %>% strong(), diff --git a/GRN/www/braindex.png b/GRN/www/braindex.png new file mode 100644 index 0000000000000000000000000000000000000000..8f653fd04375d68b7b656c317161416973e6c0f6 GIT binary patch literal 575538 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

0axW-PuYt{3OY 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%0D?J9Le8S|>j?>=CA0OB{N}F<`oYJ8uW@_=z0jR1 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

cbUdbMeJBOU;~}pG8M^khLZZAH`bR)tgCz$b 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

#@$588!knPG@THlcSdAAR~DGmSW;J}uN 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

K}AcvL`&rbZa$8d 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

J7lZ(>Ji2^v(W6-~52Vhz!_DvTM6 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 Date: Tue, 22 Jun 2021 13:07:53 -0400 Subject: [PATCH 011/100] removed shiny_bookmarks --- GRN/.gitignore | 1 + GRN/shiny_bookmarks/77655bbf62e621d2/input.rds | Bin 291 -> 0 bytes GRN/shiny_bookmarks/892a770dbf7ac7d4/input.rds | Bin 296 -> 0 bytes 3 files changed, 1 insertion(+) delete mode 100644 GRN/shiny_bookmarks/77655bbf62e621d2/input.rds delete mode 100644 GRN/shiny_bookmarks/892a770dbf7ac7d4/input.rds diff --git a/GRN/.gitignore b/GRN/.gitignore index 447baaf..ffc3124 100644 --- a/GRN/.gitignore +++ b/GRN/.gitignore @@ -10,4 +10,5 @@ explore data/shared data/joint_cortex data/joint_pons +shiny_bookmarks diff --git a/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds b/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds deleted file mode 100644 index e917a6c34fd76354e2d599bae676ad4db0894af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmV+;0o?u{iwFP!000002CYzCOT#b}O+UxR27=&o|3U})J{6xtL}mCkvi7cvrpZWd zu=B^OcWa}i`e@*ibMEKiJWm*75sO*CqJ$tzukQ2t`JA!vl-QKwgd(JlG5ztiY%V;0 z)P&o5(B&e?X_QTlspE@gKR6D1tw|xdwS)a5p%5xC9X+#Kq4tXcg;tjiQL81F4yf`m zIGns_8vUaXyPEF?x$FTdCpl`f&+Y)e~+k0WJZzq=a4Ie~z z>+p-Rc<6g$Er8UnlGV9%KEdV(hyG+VVuBho(_e6jP=Oxll{sr7K=nC49{oa`w>rIU>63NU$;rP4L+JHOp~pZ{ezW=bP; zGr3@=J7@d}%5;*YH_uPf8eD#Bw^V@yhmqF~M}i(fIHJJ-Iv+LQNfjeomRvwS5m^+x u&NUR@n)GPgX4@1L-C(St>LVMNpY2DqVWKq%Iv*U^Aie;CmF;130ssK+8;1=5 From 0e020e466239467716639855029dd4b9522ba193 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 14:43:25 -0400 Subject: [PATCH 012/100] Switch to server-side bookmarking - issue #28 (only tested locally) --- clusters/global.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clusters/global.R b/clusters/global.R index 3aaebbc..adc37b9 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -40,4 +40,4 @@ load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") # ---- Shiny settings ---- # Enable bookmarking -enableBookmarking(store = "url") \ No newline at end of file +enableBookmarking(store = "server") \ No newline at end of file From b69f8e74b2d19a526d0fc24f7aabcc37b2ea409a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 14:50:04 -0400 Subject: [PATCH 013/100] Match expression table column order to bubble plots - issue #16 --- clusters/server.R | 49 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 26a95f3..0bb0fc9 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -99,7 +99,7 @@ server <- function(input, output, session) { req(bubble_input()) bubble_plot(df = bubble_input(), - max_point_size = input_new()$size)$plot + max_point_size = input_new()$size)$plot # Get plot part of output }, @@ -163,15 +163,20 @@ server <- function(input, output, session) { ) }) + # Render the bubble plot gene labels separately with ggdraw output$bubble_labels <- renderPlot({ ggdraw(bubble_plot(df = bubble_input(), - max_point_size = input_new()$size)$labels) + max_point_size = input_new()$size)$labels) # Get labels part of output }, + # Set height of bubble plot gene labels to (hopefully) align with plots height = function() 25 + 30 * length(input_new()$gene), + # Max length of a gene is 200px + # NOTE: If altering this, also change the corresponding cellWidth for + # splitLayout in ui.R width = 200 ) @@ -183,20 +188,40 @@ server <- function(input, output, session) { req(bubble_input()) - bubble_input() %>% + gene_table_order <- rev(unique(bubble_input()$Gene)) + gene_table_order + + table <- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% spread(Gene, Expression) %>% - DT::datatable(options = list( - columnDefs = list(list(visible = FALSE, - # Hide the Colour column - targets = c(6))), + select(Cluster, + Sample, + "Cell type" = Cell_type, + "Cell class" = Cell_class, + "Number of cells" = N_cells, + all_of(gene_table_order)) + + if ("MEAN" %in% gene_table_order) { + table <- table %>% relocate("MEAN", + .after = last_col()) + } + + DT::datatable(table, options = list( + # columnDefs = list(list(visible = FALSE, + # # Hide the Colour column + # targets = c(6))), selection = "none") - ) %>% + ) %>% + + # Colour the cluster column based on the palette + formatStyle("Cluster", + backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) - # Colour the cluster column based on the palette - formatStyle("Cluster", - backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) + # # Set cluster column text to white if the background colour is dark, else it's black (default) + # if (dark(point$Colour)) { + # style <- paste0(style, "color: #FFFFFF") + # } }) @@ -256,7 +281,7 @@ server <- function(input, output, session) { layout(ribbon_plotly(), legend = list(x = 1, y = 0)) }) - # DOWNLOAD TIMECOURSE + # DOWNLOAD TIMECOURSE (static plot) AS A PDF output$download_ribbon <- downloadHandler(filename = "timecourse_ribbon.pdf", From 6efbe7e9b020c0d1709bcd1482ca55f4950dc84e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 14:54:37 -0400 Subject: [PATCH 014/100] Add toggle for displaying mean expression to table tab, edit docs --- clusters/ui.R | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index dfe5f1e..28db20b 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -28,17 +28,19 @@ ui <- function(request){ selectInput("gene", "Gene", choices = genes_mouse, multiple = TRUE), + # Input for dendrogram tab and expression tabletab + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') + && input.gene.length > 1", + materialSwitch("mean_exp", "Display mean expression over the selected genes", + # status doesn't have any effect other than color scheme. See bootstrap status values + status = "success", + value = FALSE, + right = TRUE), + ), + # Input for dendrogram tab conditionalPanel(condition = "input.tabs == 'dendrogram'", - conditionalPanel(condition = "input.gene.length > 1", - materialSwitch("mean_exp", "Plot mean expression over the selected genes", - # status doesn't have any effect other than color scheme. See bootstrap status values - status = "success", - value = FALSE, - right = TRUE), - ), - selectInput("bubble_scale", "Scaling", choices = c("Scale each gene to [0, 1]" = TRUE, "Conserve scale across genes" = FALSE), @@ -144,7 +146,7 @@ ui <- function(request){ p("• Hover over each bubble, or move to the tab containing the table, to get additional details about each cluster & its expression level"), - p("• When plotting more than one gene, use the sidebar switch to plot the mean expression over the plotted genes in a new row of the bubble plot. Pct values are disregarded here, so all bubbles in this row are the same size"), + p("• When selecting more than one gene, use the sidebar switch to plot the mean expression over the selected genes in a new row of the bubble plot. Pct values are disregarded here, so all bubbles in this row are the same size"), # Display the image of the cluster dendrogram as in Fig 1 of Jessa et al, # Nat Genet, 2019 @@ -191,6 +193,8 @@ ui <- function(request){ p("• The value in each gene column denotes the mean gene expression per cell in the specified cluster (mean expression)"), + p("• When selecting more than one gene, use the sidebar switch to display the mean expression over the selected genes in a new column of the table"), + p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( From 3ba70d46a16cd8daf6701bb78d09e58cc431d5db Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 22 Jun 2021 17:54:44 -0400 Subject: [PATCH 015/100] Show number of cells in timecourse tooltip - issue #19 --- clusters/functions.R | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 5a63c6b..dd35e23 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -174,7 +174,7 @@ bubble_prep <- function(gene, #' @param df Data frame as returned by bubble_prep(), with require columns Cluster, #' Gene_padded, Pct1, and Expression #' -#' @return ggplot2 object +#' @return A list containing a ggplot2 object and its legend (extracted with cowplot) #' #' @examples #' bubble_prep("Dlx1") %>% bubbleplot() @@ -293,9 +293,9 @@ ribbon_plot <- function(gene, mutate(total = n()) %>% group_by(Age, Cell_type) %>% mutate(frac = sum(gene > 0) / total) %>% - distinct(Age, Cell_type, frac) %>% + distinct(Age, Cell_type, frac, total) %>% ungroup() - + # For each timepoint, calculate the proportion of cells in which the gene # is detected ribbon_df_cum_frac <- ribbon_df %>% @@ -315,7 +315,7 @@ ribbon_plot <- function(gene, df$ranking = match(df$cluster, names(colours)) df = df[order(df$stage, df$ranking),] - df <- left_join(df, select(ribbon_df_celltype_frac, cluster = Cell_type, stage = Age, frac)) %>% + df <- left_join(df, select(ribbon_df_celltype_frac, cluster = Cell_type, stage = Age, frac, total)) %>% # Complete cases when genes were not detected in certain timepoints/clusters # by replacing with a zero mutate(frac = replace_na(frac, 0)) %>% @@ -324,7 +324,8 @@ ribbon_plot <- function(gene, df$xpos = match(df$stage, unique(timepoints2)) p1 <- df %>% - ggplot(aes(x = xpos, y = frac, fill = cluster)) + + ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, + text = glue("{total*frac} {gene}+ cells"))) + geom_area(stat = "identity") + scale_fill_manual(values = colours, drop = FALSE, name = "") + scale_x_continuous(breaks = seq_along(unique(df$stage)), @@ -338,7 +339,7 @@ ribbon_plot <- function(gene, if(make_plotly) { return (ggplotly(p1, # Only display cluster information within tooltip - tooltip = "cluster") %>% + tooltip = c("group", "text")) %>% # Add hovers both on points as well as filled areas of the plot # Changing it to hoveron="fills" only causes a known issue, see: @@ -378,7 +379,7 @@ ribbon_plot <- function(gene, #' @param hide_axes Logical, whether or not to hide the plot axes. Default: FALSE #' @param show_n_cells Logical, ... Default: FALSE #' -#' @return A ggplot object +#' @return A list containing a ggplot object and a list of cluster centers #' #' @export dr_plot <- function(embedding, From af435f5d8ca70ffcd75b8ea0e1742da1f000bbdc Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 22 Jun 2021 18:20:54 -0400 Subject: [PATCH 016/100] Add code documentation for new sections --- clusters/functions.R | 3 ++- clusters/server.R | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index dd35e23..50a78c6 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -324,6 +324,7 @@ ribbon_plot <- function(gene, df$xpos = match(df$stage, unique(timepoints2)) p1 <- df %>% + # Need to specify group or the text attribute with glue causes errors ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, text = glue("{total*frac} {gene}+ cells"))) + geom_area(stat = "identity") + @@ -338,7 +339,7 @@ ribbon_plot <- function(gene, if(make_plotly) { return (ggplotly(p1, - # Only display cluster information within tooltip + # Display cluster (group) and info on number of cells (text) in tooltips tooltip = c("group", "text")) %>% # Add hovers both on points as well as filled areas of the plot diff --git a/clusters/server.R b/clusters/server.R index 0bb0fc9..b8859b5 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -188,13 +188,15 @@ server <- function(input, output, session) { req(bubble_input()) + # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - gene_table_order table <- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% spread(Gene, Expression) %>% + # Select all except Colour column, rename some variables for clarity, and + # follow bubble_input order for gene columns (saved above) select(Cluster, Sample, "Cell type" = Cell_type, @@ -202,18 +204,19 @@ server <- function(input, output, session) { "Number of cells" = N_cells, all_of(gene_table_order)) + # Move mean expression to the rightmost column if ("MEAN" %in% gene_table_order) { table <- table %>% relocate("MEAN", .after = last_col()) } + # Produce a datatable DT::datatable(table, options = list( # columnDefs = list(list(visible = FALSE, # # Hide the Colour column # targets = c(6))), selection = "none") ) %>% - # Colour the cluster column based on the palette formatStyle("Cluster", backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) From 66dcd10483ff6c247e589eaaf1b71130b7c07573 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 25 Jun 2021 12:55:36 -0400 Subject: [PATCH 017/100] Alter timecourse tooltip text and plotly controls --- clusters/functions.R | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 50a78c6..41f5425 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -326,7 +326,7 @@ ribbon_plot <- function(gene, p1 <- df %>% # Need to specify group or the text attribute with glue causes errors ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, - text = glue("{total*frac} {gene}+ cells"))) + + text = glue("{total*frac} {gene}+ cells out of {total} cells in timepoint"))) + geom_area(stat = "identity") + scale_fill_manual(values = colours, drop = FALSE, name = "") + scale_x_continuous(breaks = seq_along(unique(df$stage)), @@ -338,7 +338,7 @@ ribbon_plot <- function(gene, ylim(0, ymax) if(make_plotly) { - return (ggplotly(p1, + return ((ggplotly(p1, # Display cluster (group) and info on number of cells (text) in tooltips tooltip = c("group", "text")) %>% @@ -346,7 +346,20 @@ ribbon_plot <- function(gene, # Changing it to hoveron="fills" only causes a known issue, see: # https://github.com/ropensci/plotly/issues/1641 style(hoveron="points+fills") - ) + ) %>% + + # Customize the modebar on the plotly object to hide certain buttons, + # remove the plotly logo, and toggle spike lines on by default + config(modeBarButtonsToRemove = c("hoverCompareCartesian", + "hoverClosestCartesian", + "toImage"), + displaylogo = FALSE) %>% + layout(yaxis = list(showspikes = FALSE, + spikethickness = 1.5, + spikedash = "solid"), + xaxis = list(showspikes = FALSE, + spikethickness = 1.5, + spikedash = "solid"))) } else { return(p1) } From 4b3b6c8f55b97f68a50d7dedfba882d43501fa0e Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 25 Jun 2021 17:49:35 -0400 Subject: [PATCH 018/100] Create new tab to to rank clusters by expression - issue #20 --- clusters/functions.R | 52 ++++++++++++++++++++++++++++++++++++++- clusters/server.R | 58 ++++++++++++++++++++++++++++++++++++++++++++ clusters/ui.R | 17 +++++++++++-- 3 files changed, 124 insertions(+), 3 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 41f5425..c672c17 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -326,7 +326,7 @@ ribbon_plot <- function(gene, p1 <- df %>% # Need to specify group or the text attribute with glue causes errors ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, - text = glue("{total*frac} {gene}+ cells out of {total} cells in timepoint"))) + + text = glue("{total*frac} {gene}+ cells out of {total} cells at this time point"))) + geom_area(stat = "identity") + scale_fill_manual(values = colours, drop = FALSE, name = "") + scale_x_continuous(breaks = seq_along(unique(df$stage)), @@ -791,3 +791,53 @@ dark <- function(hex_color) { } } + +#' Add ticks below a bar plot to categorize x axis into less granular categories +#' +#' @param df Dataframe, containing the data to use +#' [...] +#' +#' @example +#' plot + add_class_ticks(df, unique(df$Cell_class), palette = palettes$Cell_class, +#' start = -50, sep = 100, height = 500, label_x_pos = -9, fontsize = 3.5) +#' +add_class_ticks <- function(df, classes, height, sep, start, label_x_pos, palette = NULL, fontsize = 3) { + + # Set up our limits + n <- length(classes) + tops <- seq(start, by = - (height + sep), length.out = n) + bottoms <- seq(start - height, by = - (height + sep), length.out = n) + mids <- map2_dbl(tops, bottoms, ~ mean(c(.x, .y))) + betweens <- seq(start - (height + sep/2), by = - (height + sep), length.out = n - 1) + + if (is.null(palette)) palette <- rep("black", n) + + # Make a dataframe for tick positions + df$y_top <- NA + df$y_bottom <- NA + + for (i in seq_along(classes)) { + + df[df$Cell_class == classes[i], ]$y_top <- tops[i] + df[df$Cell_class == classes[i], ]$y_bottom <- bottoms[i] + + } + + # Make a dataframe for class labels + df2 <- data.frame(Class = classes, + x = label_x_pos, + y = mids) + + # Adding ggplot2 elements together + # https://stackoverflow.com/questions/56405904/how-to-add-ggproto-objects-together-and-save-for-later-without-call-to-ggplot + list(geom_segment(data = df, + mapping = aes(x = Cluster, y = y_top, + xend = Cluster, yend = y_bottom), + size = 1, + colour = "gray50"), + geom_hline(yintercept = 0, colour = "gray90"), + geom_hline(yintercept = betweens, linetype = "dotted", size = 0.4, colour = "gray60"), + geom_text(data = df2, mapping = aes(x = x, y = y, label = Class, colour = Class), size = fontsize, fontface = "bold", hjust = "left"), + scale_colour_manual(values = palette)) + +} diff --git a/clusters/server.R b/clusters/server.R index b8859b5..1d27579 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -565,5 +565,63 @@ server <- function(input, output, session) { }) + #### ---- Clusters ranked by expression tab content ---- + + output$rank_tick_plot <- renderPlot({ + + # Lists & palette to use for more general cell class labels + # neuron_list = list("RGC", "RGC (prolif.)", "Excitatory neurons", + # "Other neurons", "Inhibitory neurons") + # progenitor_list = list("Neuronal progenitors", "Oligodendrocyte precursors", + # "Glial progenitors") + # others_list = list("Other", "Non-neuroectoderm", "Immune") + + palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", + "Oligodendrocytes" = "#b7dd5f", + "Astrocytes" = "#00a385", + "Ependymal" = "#8ee5cf", + "Neurons" = "#840200", + "Non-neuroect." = "gray40", + "Other" = "gray90") + + df <- bubble_prep(gene = input_new()$gene[1]) %>% + # Order from highest to lowest by expression (ranked) + arrange(desc(Expression)) %>% + mutate(Cluster = factor(Cluster, levels = .$Cluster)) %>% + # Rename cell classes to more general names + mutate(Cell_class = case_when( + grepl("RGC", Cell_class) | grepl("-P$", Cluster) ~ "Progenitors/cyc.", + grepl("Olig", Cell_class) ~ "Oligodendrocytes", + grepl("Epen", Cell_class) ~ "Ependymal", + grepl("Astr", Cell_class) ~ "Astrocytes", + grepl("[Nn]euron", Cell_class) ~ "Neurons", + grepl("Non-neuro|Immune", Cell_class) ~ "Non-neuroect.", + TRUE ~ "Other" + )) + + p1 <- df %>% ggplot(aes(x = Cluster, y = Expression)) + + geom_bar(aes(fill = Cluster), stat = "identity") + + scale_fill_manual(values = df$Colour) + + theme_min() + + theme(legend.position = "none", + axis.title.x = element_blank(), + axis.text.x = element_blank(), + axis.ticks.x = element_blank()) + + expand_limits(x = -18) + + ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), + palette = palette_tick_plot, + start = -5, sep = 5, height = 30, label_x_pos = -16, fontsize = 3.5) + + # Make sure to expand to the same value that's in p1 + expand_limits(x = -18) + + theme(legend.position = "none", + axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 10), + axis.title.y = element_blank(), + axis.text.y = element_blank(), + axis.ticks.y = element_blank()) + + plot_grid(p1, ticks, ncol = 1, align = "v") + }) + } diff --git a/clusters/ui.R b/clusters/ui.R index 28db20b..477e585 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -52,8 +52,9 @@ ui <- function(request){ ), - # Input for all tabs other than dendrogram & table - conditionalPanel(condition = "input.tabs != 'dendrogram' && input.tabs != 'exp_table'", + # Input for all tabs other than dendrogram, ranked plot, & table + conditionalPanel(condition = "input.tabs != 'dendrogram' && input.tabs != 'exp_table' + && input.tabs != 'rank_exp'", # Specify the visible label as well as the internal # strings used to refer to each region, matching @@ -364,6 +365,18 @@ ui <- function(request){ value = "sample" ), + #### ---- Clusters ranked by expression tab output ---- + + tabPanel("Clusters ranked by expression", + + fluidRow( + plotOutput("rank_tick_plot", width = "12in", height = "5in") %>% ws + ), + + # Specify the value to use when checking if this tab is selected + value = "rank_exp" + ), + id = "tabs" ))), From c033cfdbb932eda1c9bfc0be3d51c19cba75b2d1 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Sun, 27 Jun 2021 14:40:34 -0400 Subject: [PATCH 019/100] modified labels, tool-tips, legends, comments --- GRN/.gitignore | 1 + GRN/data/data.json | 28 ++++++ GRN/functions.R | 232 ++++++++++++++++++++++++++++++++++++++++++--- GRN/server.R | 8 +- GRN/ui.R | 182 ++++++++++------------------------- 5 files changed, 299 insertions(+), 152 deletions(-) diff --git a/GRN/.gitignore b/GRN/.gitignore index ffc3124..c33c585 100644 --- a/GRN/.gitignore +++ b/GRN/.gitignore @@ -11,4 +11,5 @@ data/shared data/joint_cortex data/joint_pons shiny_bookmarks +data/ct_e12 diff --git a/GRN/data/data.json b/GRN/data/data.json index daf2de2..d29d6ad 100644 --- a/GRN/data/data.json +++ b/GRN/data/data.json @@ -24,6 +24,13 @@ "contents": "Several R objects: forebrain_data, TF_and_ext, TF_active, metadata, tf_df, cell_metadata_cortex,binary_activity data", "script": "data_prep.R" + }, + { + "file": "joint_cortex.regulon_activity_per_joint_cluster.feather", + "description": "feather file containing average TF activity per joint cluster instead of per sample cluster in the forebrain.", + "contents": "a data frame with a joint cluster column and columns corresponding to TFs and their activity in each cluster.", + "script": "data_prep.R" + }, { "file": "Forebrain_join.2D.tsv", @@ -31,6 +38,13 @@ "description": "Cell-level information for forebrain data, including corresponding clusters and UMAP/tSNE/PCA coordinates, used to plot scatterplots", "contents": "Data frame with columns, 'Cell' 'Sample' 'Sample_cluster', followed by columns for embedding coordinates." + }, + { + "file": "Jessa2019_Table_2b_joint_cortex_metadata.tsv", + "path": "selin.jessa/from_hydra/single_cell/scDev_data/data/metadata/Jessa2019_Table_2b_joint_cortex_metadata.tsv", + "description": "Joint_cluster-level information for forebrain data, including color palatte for each cluster, used to color scatter plots", + "contents": "Data frame with columns, 'Cluster_number' 'Color' 'Cell_type' 'Sample' etc., followed by summary info for each cluster." + }, { @@ -82,6 +96,20 @@ "script": "data_prep.R" }, + { + "file": "joint_pons.regulon_activity_per_joint_cluster.feather", + "description": "feather file containing average TF activity per joint cluster instead of per sample cluster in the pons.", + "contents": "a data frame with a joint cluster column and columns corresponding to TFs and their activity in each cluster.", + "script": "data_prep.R" + + }, + { + "file": "Jessa2019_Table_2c_joint_pons_metadata.tsv", + "path": "selin.jessa/from_hydra/single_cell/scDev_data/data/metadata/Jessa2019_Table_2c_joint_pons_metadata.tsv", + "description": "Joint_cluster-level information for forebrain data, including color palatte for each cluster, used to color scatter plots", + "contents": "Data frame with columns, 'Cluster_number' 'Color' 'Cell_type' 'Sample' etc., followed by summary info for each cluster." + + }, { "file": "Pons_join.2D.tsv", "path": "selin.jessa/from_hydra/single_cell/scDev_data/data/joint_pons/Pons_join.2D.tsv", diff --git a/GRN/functions.R b/GRN/functions.R index 389593b..33f6f85 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -1,3 +1,33 @@ +##----------------------------ggplot style--------------------------------------------- +theme_min <- function(base_size = 11, base_family = "", + border_colour = "black", + border_size = 1) { + + theme_light(base_size = 11, base_family = "") + + theme( + panel.grid.major = element_blank(), + panel.grid.minor = element_blank(), + panel.background = element_blank(), + panel.border = element_rect(fill = NA, colour = border_colour, size = border_size), + axis.ticks = element_line(colour = border_colour), + strip.background = element_rect(fill = NA, colour = NA), + strip.text.x = element_text(colour = "black", size = rel(1.2)), + strip.text.y = element_text(colour = "black", size = rel(1.2)), + title = element_text(size = rel(0.9)), + axis.text = element_text(colour = "black", size = rel(1.2)), + axis.title = element_text(colour = "black", size = rel(1.5)), + legend.title = element_text(colour = "black", size = rel(1.2)), + legend.key.size = unit(0.9, "lines"), + legend.text = element_text(size = rel(0.7), colour = "black"), + legend.key = element_rect(colour = NA, fill = NA), + legend.background = element_rect(colour = NA, fill = NA) + ) +} + + + + +#----------------------------TF information table--------------------------------------------- #function to add a column to data-table containing the HTML code necessary to display the motif logo addMotifPic <- function(subset_data){ #need to comment this and test to see if it works when I have wifi subset_data <- mutate(subset_data, motif_logo = bestMotif) @@ -11,6 +41,169 @@ addMotifPic <- function(subset_data){ #need to comment this and test to see if i return(subset_data) } +#------------------------------Bubble plot-------------------------------------- +#' Prepare input for bubble_plot +#' +#' Load gene expression data from feather, tidy & optionally scale expression, +#' and return the dataframe required as input for the bubble_plot() function +#' +#' @param gene Character vector, one or more genes of interest to plot +#' @param scale Logical, whether or not to linearly scale gene expression across +#' clusters to [0,1] to improve visualization. Default: TRUE +#' @param show_mean Logical, whether or not to display the mean expression of +#' given genes in a new bubble plot line. Default: FALSE +#' TODO: Use this to provide an option to download the underlying data. +#' +#' @examples +#' bubble_prep("Dlx1") +bubble_prep <- function(tf, + scale = TRUE, + show_mean = FALSE, + region) { + + # Load the mean expression of genes across clusters, given gene of interest + file_path <- glue("data/joint_{region}/joint_cortex.regulon_activity_per_cluster.feather") + exp <- read_feather(path = file_path, + columns = c("Cluster", tf)) #%>% + #dendogram_order from hydra file, commented out for now because no dendogram + #filter(Cluster %in% dendrogram_order) + + # Scale expression of each gene linearly across clusters to [0, 1] + if (scale) { + + exp <- exp %>% + as.data.frame() %>% + tibble::column_to_rownames(var = "Cluster") %>% + apply(2, scales::rescale, to = c(0, 1)) %>% + as.data.frame %>% + tibble::rownames_to_column(var = "Cluster") + + } + + # Convert to long / tidy format with columns: Cluster, Gene, Expression + exp <- exp %>% + gather(., "TF", "Activity", 2:ncol(.)) + + # Probably don't need this in the TF plot + # # Load the proportion of cells in each cluster in which each gene was detected, + # # and convert to long / tidy format with columns: Cluster, Gene, Pct1 + # pct1 <- read_feather("data/joint_mouse/pct1_per_ID_20190715_cluster.feather", + # columns = c("Cluster", gene)) %>% + # gather(., "Gene", "Pct1", 2:ncol(.)) + + # # Join with cluster metadata + # df <- left_join(exp, pct1, by = c("Cluster", "Gene")) %>% + # left_join(metadata, by = c("Cluster" = "Cluster_nounderscore")) + + # Tidy data for plotting + df <- df %>% + + # Order genes to match order input by user + mutate(TF = factor(TF, levels = rev(TF))) %>% + arrange(TF) %>% + + # Pad gene names so that the plot takes up a more standardized + # width; to roughly the the # of characters in the gene w/ longest name + # However, letters take up more pixels than spaces, so do less padding + # for genes with longer names + # TODO: Test the (commented) third line inside mutate() and adjust padding as required + mutate(TF_padded = case_when( + str_length(TF) <= 5 ~ str_pad(TF, 15, side = 'right', pad = " "), + between(str_length(TF), 5, 8) ~ str_pad(TF, 12, side = 'right', pad = " ") + #, str_length(Gene) > 8 ~ str_pad(Gene, 9, side = 'right', pad = " ") + ) + ) %>% + mutate(TF_padded = factor(TF_padded, levels = unique(.$TF_padded))) %>% + + # Order the clusters on the x-axis to match the dendrogram image + mutate(Cluster = factor(Cluster, levels = dendrogram_order)) %>% + + filter(!is.na(Cluster)) %>% + + # Convert NAs (undetected genes) to 0s -- this ensures all + # clusters have a value for all genes, so that all clusters are plot, + # even if the gene was undetected + replace_na(list(Expression = 0, Pct1 = 0)) %>% + + # Keep columns + select(Gene, Cluster, Sample, Cell_type, Cell_class, N_cells, Expression, Pct1, Sample, Colour, Gene_padded) + + # Create & append set of rows containing mean expression over all selected genes + if(show_mean) { + + # Create mean expression rows, preserving information for tooltip + mean_exp <- df %>% + group_by(Cluster, Sample, Cell_type, N_cells, Cell_class, Colour) %>% + summarize(#Gene = "MEAN", + #Cluster = Cluster, + #Sample = Sample, + #Cell_type = Cell_type, + #Cell_class = Cell_class, + #N_cells = N_cells, + Expression = mean(Expression) + #Pct1 = mean(Pct1), + #Colour = Colour, + #Gene_padded = "MEAN" + ) %>% + # Remove the Pct1 value from the mean expression + # and label the mean expression + mutate(Pct1 = 1, Gene = "MEAN", Gene_padded = "MEAN") + + # Add the rows containing mean expression to the original dataframe, + # removing duplicate rows and ordering them once more by user input, + # except the mean which is placed at the bottom + gene_order_padded <- levels(df$Gene_padded) + df <- bind_rows(df, mean_exp) %>% + distinct(.) %>% + mutate(Gene_padded = factor(Gene_padded, levels = c("MEAN", gene_order_padded))) + + } + + return(df) + +} + + +#' Bubbleplot of gene expression +#' +#' Generate a bubble plot for genes of interest across clusters in the mouse +#' dendrogram, where bubble colour encodes the mean expression in each cluster +#' and bubble size encodes the proportion of cells where each gene is detected +#' +#' @param df Data frame as returned by bubble_prep(), with require columns Cluster, +#' Gene_padded, Pct1, and Expression +#' +#' @return ggplot2 object +#' +#' @examples +#' bubble_prep("Dlx1") %>% bubbleplot() +#' +#' @export +bubble_plot <- function(df, max_point_size) { + + # Generate plot + p1 <- df %>% + ggplot(aes(x = Cluster, y = Gene_padded)) + + geom_point(aes(size = Pct1, colour = Expression), alpha = 0.8) + + scale_size_area(max_size = max_point_size) + + scale_color_gradientn(colours = tail(rdbu, 70)) + + theme_min() + + ylab(NULL) + + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, + colour = joint_mouse_palette, size = rel(0.7)), + panel.grid.major.x = element_line(colour = "grey90"), + panel.border = element_blank(), + axis.ticks.x = element_blank(), + axis.ticks.y = element_blank(), + # Do not show the legend because it is included in the static + # dendrogram image displayed above the bubbleplot + legend.position = "bottom") + + # Put gene labels on the right hand side to improve alignment + scale_y_discrete(position = "right") + + return(p1) + +} #----------------------------ggNet visualisation--------------------------------------------- #function to create an igraph object #' @param tf the user input vector of transcription factors @@ -44,21 +237,27 @@ make_network <- function(tf, tf_target_gene_info, gene_list){ plot_network <- function(net, labelNodes, tf){ if(labelNodes){ set.seed(0.926) - ggnet2(net, color = "Gene_Type", label = labelNodes, label.size = 3, size = "Gene_Type", + ggnet2(net, color = "Gene_Type", alpha = "Gene_Type", size = "Gene_Type", shape = "Gene_Type", + label = labelNodes, label.size = 3, mode = "fruchtermanreingold", layout.par = list(niter = 1000), - size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), + size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), + alpha.palette = c("Target Genes" = "1", "TF" = "1", "Input Target Genes" = "1"), + shape.palette = c("Target Genes" = "19", "TF" = "19", "Input Target Genes" = "19"), palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), group = 1, text = names(V(net))) + - guides(size = FALSE, color = guide_legend(title= "Gene Type")) + guides(size = FALSE, alpha = FALSE, shape = FALSE, color = guide_legend(title = "Gene Type")) } else{ set.seed(0.926) - ggnet2(net, color = "Gene_Type", label = tf, label.size = 3, size = "Gene_Type", + ggnet2(net, color = "Gene_Type", alpha = "Gene_Type", size = "Gene_Type", shape = "Gene_Type", + label = tf, label.size = 3, mode = "fruchtermanreingold", layout.par = list(niter = 1000), size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), + alpha.palette = c("Target Genes" = "1", "TF" = "1", "Input Target Genes" = "1"), + shape.palette = c("Target Genes" = "19", "TF" = "19", "Input Target Genes" = "19"), palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), group = 1, text = names(V(net))) + - guides(size = FALSE, color = guide_legend(title = "Gene Type")) + guides(size = FALSE, alpha = FALSE, shape = FALSE, color = guide_legend(title = "Gene Type")) } } @@ -136,7 +335,7 @@ plot_network <- function(net, labelNodes, tf){ # edges = edgeData # )) # } -# ------------------------------------------------------------------------------------ +# --------------------------------Helper functions---------------------------------------------------- #' Identify transcription factor data type #' #' Generate a tibble that has two columns indicating whether the tf has ext type, @@ -246,7 +445,7 @@ tf_ext <- function(TF, TF_and_ext){ filter(TF_and_ext, type==TF & ext=="ext")[[1,1]] } -# --------------------------------Tab2 data-------------------------------- +# --------------------------------Create data for plots-------------------------------- # NOTE: TF_and_ext is a dataframe (loaded already) that created in order to identify # whether the TF data is a regular TF (with high confidence annotation) # or ext type(with lower confidence) @@ -347,7 +546,7 @@ create_activity_data <- function(tf, method, region, TF_and_ext, timepoint = NUL } -#--------------------------------Tab 2: heatmap---------------------------------- +#--------------------------------Heatmap---------------------------------- # This function takes a colour palette as input, # and creates the data formats needed to annotate # a pheatmap with some colours @@ -388,7 +587,7 @@ makePheatmapAnno <- function(palette, column) { #' plot_heatmap(c("Pax6","Lef1"), "Cluster","pons", TF_and_ext_pon, pon_data) #' plot_heatmap(c("Pax6","Lef1"), "Cell","pons", TF_and_ext_pon,pon_data) #' -plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_num = 300, timepoint = NULL){ +plot_heatmap <- function(tf, method, region, TF_and_ext, brain_data, cell_plot_num = 300, timepoint = NULL){ # sanity checking if(!region %in% c("cortex", "pons")) return("Wrong usage: region should be either cortex/pons") if(!method %in% c("Cell","Cluster", "joint")) return("Wrong usage, method should be Cell/Cluster") @@ -449,12 +648,18 @@ plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_nu show_colname_plot <- TRUE title <- "Transcription Factor Regulon Activity per Cluster" } + cluster_row <- FALSE + #do not do row clustering if there is only one TF selected + if(length(tf) > 1){ + cluster_row <- TRUE + } pheatmap::pheatmap(t(act), show_colnames = show_colname_plot, scale = "none", border_color = NA, color = colorRampPalette(c("blue", "white", "red"))(100), main = title, + cluster_rows = cluster_row, #annotation_col = anno_col, # change the default color annotation annotation_colors = hm_anno_new$side_colors, # loaded by data_prep.R @@ -463,7 +668,7 @@ plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_nu cellheight = 10) } - +#----------------------------Dimension reduction--------------------------------------------- #' Make UMAP clustering scatterplot #' #' @param tf_number Either 1 or 2. In the tf input vector we get from user in Shiny app, there could be @@ -504,7 +709,7 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, dim_red_type ggplot(data = cell_meta_with_activity, mapping = aes_string(x = x_axis, y = y_axis))+ geom_point(aes(color = activity_tf))+ scale_color_gradient(low = "grey", high = "red")+ - theme_bw() + labs(color = 'TF Activity') + theme_min() + labs(color = 'TF Activity') } #if I want to include labeled clusters, then I need to map cells to the clusters @@ -522,7 +727,7 @@ color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type, clust center_y = median(get(y_axis))) gg <- ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ - geom_point(aes(color = Joint_cluster)) + theme_bw() + theme(legend.position="bottom") + + geom_point(aes(color = Joint_cluster)) + theme_min() + theme(legend.position="bottom") + guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) if(cluster_label){ @@ -541,6 +746,8 @@ color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type, clust } return(gg) } + +#----------------------------Time Course Ribbon Plot--------------------------------------------- #need to maybe change the colors, select out the numbers and rename legend, just cosmetic things #' make cell metadata of certain region, cortex/pon @@ -703,6 +910,7 @@ plot_timeseries <- function(TF,cell_metadata, activity, make_plotly = FALSE, sho limits = c(1, length(unique(df$stage)))) + labs(x = "age", y = "Proportion", title = TF) + guides(fill = guide_legend(ncol = 5)) + + theme_min() + theme(legend.position = "bottom") if(make_plotly) { diff --git a/GRN/server.R b/GRN/server.R index ee3b3c6..f9006c9 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -1,11 +1,5 @@ server <- function(input, output, session) { - # help message - observeEvent(input$help, - introjs(session, options = list("nextLabel"="Next", - "prevLabel"="Previous", - "skipLabel"="Exit Tutorial"), - events = list("oncomplete"=I('alert("All Done!")'))) - ) + # Dynamic UI, change the selectInput tf lists on display depending on the brain region that is selected observeEvent(input$region,{ if(input$region == "cortex"){ diff --git a/GRN/ui.R b/GRN/ui.R index 0594460..294cf64 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -13,7 +13,7 @@ ui <- fluidPage( titlePanel("Transcription Factor Activity in Single-cell Developmental Atlas", windowTitle = "GRN"), - + # ---------------- Side Panel --------------------------------------------- sidebarLayout( sidebarPanel( width = 3, @@ -31,23 +31,8 @@ ui <- fluidPage( choices = NULL, multiple = TRUE, selected = c("Arx", "Lef1")), - # selectInput(inputId = "TF", - # label = "Transcription Factor", - # choices = data_cortex$unique_active_TFs_bare, - # multiple = TRUE, - # selected = c("Arx","Lef1")), - # fileInput("file_tf", "Choose CSV File containing your tf list", - # accept = c( - # "text/csv", - # "text/comma-separated-values,text/plain", - # ".csv") - # ), - - # 1. table and network graph of related TF and genes - conditionalPanel( - condition = "input.tabs == 'Transcription Factor Target Information'", - - ), + +#----------------------------ggNet visualisation--------------------------------------------- conditionalPanel( condition = "input.tabs == 'Regulatory Network Visualization'", selectizeInput(inputId = "gene", @@ -60,47 +45,19 @@ ui <- fluidPage( #each file entered is one row uiOutput('file1_ui'), ## instead of fileInput('file1', label = NULL) so that the file can be reset - # fileInput( - # "file_gene", "Choose a CSV file containing your genes list", - # accept = c( - # "text/csv", - # "text/comma-separated-values, text/plain", - # ".csv"), - # multiple = FALSE, - # placeholder = "example_list.csv" - # ), + actionButton("reset", label = "Reset File"), checkboxInput(inputId = "label", label = "Label Target Gene Nodes", value = FALSE) ), - # conditionalPanel(condition = "input.tabs == 'Table and Network'", - # radioButtons("show", "Node Display Option", - # # use the names in the vector to display - # # use the character "joint_cortex" to match the path to import data - # choices = c("Show All Nodes" = "all", - # #"color by user's input tf list" = "pathway", - # "Shrink Grey Nodes" = "shrink", - # "Neglect Grey Nodes" = "neglect", - # - # "Show No Nodes" = "stop"), - # selected = "stop"),#, - # checkboxInput("show_pathway","Color by Input Genes", - # TRUE), - # selectInput("input_pathway", "Gene Pathway of Interest", - # choices = data_cortex$unique_active_TFs_bare, - # multiple = TRUE, - # selected = c("Arx","Lef1")) - # # fileInput("file_gene", "Choose CSV File containing your genes list", - # # accept = c( - # # "text/csv", - # # "text/comma-separated-values,text/plain", - # # ".csv") - # # ) - # #actionButton("update_graph", label = "See the network graph") - # - # ), - # 2. heatmap and clustering +# -----------------TF info table --------------------------------------------- + conditionalPanel( + condition = "input.tabs == 'Transcription Factor Target Information'", + + ), + +# ----------------Heatmap --------------------------------------------- conditionalPanel(condition = "input.tabs == 'Heatmap'", #numericInput(inputId = "num_cell_plot", label = "Number of Cells to Visualize", #value = 300), @@ -111,12 +68,13 @@ ui <- fluidPage( "Sample Cluster" = "Cluster"), selected = "joint"), selectInput(inputId = "time", - label = "Timepoint to Visualize", + label = "Time-point to Visualize", choices = c("All","e12", "e15", "p0", "p3", "p6"), multiple = FALSE, - selected = "e12") + selected = "All") ), +# -----------------DR plots --------------------------------------------- conditionalPanel(condition = "input.tabs == 'Clustering'", radioButtons("dim_red", "Dimension Reduction Method", @@ -134,28 +92,20 @@ ui <- fluidPage( actionButton("update", label = "Update"), bookmarkButton(), ), +# -----------------Main Panel --------------------------------------------- mainPanel( tabsetPanel( - - tabPanel( - strong("This tab displays information corresponding to the selected transcription factors and their predicted target genes.") %>% p(), - p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, - as predicted with Genie3, with a higher value indicating a more likely regulatory link."), - p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), - title = "TF Target Information", - #textOutput("general_desc"), - dataTableOutput("table1"), - value = "Transcription Factor Target Information" - ), + # -----------------ggNet visualisation --------------------------------------------- tabPanel( - strong("This tab displays a network visualisation of the inferred regulatory relationship between transcripton factors and target genes.") %>% p(), - p("• Transcription factors and target genes are represented as nodes with regulatory relationships represented as edges."), - p("• User input transcription factors are shown in blue. Target genes that are present in the current - network can be highlighted in orange based on user selection or based on a file containing a gene list."), + strong("This tab displays a network visualisation of the inferred regulatory relationship between TFs and target genes.") %>% p(), + p("• TFs and target genes are represented as nodes with regulatory relationships represented as edges."), + p("• User input TFs are shown in blue. Target genes that are present in the current + network can be highlighted in orange based on a user-input gene list, either through the + \"Genes of Interest\"input or through a file input."), p("• Click on the \"Label Target Gene Nodes\" option to see the label of every gene target and enable a hover option. Currently, hover only displays gene name but more information to come soon!"), - p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), + p("• TFs that self regulate are not displayed (i.e no self loops)."), p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), title = "GRN Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc @@ -179,49 +129,30 @@ ui <- fluidPage( br(), br(), downloadButton("download_network", "Network Visualisation Download (PDF)"), - #need to work on visualization with the ggNet package value = "Regulatory Network Visualization" ), - # tabPanel( - # title = "Table and Network", - # textOutput("general_desc"), - # introBox( - # - # dataTableOutput("table"), - # data.step = 3, - # data.intro = "Table and network tab: - # A table of tf and its target gene with motifs and other information" - # ), - # introBox( - # data.intro = "Feel free to quit the intro now, click the 'show all nodes' button - # in the sidebar to see the cytoscape network graph, then we continue", - # data.step = 4 - # ), - # - # - # textOutput("desc"), - # tags$style(type="text/css", "#desc {white-space: pre-wrap;}"), - # introBox( - # rcytoscapejsOutput("network", width = "1200px",height = "600px"), - # data.step = 5, - # data.intro = "a network graph visualization displaying detailed information with node color - # and size: - # Orange nodes are active transcription factors (tf genes that express their own tf); - # Purple nodes in the center are your input transcription factors; - # Green nodes are your input genes related to input tfs(purple nodes) - # ; grey nodes are other genes." - # ), - # value = "Table and Network" - # ), - - - + # -----------------TF info table --------------------------------------------- + tabPanel( + strong("This tab displays information corresponding to the selected TFs and their inferred target genes.") %>% p(), + p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, + as predicted with Genie3, with a higher value indicating a more likely regulatory link."), + p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), + title = "TF Target Information", + #textOutput("general_desc"), + dataTableOutput("table1"), + value = "Transcription Factor Target Information" + ), + + # -----------------Heatmap --------------------------------------------- tabPanel( - strong("This tab displays a heatmap of user selected transcription factor activity per cluster") %>% p(), - p("• Joint clusters are clusters classified based on the combined data from every developmental - time-point per brain region (forebrain or pons); sample cluster are identified based on data from each + strong("This tab displays a heatmap of user selected TF activity per cluster") %>% p(), + p("• Values in the heatmap represent the mean TF activity per cluster."), + p("• Joint clusters are classified based on the combined data from every developmental + time-point in a brain region (forebrain or pons); sample cluster are identified based on data from each individual time-point per brain region."), + p("• Use the \"Time-point to Visalise\" option to select which (if not all) time-points + to visualise in the sample cluster heatmap."), title = "TF Activity Heatmap", value = "Heatmap", fluidRow( @@ -235,7 +166,7 @@ ui <- fluidPage( downloadButton("download_hm_cluster", "Heatmap by Timepoint Cluster (PDF)"), imageOutput("color_hm_palette", width = "6in", height = "4in") ), - + # -----------------DR plots --------------------------------------------- tabPanel( title = "TF Activity, by Region", value = "Clustering", @@ -256,30 +187,15 @@ ui <- fluidPage( ) ), - # tabPanel("Heatmap and Clustering", - # - # plotOutput("heatmap_cell"), - # downloadButton("download_hm_cell", "Heatmap by cell (Png)"), - # plotOutput("heatmap_cluster"), - # downloadButton("download_hm_cluster", "Heatmap by cluster (Png)"), - # imageOutput("color_hm_palette", width = "6in", height = "4in"), - # - # fluidRow( - # textOutput("cluster_UMAP_desc"), - # column(width = 8, plotOutput("cluster1",width = "5in", height = "5in"), - # downloadButton("download_UMAP_1", "UMAP scatterplot 1 (Png)")), - # - # column(width = 8, plotOutput("cluster2", width = "5in",height = "5in"), - # downloadButton("download_UMAP_2", "UMAP scatterplot 2 (Png)")), - # - # ), - # - # value = "Heatmap and Clustering" - # ), + # -----------------Time Series --------------------------------------------- tabPanel("Time Series", p("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given - transcriptional factor is active, broken down by cell type, to allow for visualizing activity - across the timecourse") %>% strong(), + TF is active, broken down by cell type, to allow for visualizing activity + across time.") %>% strong(), + p("• For any given cell, any given TF is considered active if its activity in that cell + is higher than a TF activity threshold."), + p("• The time series for the first TF selected in the sidebar will be an interactive plot, with + the remaining plots being static."), textOutput("timeseries_desc"), br(), From a429370f78183abf36a7e91e68312c586d976326 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Sun, 27 Jun 2021 15:37:34 -0400 Subject: [PATCH 020/100] commented out code that doesn't work yet --- GRN/.gitignore | 1 + GRN/functions.R | 292 ++++++++++++++++++++++++------------------------ 2 files changed, 147 insertions(+), 146 deletions(-) diff --git a/GRN/.gitignore b/GRN/.gitignore index c33c585..7ee84b8 100644 --- a/GRN/.gitignore +++ b/GRN/.gitignore @@ -12,4 +12,5 @@ data/joint_cortex data/joint_pons shiny_bookmarks data/ct_e12 +data/ct_e12_not_needed diff --git a/GRN/functions.R b/GRN/functions.R index 33f6f85..5705d0e 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -56,154 +56,154 @@ addMotifPic <- function(subset_data){ #need to comment this and test to see if i #' #' @examples #' bubble_prep("Dlx1") -bubble_prep <- function(tf, - scale = TRUE, - show_mean = FALSE, - region) { - - # Load the mean expression of genes across clusters, given gene of interest - file_path <- glue("data/joint_{region}/joint_cortex.regulon_activity_per_cluster.feather") - exp <- read_feather(path = file_path, - columns = c("Cluster", tf)) #%>% - #dendogram_order from hydra file, commented out for now because no dendogram - #filter(Cluster %in% dendrogram_order) - - # Scale expression of each gene linearly across clusters to [0, 1] - if (scale) { - - exp <- exp %>% - as.data.frame() %>% - tibble::column_to_rownames(var = "Cluster") %>% - apply(2, scales::rescale, to = c(0, 1)) %>% - as.data.frame %>% - tibble::rownames_to_column(var = "Cluster") - - } - - # Convert to long / tidy format with columns: Cluster, Gene, Expression - exp <- exp %>% - gather(., "TF", "Activity", 2:ncol(.)) - - # Probably don't need this in the TF plot - # # Load the proportion of cells in each cluster in which each gene was detected, - # # and convert to long / tidy format with columns: Cluster, Gene, Pct1 - # pct1 <- read_feather("data/joint_mouse/pct1_per_ID_20190715_cluster.feather", - # columns = c("Cluster", gene)) %>% - # gather(., "Gene", "Pct1", 2:ncol(.)) - - # # Join with cluster metadata - # df <- left_join(exp, pct1, by = c("Cluster", "Gene")) %>% - # left_join(metadata, by = c("Cluster" = "Cluster_nounderscore")) - - # Tidy data for plotting - df <- df %>% - - # Order genes to match order input by user - mutate(TF = factor(TF, levels = rev(TF))) %>% - arrange(TF) %>% - - # Pad gene names so that the plot takes up a more standardized - # width; to roughly the the # of characters in the gene w/ longest name - # However, letters take up more pixels than spaces, so do less padding - # for genes with longer names - # TODO: Test the (commented) third line inside mutate() and adjust padding as required - mutate(TF_padded = case_when( - str_length(TF) <= 5 ~ str_pad(TF, 15, side = 'right', pad = " "), - between(str_length(TF), 5, 8) ~ str_pad(TF, 12, side = 'right', pad = " ") - #, str_length(Gene) > 8 ~ str_pad(Gene, 9, side = 'right', pad = " ") - ) - ) %>% - mutate(TF_padded = factor(TF_padded, levels = unique(.$TF_padded))) %>% - - # Order the clusters on the x-axis to match the dendrogram image - mutate(Cluster = factor(Cluster, levels = dendrogram_order)) %>% - - filter(!is.na(Cluster)) %>% - - # Convert NAs (undetected genes) to 0s -- this ensures all - # clusters have a value for all genes, so that all clusters are plot, - # even if the gene was undetected - replace_na(list(Expression = 0, Pct1 = 0)) %>% - - # Keep columns - select(Gene, Cluster, Sample, Cell_type, Cell_class, N_cells, Expression, Pct1, Sample, Colour, Gene_padded) - - # Create & append set of rows containing mean expression over all selected genes - if(show_mean) { - - # Create mean expression rows, preserving information for tooltip - mean_exp <- df %>% - group_by(Cluster, Sample, Cell_type, N_cells, Cell_class, Colour) %>% - summarize(#Gene = "MEAN", - #Cluster = Cluster, - #Sample = Sample, - #Cell_type = Cell_type, - #Cell_class = Cell_class, - #N_cells = N_cells, - Expression = mean(Expression) - #Pct1 = mean(Pct1), - #Colour = Colour, - #Gene_padded = "MEAN" - ) %>% - # Remove the Pct1 value from the mean expression - # and label the mean expression - mutate(Pct1 = 1, Gene = "MEAN", Gene_padded = "MEAN") - - # Add the rows containing mean expression to the original dataframe, - # removing duplicate rows and ordering them once more by user input, - # except the mean which is placed at the bottom - gene_order_padded <- levels(df$Gene_padded) - df <- bind_rows(df, mean_exp) %>% - distinct(.) %>% - mutate(Gene_padded = factor(Gene_padded, levels = c("MEAN", gene_order_padded))) - - } - - return(df) - -} - - -#' Bubbleplot of gene expression +#' bubble_prep <- function(tf, +#' scale = TRUE, +#' show_mean = FALSE, +#' region) { +#' +#' # Load the mean expression of genes across clusters, given gene of interest +#' file_path <- glue("data/joint_{region}/joint_cortex.regulon_activity_per_cluster.feather") +#' exp <- read_feather(path = file_path, +#' columns = c("Cluster", tf)) #%>% +#' #dendogram_order from hydra file, commented out for now because no dendogram +#' #filter(Cluster %in% dendrogram_order) +#' +#' # Scale expression of each gene linearly across clusters to [0, 1] +#' if (scale) { +#' +#' exp <- exp %>% +#' as.data.frame() %>% +#' tibble::column_to_rownames(var = "Cluster") %>% +#' apply(2, scales::rescale, to = c(0, 1)) %>% +#' as.data.frame %>% +#' tibble::rownames_to_column(var = "Cluster") +#' +#' } +#' +#' # Convert to long / tidy format with columns: Cluster, Gene, Expression +#' exp <- exp %>% +#' gather(., "TF", "Activity", 2:ncol(.)) +#' +#' # Probably don't need this in the TF plot +#' # # Load the proportion of cells in each cluster in which each gene was detected, +#' # # and convert to long / tidy format with columns: Cluster, Gene, Pct1 +#' # pct1 <- read_feather("data/joint_mouse/pct1_per_ID_20190715_cluster.feather", +#' # columns = c("Cluster", gene)) %>% +#' # gather(., "Gene", "Pct1", 2:ncol(.)) +#' +#' # # Join with cluster metadata +#' # df <- left_join(exp, pct1, by = c("Cluster", "Gene")) %>% +#' # left_join(metadata, by = c("Cluster" = "Cluster_nounderscore")) +#' +#' # Tidy data for plotting +#' df <- df %>% +#' +#' # Order genes to match order input by user +#' mutate(TF = factor(TF, levels = rev(TF))) %>% +#' arrange(TF) %>% +#' +#' # Pad gene names so that the plot takes up a more standardized +#' # width; to roughly the the # of characters in the gene w/ longest name +#' # However, letters take up more pixels than spaces, so do less padding +#' # for genes with longer names +#' # TODO: Test the (commented) third line inside mutate() and adjust padding as required +#' mutate(TF_padded = case_when( +#' str_length(TF) <= 5 ~ str_pad(TF, 15, side = 'right', pad = " "), +#' between(str_length(TF), 5, 8) ~ str_pad(TF, 12, side = 'right', pad = " ") +#' #, str_length(Gene) > 8 ~ str_pad(Gene, 9, side = 'right', pad = " ") +#' ) +#' ) %>% +#' mutate(TF_padded = factor(TF_padded, levels = unique(.$TF_padded))) %>% +#' +#' # Order the clusters on the x-axis to match the dendrogram image +#' mutate(Cluster = factor(Cluster, levels = dendrogram_order)) %>% +#' +#' filter(!is.na(Cluster)) %>% +#' +#' # Convert NAs (undetected genes) to 0s -- this ensures all +#' # clusters have a value for all genes, so that all clusters are plot, +#' # even if the gene was undetected +#' replace_na(list(Expression = 0, Pct1 = 0)) %>% +#' +#' # Keep columns +#' select(Gene, Cluster, Sample, Cell_type, Cell_class, N_cells, Expression, Pct1, Sample, Colour, Gene_padded) +#' +#' # Create & append set of rows containing mean expression over all selected genes +#' if(show_mean) { +#' +#' # Create mean expression rows, preserving information for tooltip +#' mean_exp <- df %>% +#' group_by(Cluster, Sample, Cell_type, N_cells, Cell_class, Colour) %>% +#' summarize(#Gene = "MEAN", +#' #Cluster = Cluster, +#' #Sample = Sample, +#' #Cell_type = Cell_type, +#' #Cell_class = Cell_class, +#' #N_cells = N_cells, +#' Expression = mean(Expression) +#' #Pct1 = mean(Pct1), +#' #Colour = Colour, +#' #Gene_padded = "MEAN" +#' ) %>% +#' # Remove the Pct1 value from the mean expression +#' # and label the mean expression +#' mutate(Pct1 = 1, Gene = "MEAN", Gene_padded = "MEAN") +#' +#' # Add the rows containing mean expression to the original dataframe, +#' # removing duplicate rows and ordering them once more by user input, +#' # except the mean which is placed at the bottom +#' gene_order_padded <- levels(df$Gene_padded) +#' df <- bind_rows(df, mean_exp) %>% +#' distinct(.) %>% +#' mutate(Gene_padded = factor(Gene_padded, levels = c("MEAN", gene_order_padded))) +#' +#' } +#' +#' return(df) +#' +#' } #' -#' Generate a bubble plot for genes of interest across clusters in the mouse -#' dendrogram, where bubble colour encodes the mean expression in each cluster -#' and bubble size encodes the proportion of cells where each gene is detected -#' -#' @param df Data frame as returned by bubble_prep(), with require columns Cluster, -#' Gene_padded, Pct1, and Expression -#' -#' @return ggplot2 object -#' -#' @examples -#' bubble_prep("Dlx1") %>% bubbleplot() #' -#' @export -bubble_plot <- function(df, max_point_size) { - - # Generate plot - p1 <- df %>% - ggplot(aes(x = Cluster, y = Gene_padded)) + - geom_point(aes(size = Pct1, colour = Expression), alpha = 0.8) + - scale_size_area(max_size = max_point_size) + - scale_color_gradientn(colours = tail(rdbu, 70)) + - theme_min() + - ylab(NULL) + - theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, - colour = joint_mouse_palette, size = rel(0.7)), - panel.grid.major.x = element_line(colour = "grey90"), - panel.border = element_blank(), - axis.ticks.x = element_blank(), - axis.ticks.y = element_blank(), - # Do not show the legend because it is included in the static - # dendrogram image displayed above the bubbleplot - legend.position = "bottom") + - # Put gene labels on the right hand side to improve alignment - scale_y_discrete(position = "right") - - return(p1) - -} +#' #' Bubbleplot of gene expression +#' #' +#' #' Generate a bubble plot for genes of interest across clusters in the mouse +#' #' dendrogram, where bubble colour encodes the mean expression in each cluster +#' #' and bubble size encodes the proportion of cells where each gene is detected +#' #' +#' #' @param df Data frame as returned by bubble_prep(), with require columns Cluster, +#' #' Gene_padded, Pct1, and Expression +#' #' +#' #' @return ggplot2 object +#' #' +#' #' @examples +#' #' bubble_prep("Dlx1") %>% bubbleplot() +#' #' +#' #' @export +#' bubble_plot <- function(df, max_point_size) { +#' +#' # Generate plot +#' p1 <- df %>% +#' ggplot(aes(x = Cluster, y = Gene_padded)) + +#' geom_point(aes(size = Pct1, colour = Expression), alpha = 0.8) + +#' scale_size_area(max_size = max_point_size) + +#' scale_color_gradientn(colours = tail(rdbu, 70)) + +#' theme_min() + +#' ylab(NULL) + +#' theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, +#' colour = joint_mouse_palette, size = rel(0.7)), +#' panel.grid.major.x = element_line(colour = "grey90"), +#' panel.border = element_blank(), +#' axis.ticks.x = element_blank(), +#' axis.ticks.y = element_blank(), +#' # Do not show the legend because it is included in the static +#' # dendrogram image displayed above the bubbleplot +#' legend.position = "bottom") + +#' # Put gene labels on the right hand side to improve alignment +#' scale_y_discrete(position = "right") +#' +#' return(p1) +#' +#' } #----------------------------ggNet visualisation--------------------------------------------- #function to create an igraph object #' @param tf the user input vector of transcription factors From f32749dd0c6b542506ba535eb3889b239e8f5822 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Thu, 17 Jun 2021 09:46:32 -0400 Subject: [PATCH 021/100] added cluster labels to clustering tab, added different clustering options, changed download type to pdf --- GRN/functions.R | 39 ++++++++++++++++++++++++++++++--------- GRN/server.R | 21 +++++++++++---------- GRN/ui.R | 16 ++++++++++++---- 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 7e5dec2..467c4b8 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -478,8 +478,7 @@ plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_nu #' activity_test_tf1 <- create_activity_data(tf, "Cell","cortex", data_cortex$TF_and_ext) #' plot_UMAP(tf_number = 1,data_cortex$overall, activity_test_tf1) #' -plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, sample_number = 13000, - sample_reduce = TRUE){ #cell_metadata is the tsv with the +plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, dim_red_type){ #cell_metadata is the tsv with the #embedding coordinates for each cell in the dataset # if(tf_number == 1) tf_plot <- 2 # number of col, the first col is Cell, so start from 2 # else if(tf_number == 2) tf_plot <- 3 @@ -489,16 +488,16 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, sample_numbe tf_plot <- tf_number + 1 #replaces the above control flow - if(! sample_reduce) sample_number <- 27000 activity_tf <- cell_activity_data[,tf_plot][[1]] #extracts the TF activity from the cell_activity_data #and appends it to the cell_metadata to make cell meta with activity to plot - cell_meta_with_activity <- mutate(cell_metadata, activity_tf = activity_tf) %>% - sample_n(sample_number) + cell_meta_with_activity <- mutate(cell_metadata, activity_tf = activity_tf) + x_axis <- switch(dim_red_type, "umap" = "UMAP1", "tsne" = "tSNE_1", "pca" = "PC1") + y_axis <- switch(dim_red_type, "umap" = "UMAP2", "tsne" = "tSNE_2", "pca" = "PC2") - ggplot(data = cell_meta_with_activity, mapping = aes(x=UMAP1,y=UMAP2))+ + ggplot(data = cell_meta_with_activity, mapping = aes_string(x = x_axis, y = y_axis))+ geom_point(aes(color = activity_tf))+ scale_color_gradient(low = "grey", high = "red")+ theme_bw() + labs(color = 'TF Activity') @@ -507,10 +506,32 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, sample_numbe #if I want to include labeled clusters, then I need to map cells to the clusters #place a label at the mean of the umap coordinates for the cells that belong in that cluster -color_by_cluster <- function(cell_metadata, cluster_palette){ - ggplot(data = cell_metadata, mapping = aes(x=UMAP1,y=UMAP2))+ +color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type){ + + x_axis <- switch(dim_red_type, "umap" = "UMAP1", "tsne" = "tSNE_1", "pca" = "PC1") + y_axis <- switch(dim_red_type, "umap" = "UMAP2", "tsne" = "tSNE_2", "pca" = "PC2") + + # Store the center points (medians) of each cluster courtesy of Bhavyaa + centers <- cell_metadata %>% + group_by(Joint_cluster) %>% + summarise(center_x = median(get(x_axis)), + center_y = median(get(y_axis))) + + ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ geom_point(aes(color = Joint_cluster)) + theme_bw() + theme(legend.position="bottom") + - guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + + ggrepel::geom_label_repel(data = centers, + aes(x = center_x, y = center_y), + label = centers$Joint_cluster, + size = 4, + segment.color = 'grey50', + fontface = 'bold', + alpha = 0.8, + segment.alpha = 0.8, + label.size = NA, + force = 2, + segment.size = 0.5, + arrow = arrow(length = unit(0.01, 'npc'))) } #need to maybe change the colors, select out the numbers and rename legend, just cosmetic things diff --git a/GRN/server.R b/GRN/server.R index 0928b5b..89e04f0 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -48,6 +48,7 @@ server <- function(input, output, session) { l$time_point <- temp l$gene <- input$gene l$label <- input$label + l$dim_red <- input$dim_red # l$gene_file_path <- input$file_gene$datapath # print(l$gene_file_path) # l has following elements with same names for both options above: @@ -211,8 +212,8 @@ server <- function(input, output, session) { hm_joint_cluster_plot() }) - output$download_hm_joint <- downloadHandler(filename = "heatmap_joint.png", - contentType = "image/png", + output$download_hm_joint <- downloadHandler(filename = "heatmap_joint.pdf", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = hm_joint_cluster_plot(), width = 20, height = 25) @@ -224,7 +225,7 @@ server <- function(input, output, session) { }) output$download_hm_cluster <- downloadHandler(filename = "heatmap_cluster.png", - contentType = "image/png", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = hm_sample_cluster_plot(), width = 20, height = 25) @@ -243,22 +244,22 @@ server <- function(input, output, session) { # seems redundant, just needs one umap function here Umap_plot_1 <- reactive({ req(length(input_new()$tf)>0) - plot_UMAP(tf_number = 1,input_new()$cell_metadata, activity_data_cluster()) + plot_UMAP(tf_number = 1,input_new()$cell_metadata, activity_data_cluster(), input_new()$dim_red) }) Umap_plot_2 <- reactive({ req(length(input_new()$tf)>1) - plot_UMAP(tf_number = 2,input_new()$cell_metadata, activity_data_cluster()) + plot_UMAP(tf_number = 2,input_new()$cell_metadata, activity_data_cluster(), input_new()$dim_red) }) output$color_by_cluster <- renderPlot({ - color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette) + color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette, input_new()$dim_red) }) output$cluster1 <- renderPlot({ Umap_plot_1() }) - output$download_UMAP_1 <- downloadHandler(filename = "UMAP1.png", - contentType = "image/png", + output$download_UMAP_1 <- downloadHandler(filename = "UMAP1.pdf", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = Umap_plot_1(), width = 20, height = 20) @@ -269,8 +270,8 @@ server <- function(input, output, session) { }) - output$download_UMAP_2 <- downloadHandler(filename = "UMAP2.png", - contentType = "image/png", + output$download_UMAP_2 <- downloadHandler(filename = "UMAP2.pdf", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = Umap_plot_2(), width = 20, height = 20) diff --git a/GRN/ui.R b/GRN/ui.R index cf90b25..e425eba 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -108,6 +108,14 @@ ui <- fluidPage( selected = "e12") ), + conditionalPanel(condition = "input.tabs == 'Clustering'", + + radioButtons("dim_red", "Dimension Reduction Method", + choices = c("UMAP" = "umap", + "TSNE" = "tsne", + "PCA" = "pca"), + selected = "umap") + ), # 3. time series plot conditionalPanel(condition = "input.tabs == 'Time Series'"), @@ -194,12 +202,12 @@ ui <- fluidPage( fluidRow( plotOutput("heatmap_joint") ), - downloadButton("download_hm_joint", "Heatmap by Joint Cluster (PNG)"), + downloadButton("download_hm_joint", "Heatmap by Joint Cluster (PDF)"), div(style = "margin-left: 1.3em; margin-right: 1.3em;", fluidRow( plotOutput("heatmap_cluster") )), - downloadButton("download_hm_cluster", "Heatmap by Timepoint Cluster (PNG)"), + downloadButton("download_hm_cluster", "Heatmap by Timepoint Cluster (PDF)"), imageOutput("color_hm_palette", width = "6in", height = "4in") ), @@ -216,10 +224,10 @@ ui <- fluidPage( fluidRow( column(width = 6, plotOutput("cluster1",width = "4.2in", height = "4in"), - downloadButton("download_UMAP_1", "Transcription Factor 1 Activity Plot (PNG)")), + downloadButton("download_UMAP_1", "Transcription Factor 1 Activity Plot (PDF)")), column(width = 6, plotOutput("cluster2", width = "4.2in",height = "4in"), - downloadButton("download_UMAP_2", "Transcription Factor 2 Activity Plot (PNG)")), + downloadButton("download_UMAP_2", "Transcription Factor 2 Activity Plot (PDF)")), ) ), From 32c2b1cf91dbbdeb89a717e1a1eb3e4ebe96cadd Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Thu, 17 Jun 2021 17:43:05 -0400 Subject: [PATCH 022/100] Updated info/instructions for each tabs --- GRN/functions.R | 15 ++++++++------- GRN/global.R | 2 +- GRN/server.R | 49 ++++++++++++++++++++++++++++--------------------- GRN/ui.R | 48 ++++++++++++++++++++++++++++++++---------------- 4 files changed, 69 insertions(+), 45 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 467c4b8..0f58953 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -36,24 +36,25 @@ make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ #making a basic igraph object with an attribute for each gene indicating if it is a gene #target or transcription factor net <- graph_from_data_frame(d=edges, vertices = nodes) %>% - set_vertex_attr("Gene_Type", index = unique_gene_targets, "Gene Target") %>% - set_vertex_attr("Gene_Type", index = gene_list_in_network, "Input Gene") %>% + set_vertex_attr("Gene_Type", index = unique_gene_targets, "Target Genes") %>% + set_vertex_attr("Gene_Type", index = gene_list_in_network, "Input Target Genes") %>% set_vertex_attr("Gene_Type", index = unique_TF, "TF") #%>% #set_vertex_attr("label_always", index = unique_TF, "yes") if(labelNodes){ set.seed(2) ggnet2(net, color = "Gene_Type", label = labelNodes, label.size = 3, size = "Gene_Type", - size.palette = c("Gene Target" = 6, "TF" = 6, "Input Gene" = 6), - palette = c("Gene Target" = "grey", "TF" = "lightblue", "Input Gene" = "orange")) + + mode = "fruchtermanreingold", layout.par = list(niter = 1000), + size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + guides(size = FALSE) } else{ set.seed(2) ggnet2(net, color = "Gene_Type", label = tf, label.size = 3, size = "Gene_Type", - mode = "fruchtermanreingold", laout.par = list(niter = 1000), - size.palette = c("Gene Target" = 2, "TF" = 6, "Input Gene" = 6), - palette = c("Gene Target" = "grey", "TF" = "lightblue", "Input Gene" = "orange")) + + mode = "fruchtermanreingold", layout.par = list(niter = 1000), + size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + guides(size = FALSE) } diff --git a/GRN/global.R b/GRN/global.R index 206012d..7b72f41 100644 --- a/GRN/global.R +++ b/GRN/global.R @@ -13,7 +13,7 @@ library(ggplot2) library(cowplot) library(pheatmap) library(DT) -library(rcytoscapejs2) # downloaded from https://github.com/uc-bd2k/rcytoscapejs2 +#library(rcytoscapejs2) # downloaded from https://github.com/uc-bd2k/rcytoscapejs2 #could probably get rid of rcytoscape library(glue) library(GGally) diff --git a/GRN/server.R b/GRN/server.R index 89e04f0..3eb060c 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -62,16 +62,16 @@ server <- function(input, output, session) { # -----------------------------Tab1:table and network------------------------------------------ #def need to re-write this at the end - output$general_desc <- renderText({ - "This app designs for displaying transcription factor and gene data from mice brain (cortex & pons part) in various fancy ways by three main tabs; - - PROBLEM: There are some transcription factors from your input that may not have the corresponding data - in the following tabs. (Sometimes you may not see the information of that transcription factor or the plot - is not updated, etc. That is unfortunately because of the lack of data in the cell activity data in tab2, - or the binary cell activity data in tab3. - " - - }) + # output$general_desc <- renderText({ + # "This app designs for displaying transcription factor and gene data from mice brain (cortex & pons part) in various fancy ways by three main tabs; + # + # PROBLEM: There are some transcription factors from your input that may not have the corresponding data + # in the following tabs. (Sometimes you may not see the information of that transcription factor or the plot + # is not updated, etc. That is unfortunately because of the lack of data in the cell activity data in tab2, + # or the binary cell activity data in tab3. + # " + # + # }) #filter the data, add a column for logos, then display output$table <- renderDataTable({ # process data, filter the lines with our interested TF @@ -127,18 +127,27 @@ server <- function(input, output, session) { ) }) #check if there is a user input gene_list file, if there is, use it, if not, use the selectInput genes - - output$network <- renderPlot({ + network_graph <- reactive ({ if(is.null(gene_list$data)){ - gene_into_graph <- input_new()$gene + gene_into_graph <- input_new()$gene } else{ gene_into_graph <- gene_list$data } make_igraph(input_new()$tf, input_new()$TF_target_gene_info, gene_into_graph, input_new()$label) - #plot_ggnet(net, input_new()$gene) }) + output$network <- renderPlot({ + network_graph() + + }) + + output$download_network <- downloadHandler(filename = "network.pdf", + contentType = "application/pdf", + content = function(file){ + ggsave(filename = file, plot = network_graph(), + width = 8.5, height = 11) + }) #probably redo this entire part to visualize with ggNet # output$desc <- renderText({ @@ -323,18 +332,16 @@ server <- function(input, output, session) { for(tf_n in input_new()$tfs_not_exist_timeseries){ tf_nexist_string <- paste(tf_nexist_string,tf_n,sep = " " ) } - text <- glue("We do not have these followning tfs in this tab: {tf_nexist_string}") + text <- glue("We do not have data for the following trancription: {tf_nexist_string}") }) output$timeseries_desc <- renderText({ - text <- "Click option: You may double click the color palatte of cell types at the right side to - display that cell type ONLY; you could also click on one cell type to eliminate that in the - plot at left. - Mouse over the white vertical line on the plot to see the cell types. - We only support four plots of your first four tfs input for now." + text <- "Click option: double clicking a cell type in the legend displays that cell type ONLY; + single click removes that cell type from the plot. Mouse over ribbons in the plot to see the cell types. + We only support four plots of your first four transcripton factor inputs." }) @@ -368,7 +375,7 @@ server <- function(input, output, session) { }) output$download_ribbon_1 <- downloadHandler(filename = "timeseries_ribbon.png", - contentType = "image/png", + contentType = "application/pdf", content = function(file){ ggsave(filename = file, plot = ggplot_list_plot(), width = 20, height = 15) diff --git a/GRN/ui.R b/GRN/ui.R index e425eba..ee24011 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -3,7 +3,7 @@ ui <- fluidPage( #useShinyjs(), # Application title introBox( - titlePanel("Joint Cortex and Pons Transcription Factor Activity"), + titlePanel("Mouse Brain Transcriptional Regulation Atlas"), data.step = 1, data.intro = "This app displays transcription factor activity inference data from a developmental timecourse of the mouse Pons and Forebrain." @@ -62,7 +62,7 @@ ui <- fluidPage( # ), actionButton("reset", label = "Reset File"), - checkboxInput(inputId = "label", label = "Label Gene Target Nodes", value = FALSE) + checkboxInput(inputId = "label", label = "Label Target Gene Nodes", value = FALSE) ), # conditionalPanel(condition = "input.tabs == 'Table and Network'", @@ -134,12 +134,12 @@ ui <- fluidPage( tabsetPanel( tabPanel( - p("This tab displays information corresponding to the selected transcription factors and their predicted gene targets."), - p("- Strength of Association represents "), - p("- The top row is colored by cluster and the bottom row is colored by transcription factor activity"), - p("- Only the first two transcriptions factors are displayed"), + strong("This tab displays information corresponding to the selected transcription factors and their predicted target genes.") %>% p(), + p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, + as predicted with Genie3, with a higher value indicating a more likely regulatory link."), + p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), title = "Transcription Factor Target Information", - textOutput("general_desc"), + #textOutput("general_desc"), introBox( dataTableOutput("table"), data.step = 3, @@ -150,10 +150,17 @@ ui <- fluidPage( ), tabPanel( + strong("This tab displays a network visualisation of the inferred regulatory relationship between transcripton factors and target genes.") %>% p(), + p("• Transcription factors and target genes are represented as nodes with regulatory relationships represented as edges."), + p("• User input transcription factors are shown in blue. Target genes that are present in the current + network can be highlighted in orange based on user selection or based on a file containing a gene list."), + p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), + p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), title = "Regulatory Network Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc - textOutput("desc"), + #textOutput("desc"), plotOutput("network"), + downloadButton("download_network", "Network Visualisation Download (PDF)"), #need to work on visualization with the ggNet package introBox( data.step = 4, @@ -197,6 +204,10 @@ ui <- fluidPage( tabPanel( + strong("This tab displays a heatmap of user selected transcription factor activity per cluster") %>% p(), + p("• Joint clusters are clusters classified based on the combined data from every developmental + time-point per brain region (forebrain or pons); sample cluster are identified based on data from each + individual time-point per brain region."), title = "Heatmap", value = "Heatmap", fluidRow( @@ -212,13 +223,13 @@ ui <- fluidPage( ), tabPanel( - title = "Clustering", + title = "Transcription Factor Activity, by Region", value = "Clustering", fluidRow( #make each plot smaller to fit more - p("This tab displays the activity of selected transcription factors"), - p("- Cells are plotted in 2D according to UMAP dimensionality reduction algorithm"), - p("- The top row is colored by cluster and the bottom row is colored by transcription factor activity"), - p("- Only the first two transcriptions factors are displayed"), + p("This tab displays the activity of selected transcription factors") %>% strong(), + p("• Cells are plotted in 2D according to selected dimensionality reduction algorithm"), + p("• The top row is colored by joint cluster and the bottom row is colored by transcription factor activity"), + p("• Only the first two transcriptions factors are displayed"), column(width = 10, plotOutput("color_by_cluster", width = "6in", height = "7in")) ), fluidRow( @@ -252,12 +263,17 @@ ui <- fluidPage( # value = "Heatmap and Clustering" # ), tabPanel("Time Series", - textOutput("tf_timeseries_desc"), - textOutput("timeseries_desc"), + p("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given + transcriptional factor is active, broken down by cell type, to allow for visualizing activity + across the timecourse") %>% strong(), + textOutput("timeseries_desc"), + br(), + textOutput("tf_timeseries_desc"), + fluidRow( plotlyOutput("timeseries1"), - downloadButton("download_ribbon_1", "Timeseries ribbon plot (Png)"), + downloadButton("download_ribbon_1", "Timeseries ribbon plot (PDF)"), plotOutput("timeseries2"), imageOutput("timeseries_color"), #plotOutput("timeseries3"), From 188fbb18fc4b02cb206fc7c86111c03751b66ad0 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Thu, 17 Jun 2021 21:24:51 -0400 Subject: [PATCH 023/100] added toggleable labels on dimension reduction plots, turned network visualisation to plotly -pending further work to make it more interactive --- GRN/functions.R | 34 +++++++++++++++++++--------------- GRN/server.R | 8 +++++--- GRN/ui.R | 6 ++++-- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 0f58953..99bfd7e 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -507,7 +507,7 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, dim_red_type #if I want to include labeled clusters, then I need to map cells to the clusters #place a label at the mean of the umap coordinates for the cells that belong in that cluster -color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type){ +color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type, cluster_label){ x_axis <- switch(dim_red_type, "umap" = "UMAP1", "tsne" = "tSNE_1", "pca" = "PC1") y_axis <- switch(dim_red_type, "umap" = "UMAP2", "tsne" = "tSNE_2", "pca" = "PC2") @@ -518,21 +518,25 @@ color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type){ summarise(center_x = median(get(x_axis)), center_y = median(get(y_axis))) - ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ + gg <- ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ geom_point(aes(color = Joint_cluster)) + theme_bw() + theme(legend.position="bottom") + - guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + - ggrepel::geom_label_repel(data = centers, - aes(x = center_x, y = center_y), - label = centers$Joint_cluster, - size = 4, - segment.color = 'grey50', - fontface = 'bold', - alpha = 0.8, - segment.alpha = 0.8, - label.size = NA, - force = 2, - segment.size = 0.5, - arrow = arrow(length = unit(0.01, 'npc'))) + guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) + + if(cluster_label){ + gg <- gg + ggrepel::geom_label_repel(data = centers, + aes(x = center_x, y = center_y), + label = centers$Joint_cluster, + size = 4, + segment.color = 'grey50', + fontface = 'bold', + alpha = 0.8, + segment.alpha = 0.8, + label.size = NA, + force = 2, + segment.size = 0.5, + arrow = arrow(length = unit(0.01, 'npc'))) + } + return(gg) } #need to maybe change the colors, select out the numbers and rename legend, just cosmetic things diff --git a/GRN/server.R b/GRN/server.R index 3eb060c..07b1390 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -49,6 +49,7 @@ server <- function(input, output, session) { l$gene <- input$gene l$label <- input$label l$dim_red <- input$dim_red + l$cluster_label <- input$cluster_label # l$gene_file_path <- input$file_gene$datapath # print(l$gene_file_path) # l has following elements with same names for both options above: @@ -137,8 +138,9 @@ server <- function(input, output, session) { make_igraph(input_new()$tf, input_new()$TF_target_gene_info, gene_into_graph, input_new()$label) }) - output$network <- renderPlot({ - network_graph() + output$network <- renderPlotly({ + net_plotly <- network_graph() %>% ggplotly() + net_plotly }) @@ -261,7 +263,7 @@ server <- function(input, output, session) { }) output$color_by_cluster <- renderPlot({ - color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette, input_new()$dim_red) + color_by_cluster(input_new()$cell_metadata, input_new()$cluster_palette, input_new()$dim_red, input_new()$cluster_label) }) output$cluster1 <- renderPlot({ diff --git a/GRN/ui.R b/GRN/ui.R index ee24011..20595e8 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -114,7 +114,9 @@ ui <- fluidPage( choices = c("UMAP" = "umap", "TSNE" = "tsne", "PCA" = "pca"), - selected = "umap") + selected = "umap"), + + checkboxInput(inputId = "cluster_label", label = "Show Cluster Labels", value = TRUE) ), # 3. time series plot conditionalPanel(condition = "input.tabs == 'Time Series'"), @@ -159,7 +161,7 @@ ui <- fluidPage( title = "Regulatory Network Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc #textOutput("desc"), - plotOutput("network"), + plotlyOutput("network"), downloadButton("download_network", "Network Visualisation Download (PDF)"), #need to work on visualization with the ggNet package introBox( From a87472ff76fd5675d033b654044679f63621934c Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Mon, 21 Jun 2021 20:32:19 -0400 Subject: [PATCH 024/100] added very basic hovering to network visualisation, added server side book marking, added custom styling (issue: braindex image not displayed) --- GRN/functions.R | 121 +++++++++++++++++++++++++----------------------- GRN/global.R | 3 ++ GRN/server.R | 31 ++++++++----- GRN/ui.R | 64 ++++++++++++++----------- 4 files changed, 121 insertions(+), 98 deletions(-) diff --git a/GRN/functions.R b/GRN/functions.R index 99bfd7e..389593b 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -17,7 +17,7 @@ addMotifPic <- function(subset_data){ #need to comment this and test to see if i #' @param tf_target_gene_info a data frame containing information for each association #' between a TF and a target gene; created in data_prep.R, loaded in global.R and used depending #' on the region input in input_new() -make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ +make_network <- function(tf, tf_target_gene_info, gene_list){ #add a step to select only the transcription factors that are in the list #create edgelist edges <- data_cortex$TF_target_gene_info %>% select(TF, gene, nMotifs, Genie3Weight.weight) %>% @@ -38,24 +38,27 @@ make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ net <- graph_from_data_frame(d=edges, vertices = nodes) %>% set_vertex_attr("Gene_Type", index = unique_gene_targets, "Target Genes") %>% set_vertex_attr("Gene_Type", index = gene_list_in_network, "Input Target Genes") %>% - set_vertex_attr("Gene_Type", index = unique_TF, "TF") #%>% - #set_vertex_attr("label_always", index = unique_TF, "yes") + set_vertex_attr("Gene_Type", index = unique_TF, "TF") +} +plot_network <- function(net, labelNodes, tf){ if(labelNodes){ - set.seed(2) + set.seed(0.926) ggnet2(net, color = "Gene_Type", label = labelNodes, label.size = 3, size = "Gene_Type", mode = "fruchtermanreingold", layout.par = list(niter = 1000), - size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), - palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + - guides(size = FALSE) + size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), + group = 1, text = names(V(net))) + + guides(size = FALSE, color = guide_legend(title= "Gene Type")) } else{ - set.seed(2) + set.seed(0.926) ggnet2(net, color = "Gene_Type", label = tf, label.size = 3, size = "Gene_Type", mode = "fruchtermanreingold", layout.par = list(niter = 1000), size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), - palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange")) + - guides(size = FALSE) + palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), + group = 1, text = names(V(net))) + + guides(size = FALSE, color = guide_legend(title = "Gene Type")) } } @@ -84,55 +87,55 @@ make_igraph <- function(tf, tf_target_gene_info, gene_list, labelNodes){ #' network <- createCytoscapeJsNetwork(nodeData, edgeData) #' rcytoscapejs2(network$nodes, network$edges) #' -create_network <- function(tf, TF_target_gene, unique_TF, pathway_genes = c(), - shrink_gray = FALSE){ - TF_interest <- filter(TF_target_gene, TF %in% tf)[["TF"]] - gene_target <- filter(TF_target_gene, TF %in% tf)[["gene"]] - - source <- TF_interest - target <- gene_target - - id <- c(TF_interest, gene_target) - name <- id - nodeData <- data.frame(id,name, stringsAsFactors = FALSE) - edgeData <- data.frame(source, target, stringsAsFactors = FALSE) - - #unique_TF <- unique(TF_target_gene[["TF"]]) - - mutual_target <- edgeData %>% - # a character vector that indicates the nodes that are target of multiple selected TFs - count(target) %>% - filter(n > 1 & !target %in% tf ) %>% - .[[1]] - - nodeData <- nodeData %>% - # you can customize the color using the case_when structure easily, - # check the tfs in id column that exist in your vector, then you can control its size, - # shape and color easily - mutate(color = case_when(id %in% tf ~ "#9d4097", # orange - # orange nodes are tfs that are active in this region - id %in% pathway_genes ~ "green", - id %in% unique_TF ~ "#D6604D", - id %in% mutual_target ~ "#4fafc6", - TRUE ~ "lightgrey")) %>% - mutate(height = case_when(id %in% tf ~ "100", - TRUE ~ "70")) %>% - mutate(width = case_when(id %in% tf ~ "100", - TRUE ~ "70")) - - if(shrink_gray){ - nodeData <- nodeData %>% - mutate(height = case_when(color %in% "lightgrey" ~ "40", - TRUE ~ "70")) %>% - mutate(width = case_when(color %in% "lightgrey" ~ "40", - TRUE ~ "70")) - - } - - return(list(nodes = nodeData, - edges = edgeData - )) -} +# create_network <- function(tf, TF_target_gene, unique_TF, pathway_genes = c(), +# shrink_gray = FALSE){ +# TF_interest <- filter(TF_target_gene, TF %in% tf)[["TF"]] +# gene_target <- filter(TF_target_gene, TF %in% tf)[["gene"]] +# +# source <- TF_interest +# target <- gene_target +# +# id <- c(TF_interest, gene_target) +# name <- id +# nodeData <- data.frame(id,name, stringsAsFactors = FALSE) +# edgeData <- data.frame(source, target, stringsAsFactors = FALSE) +# +# #unique_TF <- unique(TF_target_gene[["TF"]]) +# +# mutual_target <- edgeData %>% +# # a character vector that indicates the nodes that are target of multiple selected TFs +# count(target) %>% +# filter(n > 1 & !target %in% tf ) %>% +# .[[1]] +# +# nodeData <- nodeData %>% +# # you can customize the color using the case_when structure easily, +# # check the tfs in id column that exist in your vector, then you can control its size, +# # shape and color easily +# mutate(color = case_when(id %in% tf ~ "#9d4097", # orange +# # orange nodes are tfs that are active in this region +# id %in% pathway_genes ~ "green", +# id %in% unique_TF ~ "#D6604D", +# id %in% mutual_target ~ "#4fafc6", +# TRUE ~ "lightgrey")) %>% +# mutate(height = case_when(id %in% tf ~ "100", +# TRUE ~ "70")) %>% +# mutate(width = case_when(id %in% tf ~ "100", +# TRUE ~ "70")) +# +# if(shrink_gray){ +# nodeData <- nodeData %>% +# mutate(height = case_when(color %in% "lightgrey" ~ "40", +# TRUE ~ "70")) %>% +# mutate(width = case_when(color %in% "lightgrey" ~ "40", +# TRUE ~ "70")) +# +# } +# +# return(list(nodes = nodeData, +# edges = edgeData +# )) +# } # ------------------------------------------------------------------------------------ #' Identify transcription factor data type #' diff --git a/GRN/global.R b/GRN/global.R index 7b72f41..67f2c4d 100644 --- a/GRN/global.R +++ b/GRN/global.R @@ -29,3 +29,6 @@ load("data/shared/common_prep.Rda") # metadata and colour_palettes # Custom functions source("functions.R") + +#allows server side save states +enableBookmarking(store = "server") diff --git a/GRN/server.R b/GRN/server.R index 07b1390..0517b60 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -74,7 +74,7 @@ server <- function(input, output, session) { # # }) #filter the data, add a column for logos, then display - output$table <- renderDataTable({ + output$table1 <- renderDataTable({ # process data, filter the lines with our interested TF subset_data <- input_new()$TF_target_gene_info %>% dplyr::filter(TF %in% input_new()$tf) %>% select(TF, gene, Genie3Weight.weight, nMotifs, bestMotif) @@ -84,7 +84,8 @@ server <- function(input, output, session) { colnames = c('Gene' = 'gene', 'Number of Motifs' = 'nMotifs', 'Best Motif' = 'bestMotif', 'Strength of Association' = 'Genie3Weight.weight', - 'Logo' = 'motif_logo')) + 'Logo' = 'motif_logo'), + rownames = FALSE) }) # observeEvent(input$reset, { # reset("file_gene") @@ -128,18 +129,24 @@ server <- function(input, output, session) { ) }) #check if there is a user input gene_list file, if there is, use it, if not, use the selectInput genes - network_graph <- reactive ({ + igraph_network <- reactive ({ if(is.null(gene_list$data)){ - gene_into_graph <- input_new()$gene + gene_to_highlight <- input_new()$gene } else{ - gene_into_graph <- gene_list$data + gene_to_highlight <- gene_list$data } - make_igraph(input_new()$tf, input_new()$TF_target_gene_info, - gene_into_graph, input_new()$label) + make_network(input_new()$tf, input_new()$TF_target_gene_info, + gene_to_highlight) #returns an igraph network object }) + network_ggplot <- reactive({ + plot_network(igraph_network(), input_new()$label, input_new()$tf) + }) + output$network <- renderPlotly({ - net_plotly <- network_graph() %>% ggplotly() + net_plotly <- network_ggplot() %>% ggplotly(height = 700, tooltip = "text") %>% + layout(xaxis = list(visible = FALSE), yaxis = list(visible = FALSE), + hovermode = "x", hoverdistance = 100) net_plotly }) @@ -147,7 +154,7 @@ server <- function(input, output, session) { output$download_network <- downloadHandler(filename = "network.pdf", contentType = "application/pdf", content = function(file){ - ggsave(filename = file, plot = network_graph(), + ggsave(filename = file, plot = network_ggplot(), width = 8.5, height = 11) }) @@ -220,7 +227,8 @@ server <- function(input, output, session) { }) output$heatmap_joint <- renderPlot({ - hm_joint_cluster_plot() + hm_joint <- hm_joint_cluster_plot() + hm_joint }) output$download_hm_joint <- downloadHandler(filename = "heatmap_joint.pdf", @@ -231,7 +239,8 @@ server <- function(input, output, session) { }) output$heatmap_cluster <- renderPlot({ - hm_sample_cluster_plot() + hm_sample <- hm_sample_cluster_plot() + hm_sample }) diff --git a/GRN/ui.R b/GRN/ui.R index 20595e8..9854725 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -1,19 +1,23 @@ +source("../www/ui_functions.R") + ui <- fluidPage( - introjsUI(), + #introjsUI(), #useShinyjs(), + includeCSS("../www/minimal.css"), + + navigation(), + + beginPage(), + # Application title - introBox( - titlePanel("Mouse Brain Transcriptional Regulation Atlas"), - data.step = 1, - data.intro = "This app displays transcription factor activity inference data from - a developmental timecourse of the mouse Pons and Forebrain." - ), + + titlePanel("Transcription Factor Activity in Single-cell Developmental Atlas", + windowTitle = "GRN"), sidebarLayout( sidebarPanel( width = 3, # choose which datasets to analyze for the whole app - actionButton("help", label = "See Instructions"), radioButtons("region", "Brain region", # use the names in the vector to display # use the character "joint_cortex" to match the path to import data @@ -121,16 +125,9 @@ ui <- fluidPage( # 3. time series plot conditionalPanel(condition = "input.tabs == 'Time Series'"), - introBox( # Update everything actionButton("update", label = "Update"), - data.hint = "click me to update everything!", - data.step = 2, - data.intro = "click it to update everything! Do this after you changed your - transcription factor input and options. Feel free to QUIT the intro first and update it to see the - table and plots", - data.position = "right" - ), + bookmarkButton(), ), mainPanel( tabsetPanel( @@ -142,12 +139,7 @@ ui <- fluidPage( p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), title = "Transcription Factor Target Information", #textOutput("general_desc"), - introBox( - dataTableOutput("table"), - data.step = 3, - data.intro = "This table displays the gene targets of the selected transcription factors - along with information about the genes." - ), + dataTableOutput("table1"), value = "Transcription Factor Target Information" ), @@ -156,19 +148,34 @@ ui <- fluidPage( p("• Transcription factors and target genes are represented as nodes with regulatory relationships represented as edges."), p("• User input transcription factors are shown in blue. Target genes that are present in the current network can be highlighted in orange based on user selection or based on a file containing a gene list."), + p("• Click on the \"Label Target Gene Nodes\" option to see the label of every gene target and enable a hover option. + Currently, hover only displays gene name but more information to come soon!"), p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), title = "Regulatory Network Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc #textOutput("desc"), plotlyOutput("network"), + br(),#so the plotly doesn't overlap with the download button + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), + br(), downloadButton("download_network", "Network Visualisation Download (PDF)"), #need to work on visualization with the ggNet package - introBox( - data.step = 4, - data.intro = "This table displays a network of your selected transcription factors and - their top gene targets." - ), + value = "Regulatory Network Visualization" ), # tabPanel( @@ -286,5 +293,6 @@ ui <- fluidPage( )) ), - + # Custom styling + endPage() ) \ No newline at end of file From 6506d55185374a5b1502245e4958795d4338f4d1 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Tue, 22 Jun 2021 13:04:59 -0400 Subject: [PATCH 025/100] added serverside bookmarking, custom formatting --- GRN/server.R | 18 +++++----- .../77655bbf62e621d2/input.rds | Bin 0 -> 291 bytes .../892a770dbf7ac7d4/input.rds | Bin 0 -> 296 bytes GRN/ui.R | 33 ++++++++++-------- GRN/www/braindex.png | Bin 0 -> 575538 bytes 5 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 GRN/shiny_bookmarks/77655bbf62e621d2/input.rds create mode 100644 GRN/shiny_bookmarks/892a770dbf7ac7d4/input.rds create mode 100644 GRN/www/braindex.png diff --git a/GRN/server.R b/GRN/server.R index 0517b60..ee3b3c6 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -9,22 +9,22 @@ server <- function(input, output, session) { # Dynamic UI, change the selectInput tf lists on display depending on the brain region that is selected observeEvent(input$region,{ if(input$region == "cortex"){ - updateSelectInput(session, inputId = "TF", choices = data_cortex$unique_active_TFs_bare, - selected = c("Arx","Lef1")) - updateSelectInput(session, inputId = "gene", choices = unique(data_cortex$TF_target_gene_info$gene), - selected = c("Dlx6","Sox6") ) + updateSelectizeInput(session, inputId = "TF", choices = data_cortex$unique_active_TFs_bare, + selected = c("Arx","Lef1"), server = TRUE) + updateSelectizeInput(session, inputId = "gene", choices = unique(data_cortex$TF_target_gene_info$gene), + selected = c("Dlx6","Sox6"), server = TRUE ) } else{ - updateSelectInput(session, inputId = "TF", choices = data_pons$unique_active_TFs_bare, - selected = c("Lhx5","Pax7")) - updateSelectInput(session, inputId = "gene", choices = unique(data_pons$TF_target_gene_info$gene), - selected = c("Gad2")) + updateSelectizeInput(session, inputId = "TF", choices = data_pons$unique_active_TFs_bare, + selected = c("Lhx5","Pax7"), server = TRUE) + updateSelectizeInput(session, inputId = "gene", choices = unique(data_pons$TF_target_gene_info$gene), + selected = c("Gad2"), server = TRUE) } #updateRadioButtons(session, "show", selected = "stop") #resets the network visualization }) - + #uses the input update button to update a list of the parameters of the app for the following functions input_new <- eventReactive(input$update,{ diff --git a/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds b/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds new file mode 100644 index 0000000000000000000000000000000000000000..e917a6c34fd76354e2d599bae676ad4db0894af3 GIT binary patch literal 291 zcmV+;0o?u{iwFP!000002CYzCOT#b}O+UxR27=&o|3U})J{6xtL}mCkvi7cvrpZWd zu=B^OcWa}i`e@*ibMEKiJWm*75sO*CqJ$tzukQ2t`JA!vl-QKwgd(JlG5ztiY%V;0 z)P&o5(B&e?X_QTlspE@gKR6D1tw|xdwS)a5p%5xC9X+#Kq4tXcg;tjiQL81F4yf`m zIGns_8vUaXyPEF?x$FTdCpl`f&+Y)e~+k0WJZzq=a4Ie~z z>+p-Rc<6g$Er8UnlGV9%KEdV(hyG+VVuBho(_e6jP=Oxll{sr7K=nC49{oa`w>rIU>63NU$;rP4L+JHOp~pZ{ezW=bP; zGr3@=J7@d}%5;*YH_uPf8eD#Bw^V@yhmqF~M}i(fIHJJ-Iv+LQNfjeomRvwS5m^+x u&NUR@n)GPgX4@1L-C(St>LVMNpY2DqVWKq%Iv*U^Aie;CmF;130ssK+8;1=5 literal 0 HcmV?d00001 diff --git a/GRN/ui.R b/GRN/ui.R index 9854725..0594460 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -26,11 +26,16 @@ ui <- fluidPage( selected = "cortex"), #actionButton("update_tf", label = "Update transcription factors to see the plots"), - selectInput(inputId = "TF", - label = "Transcription Factor", - choices = data_cortex$unique_active_TFs_bare, - multiple = TRUE, - selected = c("Arx","Lef1")), + selectizeInput(inputId = "TF", + label = "Transcription Factor Input", + choices = NULL, + multiple = TRUE, + selected = c("Arx", "Lef1")), + # selectInput(inputId = "TF", + # label = "Transcription Factor", + # choices = data_cortex$unique_active_TFs_bare, + # multiple = TRUE, + # selected = c("Arx","Lef1")), # fileInput("file_tf", "Choose CSV File containing your tf list", # accept = c( # "text/csv", @@ -45,11 +50,11 @@ ui <- fluidPage( ), conditionalPanel( condition = "input.tabs == 'Regulatory Network Visualization'", - selectInput(inputId = "gene", - label = "Genes of Interest", - choices = unique(data_cortex$TF_target_gene_info$gene), - multiple = TRUE, - selected = c("Dlx6","Sox6")), + selectizeInput(inputId = "gene", + label = "Genes of Interest", + choices = NULL, + multiple = TRUE, + selected = c("Dlx6","Sox6")), #allows user to input a file containing a list of genes to query #this input returns a dataframe with 4 columns: name, size, type, datapath #each file entered is one row @@ -137,7 +142,7 @@ ui <- fluidPage( p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, as predicted with Genie3, with a higher value indicating a more likely regulatory link."), p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), - title = "Transcription Factor Target Information", + title = "TF Target Information", #textOutput("general_desc"), dataTableOutput("table1"), value = "Transcription Factor Target Information" @@ -152,7 +157,7 @@ ui <- fluidPage( Currently, hover only displays gene name but more information to come soon!"), p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), - title = "Regulatory Network Visualization", + title = "GRN Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc #textOutput("desc"), plotlyOutput("network"), @@ -217,7 +222,7 @@ ui <- fluidPage( p("• Joint clusters are clusters classified based on the combined data from every developmental time-point per brain region (forebrain or pons); sample cluster are identified based on data from each individual time-point per brain region."), - title = "Heatmap", + title = "TF Activity Heatmap", value = "Heatmap", fluidRow( plotOutput("heatmap_joint") @@ -232,7 +237,7 @@ ui <- fluidPage( ), tabPanel( - title = "Transcription Factor Activity, by Region", + title = "TF Activity, by Region", value = "Clustering", fluidRow( #make each plot smaller to fit more p("This tab displays the activity of selected transcription factors") %>% strong(), diff --git a/GRN/www/braindex.png b/GRN/www/braindex.png new file mode 100644 index 0000000000000000000000000000000000000000..8f653fd04375d68b7b656c317161416973e6c0f6 GIT binary patch literal 575538 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

cbUdbMeJBOU;~}pG8M^khLZZAH`bR)tgCz$b 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

#@$588!knPG@THlcSdAAR~DGmSW;J}uN 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

K}AcvL`&rbZa$8d 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

J7lZ(>Ji2^v(W6-~52Vhz!_DvTM6 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 Date: Tue, 22 Jun 2021 13:07:53 -0400 Subject: [PATCH 026/100] removed shiny_bookmarks --- GRN/.gitignore | 1 + GRN/shiny_bookmarks/77655bbf62e621d2/input.rds | Bin 291 -> 0 bytes GRN/shiny_bookmarks/892a770dbf7ac7d4/input.rds | Bin 296 -> 0 bytes 3 files changed, 1 insertion(+) delete mode 100644 GRN/shiny_bookmarks/77655bbf62e621d2/input.rds delete mode 100644 GRN/shiny_bookmarks/892a770dbf7ac7d4/input.rds diff --git a/GRN/.gitignore b/GRN/.gitignore index 447baaf..ffc3124 100644 --- a/GRN/.gitignore +++ b/GRN/.gitignore @@ -10,4 +10,5 @@ explore data/shared data/joint_cortex data/joint_pons +shiny_bookmarks diff --git a/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds b/GRN/shiny_bookmarks/77655bbf62e621d2/input.rds deleted file mode 100644 index e917a6c34fd76354e2d599bae676ad4db0894af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmV+;0o?u{iwFP!000002CYzCOT#b}O+UxR27=&o|3U})J{6xtL}mCkvi7cvrpZWd zu=B^OcWa}i`e@*ibMEKiJWm*75sO*CqJ$tzukQ2t`JA!vl-QKwgd(JlG5ztiY%V;0 z)P&o5(B&e?X_QTlspE@gKR6D1tw|xdwS)a5p%5xC9X+#Kq4tXcg;tjiQL81F4yf`m zIGns_8vUaXyPEF?x$FTdCpl`f&+Y)e~+k0WJZzq=a4Ie~z z>+p-Rc<6g$Er8UnlGV9%KEdV(hyG+VVuBho(_e6jP=Oxll{sr7K=nC49{oa`w>rIU>63NU$;rP4L+JHOp~pZ{ezW=bP; zGr3@=J7@d}%5;*YH_uPf8eD#Bw^V@yhmqF~M}i(fIHJJ-Iv+LQNfjeomRvwS5m^+x u&NUR@n)GPgX4@1L-C(St>LVMNpY2DqVWKq%Iv*U^Aie;CmF;130ssK+8;1=5 From 083e940e5565f22dcc59f0060539f97ea02da78f Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Sun, 27 Jun 2021 14:40:34 -0400 Subject: [PATCH 027/100] modified labels, tool-tips, legends, comments --- GRN/.gitignore | 1 + GRN/data/data.json | 28 ++++++ GRN/functions.R | 232 ++++++++++++++++++++++++++++++++++++++++++--- GRN/server.R | 8 +- GRN/ui.R | 182 ++++++++++------------------------- 5 files changed, 299 insertions(+), 152 deletions(-) diff --git a/GRN/.gitignore b/GRN/.gitignore index ffc3124..c33c585 100644 --- a/GRN/.gitignore +++ b/GRN/.gitignore @@ -11,4 +11,5 @@ data/shared data/joint_cortex data/joint_pons shiny_bookmarks +data/ct_e12 diff --git a/GRN/data/data.json b/GRN/data/data.json index daf2de2..d29d6ad 100644 --- a/GRN/data/data.json +++ b/GRN/data/data.json @@ -24,6 +24,13 @@ "contents": "Several R objects: forebrain_data, TF_and_ext, TF_active, metadata, tf_df, cell_metadata_cortex,binary_activity data", "script": "data_prep.R" + }, + { + "file": "joint_cortex.regulon_activity_per_joint_cluster.feather", + "description": "feather file containing average TF activity per joint cluster instead of per sample cluster in the forebrain.", + "contents": "a data frame with a joint cluster column and columns corresponding to TFs and their activity in each cluster.", + "script": "data_prep.R" + }, { "file": "Forebrain_join.2D.tsv", @@ -31,6 +38,13 @@ "description": "Cell-level information for forebrain data, including corresponding clusters and UMAP/tSNE/PCA coordinates, used to plot scatterplots", "contents": "Data frame with columns, 'Cell' 'Sample' 'Sample_cluster', followed by columns for embedding coordinates." + }, + { + "file": "Jessa2019_Table_2b_joint_cortex_metadata.tsv", + "path": "selin.jessa/from_hydra/single_cell/scDev_data/data/metadata/Jessa2019_Table_2b_joint_cortex_metadata.tsv", + "description": "Joint_cluster-level information for forebrain data, including color palatte for each cluster, used to color scatter plots", + "contents": "Data frame with columns, 'Cluster_number' 'Color' 'Cell_type' 'Sample' etc., followed by summary info for each cluster." + }, { @@ -82,6 +96,20 @@ "script": "data_prep.R" }, + { + "file": "joint_pons.regulon_activity_per_joint_cluster.feather", + "description": "feather file containing average TF activity per joint cluster instead of per sample cluster in the pons.", + "contents": "a data frame with a joint cluster column and columns corresponding to TFs and their activity in each cluster.", + "script": "data_prep.R" + + }, + { + "file": "Jessa2019_Table_2c_joint_pons_metadata.tsv", + "path": "selin.jessa/from_hydra/single_cell/scDev_data/data/metadata/Jessa2019_Table_2c_joint_pons_metadata.tsv", + "description": "Joint_cluster-level information for forebrain data, including color palatte for each cluster, used to color scatter plots", + "contents": "Data frame with columns, 'Cluster_number' 'Color' 'Cell_type' 'Sample' etc., followed by summary info for each cluster." + + }, { "file": "Pons_join.2D.tsv", "path": "selin.jessa/from_hydra/single_cell/scDev_data/data/joint_pons/Pons_join.2D.tsv", diff --git a/GRN/functions.R b/GRN/functions.R index 389593b..33f6f85 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -1,3 +1,33 @@ +##----------------------------ggplot style--------------------------------------------- +theme_min <- function(base_size = 11, base_family = "", + border_colour = "black", + border_size = 1) { + + theme_light(base_size = 11, base_family = "") + + theme( + panel.grid.major = element_blank(), + panel.grid.minor = element_blank(), + panel.background = element_blank(), + panel.border = element_rect(fill = NA, colour = border_colour, size = border_size), + axis.ticks = element_line(colour = border_colour), + strip.background = element_rect(fill = NA, colour = NA), + strip.text.x = element_text(colour = "black", size = rel(1.2)), + strip.text.y = element_text(colour = "black", size = rel(1.2)), + title = element_text(size = rel(0.9)), + axis.text = element_text(colour = "black", size = rel(1.2)), + axis.title = element_text(colour = "black", size = rel(1.5)), + legend.title = element_text(colour = "black", size = rel(1.2)), + legend.key.size = unit(0.9, "lines"), + legend.text = element_text(size = rel(0.7), colour = "black"), + legend.key = element_rect(colour = NA, fill = NA), + legend.background = element_rect(colour = NA, fill = NA) + ) +} + + + + +#----------------------------TF information table--------------------------------------------- #function to add a column to data-table containing the HTML code necessary to display the motif logo addMotifPic <- function(subset_data){ #need to comment this and test to see if it works when I have wifi subset_data <- mutate(subset_data, motif_logo = bestMotif) @@ -11,6 +41,169 @@ addMotifPic <- function(subset_data){ #need to comment this and test to see if i return(subset_data) } +#------------------------------Bubble plot-------------------------------------- +#' Prepare input for bubble_plot +#' +#' Load gene expression data from feather, tidy & optionally scale expression, +#' and return the dataframe required as input for the bubble_plot() function +#' +#' @param gene Character vector, one or more genes of interest to plot +#' @param scale Logical, whether or not to linearly scale gene expression across +#' clusters to [0,1] to improve visualization. Default: TRUE +#' @param show_mean Logical, whether or not to display the mean expression of +#' given genes in a new bubble plot line. Default: FALSE +#' TODO: Use this to provide an option to download the underlying data. +#' +#' @examples +#' bubble_prep("Dlx1") +bubble_prep <- function(tf, + scale = TRUE, + show_mean = FALSE, + region) { + + # Load the mean expression of genes across clusters, given gene of interest + file_path <- glue("data/joint_{region}/joint_cortex.regulon_activity_per_cluster.feather") + exp <- read_feather(path = file_path, + columns = c("Cluster", tf)) #%>% + #dendogram_order from hydra file, commented out for now because no dendogram + #filter(Cluster %in% dendrogram_order) + + # Scale expression of each gene linearly across clusters to [0, 1] + if (scale) { + + exp <- exp %>% + as.data.frame() %>% + tibble::column_to_rownames(var = "Cluster") %>% + apply(2, scales::rescale, to = c(0, 1)) %>% + as.data.frame %>% + tibble::rownames_to_column(var = "Cluster") + + } + + # Convert to long / tidy format with columns: Cluster, Gene, Expression + exp <- exp %>% + gather(., "TF", "Activity", 2:ncol(.)) + + # Probably don't need this in the TF plot + # # Load the proportion of cells in each cluster in which each gene was detected, + # # and convert to long / tidy format with columns: Cluster, Gene, Pct1 + # pct1 <- read_feather("data/joint_mouse/pct1_per_ID_20190715_cluster.feather", + # columns = c("Cluster", gene)) %>% + # gather(., "Gene", "Pct1", 2:ncol(.)) + + # # Join with cluster metadata + # df <- left_join(exp, pct1, by = c("Cluster", "Gene")) %>% + # left_join(metadata, by = c("Cluster" = "Cluster_nounderscore")) + + # Tidy data for plotting + df <- df %>% + + # Order genes to match order input by user + mutate(TF = factor(TF, levels = rev(TF))) %>% + arrange(TF) %>% + + # Pad gene names so that the plot takes up a more standardized + # width; to roughly the the # of characters in the gene w/ longest name + # However, letters take up more pixels than spaces, so do less padding + # for genes with longer names + # TODO: Test the (commented) third line inside mutate() and adjust padding as required + mutate(TF_padded = case_when( + str_length(TF) <= 5 ~ str_pad(TF, 15, side = 'right', pad = " "), + between(str_length(TF), 5, 8) ~ str_pad(TF, 12, side = 'right', pad = " ") + #, str_length(Gene) > 8 ~ str_pad(Gene, 9, side = 'right', pad = " ") + ) + ) %>% + mutate(TF_padded = factor(TF_padded, levels = unique(.$TF_padded))) %>% + + # Order the clusters on the x-axis to match the dendrogram image + mutate(Cluster = factor(Cluster, levels = dendrogram_order)) %>% + + filter(!is.na(Cluster)) %>% + + # Convert NAs (undetected genes) to 0s -- this ensures all + # clusters have a value for all genes, so that all clusters are plot, + # even if the gene was undetected + replace_na(list(Expression = 0, Pct1 = 0)) %>% + + # Keep columns + select(Gene, Cluster, Sample, Cell_type, Cell_class, N_cells, Expression, Pct1, Sample, Colour, Gene_padded) + + # Create & append set of rows containing mean expression over all selected genes + if(show_mean) { + + # Create mean expression rows, preserving information for tooltip + mean_exp <- df %>% + group_by(Cluster, Sample, Cell_type, N_cells, Cell_class, Colour) %>% + summarize(#Gene = "MEAN", + #Cluster = Cluster, + #Sample = Sample, + #Cell_type = Cell_type, + #Cell_class = Cell_class, + #N_cells = N_cells, + Expression = mean(Expression) + #Pct1 = mean(Pct1), + #Colour = Colour, + #Gene_padded = "MEAN" + ) %>% + # Remove the Pct1 value from the mean expression + # and label the mean expression + mutate(Pct1 = 1, Gene = "MEAN", Gene_padded = "MEAN") + + # Add the rows containing mean expression to the original dataframe, + # removing duplicate rows and ordering them once more by user input, + # except the mean which is placed at the bottom + gene_order_padded <- levels(df$Gene_padded) + df <- bind_rows(df, mean_exp) %>% + distinct(.) %>% + mutate(Gene_padded = factor(Gene_padded, levels = c("MEAN", gene_order_padded))) + + } + + return(df) + +} + + +#' Bubbleplot of gene expression +#' +#' Generate a bubble plot for genes of interest across clusters in the mouse +#' dendrogram, where bubble colour encodes the mean expression in each cluster +#' and bubble size encodes the proportion of cells where each gene is detected +#' +#' @param df Data frame as returned by bubble_prep(), with require columns Cluster, +#' Gene_padded, Pct1, and Expression +#' +#' @return ggplot2 object +#' +#' @examples +#' bubble_prep("Dlx1") %>% bubbleplot() +#' +#' @export +bubble_plot <- function(df, max_point_size) { + + # Generate plot + p1 <- df %>% + ggplot(aes(x = Cluster, y = Gene_padded)) + + geom_point(aes(size = Pct1, colour = Expression), alpha = 0.8) + + scale_size_area(max_size = max_point_size) + + scale_color_gradientn(colours = tail(rdbu, 70)) + + theme_min() + + ylab(NULL) + + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, + colour = joint_mouse_palette, size = rel(0.7)), + panel.grid.major.x = element_line(colour = "grey90"), + panel.border = element_blank(), + axis.ticks.x = element_blank(), + axis.ticks.y = element_blank(), + # Do not show the legend because it is included in the static + # dendrogram image displayed above the bubbleplot + legend.position = "bottom") + + # Put gene labels on the right hand side to improve alignment + scale_y_discrete(position = "right") + + return(p1) + +} #----------------------------ggNet visualisation--------------------------------------------- #function to create an igraph object #' @param tf the user input vector of transcription factors @@ -44,21 +237,27 @@ make_network <- function(tf, tf_target_gene_info, gene_list){ plot_network <- function(net, labelNodes, tf){ if(labelNodes){ set.seed(0.926) - ggnet2(net, color = "Gene_Type", label = labelNodes, label.size = 3, size = "Gene_Type", + ggnet2(net, color = "Gene_Type", alpha = "Gene_Type", size = "Gene_Type", shape = "Gene_Type", + label = labelNodes, label.size = 3, mode = "fruchtermanreingold", layout.par = list(niter = 1000), - size.palette = c("Target Genes" = 6, "TF" = 6, "Input Target Genes" = 6), + size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), + alpha.palette = c("Target Genes" = "1", "TF" = "1", "Input Target Genes" = "1"), + shape.palette = c("Target Genes" = "19", "TF" = "19", "Input Target Genes" = "19"), palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), group = 1, text = names(V(net))) + - guides(size = FALSE, color = guide_legend(title= "Gene Type")) + guides(size = FALSE, alpha = FALSE, shape = FALSE, color = guide_legend(title = "Gene Type")) } else{ set.seed(0.926) - ggnet2(net, color = "Gene_Type", label = tf, label.size = 3, size = "Gene_Type", + ggnet2(net, color = "Gene_Type", alpha = "Gene_Type", size = "Gene_Type", shape = "Gene_Type", + label = tf, label.size = 3, mode = "fruchtermanreingold", layout.par = list(niter = 1000), size.palette = c("Target Genes" = 2, "TF" = 6, "Input Target Genes" = 6), + alpha.palette = c("Target Genes" = "1", "TF" = "1", "Input Target Genes" = "1"), + shape.palette = c("Target Genes" = "19", "TF" = "19", "Input Target Genes" = "19"), palette = c("Target Genes" = "grey", "TF" = "lightblue", "Input Target Genes" = "orange"), group = 1, text = names(V(net))) + - guides(size = FALSE, color = guide_legend(title = "Gene Type")) + guides(size = FALSE, alpha = FALSE, shape = FALSE, color = guide_legend(title = "Gene Type")) } } @@ -136,7 +335,7 @@ plot_network <- function(net, labelNodes, tf){ # edges = edgeData # )) # } -# ------------------------------------------------------------------------------------ +# --------------------------------Helper functions---------------------------------------------------- #' Identify transcription factor data type #' #' Generate a tibble that has two columns indicating whether the tf has ext type, @@ -246,7 +445,7 @@ tf_ext <- function(TF, TF_and_ext){ filter(TF_and_ext, type==TF & ext=="ext")[[1,1]] } -# --------------------------------Tab2 data-------------------------------- +# --------------------------------Create data for plots-------------------------------- # NOTE: TF_and_ext is a dataframe (loaded already) that created in order to identify # whether the TF data is a regular TF (with high confidence annotation) # or ext type(with lower confidence) @@ -347,7 +546,7 @@ create_activity_data <- function(tf, method, region, TF_and_ext, timepoint = NUL } -#--------------------------------Tab 2: heatmap---------------------------------- +#--------------------------------Heatmap---------------------------------- # This function takes a colour palette as input, # and creates the data formats needed to annotate # a pheatmap with some colours @@ -388,7 +587,7 @@ makePheatmapAnno <- function(palette, column) { #' plot_heatmap(c("Pax6","Lef1"), "Cluster","pons", TF_and_ext_pon, pon_data) #' plot_heatmap(c("Pax6","Lef1"), "Cell","pons", TF_and_ext_pon,pon_data) #' -plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_num = 300, timepoint = NULL){ +plot_heatmap <- function(tf, method, region, TF_and_ext, brain_data, cell_plot_num = 300, timepoint = NULL){ # sanity checking if(!region %in% c("cortex", "pons")) return("Wrong usage: region should be either cortex/pons") if(!method %in% c("Cell","Cluster", "joint")) return("Wrong usage, method should be Cell/Cluster") @@ -449,12 +648,18 @@ plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_nu show_colname_plot <- TRUE title <- "Transcription Factor Regulon Activity per Cluster" } + cluster_row <- FALSE + #do not do row clustering if there is only one TF selected + if(length(tf) > 1){ + cluster_row <- TRUE + } pheatmap::pheatmap(t(act), show_colnames = show_colname_plot, scale = "none", border_color = NA, color = colorRampPalette(c("blue", "white", "red"))(100), main = title, + cluster_rows = cluster_row, #annotation_col = anno_col, # change the default color annotation annotation_colors = hm_anno_new$side_colors, # loaded by data_prep.R @@ -463,7 +668,7 @@ plot_heatmap <- function(tf,method, region, TF_and_ext, brain_data, cell_plot_nu cellheight = 10) } - +#----------------------------Dimension reduction--------------------------------------------- #' Make UMAP clustering scatterplot #' #' @param tf_number Either 1 or 2. In the tf input vector we get from user in Shiny app, there could be @@ -504,7 +709,7 @@ plot_UMAP <- function(tf_number, cell_metadata, cell_activity_data, dim_red_type ggplot(data = cell_meta_with_activity, mapping = aes_string(x = x_axis, y = y_axis))+ geom_point(aes(color = activity_tf))+ scale_color_gradient(low = "grey", high = "red")+ - theme_bw() + labs(color = 'TF Activity') + theme_min() + labs(color = 'TF Activity') } #if I want to include labeled clusters, then I need to map cells to the clusters @@ -522,7 +727,7 @@ color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type, clust center_y = median(get(y_axis))) gg <- ggplot(data = cell_metadata, mapping = aes_string(x = x_axis,y = y_axis))+ - geom_point(aes(color = Joint_cluster)) + theme_bw() + theme(legend.position="bottom") + + geom_point(aes(color = Joint_cluster)) + theme_min() + theme(legend.position="bottom") + guides(fill=guide_legend(nrow=5, byrow=TRUE)) + scale_color_manual(values = cluster_palette) if(cluster_label){ @@ -541,6 +746,8 @@ color_by_cluster <- function(cell_metadata, cluster_palette, dim_red_type, clust } return(gg) } + +#----------------------------Time Course Ribbon Plot--------------------------------------------- #need to maybe change the colors, select out the numbers and rename legend, just cosmetic things #' make cell metadata of certain region, cortex/pon @@ -703,6 +910,7 @@ plot_timeseries <- function(TF,cell_metadata, activity, make_plotly = FALSE, sho limits = c(1, length(unique(df$stage)))) + labs(x = "age", y = "Proportion", title = TF) + guides(fill = guide_legend(ncol = 5)) + + theme_min() + theme(legend.position = "bottom") if(make_plotly) { diff --git a/GRN/server.R b/GRN/server.R index ee3b3c6..f9006c9 100644 --- a/GRN/server.R +++ b/GRN/server.R @@ -1,11 +1,5 @@ server <- function(input, output, session) { - # help message - observeEvent(input$help, - introjs(session, options = list("nextLabel"="Next", - "prevLabel"="Previous", - "skipLabel"="Exit Tutorial"), - events = list("oncomplete"=I('alert("All Done!")'))) - ) + # Dynamic UI, change the selectInput tf lists on display depending on the brain region that is selected observeEvent(input$region,{ if(input$region == "cortex"){ diff --git a/GRN/ui.R b/GRN/ui.R index 0594460..294cf64 100644 --- a/GRN/ui.R +++ b/GRN/ui.R @@ -13,7 +13,7 @@ ui <- fluidPage( titlePanel("Transcription Factor Activity in Single-cell Developmental Atlas", windowTitle = "GRN"), - + # ---------------- Side Panel --------------------------------------------- sidebarLayout( sidebarPanel( width = 3, @@ -31,23 +31,8 @@ ui <- fluidPage( choices = NULL, multiple = TRUE, selected = c("Arx", "Lef1")), - # selectInput(inputId = "TF", - # label = "Transcription Factor", - # choices = data_cortex$unique_active_TFs_bare, - # multiple = TRUE, - # selected = c("Arx","Lef1")), - # fileInput("file_tf", "Choose CSV File containing your tf list", - # accept = c( - # "text/csv", - # "text/comma-separated-values,text/plain", - # ".csv") - # ), - - # 1. table and network graph of related TF and genes - conditionalPanel( - condition = "input.tabs == 'Transcription Factor Target Information'", - - ), + +#----------------------------ggNet visualisation--------------------------------------------- conditionalPanel( condition = "input.tabs == 'Regulatory Network Visualization'", selectizeInput(inputId = "gene", @@ -60,47 +45,19 @@ ui <- fluidPage( #each file entered is one row uiOutput('file1_ui'), ## instead of fileInput('file1', label = NULL) so that the file can be reset - # fileInput( - # "file_gene", "Choose a CSV file containing your genes list", - # accept = c( - # "text/csv", - # "text/comma-separated-values, text/plain", - # ".csv"), - # multiple = FALSE, - # placeholder = "example_list.csv" - # ), + actionButton("reset", label = "Reset File"), checkboxInput(inputId = "label", label = "Label Target Gene Nodes", value = FALSE) ), - # conditionalPanel(condition = "input.tabs == 'Table and Network'", - # radioButtons("show", "Node Display Option", - # # use the names in the vector to display - # # use the character "joint_cortex" to match the path to import data - # choices = c("Show All Nodes" = "all", - # #"color by user's input tf list" = "pathway", - # "Shrink Grey Nodes" = "shrink", - # "Neglect Grey Nodes" = "neglect", - # - # "Show No Nodes" = "stop"), - # selected = "stop"),#, - # checkboxInput("show_pathway","Color by Input Genes", - # TRUE), - # selectInput("input_pathway", "Gene Pathway of Interest", - # choices = data_cortex$unique_active_TFs_bare, - # multiple = TRUE, - # selected = c("Arx","Lef1")) - # # fileInput("file_gene", "Choose CSV File containing your genes list", - # # accept = c( - # # "text/csv", - # # "text/comma-separated-values,text/plain", - # # ".csv") - # # ) - # #actionButton("update_graph", label = "See the network graph") - # - # ), - # 2. heatmap and clustering +# -----------------TF info table --------------------------------------------- + conditionalPanel( + condition = "input.tabs == 'Transcription Factor Target Information'", + + ), + +# ----------------Heatmap --------------------------------------------- conditionalPanel(condition = "input.tabs == 'Heatmap'", #numericInput(inputId = "num_cell_plot", label = "Number of Cells to Visualize", #value = 300), @@ -111,12 +68,13 @@ ui <- fluidPage( "Sample Cluster" = "Cluster"), selected = "joint"), selectInput(inputId = "time", - label = "Timepoint to Visualize", + label = "Time-point to Visualize", choices = c("All","e12", "e15", "p0", "p3", "p6"), multiple = FALSE, - selected = "e12") + selected = "All") ), +# -----------------DR plots --------------------------------------------- conditionalPanel(condition = "input.tabs == 'Clustering'", radioButtons("dim_red", "Dimension Reduction Method", @@ -134,28 +92,20 @@ ui <- fluidPage( actionButton("update", label = "Update"), bookmarkButton(), ), +# -----------------Main Panel --------------------------------------------- mainPanel( tabsetPanel( - - tabPanel( - strong("This tab displays information corresponding to the selected transcription factors and their predicted target genes.") %>% p(), - p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, - as predicted with Genie3, with a higher value indicating a more likely regulatory link."), - p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), - title = "TF Target Information", - #textOutput("general_desc"), - dataTableOutput("table1"), - value = "Transcription Factor Target Information" - ), + # -----------------ggNet visualisation --------------------------------------------- tabPanel( - strong("This tab displays a network visualisation of the inferred regulatory relationship between transcripton factors and target genes.") %>% p(), - p("• Transcription factors and target genes are represented as nodes with regulatory relationships represented as edges."), - p("• User input transcription factors are shown in blue. Target genes that are present in the current - network can be highlighted in orange based on user selection or based on a file containing a gene list."), + strong("This tab displays a network visualisation of the inferred regulatory relationship between TFs and target genes.") %>% p(), + p("• TFs and target genes are represented as nodes with regulatory relationships represented as edges."), + p("• User input TFs are shown in blue. Target genes that are present in the current + network can be highlighted in orange based on a user-input gene list, either through the + \"Genes of Interest\"input or through a file input."), p("• Click on the \"Label Target Gene Nodes\" option to see the label of every gene target and enable a hover option. Currently, hover only displays gene name but more information to come soon!"), - p("• Transcription factors that self regulate are not displayed (i.e no self loops)."), + p("• TFs that self regulate are not displayed (i.e no self loops)."), p("• File input format: single column csv file with the first row titled 'Gene' and the remaining rows containing a list of genes of interest."), title = "GRN Visualization", #textOutput("general_desc"), # this line breaks things/ probably cause you can't have 2 general_desc @@ -179,49 +129,30 @@ ui <- fluidPage( br(), br(), downloadButton("download_network", "Network Visualisation Download (PDF)"), - #need to work on visualization with the ggNet package value = "Regulatory Network Visualization" ), - # tabPanel( - # title = "Table and Network", - # textOutput("general_desc"), - # introBox( - # - # dataTableOutput("table"), - # data.step = 3, - # data.intro = "Table and network tab: - # A table of tf and its target gene with motifs and other information" - # ), - # introBox( - # data.intro = "Feel free to quit the intro now, click the 'show all nodes' button - # in the sidebar to see the cytoscape network graph, then we continue", - # data.step = 4 - # ), - # - # - # textOutput("desc"), - # tags$style(type="text/css", "#desc {white-space: pre-wrap;}"), - # introBox( - # rcytoscapejsOutput("network", width = "1200px",height = "600px"), - # data.step = 5, - # data.intro = "a network graph visualization displaying detailed information with node color - # and size: - # Orange nodes are active transcription factors (tf genes that express their own tf); - # Purple nodes in the center are your input transcription factors; - # Green nodes are your input genes related to input tfs(purple nodes) - # ; grey nodes are other genes." - # ), - # value = "Table and Network" - # ), - - - + # -----------------TF info table --------------------------------------------- + tabPanel( + strong("This tab displays information corresponding to the selected TFs and their inferred target genes.") %>% p(), + p("• Strength of Association represents the weight of the putative regulatory links between transcription factor and a gene target, + as predicted with Genie3, with a higher value indicating a more likely regulatory link."), + p("• The number of motifs for each gene is identified via the RcisTarget package. The best motif and its sequence logo is displayed."), + title = "TF Target Information", + #textOutput("general_desc"), + dataTableOutput("table1"), + value = "Transcription Factor Target Information" + ), + + # -----------------Heatmap --------------------------------------------- tabPanel( - strong("This tab displays a heatmap of user selected transcription factor activity per cluster") %>% p(), - p("• Joint clusters are clusters classified based on the combined data from every developmental - time-point per brain region (forebrain or pons); sample cluster are identified based on data from each + strong("This tab displays a heatmap of user selected TF activity per cluster") %>% p(), + p("• Values in the heatmap represent the mean TF activity per cluster."), + p("• Joint clusters are classified based on the combined data from every developmental + time-point in a brain region (forebrain or pons); sample cluster are identified based on data from each individual time-point per brain region."), + p("• Use the \"Time-point to Visalise\" option to select which (if not all) time-points + to visualise in the sample cluster heatmap."), title = "TF Activity Heatmap", value = "Heatmap", fluidRow( @@ -235,7 +166,7 @@ ui <- fluidPage( downloadButton("download_hm_cluster", "Heatmap by Timepoint Cluster (PDF)"), imageOutput("color_hm_palette", width = "6in", height = "4in") ), - + # -----------------DR plots --------------------------------------------- tabPanel( title = "TF Activity, by Region", value = "Clustering", @@ -256,30 +187,15 @@ ui <- fluidPage( ) ), - # tabPanel("Heatmap and Clustering", - # - # plotOutput("heatmap_cell"), - # downloadButton("download_hm_cell", "Heatmap by cell (Png)"), - # plotOutput("heatmap_cluster"), - # downloadButton("download_hm_cluster", "Heatmap by cluster (Png)"), - # imageOutput("color_hm_palette", width = "6in", height = "4in"), - # - # fluidRow( - # textOutput("cluster_UMAP_desc"), - # column(width = 8, plotOutput("cluster1",width = "5in", height = "5in"), - # downloadButton("download_UMAP_1", "UMAP scatterplot 1 (Png)")), - # - # column(width = 8, plotOutput("cluster2", width = "5in",height = "5in"), - # downloadButton("download_UMAP_2", "UMAP scatterplot 2 (Png)")), - # - # ), - # - # value = "Heatmap and Clustering" - # ), + # -----------------Time Series --------------------------------------------- tabPanel("Time Series", p("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given - transcriptional factor is active, broken down by cell type, to allow for visualizing activity - across the timecourse") %>% strong(), + TF is active, broken down by cell type, to allow for visualizing activity + across time.") %>% strong(), + p("• For any given cell, any given TF is considered active if its activity in that cell + is higher than a TF activity threshold."), + p("• The time series for the first TF selected in the sidebar will be an interactive plot, with + the remaining plots being static."), textOutput("timeseries_desc"), br(), From 539afc4af14bba67bfd1e08a1cde64d66ff2d2e7 Mon Sep 17 00:00:00 2001 From: CooberHoo <84345288+CooberHoo@users.noreply.github.com> Date: Sun, 27 Jun 2021 15:37:34 -0400 Subject: [PATCH 028/100] commented out code that doesn't work yet --- GRN/.gitignore | 1 + GRN/functions.R | 292 ++++++++++++++++++++++++------------------------ 2 files changed, 147 insertions(+), 146 deletions(-) diff --git a/GRN/.gitignore b/GRN/.gitignore index c33c585..7ee84b8 100644 --- a/GRN/.gitignore +++ b/GRN/.gitignore @@ -12,4 +12,5 @@ data/joint_cortex data/joint_pons shiny_bookmarks data/ct_e12 +data/ct_e12_not_needed diff --git a/GRN/functions.R b/GRN/functions.R index 33f6f85..5705d0e 100644 --- a/GRN/functions.R +++ b/GRN/functions.R @@ -56,154 +56,154 @@ addMotifPic <- function(subset_data){ #need to comment this and test to see if i #' #' @examples #' bubble_prep("Dlx1") -bubble_prep <- function(tf, - scale = TRUE, - show_mean = FALSE, - region) { - - # Load the mean expression of genes across clusters, given gene of interest - file_path <- glue("data/joint_{region}/joint_cortex.regulon_activity_per_cluster.feather") - exp <- read_feather(path = file_path, - columns = c("Cluster", tf)) #%>% - #dendogram_order from hydra file, commented out for now because no dendogram - #filter(Cluster %in% dendrogram_order) - - # Scale expression of each gene linearly across clusters to [0, 1] - if (scale) { - - exp <- exp %>% - as.data.frame() %>% - tibble::column_to_rownames(var = "Cluster") %>% - apply(2, scales::rescale, to = c(0, 1)) %>% - as.data.frame %>% - tibble::rownames_to_column(var = "Cluster") - - } - - # Convert to long / tidy format with columns: Cluster, Gene, Expression - exp <- exp %>% - gather(., "TF", "Activity", 2:ncol(.)) - - # Probably don't need this in the TF plot - # # Load the proportion of cells in each cluster in which each gene was detected, - # # and convert to long / tidy format with columns: Cluster, Gene, Pct1 - # pct1 <- read_feather("data/joint_mouse/pct1_per_ID_20190715_cluster.feather", - # columns = c("Cluster", gene)) %>% - # gather(., "Gene", "Pct1", 2:ncol(.)) - - # # Join with cluster metadata - # df <- left_join(exp, pct1, by = c("Cluster", "Gene")) %>% - # left_join(metadata, by = c("Cluster" = "Cluster_nounderscore")) - - # Tidy data for plotting - df <- df %>% - - # Order genes to match order input by user - mutate(TF = factor(TF, levels = rev(TF))) %>% - arrange(TF) %>% - - # Pad gene names so that the plot takes up a more standardized - # width; to roughly the the # of characters in the gene w/ longest name - # However, letters take up more pixels than spaces, so do less padding - # for genes with longer names - # TODO: Test the (commented) third line inside mutate() and adjust padding as required - mutate(TF_padded = case_when( - str_length(TF) <= 5 ~ str_pad(TF, 15, side = 'right', pad = " "), - between(str_length(TF), 5, 8) ~ str_pad(TF, 12, side = 'right', pad = " ") - #, str_length(Gene) > 8 ~ str_pad(Gene, 9, side = 'right', pad = " ") - ) - ) %>% - mutate(TF_padded = factor(TF_padded, levels = unique(.$TF_padded))) %>% - - # Order the clusters on the x-axis to match the dendrogram image - mutate(Cluster = factor(Cluster, levels = dendrogram_order)) %>% - - filter(!is.na(Cluster)) %>% - - # Convert NAs (undetected genes) to 0s -- this ensures all - # clusters have a value for all genes, so that all clusters are plot, - # even if the gene was undetected - replace_na(list(Expression = 0, Pct1 = 0)) %>% - - # Keep columns - select(Gene, Cluster, Sample, Cell_type, Cell_class, N_cells, Expression, Pct1, Sample, Colour, Gene_padded) - - # Create & append set of rows containing mean expression over all selected genes - if(show_mean) { - - # Create mean expression rows, preserving information for tooltip - mean_exp <- df %>% - group_by(Cluster, Sample, Cell_type, N_cells, Cell_class, Colour) %>% - summarize(#Gene = "MEAN", - #Cluster = Cluster, - #Sample = Sample, - #Cell_type = Cell_type, - #Cell_class = Cell_class, - #N_cells = N_cells, - Expression = mean(Expression) - #Pct1 = mean(Pct1), - #Colour = Colour, - #Gene_padded = "MEAN" - ) %>% - # Remove the Pct1 value from the mean expression - # and label the mean expression - mutate(Pct1 = 1, Gene = "MEAN", Gene_padded = "MEAN") - - # Add the rows containing mean expression to the original dataframe, - # removing duplicate rows and ordering them once more by user input, - # except the mean which is placed at the bottom - gene_order_padded <- levels(df$Gene_padded) - df <- bind_rows(df, mean_exp) %>% - distinct(.) %>% - mutate(Gene_padded = factor(Gene_padded, levels = c("MEAN", gene_order_padded))) - - } - - return(df) - -} - - -#' Bubbleplot of gene expression +#' bubble_prep <- function(tf, +#' scale = TRUE, +#' show_mean = FALSE, +#' region) { +#' +#' # Load the mean expression of genes across clusters, given gene of interest +#' file_path <- glue("data/joint_{region}/joint_cortex.regulon_activity_per_cluster.feather") +#' exp <- read_feather(path = file_path, +#' columns = c("Cluster", tf)) #%>% +#' #dendogram_order from hydra file, commented out for now because no dendogram +#' #filter(Cluster %in% dendrogram_order) +#' +#' # Scale expression of each gene linearly across clusters to [0, 1] +#' if (scale) { +#' +#' exp <- exp %>% +#' as.data.frame() %>% +#' tibble::column_to_rownames(var = "Cluster") %>% +#' apply(2, scales::rescale, to = c(0, 1)) %>% +#' as.data.frame %>% +#' tibble::rownames_to_column(var = "Cluster") +#' +#' } +#' +#' # Convert to long / tidy format with columns: Cluster, Gene, Expression +#' exp <- exp %>% +#' gather(., "TF", "Activity", 2:ncol(.)) +#' +#' # Probably don't need this in the TF plot +#' # # Load the proportion of cells in each cluster in which each gene was detected, +#' # # and convert to long / tidy format with columns: Cluster, Gene, Pct1 +#' # pct1 <- read_feather("data/joint_mouse/pct1_per_ID_20190715_cluster.feather", +#' # columns = c("Cluster", gene)) %>% +#' # gather(., "Gene", "Pct1", 2:ncol(.)) +#' +#' # # Join with cluster metadata +#' # df <- left_join(exp, pct1, by = c("Cluster", "Gene")) %>% +#' # left_join(metadata, by = c("Cluster" = "Cluster_nounderscore")) +#' +#' # Tidy data for plotting +#' df <- df %>% +#' +#' # Order genes to match order input by user +#' mutate(TF = factor(TF, levels = rev(TF))) %>% +#' arrange(TF) %>% +#' +#' # Pad gene names so that the plot takes up a more standardized +#' # width; to roughly the the # of characters in the gene w/ longest name +#' # However, letters take up more pixels than spaces, so do less padding +#' # for genes with longer names +#' # TODO: Test the (commented) third line inside mutate() and adjust padding as required +#' mutate(TF_padded = case_when( +#' str_length(TF) <= 5 ~ str_pad(TF, 15, side = 'right', pad = " "), +#' between(str_length(TF), 5, 8) ~ str_pad(TF, 12, side = 'right', pad = " ") +#' #, str_length(Gene) > 8 ~ str_pad(Gene, 9, side = 'right', pad = " ") +#' ) +#' ) %>% +#' mutate(TF_padded = factor(TF_padded, levels = unique(.$TF_padded))) %>% +#' +#' # Order the clusters on the x-axis to match the dendrogram image +#' mutate(Cluster = factor(Cluster, levels = dendrogram_order)) %>% +#' +#' filter(!is.na(Cluster)) %>% +#' +#' # Convert NAs (undetected genes) to 0s -- this ensures all +#' # clusters have a value for all genes, so that all clusters are plot, +#' # even if the gene was undetected +#' replace_na(list(Expression = 0, Pct1 = 0)) %>% +#' +#' # Keep columns +#' select(Gene, Cluster, Sample, Cell_type, Cell_class, N_cells, Expression, Pct1, Sample, Colour, Gene_padded) +#' +#' # Create & append set of rows containing mean expression over all selected genes +#' if(show_mean) { +#' +#' # Create mean expression rows, preserving information for tooltip +#' mean_exp <- df %>% +#' group_by(Cluster, Sample, Cell_type, N_cells, Cell_class, Colour) %>% +#' summarize(#Gene = "MEAN", +#' #Cluster = Cluster, +#' #Sample = Sample, +#' #Cell_type = Cell_type, +#' #Cell_class = Cell_class, +#' #N_cells = N_cells, +#' Expression = mean(Expression) +#' #Pct1 = mean(Pct1), +#' #Colour = Colour, +#' #Gene_padded = "MEAN" +#' ) %>% +#' # Remove the Pct1 value from the mean expression +#' # and label the mean expression +#' mutate(Pct1 = 1, Gene = "MEAN", Gene_padded = "MEAN") +#' +#' # Add the rows containing mean expression to the original dataframe, +#' # removing duplicate rows and ordering them once more by user input, +#' # except the mean which is placed at the bottom +#' gene_order_padded <- levels(df$Gene_padded) +#' df <- bind_rows(df, mean_exp) %>% +#' distinct(.) %>% +#' mutate(Gene_padded = factor(Gene_padded, levels = c("MEAN", gene_order_padded))) +#' +#' } +#' +#' return(df) +#' +#' } #' -#' Generate a bubble plot for genes of interest across clusters in the mouse -#' dendrogram, where bubble colour encodes the mean expression in each cluster -#' and bubble size encodes the proportion of cells where each gene is detected -#' -#' @param df Data frame as returned by bubble_prep(), with require columns Cluster, -#' Gene_padded, Pct1, and Expression -#' -#' @return ggplot2 object -#' -#' @examples -#' bubble_prep("Dlx1") %>% bubbleplot() #' -#' @export -bubble_plot <- function(df, max_point_size) { - - # Generate plot - p1 <- df %>% - ggplot(aes(x = Cluster, y = Gene_padded)) + - geom_point(aes(size = Pct1, colour = Expression), alpha = 0.8) + - scale_size_area(max_size = max_point_size) + - scale_color_gradientn(colours = tail(rdbu, 70)) + - theme_min() + - ylab(NULL) + - theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, - colour = joint_mouse_palette, size = rel(0.7)), - panel.grid.major.x = element_line(colour = "grey90"), - panel.border = element_blank(), - axis.ticks.x = element_blank(), - axis.ticks.y = element_blank(), - # Do not show the legend because it is included in the static - # dendrogram image displayed above the bubbleplot - legend.position = "bottom") + - # Put gene labels on the right hand side to improve alignment - scale_y_discrete(position = "right") - - return(p1) - -} +#' #' Bubbleplot of gene expression +#' #' +#' #' Generate a bubble plot for genes of interest across clusters in the mouse +#' #' dendrogram, where bubble colour encodes the mean expression in each cluster +#' #' and bubble size encodes the proportion of cells where each gene is detected +#' #' +#' #' @param df Data frame as returned by bubble_prep(), with require columns Cluster, +#' #' Gene_padded, Pct1, and Expression +#' #' +#' #' @return ggplot2 object +#' #' +#' #' @examples +#' #' bubble_prep("Dlx1") %>% bubbleplot() +#' #' +#' #' @export +#' bubble_plot <- function(df, max_point_size) { +#' +#' # Generate plot +#' p1 <- df %>% +#' ggplot(aes(x = Cluster, y = Gene_padded)) + +#' geom_point(aes(size = Pct1, colour = Expression), alpha = 0.8) + +#' scale_size_area(max_size = max_point_size) + +#' scale_color_gradientn(colours = tail(rdbu, 70)) + +#' theme_min() + +#' ylab(NULL) + +#' theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, +#' colour = joint_mouse_palette, size = rel(0.7)), +#' panel.grid.major.x = element_line(colour = "grey90"), +#' panel.border = element_blank(), +#' axis.ticks.x = element_blank(), +#' axis.ticks.y = element_blank(), +#' # Do not show the legend because it is included in the static +#' # dendrogram image displayed above the bubbleplot +#' legend.position = "bottom") + +#' # Put gene labels on the right hand side to improve alignment +#' scale_y_discrete(position = "right") +#' +#' return(p1) +#' +#' } #----------------------------ggNet visualisation--------------------------------------------- #function to create an igraph object #' @param tf the user input vector of transcription factors From 95e19fef67e1586064918c6dc15e7a86aa0436e5 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 11:49:50 -0400 Subject: [PATCH 029/100] Display message in case of all-zero expression in single cell tabs --- clusters/functions.R | 14 +++++++++++++- clusters/server.R | 20 +++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index c672c17..3e83aa6 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -52,7 +52,19 @@ get_expression <- function(sample, } - return(df) + is_zero = FALSE + + non_zero_exp <- df %>% + filter(Expression != 0) + + # TRUE if non_zero_exp has no rows i.e. i.e. all zero expression + if (dim(non_zero_exp)[1] == 0){ + + is_zero = TRUE + + } + + return(list(data = df, zero = is_zero)) } diff --git a/clusters/server.R b/clusters/server.R index 1d27579..669715f 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -245,7 +245,7 @@ server <- function(input, output, session) { ribbon_static <- reactive({ p1 <- ribbon_plot(gene = input_new()$gene[1], - region = input_new()$region) + region = input_new()$region) # Get legend using cowplot leg <- cowplot::get_legend(p1) @@ -396,12 +396,18 @@ server <- function(input, output, session) { req(input_new()) - get_expression(sample = input_new()$region, - embedding = dr_joint_embedding(), - gene = input_new()$gene, - - # If more than one gene was provided, compute an aggregate - aggregate = TRUE) + express <- get_expression(sample = input_new()$region, + embedding = dr_joint_embedding(), + gene = input_new()$gene, + # If more than one gene was provided, compute an aggregate + aggregate = TRUE) + + # Display message to the user if there is 0 expression throughout region + validate( + need(express$zero == FALSE, "This gene has no detected expression in the selected brain region.") + ) + + express$data }) From db79bb4d0529a2b64749052010bf37f8f02550a0 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 12:20:29 -0400 Subject: [PATCH 030/100] Add informative error messages for missing gene input to all tabs --- clusters/server.R | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 669715f..eb7b1c0 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -80,6 +80,10 @@ server <- function(input, output, session) { # Generate the input dataframe for the bubbleplot bubble_input <- reactive({ + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE if (length(input_new()$gene) > 1 && input_new()$mean_exp){ @@ -185,7 +189,6 @@ server <- function(input, output, session) { # Show table with cluster & expression info output$cluster_table <- renderDataTable({ - req(bubble_input()) # Use the order from bubble_input except reversed @@ -244,6 +247,10 @@ server <- function(input, output, session) { # user to download it ribbon_static <- reactive({ + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + p1 <- ribbon_plot(gene = input_new()$gene[1], region = input_new()$region) @@ -272,6 +279,10 @@ server <- function(input, output, session) { # Generate interactive ribbon plot and save the output ribbon_plotly <- reactive({ + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + ribbon_plot(gene = input_new()$gene[1], region = input_new()$region, make_plotly = TRUE) @@ -305,6 +316,10 @@ server <- function(input, output, session) { req(input_new()) + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + # Load the Cell barcode, 2D coordinates, and selected clustering solution get_embedding(sample = input_new()$region, dr_cols = input_new()$dr, @@ -575,12 +590,9 @@ server <- function(input, output, session) { output$rank_tick_plot <- renderPlot({ - # Lists & palette to use for more general cell class labels - # neuron_list = list("RGC", "RGC (prolif.)", "Excitatory neurons", - # "Other neurons", "Inhibitory neurons") - # progenitor_list = list("Neuronal progenitors", "Oligodendrocyte precursors", - # "Glial progenitors") - # others_list = list("Other", "Non-neuroectoderm", "Immune") + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", "Oligodendrocytes" = "#b7dd5f", From fa5d268c23b2fefcaf7a4321fe9e2b1416eb7397 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 12:37:55 -0400 Subject: [PATCH 031/100] Remove relocate() function from expression table code - bug fix on different R version --- clusters/server.R | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index eb7b1c0..108bfac 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -188,46 +188,39 @@ server <- function(input, output, session) { #### ---- Expression table tab content ---- # Show table with cluster & expression info - output$cluster_table <- renderDataTable({ + output$cluster_table <- DT::renderDataTable({ req(bubble_input()) # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - table <- bubble_input() %>% + #table <- + bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% spread(Gene, Expression) %>% - # Select all except Colour column, rename some variables for clarity, and + # Select all except Colour column, rename some variables for clarity, and # follow bubble_input order for gene columns (saved above) - select(Cluster, - Sample, - "Cell type" = Cell_type, - "Cell class" = Cell_class, - "Number of cells" = N_cells, - all_of(gene_table_order)) + select(Cluster, + Sample, + "Cell type" = Cell_type, + "Cell class" = Cell_class, + "Number of cells" = N_cells, + all_of(gene_table_order)) %>% # Move mean expression to the rightmost column - if ("MEAN" %in% gene_table_order) { - table <- table %>% relocate("MEAN", - .after = last_col()) - } + # if ("MEAN" %in% gene_table_order) { + # table <- table %>% relocate("MEAN", + # .after = last_col()) + # } # Produce a datatable - DT::datatable(table, options = list( - # columnDefs = list(list(visible = FALSE, - # # Hide the Colour column - # targets = c(6))), - selection = "none") - ) %>% + DT::datatable() %>% + #selection = "none") + # Colour the cluster column based on the palette formatStyle("Cluster", - backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) - - # # Set cluster column text to white if the background colour is dark, else it's black (default) - # if (dark(point$Colour)) { - # style <- paste0(style, "color: #FFFFFF") - # } + backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) }) From 4508a5905849b3c7b73b93ad3b0b65caefd1272d Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 14:15:43 -0400 Subject: [PATCH 032/100] Display the gene name in the ranked clusters plot + add docs for this tab --- clusters/server.R | 4 +++- clusters/ui.R | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 108bfac..becb20d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -618,7 +618,9 @@ server <- function(input, output, session) { axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank()) + - expand_limits(x = -18) + expand_limits(x = -18) + + labs(title = input_new()$gene[1]) + + ylab(glue("proportion {input_new()$gene[1]}+ cells")) ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), palette = palette_tick_plot, diff --git a/clusters/ui.R b/clusters/ui.R index 477e585..2ef5c9f 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -200,7 +200,7 @@ ui <- function(request){ fluidRow( DT::dataTableOutput("cluster_table", width = 1100) %>% ws - ), + ), # Only display download button if update has been pressed at least once conditionalPanel(condition='input.update!=0', @@ -369,6 +369,14 @@ ui <- function(request){ tabPanel("Clusters ranked by expression", + tags$br(), + + p("This plot displays the expression of the selected gene in each cluster ranked from highest to lowest"), + + p("• The ticks below the plot x-axis provide categorization by general cell type"), + + p("• If more than one gene is provided, only the first gene is plotted"), + fluidRow( plotOutput("rank_tick_plot", width = "12in", height = "5in") %>% ws ), From 502f2d8843d20049e71bad754fd339938c2133c6 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 16:21:37 -0400 Subject: [PATCH 033/100] Display message in case of all-zero expression in timecourse tab - issue #35 (not tested locally) --- clusters/functions.R | 19 ++++++++++++++++--- clusters/server.R | 20 ++++++++++++++++++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 3e83aa6..053b983 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -52,6 +52,8 @@ get_expression <- function(sample, } + # Output a flag if all expression values in the region are 0 + # used for an informative error message in the app is_zero = FALSE non_zero_exp <- df %>% @@ -298,6 +300,17 @@ ribbon_plot <- function(gene, ribbon_df <- prep_ribbon_input(gene, region) ribbon_df$gene <- ribbon_df[[gene]] + # Output a flag if all expression values in the region are 0 + # used for an informative error message in the app + is_zero = FALSE + non_zero_exp <- ribbon_df %>% + filter(gene != 0) + + # TRUE if non_zero_exp has no rows i.e. i.e. all zero expression + if (dim(non_zero_exp)[1] == 0){ + is_zero = TRUE + } + # For each cluster at each timepoint, calculate the proportion of cells in # which the gene is detected ribbon_df_celltype_frac <- ribbon_df %>% @@ -350,7 +363,7 @@ ribbon_plot <- function(gene, ylim(0, ymax) if(make_plotly) { - return ((ggplotly(p1, + return (list(zero = is_zero, plot = (ggplotly(p1, # Display cluster (group) and info on number of cells (text) in tooltips tooltip = c("group", "text")) %>% @@ -371,9 +384,9 @@ ribbon_plot <- function(gene, spikedash = "solid"), xaxis = list(showspikes = FALSE, spikethickness = 1.5, - spikedash = "solid"))) + spikedash = "solid")))) } else { - return(p1) + return(list(zero = is_zero, plot = p1)) } } diff --git a/clusters/server.R b/clusters/server.R index becb20d..1eb7358 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -244,8 +244,16 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + all_zero <- ribbon_plot(gene = input_new()$gene[1], + region = input_new()$region)$zero + + # Display message to the user if there is 0 expression throughout region + validate( + need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") + ) + p1 <- ribbon_plot(gene = input_new()$gene[1], - region = input_new()$region) + region = input_new()$region)$plot # Get legend using cowplot leg <- cowplot::get_legend(p1) @@ -276,9 +284,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + all_zero = ribbon_plot(gene = input_new()$gene[1], + region = input_new()$region)$zero + + # Display message to the user if there is 0 expression throughout region + validate( + need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") + ) + ribbon_plot(gene = input_new()$gene[1], region = input_new()$region, - make_plotly = TRUE) + make_plotly = TRUE)$plot }) From b3b5ae4e370ec8a635148f50912f22fb9788605d Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 17:35:59 -0400 Subject: [PATCH 034/100] Remove row indices from expression table --- clusters/server.R | 17 ++++++++++++----- clusters/ui.R | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 1eb7358..e75310a 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -188,13 +188,13 @@ server <- function(input, output, session) { #### ---- Expression table tab content ---- # Show table with cluster & expression info - output$cluster_table <- DT::renderDataTable({ + output$cluster_table <- DT::renderDT({ req(bubble_input()) # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - #table <- + table<- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% @@ -206,7 +206,7 @@ server <- function(input, output, session) { "Cell type" = Cell_type, "Cell class" = Cell_class, "Number of cells" = N_cells, - all_of(gene_table_order)) %>% + all_of(gene_table_order)) # Move mean expression to the rightmost column # if ("MEAN" %in% gene_table_order) { @@ -215,8 +215,7 @@ server <- function(input, output, session) { # } # Produce a datatable - DT::datatable() %>% - #selection = "none") + DT::datatable(table, rownames= FALSE) %>% # Colour the cluster column based on the palette formatStyle("Cluster", @@ -224,6 +223,14 @@ server <- function(input, output, session) { }) + # output$x4 = renderPrint({ + # s = input$cluster_table_rows_selected + # if (length(s)) { + # cat('These clusters were selected:\n\n') + # cat(bubble_input()$Cluster[s], sep = ', ') + # } + # }) + # Download data in bubbleplot tab and expression table as TSV output$download_bubble <- downloadHandler(filename = "mean_cluster_expression.tsv", diff --git a/clusters/ui.R b/clusters/ui.R index 2ef5c9f..5c4890b 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -199,7 +199,7 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( - DT::dataTableOutput("cluster_table", width = 1100) %>% ws + DT::DTOutput("cluster_table", width = 1100) %>% ws ), # Only display download button if update has been pressed at least once From 291f0d47485bd80e365852b2fee5855f361a4ae0 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 14:47:24 -0400 Subject: [PATCH 035/100] Include shiny_bookmarks folder in .gitignore --- clusters/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clusters/.gitignore b/clusters/.gitignore index 6af25e7..52c5430 100644 --- a/clusters/.gitignore +++ b/clusters/.gitignore @@ -31,3 +31,6 @@ debug-app # Exclude R script used for testing test.R + +# Exclude server-side bookmark files +shiny_bookmarks/ From 550e7c3bfd895a34e8ab69888c86fa9bc0671b87 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 15:34:19 -0400 Subject: [PATCH 036/100] Implement file upload (csv or tsv only) for gene lists --- clusters/server.R | 18 +++++++++++++++++- clusters/ui.R | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/clusters/server.R b/clusters/server.R index e75310a..888a3fa 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -18,9 +18,24 @@ server <- function(input, output, session) { # more options in the future input_new <- eventReactive(input$update, { + g_list <- reactive({ + req(input$gene_list) + + ext <- tools::file_ext(input$gene_list$name) + switch(ext, + csv = scan(input$gene_list$datapath, + what = "string", sep = ",", + encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), + tsv = scan(input$gene_list$datapath, + what = "string", sep = "\t", + encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), + validate("Invalid file; Please upload a .csv or .tsv file") + ) + }) + # Inputs to use as is l <- list( - "gene" = input$gene, + "gene" = union(input$gene, g_list()), "scale" = input$bubble_scale, "size" = input$bubble_size, "region" = input$region, @@ -185,6 +200,7 @@ server <- function(input, output, session) { ) + #### ---- Expression table tab content ---- # Show table with cluster & expression info diff --git a/clusters/ui.R b/clusters/ui.R index 5c4890b..ab726c3 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -28,6 +28,10 @@ ui <- function(request){ selectInput("gene", "Gene", choices = genes_mouse, multiple = TRUE), + # Gene list input with a file + fileInput("gene_list", NULL, buttonLabel = "Upload gene list", + multiple = FALSE, accept = c(".csv", ".tsv")), + # Input for dendrogram tab and expression tabletab conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') && input.gene.length > 1", From a3a071dfd07f72e5ad72d4d81a80f6657aa2acec Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 15:49:28 -0400 Subject: [PATCH 037/100] Allow user to use the textbox only, file upload optional - issue #17 --- clusters/server.R | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/clusters/server.R b/clusters/server.R index 888a3fa..1ca3b2e 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -33,9 +33,16 @@ server <- function(input, output, session) { ) }) + # Don't wait for file input if it is not provided + if (length(input$gene_list) > 0){ + genes = union(input$gene, g_list()) + } else { + genes = input$gene + } + # Inputs to use as is l <- list( - "gene" = union(input$gene, g_list()), + "gene" = genes, "scale" = input$bubble_scale, "size" = input$bubble_size, "region" = input$region, From bf5b27ed58b1ba0d8a1ffde3f41b2eabcd5c3d5f Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 16:19:27 -0400 Subject: [PATCH 038/100] Toggle spike lines on by default for timeseries interactive plot --- clusters/functions.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 053b983..5562af5 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -379,10 +379,10 @@ ribbon_plot <- function(gene, "hoverClosestCartesian", "toImage"), displaylogo = FALSE) %>% - layout(yaxis = list(showspikes = FALSE, + layout(yaxis = list(showspikes = TRUE, spikethickness = 1.5, spikedash = "solid"), - xaxis = list(showspikes = FALSE, + xaxis = list(showspikes = TRUE, spikethickness = 1.5, spikedash = "solid")))) } else { From 592bc7979da5eaafc63e55a10db29d3bc4e99672 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 16:57:02 -0400 Subject: [PATCH 039/100] Display mean expression toggle for <2 genes in textbox --- clusters/server.R | 10 +++++----- clusters/ui.R | 15 +++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 1ca3b2e..876d729 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -19,14 +19,14 @@ server <- function(input, output, session) { input_new <- eventReactive(input$update, { g_list <- reactive({ - req(input$gene_list) + req(input$genelist) - ext <- tools::file_ext(input$gene_list$name) + ext <- tools::file_ext(input$genelist$name) switch(ext, - csv = scan(input$gene_list$datapath, + csv = scan(input$genelist$datapath, what = "string", sep = ",", encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), - tsv = scan(input$gene_list$datapath, + tsv = scan(input$genelist$datapath, what = "string", sep = "\t", encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), validate("Invalid file; Please upload a .csv or .tsv file") @@ -34,7 +34,7 @@ server <- function(input, output, session) { }) # Don't wait for file input if it is not provided - if (length(input$gene_list) > 0){ + if (length(input$genelist) > 0){ genes = union(input$gene, g_list()) } else { genes = input$gene diff --git a/clusters/ui.R b/clusters/ui.R index ab726c3..f677a44 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -28,13 +28,16 @@ ui <- function(request){ selectInput("gene", "Gene", choices = genes_mouse, multiple = TRUE), - # Gene list input with a file - fileInput("gene_list", NULL, buttonLabel = "Upload gene list", - multiple = FALSE, accept = c(".csv", ".tsv")), + # Gene list input with a file, shared across tabs + fileInput(inputId = "genelist", label = NULL, + #label = "Upload gene list (.csv or .tsv)", + buttonLabel = "Upload gene list", + multiple = FALSE, + accept = c(".csv", ".tsv"), + placeholder = "None"), - # Input for dendrogram tab and expression tabletab - conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') - && input.gene.length > 1", + # Input for dendrogram tab and expression table tab + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table')", materialSwitch("mean_exp", "Display mean expression over the selected genes", # status doesn't have any effect other than color scheme. See bootstrap status values status = "success", From e4cd5f46b5b28669f7e4e6613a63575a5eb9b266 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 18:04:03 -0400 Subject: [PATCH 040/100] Remove user toggle for spikelines in timecourse interactive plot --- clusters/functions.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/clusters/functions.R b/clusters/functions.R index 5562af5..c2f07de 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -377,7 +377,9 @@ ribbon_plot <- function(gene, # remove the plotly logo, and toggle spike lines on by default config(modeBarButtonsToRemove = c("hoverCompareCartesian", "hoverClosestCartesian", - "toImage"), + "toImage", + "toggleSpikelines", + "autoScale2d"), displaylogo = FALSE) %>% layout(yaxis = list(showspikes = TRUE, spikethickness = 1.5, From 8f00338019707e26da86830c15588f602466cb7e Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 14:51:46 -0400 Subject: [PATCH 041/100] Toggle between file upload and textbox input for gene selection - issue #17 --- clusters/server.R | 11 ++++++----- clusters/ui.R | 28 ++++++++++++++++++---------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 876d729..470a160 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -19,8 +19,9 @@ server <- function(input, output, session) { input_new <- eventReactive(input$update, { g_list <- reactive({ - req(input$genelist) + req(input$genelist) + ext <- tools::file_ext(input$genelist$name) switch(ext, csv = scan(input$genelist$datapath, @@ -33,9 +34,9 @@ server <- function(input, output, session) { ) }) - # Don't wait for file input if it is not provided - if (length(input$genelist) > 0){ - genes = union(input$gene, g_list()) + # Condition which input is used based on the upload toggle + if (input$upload){ + genes = g_list() } else { genes = input$gene } @@ -105,7 +106,7 @@ server <- function(input, output, session) { validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - + # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE if (length(input_new()$gene) > 1 && input_new()$mean_exp){ diff --git a/clusters/ui.R b/clusters/ui.R index f677a44..e1546e7 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -24,17 +24,25 @@ ui <- function(request){ sidebarPanel(width = 3, - # Gene input field, shared across tabs - selectInput("gene", "Gene", choices = genes_mouse, - multiple = TRUE), + conditionalPanel(condition = '!input.upload', + # Gene input field, shared across tabs + selectInput("gene", "Gene", choices = genes_mouse, + multiple = TRUE)), - # Gene list input with a file, shared across tabs - fileInput(inputId = "genelist", label = NULL, - #label = "Upload gene list (.csv or .tsv)", - buttonLabel = "Upload gene list", - multiple = FALSE, - accept = c(".csv", ".tsv"), - placeholder = "None"), + conditionalPanel(condition = 'input.upload', + # Gene list input with a file, shared across tabs + fileInput(inputId = "genelist", label = "Gene list", + #label = "Upload gene list (.csv or .tsv)", + buttonLabel = "Upload gene list", + multiple = FALSE, + accept = c(".csv", ".tsv"), + placeholder = "None")), + + materialSwitch("upload", "Upload a list of genes", + # status doesn't have any effect other than color scheme. See bootstrap status values + status = "success", + value = FALSE, + right = TRUE), # Input for dendrogram tab and expression table tab conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table')", From 1d6be9e8758e737b331823026e0f0c79d2749e4e Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 15:54:19 -0400 Subject: [PATCH 042/100] Update text in file upload function + error message --- clusters/server.R | 2 +- clusters/ui.R | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 470a160..6cc2bdf 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -30,7 +30,7 @@ server <- function(input, output, session) { tsv = scan(input$genelist$datapath, what = "string", sep = "\t", encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), - validate("Invalid file; Please upload a .csv or .tsv file") + validate("\n\n\nInvalid file; Please upload a .csv or .tsv file") ) }) diff --git a/clusters/ui.R b/clusters/ui.R index e1546e7..7735ff9 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -32,11 +32,10 @@ ui <- function(request){ conditionalPanel(condition = 'input.upload', # Gene list input with a file, shared across tabs fileInput(inputId = "genelist", label = "Gene list", - #label = "Upload gene list (.csv or .tsv)", - buttonLabel = "Upload gene list", + buttonLabel = "Upload...", multiple = FALSE, accept = c(".csv", ".tsv"), - placeholder = "None")), + placeholder = "No file selected")), materialSwitch("upload", "Upload a list of genes", # status doesn't have any effect other than color scheme. See bootstrap status values From 868e6c319a07563dd42b3510691629f2623280ed Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 16:13:24 -0400 Subject: [PATCH 043/100] Switch back to conditionally displaying mean expression toggle --- clusters/ui.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index 7735ff9..ea2ae9f 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -37,14 +37,15 @@ ui <- function(request){ accept = c(".csv", ".tsv"), placeholder = "No file selected")), - materialSwitch("upload", "Upload a list of genes", + materialSwitch("upload", "Use gene list from file", # status doesn't have any effect other than color scheme. See bootstrap status values status = "success", value = FALSE, right = TRUE), # Input for dendrogram tab and expression table tab - conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table')", + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') && + (input.gene.length > 1 || input.upload)", materialSwitch("mean_exp", "Display mean expression over the selected genes", # status doesn't have any effect other than color scheme. See bootstrap status values status = "success", From 34f499fce0d70252fc6f34ce34a8fc8ba9a44023 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 16:49:26 -0400 Subject: [PATCH 044/100] Alter docs and sidebar formatting to match GRN app --- clusters/ui.R | 51 +++++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index ea2ae9f..df271e4 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -32,7 +32,7 @@ ui <- function(request){ conditionalPanel(condition = 'input.upload', # Gene list input with a file, shared across tabs fileInput(inputId = "genelist", label = "Gene list", - buttonLabel = "Upload...", + buttonLabel = "Browse...", multiple = FALSE, accept = c(".csv", ".tsv"), placeholder = "No file selected")), @@ -133,10 +133,10 @@ ui <- function(request){ # Update button for all sidebar inputs. Coloured to differentiate # from the bookmark button beside it - tags$head( - tags$style(HTML('#update{background-color:#4863A0; - color:#FFFFFF;}')) - ), + # tags$head( + # tags$style(HTML('#update{background-color:#4863A0; + # color:#FFFFFF;}')) + # ), actionButton("update", label = "Update"), # Bookmark button to store current inputs / state of app @@ -152,8 +152,9 @@ ui <- function(request){ tabPanel("Dendrogram", tags$br(), - p("This tab displays the mean expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas"), - + tags$b("This tab displays the mean expression of up to 20 genes over each cluster in the mouse scRNAseq development atlas."), + tags$br(), + tags$br(), p("• Clusters are ordered according to the dendrogram which represents a molecular taxonomy of all cell populations"), p("• Below the dendrogram, clusters are annotated by brain region, time point, and a cell cycle G2/M phase score"), @@ -162,7 +163,7 @@ ui <- function(request){ p("• Hover over each bubble, or move to the tab containing the table, to get additional details about each cluster & its expression level"), - p("• When selecting more than one gene, use the sidebar switch to plot the mean expression over the selected genes in a new row of the bubble plot. Pct values are disregarded here, so all bubbles in this row are the same size"), + p("• When selecting more than one gene, use the sidebar switch to plot the mean expression over these genes in a new row of the bubble plot. Note that Pct values are disregarded here, so all bubbles in this row are the same size"), # Display the image of the cluster dendrogram as in Fig 1 of Jessa et al, # Nat Genet, 2019 @@ -205,11 +206,12 @@ ui <- function(request){ tabPanel("Expression table", tags$br(), - p("This table compares the expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas"), - + tags$b("This table compares the expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas."), + tags$br(), + tags$br(), p("• The value in each gene column denotes the mean gene expression per cell in the specified cluster (mean expression)"), - p("• When selecting more than one gene, use the sidebar switch to display the mean expression over the selected genes in a new column of the table"), + p("• When selecting more than one gene, use the sidebar switch to display the mean expression over these genes in a new column of the table"), p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), @@ -235,8 +237,9 @@ ui <- function(request){ tags$br(), - p("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given gene is detected, broken down by cell type, to allow for visualizing expression across the timecourse"), - + tags$b("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given gene is detected, broken down by cell type, to allow for visualizing expression across the timecourse."), + tags$br(), + tags$br(), p("• Use the side bar to select which brain region to interrogate"), p("• Use the switch above the plot to toggle between static and interactive plots (update button not required)"), @@ -287,8 +290,9 @@ ui <- function(request){ tags$br(), - p("Use this tab to explore the expression of one or more genes at the single-cell level per brain region"), - + tags$b("Use this tab to explore the expression of one or more genes at the single-cell level per brain region."), + tags$br(), + tags$br(), p("• In the top row, the cells are plot in 2D according to a dimensionality reduction algorithm, coloured by cluster (left) or expression (right)"), p("• If using tSNE or UMAP reduction, hover over the plot coloured by cluster (top left) to identify each cluster. Hover will be disabled if clusters are labeled"), @@ -341,8 +345,9 @@ ui <- function(request){ tags$br(), - p("Use this tab to explore the expression of one or more genes at the single-cell level in each sample"), - + tags$b("Use this tab to explore the expression of one or more genes at the single-cell level in each sample."), + tags$br(), + tags$br(), p("• In the top row, the cells are plot in the 2D tSNE space, coloured by cluster"), p("• In the bottom row, the cells are plot in the 2D tSNE space, coloured by expression"), @@ -363,8 +368,9 @@ ui <- function(request){ tags$br(), - p("Use this tab to explore the expression of one or more genes at the single-cell level in each sample"), - + tags$b("Use this tab to explore the expression of one or more genes at the single-cell level in each sample."), + tags$br(), + tags$br(), p("• Each violin plot is coloured by cluster and ordered by the expression level within the given sample"), p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), @@ -386,9 +392,10 @@ ui <- function(request){ tags$br(), - p("This plot displays the expression of the selected gene in each cluster ranked from highest to lowest"), - - p("• The ticks below the plot x-axis provide categorization by general cell type"), + tags$b("This plot displays the expression of the selected gene in each cluster, ranked from highest to lowest expression."), + tags$br(), + tags$br(), + p("• The ticks below the plot x-axis provide a general categorization by cell type"), p("• If more than one gene is provided, only the first gene is plotted"), From 45a7f67975548e7799908e8d75a446acb7503a81 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 11:11:47 -0400 Subject: [PATCH 045/100] Switch back to URL bookmarking --- clusters/global.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clusters/global.R b/clusters/global.R index adc37b9..3aaebbc 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -40,4 +40,4 @@ load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") # ---- Shiny settings ---- # Enable bookmarking -enableBookmarking(store = "server") \ No newline at end of file +enableBookmarking(store = "url") \ No newline at end of file From d859e4a34fb8fe45235b5c68fa72c63ad84ed2f6 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 13:01:02 -0400 Subject: [PATCH 046/100] Add mean expression toggle to ranked clusters tab, alter plot formatting --- clusters/server.R | 34 ++++++++++++++++++++++++++-------- clusters/ui.R | 6 ++++-- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 6cc2bdf..d653c8d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -640,9 +640,21 @@ server <- function(input, output, session) { "Ependymal" = "#8ee5cf", "Neurons" = "#840200", "Non-neuroect." = "gray40", - "Other" = "gray90") + "Other" = "gray60") + + if (input_new()$mean_exp){ + df <- bubble_prep(gene = input_new()$gene, + show_mean = TRUE) %>% + filter(Gene == "MEAN") + y_axis_text <- "proportion of cells" + title_text <- "Mean expression over all selected genes" + } else { + df <- bubble_prep(gene = input_new()$gene[1]) + y_axis_text <- glue("proportion {input_new()$gene[1]}+ cells") + title_text <- input_new()$gene[1] + } - df <- bubble_prep(gene = input_new()$gene[1]) %>% + df <- df %>% # Order from highest to lowest by expression (ranked) arrange(desc(Expression)) %>% mutate(Cluster = factor(Cluster, levels = .$Cluster)) %>% @@ -660,14 +672,16 @@ server <- function(input, output, session) { p1 <- df %>% ggplot(aes(x = Cluster, y = Expression)) + geom_bar(aes(fill = Cluster), stat = "identity") + scale_fill_manual(values = df$Colour) + - theme_min() + + theme_min(border_colour = "gray90") + theme(legend.position = "none", axis.title.x = element_blank(), axis.text.x = element_blank(), - axis.ticks.x = element_blank()) + + axis.ticks.x = element_blank(), + # Remove white space at the bottom of plot + plot.margin = margin(b=0, unit="cm")) + expand_limits(x = -18) + - labs(title = input_new()$gene[1]) + - ylab(glue("proportion {input_new()$gene[1]}+ cells")) + labs(title = title_text) + + ylab(y_axis_text) ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), palette = palette_tick_plot, @@ -675,10 +689,14 @@ server <- function(input, output, session) { # Make sure to expand to the same value that's in p1 expand_limits(x = -18) + theme(legend.position = "none", - axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 6), axis.title.y = element_blank(), axis.text.y = element_blank(), - axis.ticks.y = element_blank()) + axis.ticks.y = element_blank(), + # Remove plot border + panel.border = element_blank(), + # Remove white space at the top of the plot + plot.margin = margin(t=0, unit="cm")) plot_grid(p1, ticks, ncol = 1, align = "v") }) diff --git a/clusters/ui.R b/clusters/ui.R index df271e4..37be5f3 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -44,7 +44,7 @@ ui <- function(request){ right = TRUE), # Input for dendrogram tab and expression table tab - conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') && + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table' || input.tabs == 'rank_exp') && (input.gene.length > 1 || input.upload)", materialSwitch("mean_exp", "Display mean expression over the selected genes", # status doesn't have any effect other than color scheme. See bootstrap status values @@ -397,7 +397,9 @@ ui <- function(request){ tags$br(), p("• The ticks below the plot x-axis provide a general categorization by cell type"), - p("• If more than one gene is provided, only the first gene is plotted"), + p("• If more than one gene is provided, use the sidebar toggle to plot the mean expression over these genes. If this option is off, only the first gene will be plotted"), + + p("• Be aware of the y-axis, which is bounded by the maximum expression value present"), fluidRow( plotOutput("rank_tick_plot", width = "12in", height = "5in") %>% ws From 136895a5b9b7c5386f7a2d7da8ab6cb9971f8100 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 13:15:02 -0400 Subject: [PATCH 047/100] Clarify expression vs. proportion in ranked clusters tab --- clusters/server.R | 4 ++-- clusters/ui.R | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index d653c8d..7fd8499 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -646,11 +646,11 @@ server <- function(input, output, session) { df <- bubble_prep(gene = input_new()$gene, show_mean = TRUE) %>% filter(Gene == "MEAN") - y_axis_text <- "proportion of cells" + y_axis_text <- "Mean gene expression" title_text <- "Mean expression over all selected genes" } else { df <- bubble_prep(gene = input_new()$gene[1]) - y_axis_text <- glue("proportion {input_new()$gene[1]}+ cells") + y_axis_text <- glue("Mean {input_new()$gene[1]} expression") title_text <- input_new()$gene[1] } diff --git a/clusters/ui.R b/clusters/ui.R index 37be5f3..394c4f7 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -392,12 +392,12 @@ ui <- function(request){ tags$br(), - tags$b("This plot displays the expression of the selected gene in each cluster, ranked from highest to lowest expression."), + tags$b("This plot displays the mean expression of the selected gene in each cluster, ranked from highest to lowest expression."), tags$br(), tags$br(), p("• The ticks below the plot x-axis provide a general categorization by cell type"), - p("• If more than one gene is provided, use the sidebar toggle to plot the mean expression over these genes. If this option is off, only the first gene will be plotted"), + p("• If more than one gene is provided, use the sidebar toggle to plot the mean expression over these genes. If this option is off, only the first gene's expression will be plotted"), p("• Be aware of the y-axis, which is bounded by the maximum expression value present"), From b213ce608f7d1d2f08df1ea4021762bfef96fb56 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 19:05:56 -0400 Subject: [PATCH 048/100] Implement expression table with reactable, alter text color in dark background - issue #32 --- clusters/server.R | 44 +++++++++++++++++++++++++++++++++++--------- clusters/ui.R | 2 +- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 7fd8499..a444227 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -212,13 +212,13 @@ server <- function(input, output, session) { #### ---- Expression table tab content ---- # Show table with cluster & expression info - output$cluster_table <- DT::renderDT({ + output$cluster_table <- renderReactable({ req(bubble_input()) # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - table<- + table <- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% @@ -238,13 +238,39 @@ server <- function(input, output, session) { # .after = last_col()) # } - # Produce a datatable - DT::datatable(table, rownames= FALSE) %>% - - # Colour the cluster column based on the palette - formatStyle("Cluster", - backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) - + # Produce a data table + reactable(table, + rownames = FALSE, + highlight = TRUE, + compact = TRUE, + searchable = TRUE, + showSortable = TRUE, + fullWidth = FALSE, + showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, + columns = list( + Cluster = colDef(minWidth = 110, + style = function(index){ + # Colour cluster column background by existing palette + b_color <- toString(unname(joint_mouse_palette)[index]) + # Change text colour to white if background is dark + if (dark(b_color)){ + f_color = "#FFFFFF" + } else { + f_color = "#000000" + } + list(background = b_color, color = f_color, fontWeight = "bold", + # Make the cluster column "sticky" i.e. freeze it in horizontal scroll + position = "sticky", left = 0, zIndex = 1) + }, + headerStyle = + list(position = "sticky", left = 0, background = "#fff", zIndex = 1) + ), + Sample = colDef(minWidth = 125), + "Cell type" = colDef(minWidth = 200), + "Cell class" = colDef(minWidth = 150), + "Number of cells" = colDef(minWidth = 80) + ) + ) }) # output$x4 = renderPrint({ diff --git a/clusters/ui.R b/clusters/ui.R index 394c4f7..8d922f8 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -216,7 +216,7 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( - DT::DTOutput("cluster_table", width = 1100) %>% ws + reactableOutput("cluster_table", width = 1500) %>% ws ), # Only display download button if update has been pressed at least once From fe266af9388165a7dcb95dcfd1e74b5f64696e8a Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 19:06:11 -0400 Subject: [PATCH 049/100] Load reactable package, comment out DT package --- clusters/global.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clusters/global.R b/clusters/global.R index 3aaebbc..0760469 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -10,13 +10,14 @@ library(glue) library(stringr) library(ggplot2) library(ggrepel) -library(DT) +#library(DT) library(purrr) library(readr) library(shinyWidgets) library(plotly) library(shinycssloaders) library(shiny) +library(reactable) # ---- Set-up / load common data ---- From ba2fa585f77f5b0e09bf55de9ffe932234e11386 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 20:14:48 -0400 Subject: [PATCH 050/100] Display error message for genes in uploaded files that aren't in dataset - issue #17 --- clusters/global.R | 2 ++ clusters/server.R | 69 +++++++++++++++++++++++++++++++++++++++++++++++ clusters/ui.R | 3 --- 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/clusters/global.R b/clusters/global.R index 0760469..cde3698 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -37,6 +37,8 @@ load("data/joint_mouse/joint_mouse.palette_ID_20190715.Rda") # Vector specifying the order of clusters in the dendrogram load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") +# Load names of genes detected in mouse to provide choices in input +genes_mouse <- data.table::fread("data/joint_mouse/joint_mouse.gene_names.tsv", data.table = FALSE)$genes # ---- Shiny settings ---- diff --git a/clusters/server.R b/clusters/server.R index a444227..280b58d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -106,6 +106,17 @@ server <- function(input, output, session) { validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + } else { + error_genes <- NULL + } + + validate( + need(all(input_new()$gene %in% genes_mouse), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE @@ -301,6 +312,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if (!(input_new()$gene[1] %in% genes_mouse)) { + error_genes <- input_new()$gene[1] + } else { + error_genes <- NULL + } + + validate( + need(input_new()$gene[1] %in% genes_mouse, + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + all_zero <- ribbon_plot(gene = input_new()$gene[1], region = input_new()$region)$zero @@ -341,6 +363,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if (!(input_new()$gene[1] %in% genes_mouse)) { + error_genes <- input_new()$gene[1] + } else { + error_genes <- NULL + } + + validate( + need(input_new()$gene[1] %in% genes_mouse, + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + all_zero = ribbon_plot(gene = input_new()$gene[1], region = input_new()$region)$zero @@ -386,6 +419,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + } else { + error_genes <- NULL + } + + validate( + need(all(input_new()$gene %in% genes_mouse), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + # Load the Cell barcode, 2D coordinates, and selected clustering solution get_embedding(sample = input_new()$region, dr_cols = input_new()$dr, @@ -660,6 +704,31 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if(input_new()$mean_exp){ + if (!(input_new()$gene[1] %in% genes_mouse)) { + error_genes <- input_new()$gene[1] + } else { + error_genes <- NULL + } + + validate( + need(input_new()$gene[1] %in% genes_mouse, + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + } else { + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + } else { + error_genes <- NULL + } + + validate( + need(all(input_new()$gene %in% genes_mouse), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + } + + palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", "Oligodendrocytes" = "#b7dd5f", "Astrocytes" = "#00a385", diff --git a/clusters/ui.R b/clusters/ui.R index 8d922f8..2ddc34e 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -1,9 +1,6 @@ source("../www/ui_functions.R") -# Load names of genes detected in mouse to provide choices in input -genes_mouse <- data.table::fread("data/joint_mouse/joint_mouse.gene_names.tsv", data.table = FALSE)$genes - ui <- function(request){ bootstrapPage( From 691885066f8140f32ee49d56592275e2d69cc503 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Wed, 7 Jul 2021 08:20:47 -0400 Subject: [PATCH 051/100] Remove case sensitivity for gene input error messages - issue #17 --- clusters/server.R | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 280b58d..3d8faef 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -107,14 +107,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { + error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] } else { error_genes <- NULL } validate( - need(all(input_new()$gene %in% genes_mouse), + need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -253,7 +253,8 @@ server <- function(input, output, session) { reactable(table, rownames = FALSE, highlight = TRUE, - compact = TRUE, + #compact = TRUE, + striped = TRUE, searchable = TRUE, showSortable = TRUE, fullWidth = FALSE, @@ -279,7 +280,7 @@ server <- function(input, output, session) { Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), "Cell class" = colDef(minWidth = 150), - "Number of cells" = colDef(minWidth = 80) + "Number of cells" = colDef(minWidth = 85) ) ) }) @@ -312,14 +313,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(input_new()$gene[1] %in% genes_mouse)) { + if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(input_new()$gene[1] %in% genes_mouse, + need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -419,14 +420,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { + error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] } else { error_genes <- NULL } validate( - need(all(input_new()$gene %in% genes_mouse), + need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -704,26 +705,29 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if(input_new()$mean_exp){ - if (!(input_new()$gene[1] %in% genes_mouse)) { + if(!input_new()$mean_exp){ + + if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(input_new()$gene[1] %in% genes_mouse, + need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) + } else { - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + + if (!((all(tolower(input_new()$gene) %in% tolower(genes_mouse))))) { + error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] } else { error_genes <- NULL } validate( - need(all(input_new()$gene %in% genes_mouse), + need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) } From 2c0992a17840bb5d95a2366f00287ccbcfa552b9 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Wed, 7 Jul 2021 15:10:35 -0400 Subject: [PATCH 052/100] Revert "Remove case sensitivity for gene input error messages - issue #17" This reverts commit 691885066f8140f32ee49d56592275e2d69cc503. --- clusters/server.R | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 3d8faef..280b58d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -107,14 +107,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { - error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] } else { error_genes <- NULL } validate( - need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), + need(all(input_new()$gene %in% genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -253,8 +253,7 @@ server <- function(input, output, session) { reactable(table, rownames = FALSE, highlight = TRUE, - #compact = TRUE, - striped = TRUE, + compact = TRUE, searchable = TRUE, showSortable = TRUE, fullWidth = FALSE, @@ -280,7 +279,7 @@ server <- function(input, output, session) { Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), "Cell class" = colDef(minWidth = 150), - "Number of cells" = colDef(minWidth = 85) + "Number of cells" = colDef(minWidth = 80) ) ) }) @@ -313,14 +312,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { + if (!(input_new()$gene[1] %in% genes_mouse)) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), + need(input_new()$gene[1] %in% genes_mouse, glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -420,14 +419,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { - error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] } else { error_genes <- NULL } validate( - need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), + need(all(input_new()$gene %in% genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -705,29 +704,26 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if(!input_new()$mean_exp){ - - if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { + if(input_new()$mean_exp){ + if (!(input_new()$gene[1] %in% genes_mouse)) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), + need(input_new()$gene[1] %in% genes_mouse, glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - } else { - - if (!((all(tolower(input_new()$gene) %in% tolower(genes_mouse))))) { - error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] } else { error_genes <- NULL } validate( - need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), + need(all(input_new()$gene %in% genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) } From 96af6dab296130e646fbc0d0ffc0ff1f00356278 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Wed, 7 Jul 2021 16:17:21 -0400 Subject: [PATCH 053/100] Extract part of input validation step to a function - issue #37 --- clusters/functions.R | 25 +++++++++++++ clusters/server.R | 86 +++++++++++++++++--------------------------- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index c2f07de..6f43c39 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -868,3 +868,28 @@ add_class_ticks <- function(df, classes, height, sep, start, label_x_pos, palett scale_colour_manual(values = palette)) } + +#' Check a certain number of input genes against an list of accepted genes +#' +#' @param user_genes Character vector, inputs from user (from textbox or file) +#' @param n Numeric, the number of genes from the beginning of the list to check. +#' Default: NULL (i.e. check all genes) +#' @param annotation Logical, whether to check against annotation or not. +#' Default: FALSE (i.e. check against list of dataset genes, not annotation) +#' +#' @return A list of inputs that do not match the list of accepted genes + +check_genes <- function(user_genes, + n = 20, + annotation = FALSE) { + + if (!is.null(n)) { + user_genes <- head(user_genes, n) + } + + if (!(all(user_genes %in% genes_mouse))) { + return(user_genes[!(user_genes %in% genes_mouse)]) + } else { + return(NULL) + } +} diff --git a/clusters/server.R b/clusters/server.R index 280b58d..4dd69d0 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -103,21 +103,19 @@ server <- function(input, output, session) { # Generate the input dataframe for the bubbleplot bubble_input <- reactive({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] - } else { - error_genes <- NULL - } - + # Check first 20 inputs against the dataset genes + error_genes <- check_genes(input_new()$gene, 20) validate( - need(all(input_new()$gene %in% genes_mouse), + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - + + # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE if (length(input_new()$gene) > 1 && input_new()$mean_exp){ @@ -308,25 +306,22 @@ server <- function(input, output, session) { # user to download it ribbon_static <- reactive({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(input_new()$gene[1] %in% genes_mouse)) { - error_genes <- input_new()$gene[1] - } else { - error_genes <- NULL - } - + # Check first input against the dataset genes + error_genes <- check_genes(input_new()$gene, 1) validate( - need(input_new()$gene[1] %in% genes_mouse, + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) all_zero <- ribbon_plot(gene = input_new()$gene[1], region = input_new()$region)$zero - # Display message to the user if there is 0 expression throughout region + # Display message to the user instead of plot if 0 expression throughout region validate( need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") ) @@ -359,18 +354,15 @@ server <- function(input, output, session) { # Generate interactive ribbon plot and save the output ribbon_plotly <- reactive({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") - ) - - if (!(input_new()$gene[1] %in% genes_mouse)) { - error_genes <- input_new()$gene[1] - } else { - error_genes <- NULL - } + ) + # Check first input against the dataset genes + error_genes <- check_genes(input_new()$gene, 1) validate( - need(input_new()$gene[1] %in% genes_mouse, + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -415,18 +407,15 @@ server <- function(input, output, session) { req(input_new()) + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") - ) - - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] - } else { - error_genes <- NULL - } + ) + # Check ALL inputs against the dataset genes + error_genes <- check_genes(input_new()$gene) validate( - need(all(input_new()$gene %in% genes_mouse), + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -700,34 +689,23 @@ server <- function(input, output, session) { output$rank_tick_plot <- renderPlot({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") - ) + ) if(input_new()$mean_exp){ - if (!(input_new()$gene[1] %in% genes_mouse)) { - error_genes <- input_new()$gene[1] - } else { - error_genes <- NULL - } - - validate( - need(input_new()$gene[1] %in% genes_mouse, - glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) - ) - } else { - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] - } else { - error_genes <- NULL - } - - validate( - need(all(input_new()$gene %in% genes_mouse), - glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) - ) + # Check ALL inputs against the dataset genes + error_genes <- check_genes(input_new()$gene) + } else{ + # Check only first input against the dataset genes + error_genes <- check_genes(input_new()$gene, 1) } + validate( + need(is.null(error_genes), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", "Oligodendrocytes" = "#b7dd5f", From ead6ecf9f96ea4afc41cfe9408ac18a8a6e79127 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 9 Jul 2021 18:43:22 -0400 Subject: [PATCH 054/100] Add dropdown menu to choose between inputs in timecourse tab - issue #38 --- clusters/server.R | 37 ++++++++++++++++++++++++++++++------- clusters/ui.R | 25 ++++++++++++++++++------- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 4dd69d0..2e2f125 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -300,6 +300,29 @@ server <- function(input, output, session) { #### ---- Timecourse tab content ---- + observe({ + x <- input_new()$gene + + # Can use character(0) to remove all choices + if (is.null(x)) + x <- character(0) + + if (length(x) == 1){ + text_pick_timecourse <- " input)" + } else if (length(x) > 1){ + text_pick_timecourse <- " inputs)" + } else { + text_pick_timecourse <- NULL + } + + # Can also set the label and select items + updateSelectInput(session, "pick_timecourse", + label = paste("Select gene to display (from ", length(x), text_pick_timecourse), + choices = x, + selected = head(x, 1) + ) + }) + # STATIC TIMECOURSE # Generate ribbon plot and save the output so that we can allow the @@ -311,14 +334,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - # Check first input against the dataset genes - error_genes <- check_genes(input_new()$gene, 1) + # Check user-selected input against the dataset genes + error_genes <- check_genes(input$pick_timecourse, 1) validate( need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - all_zero <- ribbon_plot(gene = input_new()$gene[1], + all_zero <- ribbon_plot(gene = input$pick_timecourse, region = input_new()$region)$zero # Display message to the user instead of plot if 0 expression throughout region @@ -326,7 +349,7 @@ server <- function(input, output, session) { need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") ) - p1 <- ribbon_plot(gene = input_new()$gene[1], + p1 <- ribbon_plot(gene = input$pick_timecourse, region = input_new()$region)$plot # Get legend using cowplot @@ -360,13 +383,13 @@ server <- function(input, output, session) { ) # Check first input against the dataset genes - error_genes <- check_genes(input_new()$gene, 1) + error_genes <- check_genes(input$pick_timecourse, 1) validate( need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - all_zero = ribbon_plot(gene = input_new()$gene[1], + all_zero = ribbon_plot(gene = input$pick_timecourse, region = input_new()$region)$zero # Display message to the user if there is 0 expression throughout region @@ -374,7 +397,7 @@ server <- function(input, output, session) { need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") ) - ribbon_plot(gene = input_new()$gene[1], + ribbon_plot(gene = input$pick_timecourse, region = input_new()$region, make_plotly = TRUE)$plot diff --git a/clusters/ui.R b/clusters/ui.R index 2ddc34e..60ad04f 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -241,17 +241,28 @@ ui <- function(request){ p("• Use the switch above the plot to toggle between static and interactive plots (update button not required)"), + p("• As only one gene can be plotted at a time, use the dropdown tool above the plots to choose which of the input genes to display (update button not required)"), + p("• Download the static version of the plot as a pdf using the button below the plot"), p("• Be aware of the y-axis, which is computed as the max for each gene"), - p("• If more than one gene is provided, only the first gene is plotted"), - - materialSwitch("plotly_ribbon", "Interactive ribbon plot", - # status doesn't have any effect other than color scheme. See bootstrap status values - status = "warning", - value = FALSE, - right = TRUE + fluidRow( + column(6, + wellPanel( + materialSwitch("plotly_ribbon", strong("Interactive ribbon plot"), + # status doesn't have any effect other than color scheme. See bootstrap status values + status = "warning", + value = FALSE, + right = TRUE), + ) + ), + column(6, + wellPanel( + selectInput("pick_timecourse", "Select gene to display", + c("Please enter a gene")) + ) + ) ), # Plot a ribbon plot, showing the proportion of cells in which From 281744f259c9f02da2d171d48417c6e9b3d6f312 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 11:51:01 -0400 Subject: [PATCH 055/100] Adjust app formatting during server test --- clusters/server.R | 7 ++++--- clusters/ui.R | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 2e2f125..d066198 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 25 + 30 * length(input_new()$gene), + height = function() 27 + 27 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -256,6 +256,7 @@ server <- function(input, output, session) { showSortable = TRUE, fullWidth = FALSE, showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, + defaultColDef = colDef(minWidth = 150), columns = list( Cluster = colDef(minWidth = 110, style = function(index){ @@ -277,7 +278,7 @@ server <- function(input, output, session) { Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), "Cell class" = colDef(minWidth = 150), - "Number of cells" = colDef(minWidth = 80) + "Number of cells" = colDef(minWidth = 100) ) ) }) @@ -781,7 +782,7 @@ server <- function(input, output, session) { ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), palette = palette_tick_plot, - start = -5, sep = 5, height = 30, label_x_pos = -16, fontsize = 3.5) + + start = -5, sep = 5, height = 30, label_x_pos = -16, fontsize = 3) + # Make sure to expand to the same value that's in p1 expand_limits(x = -18) + theme(legend.position = "none", diff --git a/clusters/ui.R b/clusters/ui.R index 60ad04f..de38f49 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -178,11 +178,12 @@ ui <- function(request){ # Bubble plot(s) (plotOutput("bubble", - hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% ws), + hover = hoverOpts(id = "bubble_hover", clip = FALSE), + height = 2000) %>% ws), # Gene labels # No spinner to prevent confusing user, because there is only 1 plot - (plotOutput("bubble_labels")) + (plotOutput("bubble_labels", height = 2000)) ) ), From 12591b1d57aca4732e6bf4174f86705c4439c568 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 12:03:41 -0400 Subject: [PATCH 056/100] Adjust formatting and remove sticky column in table (server testing) --- clusters/server.R | 12 ++++++------ clusters/ui.R | 8 +++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index d066198..966aaef 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 27 + 27 * length(input_new()$gene), + height = function() 27 + 30 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -268,12 +268,12 @@ server <- function(input, output, session) { } else { f_color = "#000000" } - list(background = b_color, color = f_color, fontWeight = "bold", - # Make the cluster column "sticky" i.e. freeze it in horizontal scroll - position = "sticky", left = 0, zIndex = 1) + list(background = b_color, color = f_color, fontWeight = "bold") + # # Make the cluster column "sticky" i.e. freeze it in horizontal scroll + # position = "sticky", left = 0, zIndex = 1) }, - headerStyle = - list(position = "sticky", left = 0, background = "#fff", zIndex = 1) + # headerStyle = + # list(position = "sticky", left = 0, background = "#fff", zIndex = 1) ), Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), diff --git a/clusters/ui.R b/clusters/ui.R index de38f49..f8348d7 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -213,9 +213,11 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), - fluidRow( - reactableOutput("cluster_table", width = 1500) %>% ws - ), + #div(style = "overflow-x: scroll; overflow-y: visible;", + fluidRow( + reactableOutput("cluster_table", width = 200) %>% ws + ), + #), # Only display download button if update has been pressed at least once conditionalPanel(condition='input.update!=0', From e55bcdf64ffe696495f3e6f068ab0f39803d101a Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 12:14:45 -0400 Subject: [PATCH 057/100] Adjust formatting and alignment of dendrogram and table tabs (server testing) --- clusters/server.R | 6 +++--- clusters/ui.R | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 966aaef..24c46d5 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -169,7 +169,7 @@ server <- function(input, output, session) { # background is set to the cluster colour, with opacity = 95% ("F2" at end of hex) # z-index is set so we are sure are tooltip will be on top style <- paste0("position:absolute; z-index:100; background-color: ", point$Colour, "F2;", - "left: -350px; top: 450px; width: 350px;") + "left: -350px; top: 500px; width: 350px;") # Set text to white if the background colour is dark, else it's black (default) if (dark(point$Colour)) { @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 27 + 30 * length(input_new()$gene), + height = function() 28.5 + 28.5 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -256,7 +256,7 @@ server <- function(input, output, session) { showSortable = TRUE, fullWidth = FALSE, showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, - defaultColDef = colDef(minWidth = 150), + defaultColDef = colDef(minWidth = 120), columns = list( Cluster = colDef(minWidth = 110, style = function(index){ diff --git a/clusters/ui.R b/clusters/ui.R index f8348d7..cc612bb 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -215,7 +215,7 @@ ui <- function(request){ #div(style = "overflow-x: scroll; overflow-y: visible;", fluidRow( - reactableOutput("cluster_table", width = 200) %>% ws + reactableOutput("cluster_table", width = 1100) %>% ws ), #), From 102282bd49e4ab9d1650858c3470042ebbfb2b38 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 12:20:47 -0400 Subject: [PATCH 058/100] Adjust formatting and alignment (server testing) --- clusters/server.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 24c46d5..7415a37 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 28.5 + 28.5 * length(input_new()$gene), + height = function() 28.5 + 29 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -256,7 +256,8 @@ server <- function(input, output, session) { showSortable = TRUE, fullWidth = FALSE, showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, - defaultColDef = colDef(minWidth = 120), + defaultColDef = colDef(minWidth = 80), + # Override colDef manually for the first few rows columns = list( Cluster = colDef(minWidth = 110, style = function(index){ From 0db366ce1aa5a48848aa63ebe931c5698f336386 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 21 Jun 2021 15:35:10 -0400 Subject: [PATCH 059/100] Adjust gene label alignment, disable scroll for bubble plots --- clusters/server.R | 2 +- clusters/ui.R | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 8789303..26a95f3 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -170,7 +170,7 @@ server <- function(input, output, session) { }, - height = function() 20 + 28 * length(input_new()$gene), + height = function() 25 + 30 * length(input_new()$gene), width = 200 diff --git a/clusters/ui.R b/clusters/ui.R index b8d91f1..d0a5cf2 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -142,7 +142,8 @@ ui <- bootstrapPage( ), # Display the bubbleplot - div(style = "margin-top: 2em; margin-left: 1em; margin-bottom: -5em;", + div(style = "margin-top: 2em; margin-left: 1em; margin-bottom: -5em; + overflow-x: visible; overflow-y: visible;", fluidRow( splitLayout(cellWidths = c(1103, 200), From baec8060c94f0adbd09dac89761bb8605210d562 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 21 Jun 2021 17:30:04 -0400 Subject: [PATCH 060/100] Remove TODO for closed issue --- clusters/functions.R | 1 - 1 file changed, 1 deletion(-) diff --git a/clusters/functions.R b/clusters/functions.R index a5160a7..5a63c6b 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -117,7 +117,6 @@ bubble_prep <- function(gene, # width; to roughly the the # of characters in the gene w/ longest name # However, letters take up more pixels than spaces, so do less padding # for genes with longer names - # TODO: Fix alignment of bubble plot w/ dendrogram for long gene names (issue #7) mutate(Gene_padded = case_when( str_length(Gene) <= 5 ~ str_pad(Gene, 15, side = 'right', pad = " "), str_length(Gene) > 5 ~ str_pad(Gene, 12, side = 'right', pad = " ") From 5aeafb16f91da83e5639f3bea2084bd13751918b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 12:12:41 -0400 Subject: [PATCH 061/100] Implement bookmark button beside update button --- clusters/ui.R | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index d0a5cf2..81d9ab3 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -4,7 +4,9 @@ source("../www/ui_functions.R") # Load names of genes detected in mouse to provide choices in input genes_mouse <- data.table::fread("data/joint_mouse/joint_mouse.gene_names.tsv", data.table = FALSE)$genes -ui <- bootstrapPage( +ui <- function(request){ + + bootstrapPage( # Custom styling includeCSS("../www/minimal.css"), @@ -19,6 +21,7 @@ ui <- bootstrapPage( #### ---- Sidebar (input) ---- sidebarLayout( + sidebarPanel(width = 3, # Gene input field, shared across tabs @@ -110,8 +113,16 @@ ui <- bootstrapPage( ), ), - # Update button for all sidebar inputs - actionButton("update", label = "Update") + # Update button for all sidebar inputs. Coloured to differentiate + # from the bookmark button. + tags$head( + tags$style(HTML('#update{background-color:#4863A0; + color:#FFFFFF;}')) + ), + actionButton("update", label = "Update"), + + # Bookmark button to store current inputs / state of app + bookmarkButton() ), @@ -146,14 +157,16 @@ ui <- bootstrapPage( overflow-x: visible; overflow-y: visible;", fluidRow( + # Set cellWidths equal to the actual width of each plot (server.R) splitLayout(cellWidths = c(1103, 200), + # Bubble plot(s) (plotOutput("bubble", hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% withSpinner(type = 5)), # Gene labels - #No spinner to prevent confusing user, because there is only 1 plot + # No spinner to prevent confusing user, because there is only 1 plot (plotOutput("bubble_labels")) ) @@ -172,7 +185,7 @@ ui <- bootstrapPage( #### ---- Expression table tab output ---- - tabPanel("Expression table", #TODO: confirm a better name + tabPanel("Expression table", tags$br(), p("This table compares the expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas"), @@ -365,4 +378,4 @@ ui <- bootstrapPage( # Custom styling endPage() -) +)} From 52efd5ca42de0781806dee9053b0fe98854e484f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 12:13:28 -0400 Subject: [PATCH 062/100] Enable url-based bookmarking --- clusters/global.R | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/clusters/global.R b/clusters/global.R index 75e0cff..3aaebbc 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -1,7 +1,7 @@ # This file will be run first, and anything in this file will be available # for the other R files required for the shiny app (e.g. server.R, ui.R) -# Load required packages ---- +# ---- Load required packages ---- library(feather) library(tidyr) library(dplyr) @@ -16,8 +16,9 @@ library(readr) library(shinyWidgets) library(plotly) library(shinycssloaders) +library(shiny) -# Set-up / load common data ---- +# ---- Set-up / load common data ---- # Cluster-level metadata metadata <- data.table::fread("data/joint_mouse/metadata_20190715_select.tsv", @@ -33,4 +34,10 @@ pons_palette_joint <- readRDS("data/joint_pons/joint_pons.palette_ID_20190715_ load("data/joint_mouse/joint_mouse.palette_ID_20190715.Rda") # Vector specifying the order of clusters in the dendrogram -load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") \ No newline at end of file +load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") + + +# ---- Shiny settings ---- + +# Enable bookmarking +enableBookmarking(store = "url") \ No newline at end of file From 42c4137020fcdf559e3a620adf688f7c0e57404a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 12:24:19 -0400 Subject: [PATCH 063/100] Streamline loading spinner code using ui_functions file --- clusters/ui.R | 35 ++++++++++++----------------------- www/ui_functions.R | 4 ++-- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index 81d9ab3..dfe5f1e 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -114,7 +114,7 @@ ui <- function(request){ ), # Update button for all sidebar inputs. Coloured to differentiate - # from the bookmark button. + # from the bookmark button beside it tags$head( tags$style(HTML('#update{background-color:#4863A0; color:#FFFFFF;}')) @@ -162,8 +162,7 @@ ui <- function(request){ # Bubble plot(s) (plotOutput("bubble", - hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% - withSpinner(type = 5)), + hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% ws), # Gene labels # No spinner to prevent confusing user, because there is only 1 plot @@ -195,8 +194,7 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( - DT::dataTableOutput("cluster_table", width = 1100) %>% - withSpinner(type = 5) + DT::dataTableOutput("cluster_table", width = 1100) %>% ws ), # Only display download button if update has been pressed at least once @@ -242,15 +240,13 @@ ui <- function(request){ conditionalPanel(condition = "input.plotly_ribbon", # Plot the ribbon plot & legend as a plotly (interactive) plot - plotlyOutput("plotlyRibbon", height = "5in", width = "11.5in") %>% - withSpinner(type = 5) + plotlyOutput("plotlyRibbon", height = "5in", width = "11.5in") %>% ws ), conditionalPanel(condition = "!(input.plotly_ribbon)", # Plot the ribbon plot & legend as static plots with ggplot2 - plotOutput("plotRibbon", height = "8.5in", width = "8in") %>% - withSpinner(type = 5) + plotOutput("plotRibbon", height = "8.5in", width = "8in") %>% ws ), # Only display download button if update has been pressed at least once @@ -282,8 +278,7 @@ ui <- function(request){ p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), fluidRow( - # plotOutput("scatter_joint", width = "10in", height = "4in") %>% - # withSpinner(type = 5) + # plotOutput("scatter_joint", width = "10in", height = "4in") %>% ws splitLayout(cellWidths = c(432, 512), # 432 = 4.5in, 512px = 5.33in #cellArgs = list(style = "padding: 6px"), @@ -291,15 +286,13 @@ ui <- function(request){ (plotOutput("dr_joint", #width = "4.5in", height = "4in", - hover = hoverOpts(id = "dr_joint_hover", clip = TRUE)) %>% - withSpinner(type = 5)), + hover = hoverOpts(id = "dr_joint_hover", clip = TRUE)) %>% ws), (plotOutput("feature_joint", #width = "5.33in", height = "4in" #, hover = hoverOpts(id = "feature_joint_hover", clip = TRUE) - ) %>% - withSpinner(type = 5)) + ) %>% ws) ) ), @@ -311,8 +304,7 @@ ui <- function(request){ #fluidRow(uiOutput("feature_joint_hover_info")), fluidRow( - plotOutput("vln_joint", width = "11in", height = "4in") %>% - withSpinner(type = 5) + plotOutput("vln_joint", width = "11in", height = "4in") %>% ws ), # Specify the value to use when checking if this tab is selected @@ -338,13 +330,11 @@ ui <- function(request){ p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), fluidRow( - plotOutput("dr_sample", width = "12.5in", height = "2.6in") %>% - withSpinner(type = 5) + plotOutput("dr_sample", width = "12.5in", height = "2.6in") %>% ws ), fluidRow( - plotOutput("feature_sample", width = "12.5in", height = "3in") %>% - withSpinner(type = 5) + plotOutput("feature_sample", width = "12.5in", height = "3in") %>% ws ) ), @@ -360,8 +350,7 @@ ui <- function(request){ p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), fluidRow( - plotOutput("vln_sample", width = "10in", height = "20in") %>% - withSpinner(type = 5) + plotOutput("vln_sample", width = "10in", height = "20in") %>% ws ) ) diff --git a/www/ui_functions.R b/www/ui_functions.R index 640a8b8..6edc02a 100644 --- a/www/ui_functions.R +++ b/www/ui_functions.R @@ -1,8 +1,8 @@ library(shinycssloaders) -ws <- function(ui) withSpinner(ui, type = 3, size = 0.5, - color.background = "white", color = "#8896AE") +ws <- function(ui) withSpinner(ui, type = 5, + color.background = "white") navigation <- function() { includeHTML('../www/layout/navigation.html') From 589630fd6e3184c2b53692cfaeb45080eaf5edbd Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 14:43:25 -0400 Subject: [PATCH 064/100] Switch to server-side bookmarking - issue #28 (only tested locally) --- clusters/global.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clusters/global.R b/clusters/global.R index 3aaebbc..adc37b9 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -40,4 +40,4 @@ load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") # ---- Shiny settings ---- # Enable bookmarking -enableBookmarking(store = "url") \ No newline at end of file +enableBookmarking(store = "server") \ No newline at end of file From e9090c48c1cba8c0ecbfb6be19b2a19ee015f856 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 14:50:04 -0400 Subject: [PATCH 065/100] Match expression table column order to bubble plots - issue #16 --- clusters/server.R | 49 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 26a95f3..0bb0fc9 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -99,7 +99,7 @@ server <- function(input, output, session) { req(bubble_input()) bubble_plot(df = bubble_input(), - max_point_size = input_new()$size)$plot + max_point_size = input_new()$size)$plot # Get plot part of output }, @@ -163,15 +163,20 @@ server <- function(input, output, session) { ) }) + # Render the bubble plot gene labels separately with ggdraw output$bubble_labels <- renderPlot({ ggdraw(bubble_plot(df = bubble_input(), - max_point_size = input_new()$size)$labels) + max_point_size = input_new()$size)$labels) # Get labels part of output }, + # Set height of bubble plot gene labels to (hopefully) align with plots height = function() 25 + 30 * length(input_new()$gene), + # Max length of a gene is 200px + # NOTE: If altering this, also change the corresponding cellWidth for + # splitLayout in ui.R width = 200 ) @@ -183,20 +188,40 @@ server <- function(input, output, session) { req(bubble_input()) - bubble_input() %>% + gene_table_order <- rev(unique(bubble_input()$Gene)) + gene_table_order + + table <- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% spread(Gene, Expression) %>% - DT::datatable(options = list( - columnDefs = list(list(visible = FALSE, - # Hide the Colour column - targets = c(6))), + select(Cluster, + Sample, + "Cell type" = Cell_type, + "Cell class" = Cell_class, + "Number of cells" = N_cells, + all_of(gene_table_order)) + + if ("MEAN" %in% gene_table_order) { + table <- table %>% relocate("MEAN", + .after = last_col()) + } + + DT::datatable(table, options = list( + # columnDefs = list(list(visible = FALSE, + # # Hide the Colour column + # targets = c(6))), selection = "none") - ) %>% + ) %>% + + # Colour the cluster column based on the palette + formatStyle("Cluster", + backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) - # Colour the cluster column based on the palette - formatStyle("Cluster", - backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) + # # Set cluster column text to white if the background colour is dark, else it's black (default) + # if (dark(point$Colour)) { + # style <- paste0(style, "color: #FFFFFF") + # } }) @@ -256,7 +281,7 @@ server <- function(input, output, session) { layout(ribbon_plotly(), legend = list(x = 1, y = 0)) }) - # DOWNLOAD TIMECOURSE + # DOWNLOAD TIMECOURSE (static plot) AS A PDF output$download_ribbon <- downloadHandler(filename = "timecourse_ribbon.pdf", From 4422966732817d9a4085f7aa3553ef224f406476 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2021 14:54:37 -0400 Subject: [PATCH 066/100] Add toggle for displaying mean expression to table tab, edit docs --- clusters/ui.R | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index dfe5f1e..28db20b 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -28,17 +28,19 @@ ui <- function(request){ selectInput("gene", "Gene", choices = genes_mouse, multiple = TRUE), + # Input for dendrogram tab and expression tabletab + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') + && input.gene.length > 1", + materialSwitch("mean_exp", "Display mean expression over the selected genes", + # status doesn't have any effect other than color scheme. See bootstrap status values + status = "success", + value = FALSE, + right = TRUE), + ), + # Input for dendrogram tab conditionalPanel(condition = "input.tabs == 'dendrogram'", - conditionalPanel(condition = "input.gene.length > 1", - materialSwitch("mean_exp", "Plot mean expression over the selected genes", - # status doesn't have any effect other than color scheme. See bootstrap status values - status = "success", - value = FALSE, - right = TRUE), - ), - selectInput("bubble_scale", "Scaling", choices = c("Scale each gene to [0, 1]" = TRUE, "Conserve scale across genes" = FALSE), @@ -144,7 +146,7 @@ ui <- function(request){ p("• Hover over each bubble, or move to the tab containing the table, to get additional details about each cluster & its expression level"), - p("• When plotting more than one gene, use the sidebar switch to plot the mean expression over the plotted genes in a new row of the bubble plot. Pct values are disregarded here, so all bubbles in this row are the same size"), + p("• When selecting more than one gene, use the sidebar switch to plot the mean expression over the selected genes in a new row of the bubble plot. Pct values are disregarded here, so all bubbles in this row are the same size"), # Display the image of the cluster dendrogram as in Fig 1 of Jessa et al, # Nat Genet, 2019 @@ -191,6 +193,8 @@ ui <- function(request){ p("• The value in each gene column denotes the mean gene expression per cell in the specified cluster (mean expression)"), + p("• When selecting more than one gene, use the sidebar switch to display the mean expression over the selected genes in a new column of the table"), + p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( From c9ce9eb9c877fb136f0648129fcafb8b3eae0080 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 22 Jun 2021 17:54:44 -0400 Subject: [PATCH 067/100] Show number of cells in timecourse tooltip - issue #19 --- clusters/functions.R | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 5a63c6b..dd35e23 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -174,7 +174,7 @@ bubble_prep <- function(gene, #' @param df Data frame as returned by bubble_prep(), with require columns Cluster, #' Gene_padded, Pct1, and Expression #' -#' @return ggplot2 object +#' @return A list containing a ggplot2 object and its legend (extracted with cowplot) #' #' @examples #' bubble_prep("Dlx1") %>% bubbleplot() @@ -293,9 +293,9 @@ ribbon_plot <- function(gene, mutate(total = n()) %>% group_by(Age, Cell_type) %>% mutate(frac = sum(gene > 0) / total) %>% - distinct(Age, Cell_type, frac) %>% + distinct(Age, Cell_type, frac, total) %>% ungroup() - + # For each timepoint, calculate the proportion of cells in which the gene # is detected ribbon_df_cum_frac <- ribbon_df %>% @@ -315,7 +315,7 @@ ribbon_plot <- function(gene, df$ranking = match(df$cluster, names(colours)) df = df[order(df$stage, df$ranking),] - df <- left_join(df, select(ribbon_df_celltype_frac, cluster = Cell_type, stage = Age, frac)) %>% + df <- left_join(df, select(ribbon_df_celltype_frac, cluster = Cell_type, stage = Age, frac, total)) %>% # Complete cases when genes were not detected in certain timepoints/clusters # by replacing with a zero mutate(frac = replace_na(frac, 0)) %>% @@ -324,7 +324,8 @@ ribbon_plot <- function(gene, df$xpos = match(df$stage, unique(timepoints2)) p1 <- df %>% - ggplot(aes(x = xpos, y = frac, fill = cluster)) + + ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, + text = glue("{total*frac} {gene}+ cells"))) + geom_area(stat = "identity") + scale_fill_manual(values = colours, drop = FALSE, name = "") + scale_x_continuous(breaks = seq_along(unique(df$stage)), @@ -338,7 +339,7 @@ ribbon_plot <- function(gene, if(make_plotly) { return (ggplotly(p1, # Only display cluster information within tooltip - tooltip = "cluster") %>% + tooltip = c("group", "text")) %>% # Add hovers both on points as well as filled areas of the plot # Changing it to hoveron="fills" only causes a known issue, see: @@ -378,7 +379,7 @@ ribbon_plot <- function(gene, #' @param hide_axes Logical, whether or not to hide the plot axes. Default: FALSE #' @param show_n_cells Logical, ... Default: FALSE #' -#' @return A ggplot object +#' @return A list containing a ggplot object and a list of cluster centers #' #' @export dr_plot <- function(embedding, From c83423df12cab6aff885a33e34fca06454c22dbe Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 22 Jun 2021 18:20:54 -0400 Subject: [PATCH 068/100] Add code documentation for new sections --- clusters/functions.R | 3 ++- clusters/server.R | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index dd35e23..50a78c6 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -324,6 +324,7 @@ ribbon_plot <- function(gene, df$xpos = match(df$stage, unique(timepoints2)) p1 <- df %>% + # Need to specify group or the text attribute with glue causes errors ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, text = glue("{total*frac} {gene}+ cells"))) + geom_area(stat = "identity") + @@ -338,7 +339,7 @@ ribbon_plot <- function(gene, if(make_plotly) { return (ggplotly(p1, - # Only display cluster information within tooltip + # Display cluster (group) and info on number of cells (text) in tooltips tooltip = c("group", "text")) %>% # Add hovers both on points as well as filled areas of the plot diff --git a/clusters/server.R b/clusters/server.R index 0bb0fc9..b8859b5 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -188,13 +188,15 @@ server <- function(input, output, session) { req(bubble_input()) + # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - gene_table_order table <- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% spread(Gene, Expression) %>% + # Select all except Colour column, rename some variables for clarity, and + # follow bubble_input order for gene columns (saved above) select(Cluster, Sample, "Cell type" = Cell_type, @@ -202,18 +204,19 @@ server <- function(input, output, session) { "Number of cells" = N_cells, all_of(gene_table_order)) + # Move mean expression to the rightmost column if ("MEAN" %in% gene_table_order) { table <- table %>% relocate("MEAN", .after = last_col()) } + # Produce a datatable DT::datatable(table, options = list( # columnDefs = list(list(visible = FALSE, # # Hide the Colour column # targets = c(6))), selection = "none") ) %>% - # Colour the cluster column based on the palette formatStyle("Cluster", backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) From 8fbe68cbad590b42bcda83ead17b9870e5fe7c62 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 25 Jun 2021 12:55:36 -0400 Subject: [PATCH 069/100] Alter timecourse tooltip text and plotly controls --- clusters/functions.R | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 50a78c6..41f5425 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -326,7 +326,7 @@ ribbon_plot <- function(gene, p1 <- df %>% # Need to specify group or the text attribute with glue causes errors ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, - text = glue("{total*frac} {gene}+ cells"))) + + text = glue("{total*frac} {gene}+ cells out of {total} cells in timepoint"))) + geom_area(stat = "identity") + scale_fill_manual(values = colours, drop = FALSE, name = "") + scale_x_continuous(breaks = seq_along(unique(df$stage)), @@ -338,7 +338,7 @@ ribbon_plot <- function(gene, ylim(0, ymax) if(make_plotly) { - return (ggplotly(p1, + return ((ggplotly(p1, # Display cluster (group) and info on number of cells (text) in tooltips tooltip = c("group", "text")) %>% @@ -346,7 +346,20 @@ ribbon_plot <- function(gene, # Changing it to hoveron="fills" only causes a known issue, see: # https://github.com/ropensci/plotly/issues/1641 style(hoveron="points+fills") - ) + ) %>% + + # Customize the modebar on the plotly object to hide certain buttons, + # remove the plotly logo, and toggle spike lines on by default + config(modeBarButtonsToRemove = c("hoverCompareCartesian", + "hoverClosestCartesian", + "toImage"), + displaylogo = FALSE) %>% + layout(yaxis = list(showspikes = FALSE, + spikethickness = 1.5, + spikedash = "solid"), + xaxis = list(showspikes = FALSE, + spikethickness = 1.5, + spikedash = "solid"))) } else { return(p1) } From fd100376f2c016f3e245190594a8863b0362b669 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 25 Jun 2021 17:49:35 -0400 Subject: [PATCH 070/100] Create new tab to to rank clusters by expression - issue #20 --- clusters/functions.R | 52 ++++++++++++++++++++++++++++++++++++++- clusters/server.R | 58 ++++++++++++++++++++++++++++++++++++++++++++ clusters/ui.R | 17 +++++++++++-- 3 files changed, 124 insertions(+), 3 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 41f5425..c672c17 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -326,7 +326,7 @@ ribbon_plot <- function(gene, p1 <- df %>% # Need to specify group or the text attribute with glue causes errors ggplot(aes(x = xpos, y = frac, fill = cluster, group = cluster, - text = glue("{total*frac} {gene}+ cells out of {total} cells in timepoint"))) + + text = glue("{total*frac} {gene}+ cells out of {total} cells at this time point"))) + geom_area(stat = "identity") + scale_fill_manual(values = colours, drop = FALSE, name = "") + scale_x_continuous(breaks = seq_along(unique(df$stage)), @@ -791,3 +791,53 @@ dark <- function(hex_color) { } } + +#' Add ticks below a bar plot to categorize x axis into less granular categories +#' +#' @param df Dataframe, containing the data to use +#' [...] +#' +#' @example +#' plot + add_class_ticks(df, unique(df$Cell_class), palette = palettes$Cell_class, +#' start = -50, sep = 100, height = 500, label_x_pos = -9, fontsize = 3.5) +#' +add_class_ticks <- function(df, classes, height, sep, start, label_x_pos, palette = NULL, fontsize = 3) { + + # Set up our limits + n <- length(classes) + tops <- seq(start, by = - (height + sep), length.out = n) + bottoms <- seq(start - height, by = - (height + sep), length.out = n) + mids <- map2_dbl(tops, bottoms, ~ mean(c(.x, .y))) + betweens <- seq(start - (height + sep/2), by = - (height + sep), length.out = n - 1) + + if (is.null(palette)) palette <- rep("black", n) + + # Make a dataframe for tick positions + df$y_top <- NA + df$y_bottom <- NA + + for (i in seq_along(classes)) { + + df[df$Cell_class == classes[i], ]$y_top <- tops[i] + df[df$Cell_class == classes[i], ]$y_bottom <- bottoms[i] + + } + + # Make a dataframe for class labels + df2 <- data.frame(Class = classes, + x = label_x_pos, + y = mids) + + # Adding ggplot2 elements together + # https://stackoverflow.com/questions/56405904/how-to-add-ggproto-objects-together-and-save-for-later-without-call-to-ggplot + list(geom_segment(data = df, + mapping = aes(x = Cluster, y = y_top, + xend = Cluster, yend = y_bottom), + size = 1, + colour = "gray50"), + geom_hline(yintercept = 0, colour = "gray90"), + geom_hline(yintercept = betweens, linetype = "dotted", size = 0.4, colour = "gray60"), + geom_text(data = df2, mapping = aes(x = x, y = y, label = Class, colour = Class), size = fontsize, fontface = "bold", hjust = "left"), + scale_colour_manual(values = palette)) + +} diff --git a/clusters/server.R b/clusters/server.R index b8859b5..1d27579 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -565,5 +565,63 @@ server <- function(input, output, session) { }) + #### ---- Clusters ranked by expression tab content ---- + + output$rank_tick_plot <- renderPlot({ + + # Lists & palette to use for more general cell class labels + # neuron_list = list("RGC", "RGC (prolif.)", "Excitatory neurons", + # "Other neurons", "Inhibitory neurons") + # progenitor_list = list("Neuronal progenitors", "Oligodendrocyte precursors", + # "Glial progenitors") + # others_list = list("Other", "Non-neuroectoderm", "Immune") + + palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", + "Oligodendrocytes" = "#b7dd5f", + "Astrocytes" = "#00a385", + "Ependymal" = "#8ee5cf", + "Neurons" = "#840200", + "Non-neuroect." = "gray40", + "Other" = "gray90") + + df <- bubble_prep(gene = input_new()$gene[1]) %>% + # Order from highest to lowest by expression (ranked) + arrange(desc(Expression)) %>% + mutate(Cluster = factor(Cluster, levels = .$Cluster)) %>% + # Rename cell classes to more general names + mutate(Cell_class = case_when( + grepl("RGC", Cell_class) | grepl("-P$", Cluster) ~ "Progenitors/cyc.", + grepl("Olig", Cell_class) ~ "Oligodendrocytes", + grepl("Epen", Cell_class) ~ "Ependymal", + grepl("Astr", Cell_class) ~ "Astrocytes", + grepl("[Nn]euron", Cell_class) ~ "Neurons", + grepl("Non-neuro|Immune", Cell_class) ~ "Non-neuroect.", + TRUE ~ "Other" + )) + + p1 <- df %>% ggplot(aes(x = Cluster, y = Expression)) + + geom_bar(aes(fill = Cluster), stat = "identity") + + scale_fill_manual(values = df$Colour) + + theme_min() + + theme(legend.position = "none", + axis.title.x = element_blank(), + axis.text.x = element_blank(), + axis.ticks.x = element_blank()) + + expand_limits(x = -18) + + ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), + palette = palette_tick_plot, + start = -5, sep = 5, height = 30, label_x_pos = -16, fontsize = 3.5) + + # Make sure to expand to the same value that's in p1 + expand_limits(x = -18) + + theme(legend.position = "none", + axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 10), + axis.title.y = element_blank(), + axis.text.y = element_blank(), + axis.ticks.y = element_blank()) + + plot_grid(p1, ticks, ncol = 1, align = "v") + }) + } diff --git a/clusters/ui.R b/clusters/ui.R index 28db20b..477e585 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -52,8 +52,9 @@ ui <- function(request){ ), - # Input for all tabs other than dendrogram & table - conditionalPanel(condition = "input.tabs != 'dendrogram' && input.tabs != 'exp_table'", + # Input for all tabs other than dendrogram, ranked plot, & table + conditionalPanel(condition = "input.tabs != 'dendrogram' && input.tabs != 'exp_table' + && input.tabs != 'rank_exp'", # Specify the visible label as well as the internal # strings used to refer to each region, matching @@ -364,6 +365,18 @@ ui <- function(request){ value = "sample" ), + #### ---- Clusters ranked by expression tab output ---- + + tabPanel("Clusters ranked by expression", + + fluidRow( + plotOutput("rank_tick_plot", width = "12in", height = "5in") %>% ws + ), + + # Specify the value to use when checking if this tab is selected + value = "rank_exp" + ), + id = "tabs" ))), From a7a24c1db24b28019e2a4f00ca463a7e3b3f7777 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 11:49:50 -0400 Subject: [PATCH 071/100] Display message in case of all-zero expression in single cell tabs --- clusters/functions.R | 14 +++++++++++++- clusters/server.R | 20 +++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index c672c17..3e83aa6 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -52,7 +52,19 @@ get_expression <- function(sample, } - return(df) + is_zero = FALSE + + non_zero_exp <- df %>% + filter(Expression != 0) + + # TRUE if non_zero_exp has no rows i.e. i.e. all zero expression + if (dim(non_zero_exp)[1] == 0){ + + is_zero = TRUE + + } + + return(list(data = df, zero = is_zero)) } diff --git a/clusters/server.R b/clusters/server.R index 1d27579..669715f 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -245,7 +245,7 @@ server <- function(input, output, session) { ribbon_static <- reactive({ p1 <- ribbon_plot(gene = input_new()$gene[1], - region = input_new()$region) + region = input_new()$region) # Get legend using cowplot leg <- cowplot::get_legend(p1) @@ -396,12 +396,18 @@ server <- function(input, output, session) { req(input_new()) - get_expression(sample = input_new()$region, - embedding = dr_joint_embedding(), - gene = input_new()$gene, - - # If more than one gene was provided, compute an aggregate - aggregate = TRUE) + express <- get_expression(sample = input_new()$region, + embedding = dr_joint_embedding(), + gene = input_new()$gene, + # If more than one gene was provided, compute an aggregate + aggregate = TRUE) + + # Display message to the user if there is 0 expression throughout region + validate( + need(express$zero == FALSE, "This gene has no detected expression in the selected brain region.") + ) + + express$data }) From 6aed283e5a80eb8a0ce07b8a1b26676d65a44247 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 12:20:29 -0400 Subject: [PATCH 072/100] Add informative error messages for missing gene input to all tabs --- clusters/server.R | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 669715f..eb7b1c0 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -80,6 +80,10 @@ server <- function(input, output, session) { # Generate the input dataframe for the bubbleplot bubble_input <- reactive({ + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE if (length(input_new()$gene) > 1 && input_new()$mean_exp){ @@ -185,7 +189,6 @@ server <- function(input, output, session) { # Show table with cluster & expression info output$cluster_table <- renderDataTable({ - req(bubble_input()) # Use the order from bubble_input except reversed @@ -244,6 +247,10 @@ server <- function(input, output, session) { # user to download it ribbon_static <- reactive({ + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + p1 <- ribbon_plot(gene = input_new()$gene[1], region = input_new()$region) @@ -272,6 +279,10 @@ server <- function(input, output, session) { # Generate interactive ribbon plot and save the output ribbon_plotly <- reactive({ + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + ribbon_plot(gene = input_new()$gene[1], region = input_new()$region, make_plotly = TRUE) @@ -305,6 +316,10 @@ server <- function(input, output, session) { req(input_new()) + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) + # Load the Cell barcode, 2D coordinates, and selected clustering solution get_embedding(sample = input_new()$region, dr_cols = input_new()$dr, @@ -575,12 +590,9 @@ server <- function(input, output, session) { output$rank_tick_plot <- renderPlot({ - # Lists & palette to use for more general cell class labels - # neuron_list = list("RGC", "RGC (prolif.)", "Excitatory neurons", - # "Other neurons", "Inhibitory neurons") - # progenitor_list = list("Neuronal progenitors", "Oligodendrocyte precursors", - # "Glial progenitors") - # others_list = list("Other", "Non-neuroectoderm", "Immune") + validate( + need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") + ) palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", "Oligodendrocytes" = "#b7dd5f", From 6b4f9ae73ffc91bc534817ae9a3481320ba6f593 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 12:37:55 -0400 Subject: [PATCH 073/100] Remove relocate() function from expression table code - bug fix on different R version --- clusters/server.R | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index eb7b1c0..108bfac 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -188,46 +188,39 @@ server <- function(input, output, session) { #### ---- Expression table tab content ---- # Show table with cluster & expression info - output$cluster_table <- renderDataTable({ + output$cluster_table <- DT::renderDataTable({ req(bubble_input()) # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - table <- bubble_input() %>% + #table <- + bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% spread(Gene, Expression) %>% - # Select all except Colour column, rename some variables for clarity, and + # Select all except Colour column, rename some variables for clarity, and # follow bubble_input order for gene columns (saved above) - select(Cluster, - Sample, - "Cell type" = Cell_type, - "Cell class" = Cell_class, - "Number of cells" = N_cells, - all_of(gene_table_order)) + select(Cluster, + Sample, + "Cell type" = Cell_type, + "Cell class" = Cell_class, + "Number of cells" = N_cells, + all_of(gene_table_order)) %>% # Move mean expression to the rightmost column - if ("MEAN" %in% gene_table_order) { - table <- table %>% relocate("MEAN", - .after = last_col()) - } + # if ("MEAN" %in% gene_table_order) { + # table <- table %>% relocate("MEAN", + # .after = last_col()) + # } # Produce a datatable - DT::datatable(table, options = list( - # columnDefs = list(list(visible = FALSE, - # # Hide the Colour column - # targets = c(6))), - selection = "none") - ) %>% + DT::datatable() %>% + #selection = "none") + # Colour the cluster column based on the palette formatStyle("Cluster", - backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) - - # # Set cluster column text to white if the background colour is dark, else it's black (default) - # if (dark(point$Colour)) { - # style <- paste0(style, "color: #FFFFFF") - # } + backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) }) From 2be635cef491909b964e28048d1ae6b50b731228 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 14:15:43 -0400 Subject: [PATCH 074/100] Display the gene name in the ranked clusters plot + add docs for this tab --- clusters/server.R | 4 +++- clusters/ui.R | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 108bfac..becb20d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -618,7 +618,9 @@ server <- function(input, output, session) { axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank()) + - expand_limits(x = -18) + expand_limits(x = -18) + + labs(title = input_new()$gene[1]) + + ylab(glue("proportion {input_new()$gene[1]}+ cells")) ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), palette = palette_tick_plot, diff --git a/clusters/ui.R b/clusters/ui.R index 477e585..2ef5c9f 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -200,7 +200,7 @@ ui <- function(request){ fluidRow( DT::dataTableOutput("cluster_table", width = 1100) %>% ws - ), + ), # Only display download button if update has been pressed at least once conditionalPanel(condition='input.update!=0', @@ -369,6 +369,14 @@ ui <- function(request){ tabPanel("Clusters ranked by expression", + tags$br(), + + p("This plot displays the expression of the selected gene in each cluster ranked from highest to lowest"), + + p("• The ticks below the plot x-axis provide categorization by general cell type"), + + p("• If more than one gene is provided, only the first gene is plotted"), + fluidRow( plotOutput("rank_tick_plot", width = "12in", height = "5in") %>% ws ), From 84655d44e1e4213ae3bbd8c4b927e85e8dc39c7a Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 16:21:37 -0400 Subject: [PATCH 075/100] Display message in case of all-zero expression in timecourse tab - issue #35 (not tested locally) --- clusters/functions.R | 19 ++++++++++++++++--- clusters/server.R | 20 ++++++++++++++++++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 3e83aa6..053b983 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -52,6 +52,8 @@ get_expression <- function(sample, } + # Output a flag if all expression values in the region are 0 + # used for an informative error message in the app is_zero = FALSE non_zero_exp <- df %>% @@ -298,6 +300,17 @@ ribbon_plot <- function(gene, ribbon_df <- prep_ribbon_input(gene, region) ribbon_df$gene <- ribbon_df[[gene]] + # Output a flag if all expression values in the region are 0 + # used for an informative error message in the app + is_zero = FALSE + non_zero_exp <- ribbon_df %>% + filter(gene != 0) + + # TRUE if non_zero_exp has no rows i.e. i.e. all zero expression + if (dim(non_zero_exp)[1] == 0){ + is_zero = TRUE + } + # For each cluster at each timepoint, calculate the proportion of cells in # which the gene is detected ribbon_df_celltype_frac <- ribbon_df %>% @@ -350,7 +363,7 @@ ribbon_plot <- function(gene, ylim(0, ymax) if(make_plotly) { - return ((ggplotly(p1, + return (list(zero = is_zero, plot = (ggplotly(p1, # Display cluster (group) and info on number of cells (text) in tooltips tooltip = c("group", "text")) %>% @@ -371,9 +384,9 @@ ribbon_plot <- function(gene, spikedash = "solid"), xaxis = list(showspikes = FALSE, spikethickness = 1.5, - spikedash = "solid"))) + spikedash = "solid")))) } else { - return(p1) + return(list(zero = is_zero, plot = p1)) } } diff --git a/clusters/server.R b/clusters/server.R index becb20d..1eb7358 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -244,8 +244,16 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + all_zero <- ribbon_plot(gene = input_new()$gene[1], + region = input_new()$region)$zero + + # Display message to the user if there is 0 expression throughout region + validate( + need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") + ) + p1 <- ribbon_plot(gene = input_new()$gene[1], - region = input_new()$region) + region = input_new()$region)$plot # Get legend using cowplot leg <- cowplot::get_legend(p1) @@ -276,9 +284,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + all_zero = ribbon_plot(gene = input_new()$gene[1], + region = input_new()$region)$zero + + # Display message to the user if there is 0 expression throughout region + validate( + need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") + ) + ribbon_plot(gene = input_new()$gene[1], region = input_new()$region, - make_plotly = TRUE) + make_plotly = TRUE)$plot }) From 3ef9cf4dfca9da2bfa895c2d54e929adfb4393d2 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 28 Jun 2021 17:35:59 -0400 Subject: [PATCH 076/100] Remove row indices from expression table --- clusters/server.R | 17 ++++++++++++----- clusters/ui.R | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 1eb7358..e75310a 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -188,13 +188,13 @@ server <- function(input, output, session) { #### ---- Expression table tab content ---- # Show table with cluster & expression info - output$cluster_table <- DT::renderDataTable({ + output$cluster_table <- DT::renderDT({ req(bubble_input()) # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - #table <- + table<- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% @@ -206,7 +206,7 @@ server <- function(input, output, session) { "Cell type" = Cell_type, "Cell class" = Cell_class, "Number of cells" = N_cells, - all_of(gene_table_order)) %>% + all_of(gene_table_order)) # Move mean expression to the rightmost column # if ("MEAN" %in% gene_table_order) { @@ -215,8 +215,7 @@ server <- function(input, output, session) { # } # Produce a datatable - DT::datatable() %>% - #selection = "none") + DT::datatable(table, rownames= FALSE) %>% # Colour the cluster column based on the palette formatStyle("Cluster", @@ -224,6 +223,14 @@ server <- function(input, output, session) { }) + # output$x4 = renderPrint({ + # s = input$cluster_table_rows_selected + # if (length(s)) { + # cat('These clusters were selected:\n\n') + # cat(bubble_input()$Cluster[s], sep = ', ') + # } + # }) + # Download data in bubbleplot tab and expression table as TSV output$download_bubble <- downloadHandler(filename = "mean_cluster_expression.tsv", diff --git a/clusters/ui.R b/clusters/ui.R index 2ef5c9f..5c4890b 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -199,7 +199,7 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( - DT::dataTableOutput("cluster_table", width = 1100) %>% ws + DT::DTOutput("cluster_table", width = 1100) %>% ws ), # Only display download button if update has been pressed at least once From a271f871d38684cede578a3cf53b53ebf746bd6b Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 14:47:24 -0400 Subject: [PATCH 077/100] Include shiny_bookmarks folder in .gitignore --- clusters/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clusters/.gitignore b/clusters/.gitignore index 6af25e7..52c5430 100644 --- a/clusters/.gitignore +++ b/clusters/.gitignore @@ -31,3 +31,6 @@ debug-app # Exclude R script used for testing test.R + +# Exclude server-side bookmark files +shiny_bookmarks/ From dab8c7ebb3c95df9aedb6c7de82eb1e15c2a9651 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 15:34:19 -0400 Subject: [PATCH 078/100] Implement file upload (csv or tsv only) for gene lists --- clusters/server.R | 18 +++++++++++++++++- clusters/ui.R | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/clusters/server.R b/clusters/server.R index e75310a..888a3fa 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -18,9 +18,24 @@ server <- function(input, output, session) { # more options in the future input_new <- eventReactive(input$update, { + g_list <- reactive({ + req(input$gene_list) + + ext <- tools::file_ext(input$gene_list$name) + switch(ext, + csv = scan(input$gene_list$datapath, + what = "string", sep = ",", + encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), + tsv = scan(input$gene_list$datapath, + what = "string", sep = "\t", + encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), + validate("Invalid file; Please upload a .csv or .tsv file") + ) + }) + # Inputs to use as is l <- list( - "gene" = input$gene, + "gene" = union(input$gene, g_list()), "scale" = input$bubble_scale, "size" = input$bubble_size, "region" = input$region, @@ -185,6 +200,7 @@ server <- function(input, output, session) { ) + #### ---- Expression table tab content ---- # Show table with cluster & expression info diff --git a/clusters/ui.R b/clusters/ui.R index 5c4890b..ab726c3 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -28,6 +28,10 @@ ui <- function(request){ selectInput("gene", "Gene", choices = genes_mouse, multiple = TRUE), + # Gene list input with a file + fileInput("gene_list", NULL, buttonLabel = "Upload gene list", + multiple = FALSE, accept = c(".csv", ".tsv")), + # Input for dendrogram tab and expression tabletab conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') && input.gene.length > 1", From e2b0a9a24921167ed9910db5f63ebb917cd14835 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 15:49:28 -0400 Subject: [PATCH 079/100] Allow user to use the textbox only, file upload optional - issue #17 --- clusters/server.R | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/clusters/server.R b/clusters/server.R index 888a3fa..1ca3b2e 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -33,9 +33,16 @@ server <- function(input, output, session) { ) }) + # Don't wait for file input if it is not provided + if (length(input$gene_list) > 0){ + genes = union(input$gene, g_list()) + } else { + genes = input$gene + } + # Inputs to use as is l <- list( - "gene" = union(input$gene, g_list()), + "gene" = genes, "scale" = input$bubble_scale, "size" = input$bubble_size, "region" = input$region, From d3c262a92a46f258507630fb2e18c253c563055b Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 16:19:27 -0400 Subject: [PATCH 080/100] Toggle spike lines on by default for timeseries interactive plot --- clusters/functions.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index 053b983..5562af5 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -379,10 +379,10 @@ ribbon_plot <- function(gene, "hoverClosestCartesian", "toImage"), displaylogo = FALSE) %>% - layout(yaxis = list(showspikes = FALSE, + layout(yaxis = list(showspikes = TRUE, spikethickness = 1.5, spikedash = "solid"), - xaxis = list(showspikes = FALSE, + xaxis = list(showspikes = TRUE, spikethickness = 1.5, spikedash = "solid")))) } else { From 78bbdcce0274092ca182d5cdf8ac6439ad689278 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 16:57:02 -0400 Subject: [PATCH 081/100] Display mean expression toggle for <2 genes in textbox --- clusters/server.R | 10 +++++----- clusters/ui.R | 15 +++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 1ca3b2e..876d729 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -19,14 +19,14 @@ server <- function(input, output, session) { input_new <- eventReactive(input$update, { g_list <- reactive({ - req(input$gene_list) + req(input$genelist) - ext <- tools::file_ext(input$gene_list$name) + ext <- tools::file_ext(input$genelist$name) switch(ext, - csv = scan(input$gene_list$datapath, + csv = scan(input$genelist$datapath, what = "string", sep = ",", encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), - tsv = scan(input$gene_list$datapath, + tsv = scan(input$genelist$datapath, what = "string", sep = "\t", encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), validate("Invalid file; Please upload a .csv or .tsv file") @@ -34,7 +34,7 @@ server <- function(input, output, session) { }) # Don't wait for file input if it is not provided - if (length(input$gene_list) > 0){ + if (length(input$genelist) > 0){ genes = union(input$gene, g_list()) } else { genes = input$gene diff --git a/clusters/ui.R b/clusters/ui.R index ab726c3..f677a44 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -28,13 +28,16 @@ ui <- function(request){ selectInput("gene", "Gene", choices = genes_mouse, multiple = TRUE), - # Gene list input with a file - fileInput("gene_list", NULL, buttonLabel = "Upload gene list", - multiple = FALSE, accept = c(".csv", ".tsv")), + # Gene list input with a file, shared across tabs + fileInput(inputId = "genelist", label = NULL, + #label = "Upload gene list (.csv or .tsv)", + buttonLabel = "Upload gene list", + multiple = FALSE, + accept = c(".csv", ".tsv"), + placeholder = "None"), - # Input for dendrogram tab and expression tabletab - conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') - && input.gene.length > 1", + # Input for dendrogram tab and expression table tab + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table')", materialSwitch("mean_exp", "Display mean expression over the selected genes", # status doesn't have any effect other than color scheme. See bootstrap status values status = "success", From 532d17db3012379645ac9f82a165d46576dadfca Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 29 Jun 2021 18:04:03 -0400 Subject: [PATCH 082/100] Remove user toggle for spikelines in timecourse interactive plot --- clusters/functions.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/clusters/functions.R b/clusters/functions.R index 5562af5..c2f07de 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -377,7 +377,9 @@ ribbon_plot <- function(gene, # remove the plotly logo, and toggle spike lines on by default config(modeBarButtonsToRemove = c("hoverCompareCartesian", "hoverClosestCartesian", - "toImage"), + "toImage", + "toggleSpikelines", + "autoScale2d"), displaylogo = FALSE) %>% layout(yaxis = list(showspikes = TRUE, spikethickness = 1.5, From b676c02efb06b2ff02a32306f58a46ae50039320 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 14:51:46 -0400 Subject: [PATCH 083/100] Toggle between file upload and textbox input for gene selection - issue #17 --- clusters/server.R | 11 ++++++----- clusters/ui.R | 28 ++++++++++++++++++---------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 876d729..470a160 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -19,8 +19,9 @@ server <- function(input, output, session) { input_new <- eventReactive(input$update, { g_list <- reactive({ - req(input$genelist) + req(input$genelist) + ext <- tools::file_ext(input$genelist$name) switch(ext, csv = scan(input$genelist$datapath, @@ -33,9 +34,9 @@ server <- function(input, output, session) { ) }) - # Don't wait for file input if it is not provided - if (length(input$genelist) > 0){ - genes = union(input$gene, g_list()) + # Condition which input is used based on the upload toggle + if (input$upload){ + genes = g_list() } else { genes = input$gene } @@ -105,7 +106,7 @@ server <- function(input, output, session) { validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - + # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE if (length(input_new()$gene) > 1 && input_new()$mean_exp){ diff --git a/clusters/ui.R b/clusters/ui.R index f677a44..e1546e7 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -24,17 +24,25 @@ ui <- function(request){ sidebarPanel(width = 3, - # Gene input field, shared across tabs - selectInput("gene", "Gene", choices = genes_mouse, - multiple = TRUE), + conditionalPanel(condition = '!input.upload', + # Gene input field, shared across tabs + selectInput("gene", "Gene", choices = genes_mouse, + multiple = TRUE)), - # Gene list input with a file, shared across tabs - fileInput(inputId = "genelist", label = NULL, - #label = "Upload gene list (.csv or .tsv)", - buttonLabel = "Upload gene list", - multiple = FALSE, - accept = c(".csv", ".tsv"), - placeholder = "None"), + conditionalPanel(condition = 'input.upload', + # Gene list input with a file, shared across tabs + fileInput(inputId = "genelist", label = "Gene list", + #label = "Upload gene list (.csv or .tsv)", + buttonLabel = "Upload gene list", + multiple = FALSE, + accept = c(".csv", ".tsv"), + placeholder = "None")), + + materialSwitch("upload", "Upload a list of genes", + # status doesn't have any effect other than color scheme. See bootstrap status values + status = "success", + value = FALSE, + right = TRUE), # Input for dendrogram tab and expression table tab conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table')", From fd31c1c81a442a60e61e24ae92befd78c220e407 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 15:54:19 -0400 Subject: [PATCH 084/100] Update text in file upload function + error message --- clusters/server.R | 2 +- clusters/ui.R | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 470a160..6cc2bdf 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -30,7 +30,7 @@ server <- function(input, output, session) { tsv = scan(input$genelist$datapath, what = "string", sep = "\t", encoding = "UTF-8", fileEncoding = "UTF-8-BOM"), - validate("Invalid file; Please upload a .csv or .tsv file") + validate("\n\n\nInvalid file; Please upload a .csv or .tsv file") ) }) diff --git a/clusters/ui.R b/clusters/ui.R index e1546e7..7735ff9 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -32,11 +32,10 @@ ui <- function(request){ conditionalPanel(condition = 'input.upload', # Gene list input with a file, shared across tabs fileInput(inputId = "genelist", label = "Gene list", - #label = "Upload gene list (.csv or .tsv)", - buttonLabel = "Upload gene list", + buttonLabel = "Upload...", multiple = FALSE, accept = c(".csv", ".tsv"), - placeholder = "None")), + placeholder = "No file selected")), materialSwitch("upload", "Upload a list of genes", # status doesn't have any effect other than color scheme. See bootstrap status values From 2c0bf7bfaa4537d937b7757ad1accb1ce2fee270 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 16:13:24 -0400 Subject: [PATCH 085/100] Switch back to conditionally displaying mean expression toggle --- clusters/ui.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index 7735ff9..ea2ae9f 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -37,14 +37,15 @@ ui <- function(request){ accept = c(".csv", ".tsv"), placeholder = "No file selected")), - materialSwitch("upload", "Upload a list of genes", + materialSwitch("upload", "Use gene list from file", # status doesn't have any effect other than color scheme. See bootstrap status values status = "success", value = FALSE, right = TRUE), # Input for dendrogram tab and expression table tab - conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table')", + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') && + (input.gene.length > 1 || input.upload)", materialSwitch("mean_exp", "Display mean expression over the selected genes", # status doesn't have any effect other than color scheme. See bootstrap status values status = "success", From 74e30f93bd427785412dfab563d31565146993d0 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 2 Jul 2021 16:49:26 -0400 Subject: [PATCH 086/100] Alter docs and sidebar formatting to match GRN app --- clusters/ui.R | 51 +++++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/clusters/ui.R b/clusters/ui.R index ea2ae9f..df271e4 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -32,7 +32,7 @@ ui <- function(request){ conditionalPanel(condition = 'input.upload', # Gene list input with a file, shared across tabs fileInput(inputId = "genelist", label = "Gene list", - buttonLabel = "Upload...", + buttonLabel = "Browse...", multiple = FALSE, accept = c(".csv", ".tsv"), placeholder = "No file selected")), @@ -133,10 +133,10 @@ ui <- function(request){ # Update button for all sidebar inputs. Coloured to differentiate # from the bookmark button beside it - tags$head( - tags$style(HTML('#update{background-color:#4863A0; - color:#FFFFFF;}')) - ), + # tags$head( + # tags$style(HTML('#update{background-color:#4863A0; + # color:#FFFFFF;}')) + # ), actionButton("update", label = "Update"), # Bookmark button to store current inputs / state of app @@ -152,8 +152,9 @@ ui <- function(request){ tabPanel("Dendrogram", tags$br(), - p("This tab displays the mean expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas"), - + tags$b("This tab displays the mean expression of up to 20 genes over each cluster in the mouse scRNAseq development atlas."), + tags$br(), + tags$br(), p("• Clusters are ordered according to the dendrogram which represents a molecular taxonomy of all cell populations"), p("• Below the dendrogram, clusters are annotated by brain region, time point, and a cell cycle G2/M phase score"), @@ -162,7 +163,7 @@ ui <- function(request){ p("• Hover over each bubble, or move to the tab containing the table, to get additional details about each cluster & its expression level"), - p("• When selecting more than one gene, use the sidebar switch to plot the mean expression over the selected genes in a new row of the bubble plot. Pct values are disregarded here, so all bubbles in this row are the same size"), + p("• When selecting more than one gene, use the sidebar switch to plot the mean expression over these genes in a new row of the bubble plot. Note that Pct values are disregarded here, so all bubbles in this row are the same size"), # Display the image of the cluster dendrogram as in Fig 1 of Jessa et al, # Nat Genet, 2019 @@ -205,11 +206,12 @@ ui <- function(request){ tabPanel("Expression table", tags$br(), - p("This table compares the expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas"), - + tags$b("This table compares the expression of up to 20 genes in each cluster from the mouse scRNAseq development atlas."), + tags$br(), + tags$br(), p("• The value in each gene column denotes the mean gene expression per cell in the specified cluster (mean expression)"), - p("• When selecting more than one gene, use the sidebar switch to display the mean expression over the selected genes in a new column of the table"), + p("• When selecting more than one gene, use the sidebar switch to display the mean expression over these genes in a new column of the table"), p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), @@ -235,8 +237,9 @@ ui <- function(request){ tags$br(), - p("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given gene is detected, broken down by cell type, to allow for visualizing expression across the timecourse"), - + tags$b("This plot quantifies the proportion of cells (from 0 to 1) at each timepoint where a given gene is detected, broken down by cell type, to allow for visualizing expression across the timecourse."), + tags$br(), + tags$br(), p("• Use the side bar to select which brain region to interrogate"), p("• Use the switch above the plot to toggle between static and interactive plots (update button not required)"), @@ -287,8 +290,9 @@ ui <- function(request){ tags$br(), - p("Use this tab to explore the expression of one or more genes at the single-cell level per brain region"), - + tags$b("Use this tab to explore the expression of one or more genes at the single-cell level per brain region."), + tags$br(), + tags$br(), p("• In the top row, the cells are plot in 2D according to a dimensionality reduction algorithm, coloured by cluster (left) or expression (right)"), p("• If using tSNE or UMAP reduction, hover over the plot coloured by cluster (top left) to identify each cluster. Hover will be disabled if clusters are labeled"), @@ -341,8 +345,9 @@ ui <- function(request){ tags$br(), - p("Use this tab to explore the expression of one or more genes at the single-cell level in each sample"), - + tags$b("Use this tab to explore the expression of one or more genes at the single-cell level in each sample."), + tags$br(), + tags$br(), p("• In the top row, the cells are plot in the 2D tSNE space, coloured by cluster"), p("• In the bottom row, the cells are plot in the 2D tSNE space, coloured by expression"), @@ -363,8 +368,9 @@ ui <- function(request){ tags$br(), - p("Use this tab to explore the expression of one or more genes at the single-cell level in each sample"), - + tags$b("Use this tab to explore the expression of one or more genes at the single-cell level in each sample."), + tags$br(), + tags$br(), p("• Each violin plot is coloured by cluster and ordered by the expression level within the given sample"), p("• If more than one gene is provided, the mean expression of all genes is automatically computed and displayed"), @@ -386,9 +392,10 @@ ui <- function(request){ tags$br(), - p("This plot displays the expression of the selected gene in each cluster ranked from highest to lowest"), - - p("• The ticks below the plot x-axis provide categorization by general cell type"), + tags$b("This plot displays the expression of the selected gene in each cluster, ranked from highest to lowest expression."), + tags$br(), + tags$br(), + p("• The ticks below the plot x-axis provide a general categorization by cell type"), p("• If more than one gene is provided, only the first gene is plotted"), From d90cf68a092d10eca4ee47871ea2efb9d387f6fc Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 11:11:47 -0400 Subject: [PATCH 087/100] Switch back to URL bookmarking --- clusters/global.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clusters/global.R b/clusters/global.R index adc37b9..3aaebbc 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -40,4 +40,4 @@ load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") # ---- Shiny settings ---- # Enable bookmarking -enableBookmarking(store = "server") \ No newline at end of file +enableBookmarking(store = "url") \ No newline at end of file From 77db434efbf2f9e18786f928cc6e8a56eaa4ba15 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 13:01:02 -0400 Subject: [PATCH 088/100] Add mean expression toggle to ranked clusters tab, alter plot formatting --- clusters/server.R | 34 ++++++++++++++++++++++++++-------- clusters/ui.R | 6 ++++-- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 6cc2bdf..d653c8d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -640,9 +640,21 @@ server <- function(input, output, session) { "Ependymal" = "#8ee5cf", "Neurons" = "#840200", "Non-neuroect." = "gray40", - "Other" = "gray90") + "Other" = "gray60") + + if (input_new()$mean_exp){ + df <- bubble_prep(gene = input_new()$gene, + show_mean = TRUE) %>% + filter(Gene == "MEAN") + y_axis_text <- "proportion of cells" + title_text <- "Mean expression over all selected genes" + } else { + df <- bubble_prep(gene = input_new()$gene[1]) + y_axis_text <- glue("proportion {input_new()$gene[1]}+ cells") + title_text <- input_new()$gene[1] + } - df <- bubble_prep(gene = input_new()$gene[1]) %>% + df <- df %>% # Order from highest to lowest by expression (ranked) arrange(desc(Expression)) %>% mutate(Cluster = factor(Cluster, levels = .$Cluster)) %>% @@ -660,14 +672,16 @@ server <- function(input, output, session) { p1 <- df %>% ggplot(aes(x = Cluster, y = Expression)) + geom_bar(aes(fill = Cluster), stat = "identity") + scale_fill_manual(values = df$Colour) + - theme_min() + + theme_min(border_colour = "gray90") + theme(legend.position = "none", axis.title.x = element_blank(), axis.text.x = element_blank(), - axis.ticks.x = element_blank()) + + axis.ticks.x = element_blank(), + # Remove white space at the bottom of plot + plot.margin = margin(b=0, unit="cm")) + expand_limits(x = -18) + - labs(title = input_new()$gene[1]) + - ylab(glue("proportion {input_new()$gene[1]}+ cells")) + labs(title = title_text) + + ylab(y_axis_text) ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), palette = palette_tick_plot, @@ -675,10 +689,14 @@ server <- function(input, output, session) { # Make sure to expand to the same value that's in p1 expand_limits(x = -18) + theme(legend.position = "none", - axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 6), axis.title.y = element_blank(), axis.text.y = element_blank(), - axis.ticks.y = element_blank()) + axis.ticks.y = element_blank(), + # Remove plot border + panel.border = element_blank(), + # Remove white space at the top of the plot + plot.margin = margin(t=0, unit="cm")) plot_grid(p1, ticks, ncol = 1, align = "v") }) diff --git a/clusters/ui.R b/clusters/ui.R index df271e4..37be5f3 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -44,7 +44,7 @@ ui <- function(request){ right = TRUE), # Input for dendrogram tab and expression table tab - conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table') && + conditionalPanel(condition = "(input.tabs == 'dendrogram' || input.tabs == 'exp_table' || input.tabs == 'rank_exp') && (input.gene.length > 1 || input.upload)", materialSwitch("mean_exp", "Display mean expression over the selected genes", # status doesn't have any effect other than color scheme. See bootstrap status values @@ -397,7 +397,9 @@ ui <- function(request){ tags$br(), p("• The ticks below the plot x-axis provide a general categorization by cell type"), - p("• If more than one gene is provided, only the first gene is plotted"), + p("• If more than one gene is provided, use the sidebar toggle to plot the mean expression over these genes. If this option is off, only the first gene will be plotted"), + + p("• Be aware of the y-axis, which is bounded by the maximum expression value present"), fluidRow( plotOutput("rank_tick_plot", width = "12in", height = "5in") %>% ws From f42426275195ae85ebe679a3a2aa0c2b10fd0289 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 13:15:02 -0400 Subject: [PATCH 089/100] Clarify expression vs. proportion in ranked clusters tab --- clusters/server.R | 4 ++-- clusters/ui.R | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index d653c8d..7fd8499 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -646,11 +646,11 @@ server <- function(input, output, session) { df <- bubble_prep(gene = input_new()$gene, show_mean = TRUE) %>% filter(Gene == "MEAN") - y_axis_text <- "proportion of cells" + y_axis_text <- "Mean gene expression" title_text <- "Mean expression over all selected genes" } else { df <- bubble_prep(gene = input_new()$gene[1]) - y_axis_text <- glue("proportion {input_new()$gene[1]}+ cells") + y_axis_text <- glue("Mean {input_new()$gene[1]} expression") title_text <- input_new()$gene[1] } diff --git a/clusters/ui.R b/clusters/ui.R index 37be5f3..394c4f7 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -392,12 +392,12 @@ ui <- function(request){ tags$br(), - tags$b("This plot displays the expression of the selected gene in each cluster, ranked from highest to lowest expression."), + tags$b("This plot displays the mean expression of the selected gene in each cluster, ranked from highest to lowest expression."), tags$br(), tags$br(), p("• The ticks below the plot x-axis provide a general categorization by cell type"), - p("• If more than one gene is provided, use the sidebar toggle to plot the mean expression over these genes. If this option is off, only the first gene will be plotted"), + p("• If more than one gene is provided, use the sidebar toggle to plot the mean expression over these genes. If this option is off, only the first gene's expression will be plotted"), p("• Be aware of the y-axis, which is bounded by the maximum expression value present"), From 7543aa1ba3bc7ba0adcce93adb2089d061d7c826 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 19:05:56 -0400 Subject: [PATCH 090/100] Implement expression table with reactable, alter text color in dark background - issue #32 --- clusters/server.R | 44 +++++++++++++++++++++++++++++++++++--------- clusters/ui.R | 2 +- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 7fd8499..a444227 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -212,13 +212,13 @@ server <- function(input, output, session) { #### ---- Expression table tab content ---- # Show table with cluster & expression info - output$cluster_table <- DT::renderDT({ + output$cluster_table <- renderReactable({ req(bubble_input()) # Use the order from bubble_input except reversed gene_table_order <- rev(unique(bubble_input()$Gene)) - table<- + table <- bubble_input() %>% select(-Pct1, -Gene_padded) %>% mutate(Expression = round(Expression, 2)) %>% @@ -238,13 +238,39 @@ server <- function(input, output, session) { # .after = last_col()) # } - # Produce a datatable - DT::datatable(table, rownames= FALSE) %>% - - # Colour the cluster column based on the palette - formatStyle("Cluster", - backgroundColor = styleEqual(names(joint_mouse_palette), unname(joint_mouse_palette))) - + # Produce a data table + reactable(table, + rownames = FALSE, + highlight = TRUE, + compact = TRUE, + searchable = TRUE, + showSortable = TRUE, + fullWidth = FALSE, + showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, + columns = list( + Cluster = colDef(minWidth = 110, + style = function(index){ + # Colour cluster column background by existing palette + b_color <- toString(unname(joint_mouse_palette)[index]) + # Change text colour to white if background is dark + if (dark(b_color)){ + f_color = "#FFFFFF" + } else { + f_color = "#000000" + } + list(background = b_color, color = f_color, fontWeight = "bold", + # Make the cluster column "sticky" i.e. freeze it in horizontal scroll + position = "sticky", left = 0, zIndex = 1) + }, + headerStyle = + list(position = "sticky", left = 0, background = "#fff", zIndex = 1) + ), + Sample = colDef(minWidth = 125), + "Cell type" = colDef(minWidth = 200), + "Cell class" = colDef(minWidth = 150), + "Number of cells" = colDef(minWidth = 80) + ) + ) }) # output$x4 = renderPrint({ diff --git a/clusters/ui.R b/clusters/ui.R index 394c4f7..8d922f8 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -216,7 +216,7 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), fluidRow( - DT::DTOutput("cluster_table", width = 1100) %>% ws + reactableOutput("cluster_table", width = 1500) %>% ws ), # Only display download button if update has been pressed at least once From 028f577500b72d1966baef00601cd5f9df3f12e5 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 19:06:11 -0400 Subject: [PATCH 091/100] Load reactable package, comment out DT package --- clusters/global.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clusters/global.R b/clusters/global.R index 3aaebbc..0760469 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -10,13 +10,14 @@ library(glue) library(stringr) library(ggplot2) library(ggrepel) -library(DT) +#library(DT) library(purrr) library(readr) library(shinyWidgets) library(plotly) library(shinycssloaders) library(shiny) +library(reactable) # ---- Set-up / load common data ---- From 4091e5094e894eb53b0382c1a41423a1e0243249 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Tue, 6 Jul 2021 20:14:48 -0400 Subject: [PATCH 092/100] Display error message for genes in uploaded files that aren't in dataset - issue #17 --- clusters/global.R | 2 ++ clusters/server.R | 69 +++++++++++++++++++++++++++++++++++++++++++++++ clusters/ui.R | 3 --- 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/clusters/global.R b/clusters/global.R index 0760469..cde3698 100644 --- a/clusters/global.R +++ b/clusters/global.R @@ -37,6 +37,8 @@ load("data/joint_mouse/joint_mouse.palette_ID_20190715.Rda") # Vector specifying the order of clusters in the dendrogram load("data/joint_mouse/ID_20190715_dendrogram_order.Rda") +# Load names of genes detected in mouse to provide choices in input +genes_mouse <- data.table::fread("data/joint_mouse/joint_mouse.gene_names.tsv", data.table = FALSE)$genes # ---- Shiny settings ---- diff --git a/clusters/server.R b/clusters/server.R index a444227..280b58d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -106,6 +106,17 @@ server <- function(input, output, session) { validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + } else { + error_genes <- NULL + } + + validate( + need(all(input_new()$gene %in% genes_mouse), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE @@ -301,6 +312,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if (!(input_new()$gene[1] %in% genes_mouse)) { + error_genes <- input_new()$gene[1] + } else { + error_genes <- NULL + } + + validate( + need(input_new()$gene[1] %in% genes_mouse, + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + all_zero <- ribbon_plot(gene = input_new()$gene[1], region = input_new()$region)$zero @@ -341,6 +363,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if (!(input_new()$gene[1] %in% genes_mouse)) { + error_genes <- input_new()$gene[1] + } else { + error_genes <- NULL + } + + validate( + need(input_new()$gene[1] %in% genes_mouse, + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + all_zero = ribbon_plot(gene = input_new()$gene[1], region = input_new()$region)$zero @@ -386,6 +419,17 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + } else { + error_genes <- NULL + } + + validate( + need(all(input_new()$gene %in% genes_mouse), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + # Load the Cell barcode, 2D coordinates, and selected clustering solution get_embedding(sample = input_new()$region, dr_cols = input_new()$dr, @@ -660,6 +704,31 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) + if(input_new()$mean_exp){ + if (!(input_new()$gene[1] %in% genes_mouse)) { + error_genes <- input_new()$gene[1] + } else { + error_genes <- NULL + } + + validate( + need(input_new()$gene[1] %in% genes_mouse, + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + } else { + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + } else { + error_genes <- NULL + } + + validate( + need(all(input_new()$gene %in% genes_mouse), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) + } + + palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", "Oligodendrocytes" = "#b7dd5f", "Astrocytes" = "#00a385", diff --git a/clusters/ui.R b/clusters/ui.R index 8d922f8..2ddc34e 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -1,9 +1,6 @@ source("../www/ui_functions.R") -# Load names of genes detected in mouse to provide choices in input -genes_mouse <- data.table::fread("data/joint_mouse/joint_mouse.gene_names.tsv", data.table = FALSE)$genes - ui <- function(request){ bootstrapPage( From 69aff408e79b9728dcb0733f2fe32a9204a4c04b Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Wed, 7 Jul 2021 08:20:47 -0400 Subject: [PATCH 093/100] Remove case sensitivity for gene input error messages - issue #17 --- clusters/server.R | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 280b58d..3d8faef 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -107,14 +107,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { + error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] } else { error_genes <- NULL } validate( - need(all(input_new()$gene %in% genes_mouse), + need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -253,7 +253,8 @@ server <- function(input, output, session) { reactable(table, rownames = FALSE, highlight = TRUE, - compact = TRUE, + #compact = TRUE, + striped = TRUE, searchable = TRUE, showSortable = TRUE, fullWidth = FALSE, @@ -279,7 +280,7 @@ server <- function(input, output, session) { Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), "Cell class" = colDef(minWidth = 150), - "Number of cells" = colDef(minWidth = 80) + "Number of cells" = colDef(minWidth = 85) ) ) }) @@ -312,14 +313,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(input_new()$gene[1] %in% genes_mouse)) { + if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(input_new()$gene[1] %in% genes_mouse, + need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -419,14 +420,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { + error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] } else { error_genes <- NULL } validate( - need(all(input_new()$gene %in% genes_mouse), + need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -704,26 +705,29 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if(input_new()$mean_exp){ - if (!(input_new()$gene[1] %in% genes_mouse)) { + if(!input_new()$mean_exp){ + + if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(input_new()$gene[1] %in% genes_mouse, + need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) + } else { - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] + + if (!((all(tolower(input_new()$gene) %in% tolower(genes_mouse))))) { + error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] } else { error_genes <- NULL } validate( - need(all(input_new()$gene %in% genes_mouse), + need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) } From 23e9d9a521ecd1cb0874dbceea21e71938d9e896 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Wed, 7 Jul 2021 15:10:35 -0400 Subject: [PATCH 094/100] Revert "Remove case sensitivity for gene input error messages - issue #17" This reverts commit 691885066f8140f32ee49d56592275e2d69cc503. --- clusters/server.R | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 3d8faef..280b58d 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -107,14 +107,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { - error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] } else { error_genes <- NULL } validate( - need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), + need(all(input_new()$gene %in% genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -253,8 +253,7 @@ server <- function(input, output, session) { reactable(table, rownames = FALSE, highlight = TRUE, - #compact = TRUE, - striped = TRUE, + compact = TRUE, searchable = TRUE, showSortable = TRUE, fullWidth = FALSE, @@ -280,7 +279,7 @@ server <- function(input, output, session) { Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), "Cell class" = colDef(minWidth = 150), - "Number of cells" = colDef(minWidth = 85) + "Number of cells" = colDef(minWidth = 80) ) ) }) @@ -313,14 +312,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { + if (!(input_new()$gene[1] %in% genes_mouse)) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), + need(input_new()$gene[1] %in% genes_mouse, glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -420,14 +419,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(tolower(input_new()$gene) %in% tolower(genes_mouse)))) { - error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] } else { error_genes <- NULL } validate( - need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), + need(all(input_new()$gene %in% genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -705,29 +704,26 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if(!input_new()$mean_exp){ - - if (!(tolower(input_new()$gene[1]) %in% tolower(genes_mouse))) { + if(input_new()$mean_exp){ + if (!(input_new()$gene[1] %in% genes_mouse)) { error_genes <- input_new()$gene[1] } else { error_genes <- NULL } validate( - need(tolower(input_new()$gene[1]) %in% tolower(genes_mouse), + need(input_new()$gene[1] %in% genes_mouse, glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - } else { - - if (!((all(tolower(input_new()$gene) %in% tolower(genes_mouse))))) { - error_genes <- input_new()$gene[!(tolower(input_new()$gene) %in% tolower(genes_mouse))] + if (!(all(input_new()$gene %in% genes_mouse))) { + error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] } else { error_genes <- NULL } validate( - need(all(tolower(input_new()$gene) %in% tolower(genes_mouse)), + need(all(input_new()$gene %in% genes_mouse), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) } From ef4d939d10e0436f552a89b37a61cb078fd94a35 Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Wed, 7 Jul 2021 16:17:21 -0400 Subject: [PATCH 095/100] Extract part of input validation step to a function - issue #37 --- clusters/functions.R | 25 +++++++++++++ clusters/server.R | 86 +++++++++++++++++--------------------------- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/clusters/functions.R b/clusters/functions.R index c2f07de..6f43c39 100644 --- a/clusters/functions.R +++ b/clusters/functions.R @@ -868,3 +868,28 @@ add_class_ticks <- function(df, classes, height, sep, start, label_x_pos, palett scale_colour_manual(values = palette)) } + +#' Check a certain number of input genes against an list of accepted genes +#' +#' @param user_genes Character vector, inputs from user (from textbox or file) +#' @param n Numeric, the number of genes from the beginning of the list to check. +#' Default: NULL (i.e. check all genes) +#' @param annotation Logical, whether to check against annotation or not. +#' Default: FALSE (i.e. check against list of dataset genes, not annotation) +#' +#' @return A list of inputs that do not match the list of accepted genes + +check_genes <- function(user_genes, + n = 20, + annotation = FALSE) { + + if (!is.null(n)) { + user_genes <- head(user_genes, n) + } + + if (!(all(user_genes %in% genes_mouse))) { + return(user_genes[!(user_genes %in% genes_mouse)]) + } else { + return(NULL) + } +} diff --git a/clusters/server.R b/clusters/server.R index 280b58d..4dd69d0 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -103,21 +103,19 @@ server <- function(input, output, session) { # Generate the input dataframe for the bubbleplot bubble_input <- reactive({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] - } else { - error_genes <- NULL - } - + # Check first 20 inputs against the dataset genes + error_genes <- check_genes(input_new()$gene, 20) validate( - need(all(input_new()$gene %in% genes_mouse), + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - + + # Only display mean if more than one gene is given AND the user requested it valid_mean <- FALSE if (length(input_new()$gene) > 1 && input_new()$mean_exp){ @@ -308,25 +306,22 @@ server <- function(input, output, session) { # user to download it ribbon_static <- reactive({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - if (!(input_new()$gene[1] %in% genes_mouse)) { - error_genes <- input_new()$gene[1] - } else { - error_genes <- NULL - } - + # Check first input against the dataset genes + error_genes <- check_genes(input_new()$gene, 1) validate( - need(input_new()$gene[1] %in% genes_mouse, + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) all_zero <- ribbon_plot(gene = input_new()$gene[1], region = input_new()$region)$zero - # Display message to the user if there is 0 expression throughout region + # Display message to the user instead of plot if 0 expression throughout region validate( need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") ) @@ -359,18 +354,15 @@ server <- function(input, output, session) { # Generate interactive ribbon plot and save the output ribbon_plotly <- reactive({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") - ) - - if (!(input_new()$gene[1] %in% genes_mouse)) { - error_genes <- input_new()$gene[1] - } else { - error_genes <- NULL - } + ) + # Check first input against the dataset genes + error_genes <- check_genes(input_new()$gene, 1) validate( - need(input_new()$gene[1] %in% genes_mouse, + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -415,18 +407,15 @@ server <- function(input, output, session) { req(input_new()) + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") - ) - - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] - } else { - error_genes <- NULL - } + ) + # Check ALL inputs against the dataset genes + error_genes <- check_genes(input_new()$gene) validate( - need(all(input_new()$gene %in% genes_mouse), + need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) @@ -700,34 +689,23 @@ server <- function(input, output, session) { output$rank_tick_plot <- renderPlot({ + # Check whether a gene was provided or not validate( need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") - ) + ) if(input_new()$mean_exp){ - if (!(input_new()$gene[1] %in% genes_mouse)) { - error_genes <- input_new()$gene[1] - } else { - error_genes <- NULL - } - - validate( - need(input_new()$gene[1] %in% genes_mouse, - glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) - ) - } else { - if (!(all(input_new()$gene %in% genes_mouse))) { - error_genes <- input_new()$gene[!(input_new()$gene %in% genes_mouse)] - } else { - error_genes <- NULL - } - - validate( - need(all(input_new()$gene %in% genes_mouse), - glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) - ) + # Check ALL inputs against the dataset genes + error_genes <- check_genes(input_new()$gene) + } else{ + # Check only first input against the dataset genes + error_genes <- check_genes(input_new()$gene, 1) } + validate( + need(is.null(error_genes), + glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) + ) palette_tick_plot <- c("Progenitors/cyc." = "#ffaf49", "Oligodendrocytes" = "#b7dd5f", From 6b4b3ad735743989ecc400a72e5383281c2e274a Mon Sep 17 00:00:00 2001 From: Bhavyaa Date: Fri, 9 Jul 2021 18:43:22 -0400 Subject: [PATCH 096/100] Add dropdown menu to choose between inputs in timecourse tab - issue #38 --- clusters/server.R | 37 ++++++++++++++++++++++++++++++------- clusters/ui.R | 25 ++++++++++++++++++------- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 4dd69d0..2e2f125 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -300,6 +300,29 @@ server <- function(input, output, session) { #### ---- Timecourse tab content ---- + observe({ + x <- input_new()$gene + + # Can use character(0) to remove all choices + if (is.null(x)) + x <- character(0) + + if (length(x) == 1){ + text_pick_timecourse <- " input)" + } else if (length(x) > 1){ + text_pick_timecourse <- " inputs)" + } else { + text_pick_timecourse <- NULL + } + + # Can also set the label and select items + updateSelectInput(session, "pick_timecourse", + label = paste("Select gene to display (from ", length(x), text_pick_timecourse), + choices = x, + selected = head(x, 1) + ) + }) + # STATIC TIMECOURSE # Generate ribbon plot and save the output so that we can allow the @@ -311,14 +334,14 @@ server <- function(input, output, session) { need(length(input_new()$gene) > 0, "\n\n\nPlease enter a gene.") ) - # Check first input against the dataset genes - error_genes <- check_genes(input_new()$gene, 1) + # Check user-selected input against the dataset genes + error_genes <- check_genes(input$pick_timecourse, 1) validate( need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - all_zero <- ribbon_plot(gene = input_new()$gene[1], + all_zero <- ribbon_plot(gene = input$pick_timecourse, region = input_new()$region)$zero # Display message to the user instead of plot if 0 expression throughout region @@ -326,7 +349,7 @@ server <- function(input, output, session) { need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") ) - p1 <- ribbon_plot(gene = input_new()$gene[1], + p1 <- ribbon_plot(gene = input$pick_timecourse, region = input_new()$region)$plot # Get legend using cowplot @@ -360,13 +383,13 @@ server <- function(input, output, session) { ) # Check first input against the dataset genes - error_genes <- check_genes(input_new()$gene, 1) + error_genes <- check_genes(input$pick_timecourse, 1) validate( need(is.null(error_genes), glue("\n\n\nThe input gene \"{error_genes}\" does not exist in the dataset.")) ) - all_zero = ribbon_plot(gene = input_new()$gene[1], + all_zero = ribbon_plot(gene = input$pick_timecourse, region = input_new()$region)$zero # Display message to the user if there is 0 expression throughout region @@ -374,7 +397,7 @@ server <- function(input, output, session) { need(all_zero == FALSE, "This gene has no detected expression in the selected brain region.") ) - ribbon_plot(gene = input_new()$gene[1], + ribbon_plot(gene = input$pick_timecourse, region = input_new()$region, make_plotly = TRUE)$plot diff --git a/clusters/ui.R b/clusters/ui.R index 2ddc34e..60ad04f 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -241,17 +241,28 @@ ui <- function(request){ p("• Use the switch above the plot to toggle between static and interactive plots (update button not required)"), + p("• As only one gene can be plotted at a time, use the dropdown tool above the plots to choose which of the input genes to display (update button not required)"), + p("• Download the static version of the plot as a pdf using the button below the plot"), p("• Be aware of the y-axis, which is computed as the max for each gene"), - p("• If more than one gene is provided, only the first gene is plotted"), - - materialSwitch("plotly_ribbon", "Interactive ribbon plot", - # status doesn't have any effect other than color scheme. See bootstrap status values - status = "warning", - value = FALSE, - right = TRUE + fluidRow( + column(6, + wellPanel( + materialSwitch("plotly_ribbon", strong("Interactive ribbon plot"), + # status doesn't have any effect other than color scheme. See bootstrap status values + status = "warning", + value = FALSE, + right = TRUE), + ) + ), + column(6, + wellPanel( + selectInput("pick_timecourse", "Select gene to display", + c("Please enter a gene")) + ) + ) ), # Plot a ribbon plot, showing the proportion of cells in which From a683453cde8ae68fef208171c77c5f5d90f76e75 Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 11:51:01 -0400 Subject: [PATCH 097/100] Adjust app formatting during server test --- clusters/server.R | 7 ++++--- clusters/ui.R | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 2e2f125..d066198 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 25 + 30 * length(input_new()$gene), + height = function() 27 + 27 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -256,6 +256,7 @@ server <- function(input, output, session) { showSortable = TRUE, fullWidth = FALSE, showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, + defaultColDef = colDef(minWidth = 150), columns = list( Cluster = colDef(minWidth = 110, style = function(index){ @@ -277,7 +278,7 @@ server <- function(input, output, session) { Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), "Cell class" = colDef(minWidth = 150), - "Number of cells" = colDef(minWidth = 80) + "Number of cells" = colDef(minWidth = 100) ) ) }) @@ -781,7 +782,7 @@ server <- function(input, output, session) { ticks <- ggplot() + add_class_ticks(df, unique(df$Cell_class), palette = palette_tick_plot, - start = -5, sep = 5, height = 30, label_x_pos = -16, fontsize = 3.5) + + start = -5, sep = 5, height = 30, label_x_pos = -16, fontsize = 3) + # Make sure to expand to the same value that's in p1 expand_limits(x = -18) + theme(legend.position = "none", diff --git a/clusters/ui.R b/clusters/ui.R index 60ad04f..de38f49 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -178,11 +178,12 @@ ui <- function(request){ # Bubble plot(s) (plotOutput("bubble", - hover = hoverOpts(id = "bubble_hover", clip = FALSE)) %>% ws), + hover = hoverOpts(id = "bubble_hover", clip = FALSE), + height = 2000) %>% ws), # Gene labels # No spinner to prevent confusing user, because there is only 1 plot - (plotOutput("bubble_labels")) + (plotOutput("bubble_labels", height = 2000)) ) ), From 17e9d78f8ff482d2050466db748237265c66340d Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 12:03:41 -0400 Subject: [PATCH 098/100] Adjust formatting and remove sticky column in table (server testing) --- clusters/server.R | 12 ++++++------ clusters/ui.R | 8 +++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index d066198..966aaef 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 27 + 27 * length(input_new()$gene), + height = function() 27 + 30 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -268,12 +268,12 @@ server <- function(input, output, session) { } else { f_color = "#000000" } - list(background = b_color, color = f_color, fontWeight = "bold", - # Make the cluster column "sticky" i.e. freeze it in horizontal scroll - position = "sticky", left = 0, zIndex = 1) + list(background = b_color, color = f_color, fontWeight = "bold") + # # Make the cluster column "sticky" i.e. freeze it in horizontal scroll + # position = "sticky", left = 0, zIndex = 1) }, - headerStyle = - list(position = "sticky", left = 0, background = "#fff", zIndex = 1) + # headerStyle = + # list(position = "sticky", left = 0, background = "#fff", zIndex = 1) ), Sample = colDef(minWidth = 125), "Cell type" = colDef(minWidth = 200), diff --git a/clusters/ui.R b/clusters/ui.R index de38f49..f8348d7 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -213,9 +213,11 @@ ui <- function(request){ p("• Use the download button below the table to obtain a TSV file with mean expression as well as percent cluster expression values"), - fluidRow( - reactableOutput("cluster_table", width = 1500) %>% ws - ), + #div(style = "overflow-x: scroll; overflow-y: visible;", + fluidRow( + reactableOutput("cluster_table", width = 200) %>% ws + ), + #), # Only display download button if update has been pressed at least once conditionalPanel(condition='input.update!=0', From f3446a8d7f996caa493179842b223158a730702c Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 12:14:45 -0400 Subject: [PATCH 099/100] Adjust formatting and alignment of dendrogram and table tabs (server testing) --- clusters/server.R | 6 +++--- clusters/ui.R | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 966aaef..24c46d5 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -169,7 +169,7 @@ server <- function(input, output, session) { # background is set to the cluster colour, with opacity = 95% ("F2" at end of hex) # z-index is set so we are sure are tooltip will be on top style <- paste0("position:absolute; z-index:100; background-color: ", point$Colour, "F2;", - "left: -350px; top: 450px; width: 350px;") + "left: -350px; top: 500px; width: 350px;") # Set text to white if the background colour is dark, else it's black (default) if (dark(point$Colour)) { @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 27 + 30 * length(input_new()$gene), + height = function() 28.5 + 28.5 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -256,7 +256,7 @@ server <- function(input, output, session) { showSortable = TRUE, fullWidth = FALSE, showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, - defaultColDef = colDef(minWidth = 150), + defaultColDef = colDef(minWidth = 120), columns = list( Cluster = colDef(minWidth = 110, style = function(index){ diff --git a/clusters/ui.R b/clusters/ui.R index f8348d7..cc612bb 100644 --- a/clusters/ui.R +++ b/clusters/ui.R @@ -215,7 +215,7 @@ ui <- function(request){ #div(style = "overflow-x: scroll; overflow-y: visible;", fluidRow( - reactableOutput("cluster_table", width = 200) %>% ws + reactableOutput("cluster_table", width = 1100) %>% ws ), #), From d4912a4a1549ec9d8164319f7c70df288520230c Mon Sep 17 00:00:00 2001 From: Bhavyaa Chandarana Date: Mon, 12 Jul 2021 12:20:47 -0400 Subject: [PATCH 100/100] Adjust formatting and alignment (server testing) --- clusters/server.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/server.R b/clusters/server.R index 24c46d5..7415a37 100644 --- a/clusters/server.R +++ b/clusters/server.R @@ -208,7 +208,7 @@ server <- function(input, output, session) { }, # Set height of bubble plot gene labels to (hopefully) align with plots - height = function() 28.5 + 28.5 * length(input_new()$gene), + height = function() 28.5 + 29 * length(input_new()$gene), # Max length of a gene is 200px # NOTE: If altering this, also change the corresponding cellWidth for @@ -256,7 +256,8 @@ server <- function(input, output, session) { showSortable = TRUE, fullWidth = FALSE, showPageSizeOptions = TRUE, pageSizeOptions = c(10, 20, 40), defaultPageSize = 10, - defaultColDef = colDef(minWidth = 120), + defaultColDef = colDef(minWidth = 80), + # Override colDef manually for the first few rows columns = list( Cluster = colDef(minWidth = 110, style = function(index){

0axW-PuYt{3OY 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%0D?J9Le8S|>j?>=CA0OB{N}F<`oYJ8uW@_=z0jR1 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