From aed13425edd37d4ae76ba5d47c87649b352f0bd9 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sat, 2 Jul 2022 23:37:13 +0200 Subject: [PATCH] Include trend line in GSEA plot --- R/sysdata.rda | Bin 3541 -> 5640 bytes scripts/gsea.R | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/R/sysdata.rda b/R/sysdata.rda index fcc3232c0b7d322b6635ec96c8ac83a293c14275..62f44994b79022a09be3976d2aae02c2db91091f 100644 GIT binary patch literal 5640 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 P|BJaIoG3^LXVQCs9o2-s diff --git a/scripts/gsea.R b/scripts/gsea.R index 6fb92ca..c9c83d3 100644 --- a/scripts/gsea.R +++ b/scripts/gsea.R @@ -25,20 +25,26 @@ result <- if (file.exists(file_path)) { result } -result[, result := lapply(analysis, function (a) a$result)] +result[, result := lapply(analysis, function(a) a$result)] result <- result[, rbindlist(result), by = bucket] data <- result[, .(count = .N), by = c("bucket", "source")] +data[, total := sum(count), by = bucket] +smooth_model <- loess(total ~ bucket, data, span = 0.25) -fig <- plotly::plot_ly() |> +fig <- plotly::plot_ly(data) |> plotly::add_bars( - data = data, x = ~bucket, y = ~count, color = ~source ) |> + plotly::add_lines( + x = ~bucket, + y = predict(smooth_model), + name = "All (smoothed)" + ) |> plotly::layout( - xaxis = list(title = "Bucket of genes (n = 500)"), + xaxis = list(title = glue::glue("Bucket of genes (n = {bucket_size})")), yaxis = list(title = "Number of associated terms"), barmode = "stack", legend = list(title = list(text = "Source of term"))