diff --git a/R/proximity.R b/R/method_proximity.R similarity index 53% rename from R/proximity.R rename to R/method_proximity.R index 70c6d92..3861517 100644 --- a/R/proximity.R +++ b/R/method_proximity.R @@ -1,12 +1,16 @@ -#' Score the mean distance of genes to the telomeres across species. +#' Score the 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. +#' distance across all genes and 1.0 corresponds to a distance of 0. +#' +#' @param summarize A function for combining the different proximities into one +#' metric. By default, [stats::median()] is used. Other suggested options +#' include [min()] and [mean()]. #' #' @return An object of class `geposan_method`. #' #' @export -proximity <- function() { +proximity <- function(summarize = stats::median) { method( id = "proximity", name = "Proximity", @@ -23,15 +27,20 @@ proximity <- function() { ] # 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] + data <- data[, + .(combined_distance = as.double(summarize(distance))), + by = "gene" + ] + + # Normalize scores. + data[, score := 1 - combined_distance / max(combined_distance)] progress(1.0) result( method = "proximity", - scores = data[, .(gene, score)] + scores = data[, .(gene, score)], + details = list(data = data) ) }) } diff --git a/man/proximity.Rd b/man/proximity.Rd index fa8d822..f8c2768 100644 --- a/man/proximity.Rd +++ b/man/proximity.Rd @@ -1,15 +1,20 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/proximity.R +% Please edit documentation in R/method_proximity.R \name{proximity} \alias{proximity} -\title{Score the mean distance of genes to the telomeres across species.} +\title{Score the distance of genes to the telomeres across species.} \usage{ -proximity() +proximity(summarize = stats::median) +} +\arguments{ +\item{summarize}{A function for combining the different proximities into one +metric. By default, \code{\link[stats:median]{stats::median()}} is used. Other suggested options +include \code{\link[=min]{min()}} and \code{\link[=mean]{mean()}}.} } \value{ An object of class \code{geposan_method}. } \description{ 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. +distance across all genes and 1.0 corresponds to a distance of 0. }