Revert "proximity: Remove method"

This reverts commit ac9894e988.
This commit is contained in:
Elias Projahn 2022-02-24 17:39:44 +01:00
parent 54e3b433f7
commit 99bc6794b9
4 changed files with 57 additions and 1 deletions

39
R/proximity.R Normal file
View file

@ -0,0 +1,39 @@
#' Score the mean distance of genes to the telomeres across species.
#'
#' A score will be given to each gene such that 0.0 corresponds to the maximal
#' mean distance across all genes and 1.0 corresponds to a distance of 0.
#'
#' @return An object of class `geposan_method`.
#'
#' @export
proximity <- function() {
method(
id = "proximity",
name = "Proximity",
description = "Proximity to telomeres",
function(preset, progress) {
species_ids <- preset$species_ids
gene_ids <- preset$gene_ids
cached("proximity", c(species_ids, gene_ids), {
# Prefilter distances by species and gene.
data <- geposan::distances[
species %chin% preset$species_ids &
gene %chin% preset$gene_ids
]
# Compute the score as described above.
data <- data[, .(mean_distance = mean(distance)), by = "gene"]
max_distance <- data[, max(mean_distance)]
data[, score := 1 - mean_distance / max_distance]
progress(1.0)
result(
method = "proximity",
scores = data[, .(gene, score)]
)
})
}
)
}