mirror of
https://github.com/johrpan/ubigen.git
synced 2025-10-26 19:57:24 +01:00
Add overview
This commit is contained in:
parent
80d81c572d
commit
20faaea93d
5 changed files with 72 additions and 47 deletions
|
|
@ -15,7 +15,7 @@ Description: This package contains precomputed data including comparisons in
|
||||||
License: AGPL (>= 3)
|
License: AGPL (>= 3)
|
||||||
Encoding: UTF-8
|
Encoding: UTF-8
|
||||||
Roxygen: list(markdown = TRUE)
|
Roxygen: list(markdown = TRUE)
|
||||||
RoxygenNote: 7.1.2
|
RoxygenNote: 7.2.0
|
||||||
Depends:
|
Depends:
|
||||||
R (>= 2.10)
|
R (>= 2.10)
|
||||||
LazyData: true
|
LazyData: true
|
||||||
|
|
|
||||||
66
R/plots.R
Normal file
66
R/plots.R
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
#' Create a plot showing an overview over the provided ranking.
|
||||||
|
#'
|
||||||
|
#' @param ranked_data The ranking to visualize.
|
||||||
|
#' @param sample_proportion Proportion of rows to use as the shown sample.
|
||||||
|
#'
|
||||||
|
#' @return A `plotly` figure.
|
||||||
|
#' @noRd
|
||||||
|
overview_plot <- function(ranked_data, sample_proportion = 0.05) {
|
||||||
|
plotly::plot_ly() |>
|
||||||
|
plotly::add_lines(
|
||||||
|
data = ranked_data[sample(
|
||||||
|
nrow(ranked_data),
|
||||||
|
sample_proportion * nrow(ranked_data)
|
||||||
|
)],
|
||||||
|
x = ~rank,
|
||||||
|
y = ~score
|
||||||
|
) |>
|
||||||
|
plotly::layout(
|
||||||
|
xaxis = list(title = "Ranks"),
|
||||||
|
yaxis = list(title = "Score")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#' Create plot showing the distribution of scores using `plotly`.
|
||||||
|
#'
|
||||||
|
#' @param ranked_data Data on genes with precomputed ranks.
|
||||||
|
#' @param ranks How may ranks the x-axis should include. If this parameter is
|
||||||
|
#' `NULL`, all ranks will be shown.
|
||||||
|
#'
|
||||||
|
#' @return A `plotly` figure for rendering.
|
||||||
|
#' @noRd
|
||||||
|
scores_plot <- function(ranked_data, ranks = 1000) {
|
||||||
|
data <- if (is.null(ranks)) {
|
||||||
|
ranked_data
|
||||||
|
} else {
|
||||||
|
ranked_data[1:ranks]
|
||||||
|
}
|
||||||
|
|
||||||
|
ranks_label <- if (is.null(ranks)) {
|
||||||
|
"Ranks"
|
||||||
|
} else {
|
||||||
|
glue::glue("Ranks (1 to {ranks})")
|
||||||
|
}
|
||||||
|
|
||||||
|
plotly::plot_ly() |>
|
||||||
|
plotly::add_markers(
|
||||||
|
data = data,
|
||||||
|
x = ~rank,
|
||||||
|
y = ~score,
|
||||||
|
text = ~hgnc_name,
|
||||||
|
customdata = ~percentile,
|
||||||
|
hovertemplate = paste0(
|
||||||
|
"<b>%{text}</b><br>",
|
||||||
|
"Rank: %{x}<br>",
|
||||||
|
"Score: %{y:.2}<br>",
|
||||||
|
"Percentile: %{customdata:.2%}",
|
||||||
|
"<extra></extra>"
|
||||||
|
)
|
||||||
|
) |>
|
||||||
|
plotly::layout(
|
||||||
|
xaxis = list(title = ranks_label),
|
||||||
|
yaxis = list(title = "Score"),
|
||||||
|
clickmode = "event+select",
|
||||||
|
dragmode = "select"
|
||||||
|
)
|
||||||
|
}
|
||||||
45
R/server.R
45
R/server.R
|
|
@ -25,6 +25,7 @@ server <- function(input, output) {
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
|
|
||||||
|
output$overview_plot <- plotly::renderPlotly(overview_plot(ranked_data()))
|
||||||
output$scores_plot <- plotly::renderPlotly(scores_plot(ranked_data()))
|
output$scores_plot <- plotly::renderPlotly(scores_plot(ranked_data()))
|
||||||
|
|
||||||
output$selected_genes <- DT::renderDataTable({
|
output$selected_genes <- DT::renderDataTable({
|
||||||
|
|
@ -40,50 +41,6 @@ server <- function(input, output) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#' Create plot showing the distribution of scores using `plotly`.
|
|
||||||
#'
|
|
||||||
#' @param ranked_data Data on genes with precomputed ranks.
|
|
||||||
#' @param ranks How may ranks the x-axis should include. If this parameter is
|
|
||||||
#' `NULL`, all ranks will be shown.
|
|
||||||
#'
|
|
||||||
#' @return A `plotly` figure for rendering.
|
|
||||||
#' @noRd
|
|
||||||
scores_plot <- function(ranked_data, ranks = 1000) {
|
|
||||||
data <- if (is.null(ranks)) {
|
|
||||||
ranked_data
|
|
||||||
} else {
|
|
||||||
ranked_data[1:ranks]
|
|
||||||
}
|
|
||||||
|
|
||||||
ranks_label <- if (is.null(ranks)) {
|
|
||||||
"Ranks"
|
|
||||||
} else {
|
|
||||||
glue::glue("Ranks (1 to {ranks})")
|
|
||||||
}
|
|
||||||
|
|
||||||
plotly::plot_ly() |>
|
|
||||||
plotly::add_markers(
|
|
||||||
data = data,
|
|
||||||
x = ~rank,
|
|
||||||
y = ~score,
|
|
||||||
text = ~hgnc_name,
|
|
||||||
customdata = ~percentile,
|
|
||||||
hovertemplate = paste0(
|
|
||||||
"<b>%{text}</b><br>",
|
|
||||||
"Rank: %{x}<br>",
|
|
||||||
"Score: %{y:.2}<br>",
|
|
||||||
"Percentile: %{customdata:.2%}",
|
|
||||||
"<extra></extra>"
|
|
||||||
)
|
|
||||||
) |>
|
|
||||||
plotly::layout(
|
|
||||||
xaxis = list(title = ranks_label),
|
|
||||||
yaxis = list(title = "Score"),
|
|
||||||
clickmode = "event+select",
|
|
||||||
dragmode = "select"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Create a displayable data table from the gene results data.
|
#' Create a displayable data table from the gene results data.
|
||||||
#' @noRd
|
#' @noRd
|
||||||
genes_table <- function(data) {
|
genes_table <- function(data) {
|
||||||
|
|
|
||||||
3
R/ui.R
3
R/ui.R
|
|
@ -90,6 +90,9 @@ ui <- function() {
|
||||||
mainPanel(
|
mainPanel(
|
||||||
width = 9,
|
width = 9,
|
||||||
h3("Distribution of scores"),
|
h3("Distribution of scores"),
|
||||||
|
h4("Overview"),
|
||||||
|
plotly::plotlyOutput("overview_plot", height = "200px"),
|
||||||
|
h4("Focus on top genes"),
|
||||||
div(paste0(
|
div(paste0(
|
||||||
"Click or drag within the figure to select genes of ",
|
"Click or drag within the figure to select genes of ",
|
||||||
"interest."
|
"interest."
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
#' Various things that should be imported into the package namespace.
|
# Various things that should be imported into the package namespace.
|
||||||
#'
|
|
||||||
#' @importFrom data.table :=
|
#' @importFrom data.table :=
|
||||||
#' @importFrom data.table .BY
|
#' @importFrom data.table .BY
|
||||||
#' @importFrom data.table .EACHI
|
#' @importFrom data.table .EACHI
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue