filters: Add default filter based on percentile

This commit is contained in:
Elias Projahn 2021-12-15 13:00:21 +01:00
parent 663128271e
commit f1337f0331

View file

@ -6,13 +6,27 @@ filters_ui <- function(id) {
NS(id, "method"), NS(id, "method"),
"Filter method", "Filter method",
choices = list( choices = list(
"Percentile" = "percentile",
"Cut-off score" = "score", "Cut-off score" = "score",
"Maximum number of genes" = "rank" "Maximum number of genes" = "rank",
"None" = "none"
) )
), ),
tabsetPanel( tabsetPanel(
id = NS(id, "sliders"), id = NS(id, "sliders"),
type = "hidden", type = "hidden",
tabPanelBody(
value = "percentile",
sliderInput(
NS(id, "percentile"),
label = "Minimum percentile",
post = "%",
min = 0,
max = 100,
step = 1,
value = 95
)
),
tabPanelBody( tabPanelBody(
value = "score", value = "score",
sliderInput( sliderInput(
@ -35,6 +49,9 @@ filters_ui <- function(id) {
step = 50, step = 50,
value = 2500 value = 2500
) )
),
tabPanelBody(
value = "none"
) )
) )
) )
@ -54,10 +71,15 @@ filters_server <- function(id, results) {
reactive({ reactive({
results <- results() results <- results()
if (input$method == "score") { if (input$method == "percentile") {
n_ranks <- nrow(results)
results[rank <= (1 - (input$percentile / 100)) * n_ranks]
} else if (input$method == "score") {
results[score >= input$score / 100] results[score >= input$score / 100]
} else if (input$method == "rank") { } else if (input$method == "rank") {
results[rank <= input$rank] results[rank <= input$rank]
} else {
results
} }
}) })
}) })