mirror of
https://github.com/johrpan/geposan.git
synced 2025-10-26 10:47:25 +01:00
Add comparison feature
This commit is contained in:
parent
4992bb2930
commit
f98800f1e0
5 changed files with 122 additions and 0 deletions
75
R/comparison.R
Normal file
75
R/comparison.R
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
#' Compare a set of genes with the ranking.
|
||||
#'
|
||||
#' @param ranking A ranking created using [ranking()].
|
||||
#' @param comparison_gene_ids IDs of the genes of interest.
|
||||
#'
|
||||
#' @returns A comparison object with the following items:
|
||||
#' \describe{
|
||||
#' \item{`mean`}{The mean score of the genes.}
|
||||
#' \item{`min`}{The lowest score of the genes.}
|
||||
#' \item{`max`}{The highest score of the genes.}
|
||||
#' \item{`mean_rank`}{The mean rank of the genes.}
|
||||
#' \item{`first_rank`}{The first rank of the genes.}
|
||||
#' \item{`last_rank`}{The last rank of the genes.}
|
||||
#' \item{`p_value`}{p-value for the null hypothesis that the comparison
|
||||
#' genes do _not_ rank better than other genes. In other words: A low
|
||||
#' p-value means that the comparison genes rank particularly high.}
|
||||
#' }
|
||||
#'
|
||||
#' @export
|
||||
compare <- function(ranking, comparison_gene_ids) {
|
||||
if (!"geposan_ranking" %chin% class(ranking)) {
|
||||
stop("Invalid ranking. Use geposan::ranking().")
|
||||
}
|
||||
|
||||
comparison_ranking <- ranking[gene %chin% comparison_gene_ids]
|
||||
|
||||
p_value <- wilcox.test(
|
||||
x = comparison_ranking[, score],
|
||||
y = ranking[!gene %chin% comparison_gene_ids, score],
|
||||
alternative = "greater"
|
||||
)$p.value
|
||||
|
||||
structure(
|
||||
list(
|
||||
mean = comparison_ranking[, mean(score)],
|
||||
min = comparison_ranking[, min(score)],
|
||||
max = comparison_ranking[, max(score)],
|
||||
mean_rank = comparison_ranking[, mean(rank)],
|
||||
first_rank = comparison_ranking[, min(rank)],
|
||||
last_rank = comparison_ranking[, max(rank)],
|
||||
p_value = p_value
|
||||
),
|
||||
class = "geposan_comparison"
|
||||
)
|
||||
}
|
||||
|
||||
#' S3 method to print a comparison object.
|
||||
#'
|
||||
#' @seealso [compare()]
|
||||
#'
|
||||
#' @export
|
||||
print.geposan_comparison <- function(comparison, ...) {
|
||||
cat("geposan comparison:")
|
||||
cat(sprintf(
|
||||
paste(
|
||||
"\n\n Mean score: %.3f",
|
||||
"\n Min score: %.3f",
|
||||
"\n Max score: %.3f",
|
||||
"\n\n Mean rank: %.1f",
|
||||
"\n First rank: %i",
|
||||
"\n Last rank: %i",
|
||||
"\n\n p-value for better ranking: %.4f\n",
|
||||
sep = ""
|
||||
),
|
||||
comparison$mean,
|
||||
comparison$min,
|
||||
comparison$max,
|
||||
comparison$mean_rank,
|
||||
comparison$first_rank,
|
||||
comparison$last_rank,
|
||||
comparison$p_value
|
||||
))
|
||||
|
||||
invisible(comparison)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue