R/driver.R

Defines functions mutant_labels filter_origins detect_driver_binom detect_driver_norm detect_driver_pois

Documented in filter_origins mutant_labels

detect_driver_pois = function(v) {
  stats::ppois(v, mean(v), lower.tail = FALSE)
}

detect_driver_norm = function(v) {
  lambda = mean(v)
  stats::pnorm(v, lambda, sqrt(lambda), lower.tail = FALSE)
}

detect_driver_binom = function(v) {
  v = round(v)
  stats::pbinom(v, sum(v), 0.5, lower.tail = FALSE)
}

#' Functions for detecting driver mutations
#
#' @details
#' `detect_driver` returns a vector of p-values.
#' @param v a pair of branch lengths (number of mutations)
#' @rdname driver
#' @export
detect_driver = detect_driver_pois

#' @details
#' `filter_origins` filters candidate origins by adjusted p-values.
#' @param x scaled tbl_tree
#' @param method passed to `p.adjust()`
#' @param q threshold
#' @rdname driver
#' @export
filter_origins = function(x, method = "fdr", q = 0.05) {
  dplyr::filter(x, stats::p.adjust(.data$p_driver, method = method) < q)
}

#' @details
#' `mutant_labels` extracts mutated nodes in tbl_tree
#' @rdname driver
#' @export
mutant_labels = function(x) {
  origins = filter_origins(x)$node
  group_clade(x, origins) %>%
    dplyr::filter(.data$isTip, .data$group != 0L) %>%
    dplyr::pull("label") %>%
    as.integer()
}
heavywatal/cellpoptime documentation built on May 5, 2021, 7:16 p.m.