Use plots from geposan

This commit is contained in:
Elias Projahn 2021-11-15 09:35:47 +01:00
parent f485eadaf5
commit b5957262a3
3 changed files with 21 additions and 57 deletions

View file

@ -1,53 +0,0 @@
# 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.
# @param max_rank Last rank of the included genes.
rank_plot <- function(results, reference_gene_ids, max_rank) {
plot <- plotly::plot_ly() |> plotly::add_trace(
data = results,
x = ~rank,
y = ~score,
name = "All genes",
type = "scatter",
mode = "line",
hoverinfo = "skip"
) |> plotly::add_trace(
data = results[gene %chin% reference_gene_ids],
x = ~rank,
y = ~score,
color = ~gene,
name = ~name,
width = 10,
type = "bar"
) |> plotly::layout(
xaxis = list(title = "Ranks"),
yaxis = list(title = "Score")
)
first_not_included_rank <- max_rank + 1
last_rank <- results[, .N]
if (first_not_included_rank <= last_rank) {
plot <- plot |> plotly::layout(
shapes = list(
type = "rect",
fillcolor = "black",
opacity = 0.1,
x0 = first_not_included_rank,
x1 = last_rank,
y0 = 0.0,
y1 = 1.0
)
)
}
plot
}

View file

@ -154,10 +154,19 @@ server <- function(input, output, session) {
}) })
output$rank_plot <- plotly::renderPlotly({ output$rank_plot <- plotly::renderPlotly({
rank_plot( geposan::plot_scores(
results(), ranking(),
preset()$reference_gene_ids, gene_sets = list(preset()$reference_gene_ids),
results_filtered()[, max(rank)] labels = "TPE-OLD genes",
max_rank = results_filtered()[, max(rank)]
)
})
output$boxplot <- plotly::renderPlotly({
geposan::plot_boxplot(
ranking(),
gene_sets = list(preset()$reference_gene_ids),
labels = "TPE-OLD genes"
) )
}) })

8
R/ui.R
View file

@ -48,6 +48,14 @@ ui <- fluidPage(
height = "600px" height = "600px"
) )
), ),
div(
style = "margin-top: 16px",
plotly::plotlyOutput(
"boxplot",
width = "100%",
height = "600px"
)
),
), ),
tabPanel( tabPanel(
"Analysis", "Analysis",