From 80d81c572d66400d1efaa1d16f4ec65d676d71ef Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Mon, 30 May 2022 19:32:19 +0200 Subject: [PATCH] Reformat to use two spaces for tabs --- R/app.R | 2 +- R/server.R | 220 ++++++++++++++++++++++++++--------------------------- R/ui.R | 216 ++++++++++++++++++++++++++-------------------------- 3 files changed, 219 insertions(+), 219 deletions(-) diff --git a/R/app.R b/R/app.R index 57ae69a..bc430b5 100644 --- a/R/app.R +++ b/R/app.R @@ -5,5 +5,5 @@ #' #' @export run_app <- function(host = "127.0.0.1", port = 3464) { - runApp(shinyApp(ui, server), host = host, port = port) + runApp(shinyApp(ui, server), host = host, port = port) } diff --git a/R/server.R b/R/server.R index ea45305..52b1db4 100644 --- a/R/server.R +++ b/R/server.R @@ -1,43 +1,43 @@ #' Server implementing the main user interface. #' @noRd server <- function(input, output) { - ranked_data <- reactive({ - total_weight <- abs(input$above_zero) + - abs(input$above_median) + - abs(input$above_95) + - abs(input$mean_expression) + - abs(input$sd_expression) + ranked_data <- reactive({ + total_weight <- abs(input$above_zero) + + abs(input$above_median) + + abs(input$above_95) + + abs(input$mean_expression) + + abs(input$sd_expression) - data <- data.table::copy(ubigen::genes) + data <- data.table::copy(ubigen::genes) - data[, score := - (input$above_zero * above_zero + - input$above_95 * above_95 + - input$above_median * above_median + - input$mean_expression * mean_expression_normalized + - input$sd_expression * sd_expression_normalized) / - total_weight] + data[, score := + (input$above_zero * above_zero + + input$above_95 * above_95 + + input$above_median * above_median + + input$mean_expression * mean_expression_normalized + + input$sd_expression * sd_expression_normalized) / + total_weight] - data.table::setorder(data, -score) - data[, rank := .I] - data[, percentile := 1 - rank / max(rank)] + data.table::setorder(data, -score) + data[, rank := .I] + data[, percentile := 1 - rank / max(rank)] - data - }) + data + }) - output$scores_plot <- plotly::renderPlotly(scores_plot(ranked_data())) + output$scores_plot <- plotly::renderPlotly(scores_plot(ranked_data())) - output$selected_genes <- DT::renderDataTable({ - selected_points <- plotly::event_data("plotly_selected") + output$selected_genes <- DT::renderDataTable({ + selected_points <- plotly::event_data("plotly_selected") - data <- if (is.null(selected_points)) { - ranked_data() - } else { - ranked_data()[rank %in% selected_points$x] - } + data <- if (is.null(selected_points)) { + ranked_data() + } else { + ranked_data()[rank %in% selected_points$x] + } - genes_table(data) - }) + genes_table(data) + }) } #' Create plot showing the distribution of scores using `plotly`. @@ -49,95 +49,95 @@ server <- function(input, output) { #' @return A `plotly` figure for rendering. #' @noRd scores_plot <- function(ranked_data, ranks = 1000) { - data <- if (is.null(ranks)) { - ranked_data - } else { - ranked_data[1:ranks] - } + data <- if (is.null(ranks)) { + ranked_data + } else { + ranked_data[1:ranks] + } - ranks_label <- if (is.null(ranks)) { - "Ranks" - } else { - glue::glue("Ranks (1 to {ranks})") - } + ranks_label <- if (is.null(ranks)) { + "Ranks" + } else { + glue::glue("Ranks (1 to {ranks})") + } - plotly::plot_ly() |> - plotly::add_markers( - data = data, - x = ~rank, - y = ~score, - text = ~hgnc_name, - customdata = ~percentile, - hovertemplate = paste0( - "%{text}
", - "Rank: %{x}
", - "Score: %{y:.2}
", - "Percentile: %{customdata:.2%}", - "" - ) - ) |> - plotly::layout( - xaxis = list(title = ranks_label), - yaxis = list(title = "Score"), - clickmode = "event+select", - dragmode = "select" - ) + plotly::plot_ly() |> + plotly::add_markers( + data = data, + x = ~rank, + y = ~score, + text = ~hgnc_name, + customdata = ~percentile, + hovertemplate = paste0( + "%{text}
", + "Rank: %{x}
", + "Score: %{y:.2}
", + "Percentile: %{customdata:.2%}", + "" + ) + ) |> + plotly::layout( + xaxis = list(title = ranks_label), + yaxis = list(title = "Score"), + clickmode = "event+select", + dragmode = "select" + ) } #' Create a displayable data table from the gene results data. #' @noRd genes_table <- function(data) { - data <- data[, .( - "Gene" = glue::glue_data( - data, - "{hgnc_name}" - ), - "Rank" = rank, - "Percentile" = percentile, - "Score" = score, - "Median" = median_expression, - "Mean" = mean_expression, - "Standard deviation" = sd_expression, - "Expressed" = above_zero, - "Above median" = above_median, - "Above 95%" = above_95 - )] + data <- data[, .( + "Gene" = glue::glue_data( + data, + "{hgnc_name}" + ), + "Rank" = rank, + "Percentile" = percentile, + "Score" = score, + "Median" = median_expression, + "Mean" = mean_expression, + "Standard deviation" = sd_expression, + "Expressed" = above_zero, + "Above median" = above_median, + "Above 95%" = above_95 + )] - DT::datatable( - data, - options = list( - buttons = list( - list( - extend = "copy", - text = "Copy to clipboard" - ), - list( - extend = "csv", - text = "Download CSV" - ) - ), - dom = "fBrtip", - pageLength = 100 + DT::datatable( + data, + options = list( + buttons = list( + list( + extend = "copy", + text = "Copy to clipboard" ), - rownames = FALSE, - escape = FALSE, - selection = "none", - extensions = "Buttons" + list( + extend = "csv", + text = "Download CSV" + ) + ), + dom = "fBrtip", + pageLength = 100 + ), + rownames = FALSE, + escape = FALSE, + selection = "none", + extensions = "Buttons" + ) |> + DT::formatPercentage( + c( + "Percentile", + "Score", + "Expressed", + "Above median", + "Above 95%" + ), + digits = 2, ) |> - DT::formatPercentage( - c( - "Percentile", - "Score", - "Expressed", - "Above median", - "Above 95%" - ), - digits = 2, - ) |> - DT::formatRound(c( - "Median", - "Mean", - "Standard deviation" - )) + DT::formatRound(c( + "Median", + "Mean", + "Standard deviation" + )) } diff --git a/R/ui.R b/R/ui.R index 1f6666e..e562f53 100644 --- a/R/ui.R +++ b/R/ui.R @@ -1,115 +1,115 @@ #' Function for creating the main user interface. #' @noRd ui <- function() { - navbarPage( - theme = bslib::bs_theme( - version = 5, - bootswatch = "united", - primary = "#7d19bf" + navbarPage( + theme = bslib::bs_theme( + version = 5, + bootswatch = "united", + primary = "#7d19bf" + ), + title = "Ubigen", + tabPanel( + "Explore", + sidebarLayout( + sidebarPanel( + width = 3, + h3("Features"), + sliderInput( + "above_zero", + verticalLayout( + strong("Expressed"), + paste0( + "Percentage of samples in which the gene is ", + "expressed." + ) + ), + min = -1.0, + max = 1.0, + step = 0.01, + value = 0.33 + ), + sliderInput( + "above_median", + verticalLayout( + strong("Expressed above median"), + paste0( + "Percentage of samples that express the gene ", + "more than the median of expression within ", + "that sample." + ) + ), + min = -1.0, + max = 1.0, + step = 0.01, + value = 0.33 + ), + sliderInput( + "above_95", + verticalLayout( + strong("Expressed above 95%"), + paste0( + "Percentage of samples that express the gene ", + "more than the 95. percentile of expression ", + "within that sample." + ) + ), + min = -1.0, + max = 1.0, + step = 0.01, + value = 0.33 + ), + sliderInput( + "mean_expression", + verticalLayout( + strong("Mean expression"), + div(paste0( + "Average of the gene's expression across all ", + "samples." + )) + ), + min = -1.0, + max = 1.0, + step = 0.01, + value = 1.0 + ), + sliderInput( + "sd_expression", + verticalLayout( + strong("Standard deviation"), + paste0( + "Standard deviation of the gene's expression ", + "across all samples." + ) + ), + min = -1.0, + max = 1.0, + step = 0.01, + value = -1.0 + ) ), - title = "Ubigen", - tabPanel( - "Explore", - sidebarLayout( - sidebarPanel( - width = 3, - h3("Features"), - sliderInput( - "above_zero", - verticalLayout( - strong("Expressed"), - paste0( - "Percentage of samples in which the gene is ", - "expressed." - ) - ), - min = -1.0, - max = 1.0, - step = 0.01, - value = 0.33 - ), - sliderInput( - "above_median", - verticalLayout( - strong("Expressed above median"), - paste0( - "Percentage of samples that express the gene ", - "more than the median of expression within ", - "that sample." - ) - ), - min = -1.0, - max = 1.0, - step = 0.01, - value = 0.33 - ), - sliderInput( - "above_95", - verticalLayout( - strong("Expressed above 95%"), - paste0( - "Percentage of samples that express the gene ", - "more than the 95. percentile of expression ", - "within that sample." - ) - ), - min = -1.0, - max = 1.0, - step = 0.01, - value = 0.33 - ), - sliderInput( - "mean_expression", - verticalLayout( - strong("Mean expression"), - div(paste0( - "Average of the gene's expression across all ", - "samples." - )) - ), - min = -1.0, - max = 1.0, - step = 0.01, - value = 1.0 - ), - sliderInput( - "sd_expression", - verticalLayout( - strong("Standard deviation"), - paste0( - "Standard deviation of the gene's expression ", - "across all samples." - ) - ), - min = -1.0, - max = 1.0, - step = 0.01, - value = -1.0 - ) - ), - mainPanel( - width = 9, - h3("Distribution of scores"), - div(paste0( - "Click or drag within the figure to select genes of ", - "interest." - )), - plotly::plotlyOutput("scores_plot"), - h3("Detailed ranking"), - div(paste0( - "Click on gene names to view them using the Ensembl ", - "genome browser." - )), - div(class = "p-1"), - DT::dataTableOutput("selected_genes") - ) - ) - ), - tabPanel( - title = "Help" - ), - tabPanel( - title = "Publication" + mainPanel( + width = 9, + h3("Distribution of scores"), + div(paste0( + "Click or drag within the figure to select genes of ", + "interest." + )), + plotly::plotlyOutput("scores_plot"), + h3("Detailed ranking"), + div(paste0( + "Click on gene names to view them using the Ensembl ", + "genome browser." + )), + div(class = "p-1"), + DT::dataTableOutput("selected_genes") ) + ) + ), + tabPanel( + title = "Help" + ), + tabPanel( + title = "Publication" ) + ) }