Add rankings comparison section

This commit is contained in:
Elias Projahn 2024-04-26 20:52:56 +02:00
parent 8439066921
commit bd8a829fe5
2 changed files with 120 additions and 7 deletions

View file

@ -105,24 +105,76 @@ server <- function(custom_dataset = NULL) {
highlighted_genes = custom_genes() highlighted_genes = custom_genes()
)) ))
selected_genes <- reactive({ selected_top_genes <- reactive({
selected_points <- plotly::event_data("plotly_selected") selected_points <- plotly::event_data("plotly_selected")
ranked_data()[rank %in% selected_points$x] ranked_data()[rank %in% selected_points$x]
}) })
genes_table_server("selected_genes", reactive({ genes_table_server("selected_top_genes", reactive({
if (nrow(selected_genes()) > 0) { if (nrow(selected_top_genes()) > 0) {
selected_genes() selected_top_genes()
} else { } else {
ranked_data() ranked_data()
} }
})) }))
output$rankings_plot <- plotly::renderPlotly({
handle_axis <- function(ranking_id) {
if (ranking_id == "gtex_all") {
list(
ranking = rank_genes(ubigen::gtex_all),
label = "GTEx (across tissues and conditions)"
)
} else if (ranking_id == "gtex_tissues") {
list(
ranking = rank_genes(ubigen::gtex_tissues),
label = "GTEx (across tissues)"
)
} else if (ranking_id == "hpa_tissues") {
list(
ranking = rank_genes(ubigen::hpa_tissues),
label = "Human Protein Atlas (across tissues)"
)
} else if (ranking_id == "cmap") {
list(
ranking = rank_genes(ubigen::cmap),
label = "CMap"
)
} else {
list(
ranking = ranked_data(),
label = "Custom"
)
}
}
x <- handle_axis(input$ranking_x)
y <- handle_axis(input$ranking_y)
rankings_comparison_plot(
x$ranking,
y$ranking,
label_x = x$label,
label_y = y$label,
highlighted_genes = custom_genes(),
use_percentiles = input$rankings_comparison_mode == "percentiles"
)
})
selected_comparison_genes <- reactive({
selected_points <- plotly::event_data("plotly_selected")
ranked_data()[gene %chin% selected_points$customdata]
})
genes_table_server("selected_comparison_genes", reactive({
selected_comparison_genes()
}))
gsea_genes <- reactive({ gsea_genes <- reactive({
sort(if (input$gsea_set == "top") { sort(if (input$gsea_set == "top") {
ranked_data()[rank >= input$gsea_ranks, gene] ranked_data()[rank >= input$gsea_ranks, gene]
} else if (input$gsea_set == "selected") { } else if (input$gsea_set == "selected") {
selected_genes()[, gene] selected_top_genes()[, gene]
} else { } else {
custom_genes() custom_genes()
}) })

65
R/ui.R
View file

@ -126,7 +126,8 @@ ui <- function(custom_dataset = NULL) {
value = "top_genes", value = "top_genes",
div(paste0( div(paste0(
"Hover over the markers to see details on each gene. Click ", "Hover over the markers to see details on each gene. Click ",
"or drag within the figure to select genes of interest." "or drag within the figure to select genes of interest. ",
"Double-click removes the selection."
)), )),
plotly::plotlyOutput("scores_plot"), plotly::plotlyOutput("scores_plot"),
div(class = "p-1"), div(class = "p-1"),
@ -137,7 +138,67 @@ ui <- function(custom_dataset = NULL) {
"on." "on."
)), )),
div(class = "p-1"), div(class = "p-1"),
genes_table_ui("selected_genes") genes_table_ui("selected_top_genes")
),
tabPanel(
"Compare rankings",
value = "rankings",
div(
class = "flow-layout",
selectInput(
"ranking_y",
label = NULL,
list(
"Custom" = "custom",
"GTEx (across tissues and conditions)" = "gtex_all",
"GTEx (across tissues)" = "gtex_tissues",
"Human Protein Atlas (across tissues)" = "hpa_tissues",
"CMap" = "cmap"
),
selected = "cmap"
),
span(
style = paste0(
"display: inline-block;",
"margin-right: 12px;",
"padding: 0.375rem 0.75rem;"
),
"~"
),
selectInput(
"ranking_x",
label = NULL,
list(
"Custom" = "custom",
"GTEx (across tissues and conditions)" = "gtex_all",
"GTEx (across tissues)" = "gtex_tissues",
"Human Protein Atlas (across tissues)" = "hpa_tissues",
"CMap" = "cmap"
)
),
selectInput(
"rankings_comparison_mode",
label = NULL,
list(
"Compare scores" = "scores",
"Compare percentiles" = "percentiles"
)
)
),
div(class = "p-1"),
div(paste0(
"Hover over the markers to see the HGNC symbols for the ",
"genes. Click or draw within the figure to select genes of ",
"interest. Double-click removes the selection."
)),
div(class = "p-1"),
plotly::plotlyOutput(
"rankings_plot",
width = "800px",
height = "800px"
),
div(class = "p-1"),
genes_table_ui("selected_comparison_genes")
), ),
tabPanel( tabPanel(
"GSEA", "GSEA",