2021-10-15 13:16:51 +02:00
|
|
|
library(data.table)
|
|
|
|
|
library(plotly)
|
|
|
|
|
|
|
|
|
|
#' Draw a plot displaying the rank of reference genes.
|
|
|
|
|
#'
|
|
|
|
|
#' The input table should contain the following columns:
|
|
|
|
|
#'
|
|
|
|
|
#' - `gene` Gene IDs of genes to display.
|
|
|
|
|
#' - `name` Name of genes to display.
|
|
|
|
|
#' - `score` Score of the genes.
|
|
|
|
|
#' - `rank` Rank of the genes based on the score.
|
|
|
|
|
#'
|
|
|
|
|
#' @param results Results to display.
|
|
|
|
|
#' @param reference_gene_ids IDs of reference genes.
|
2021-10-15 15:03:40 +02:00
|
|
|
#' @param cutoff Cut-off score.
|
|
|
|
|
rank_plot <- function(results, reference_gene_ids, cutoff) {
|
|
|
|
|
first_not_included_rank <- results[score < cutoff, min(rank)]
|
|
|
|
|
last_rank <- results[, .N]
|
|
|
|
|
|
2021-10-15 13:16:51 +02:00
|
|
|
plot <- plot_ly() |> add_trace(
|
|
|
|
|
data = results,
|
|
|
|
|
x = ~rank,
|
|
|
|
|
y = ~score,
|
|
|
|
|
name = "All genes",
|
|
|
|
|
type = "scatter",
|
|
|
|
|
mode = "line",
|
|
|
|
|
hoverinfo = "skip"
|
|
|
|
|
) |> add_trace(
|
|
|
|
|
data = results[gene %chin% reference_gene_ids],
|
|
|
|
|
x = ~rank,
|
|
|
|
|
y = ~score,
|
|
|
|
|
color = ~gene,
|
|
|
|
|
name = ~name,
|
|
|
|
|
width = 10,
|
|
|
|
|
type = "bar"
|
2021-10-15 15:03:40 +02:00
|
|
|
) |> layout(
|
|
|
|
|
shapes = list(
|
|
|
|
|
type = "rect",
|
|
|
|
|
fillcolor = "black",
|
|
|
|
|
opacity = 0.1,
|
|
|
|
|
x0 = first_not_included_rank,
|
|
|
|
|
x1 = last_rank,
|
|
|
|
|
y0 = 0.0,
|
|
|
|
|
y1 = 1.0
|
|
|
|
|
),
|
2021-10-15 13:16:51 +02:00
|
|
|
xaxis = list(title = "Ranks"),
|
|
|
|
|
yaxis = list(title = "Score")
|
|
|
|
|
)
|
|
|
|
|
}
|