From c009bfa3719055a04b4bf2a4f6c44eab3c4b851c Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Mon, 15 Nov 2021 15:12:42 +0100 Subject: [PATCH] scatter plot: Move to geposan --- R/scatter_plot.R | 33 --------------------------------- R/server.R | 34 +++++++++++++++++++++++++++------- R/ui.R | 4 ++++ 3 files changed, 31 insertions(+), 40 deletions(-) delete mode 100644 R/scatter_plot.R diff --git a/R/scatter_plot.R b/R/scatter_plot.R deleted file mode 100644 index f10b13d..0000000 --- a/R/scatter_plot.R +++ /dev/null @@ -1,33 +0,0 @@ -# Draw a scatter plot containing gene positions. -# -# @param results Results from [`process_input()`]. -# @param species Species to be displayed. -# @param genes Genes to be displayed. -scatter_plot <- function(results, species, genes) { - species_ids <- species[, id] - - data <- merge( - genes[, .(id, name)], - geposan::distances[species %in% species_ids], - by.x = "id", by.y = "gene" - ) - - data[name == "", name := "Unknown"] - - plotly::plot_ly( - data = data, - x = ~species, - y = ~distance, - color = ~id, - name = ~name, - type = "scatter", - mode = "markers" - ) |> plotly::layout( - xaxis = list( - title = "Species", - tickvals = species_ids, - ticktext = species[, name] - ), - yaxis = list(title = "Distance to telomeres [Bp]") - ) -} diff --git a/R/server.R b/R/server.R index c01f2fd..da2f1a6 100644 --- a/R/server.R +++ b/R/server.R @@ -106,13 +106,27 @@ server <- function(input, output, session) { }) output$scatter <- plotly::renderPlotly({ - results <- results_filtered() + preset <- preset() - gene_ids <- results[input$genes_rows_selected, gene] - genes <- genes[id %chin% gene_ids] - species <- species[id %chin% preset()$species_ids] + gene_sets <- list(preset$reference_gene_ids) + labels <- c("Reference genes") - scatter_plot(results, species, genes) + comparison_gene_ids <- results_filtered()[ + input$genes_rows_selected, + gene + ] + + if (length(comparison_gene_ids) >= 1) { + gene_sets <- c(gene_sets, list(comparison_gene_ids)) + labels <- c(labels, "Comparison genes") + } + + geposan::plot_positions( + preset$species_ids, + gene_sets = gene_sets, + labels = labels, + use_positions = input$use_positions + ) }) output$assessment_synopsis <- renderText({ @@ -157,7 +171,10 @@ server <- function(input, output, session) { gene_sets <- list(preset()$reference_gene_ids) labels <- c("Reference genes") - comparison_gene_ids <- results()[input$genes_rows_selected, gene] + comparison_gene_ids <- results_filtered()[ + input$genes_rows_selected, + gene + ] if (length(comparison_gene_ids) >= 1) { gene_sets <- c(gene_sets, list(comparison_gene_ids)) @@ -176,7 +193,10 @@ server <- function(input, output, session) { gene_sets <- list(preset()$reference_gene_ids) labels <- c("Reference genes") - comparison_gene_ids <- results()[input$genes_rows_selected, gene] + comparison_gene_ids <- results_filtered()[ + input$genes_rows_selected, + gene + ] if (length(comparison_gene_ids) >= 1) { gene_sets <- c(gene_sets, list(comparison_gene_ids)) diff --git a/R/ui.R b/R/ui.R index 11a234b..afa5aa8 100644 --- a/R/ui.R +++ b/R/ui.R @@ -31,6 +31,10 @@ ui <- fluidPage( ), tabPanel( "Positions", + checkboxInput( + "use_positions", + "Show positions instead of distances" + ), plotly::plotlyOutput( "scatter", width = "100%",