R/estimate-vaf.R

Defines functions expected_vaf_somatic expected_vaf_germline

Documented in expected_vaf_germline expected_vaf_somatic

#' Estimate somatic variant allele fraction (VAF)
#'
#' Given copy-number and purity estimates, calculates the two expected alllele fractions of a mutation in a tumor.
#' Use \code{expected_vaf_germline} for germline mutations and \code{expected_vaf_somatic} for somatic mutations
#'
#' @param purity Sample purity.
#' @param mcn Integer copy-number of major allele.
#' @param lcn Integer copy-number of minor (lesser) allele.
#'
#' @return Object containing expected VAFs if the tumor is on the major (\code{mcn}) or minor allele (\code{lcn}), respectively.

#' @export
#' @rdname expected_vaf
expected_vaf_germline = function(purity, mcn, lcn) {

    tcn = mcn + lcn # total number of alleles in tumor
    tumor_normal_alleles = purity*tcn + (1-purity)*2 # total number of alleles in sample

    mcn_mut_alleles = (purity*mcn + (1-purity)) # number of mutated alleles in tumor if mcn, plus mut alleles in normal cells
    lcn_mut_alleles = (purity*lcn + (1-purity)) # number of mutated alleles in tumor if lcn, plus mut alleles in normal cells

    c(vaf_mcn = mcn_mut_alleles/tumor_normal_alleles, vaf_lcn = lcn_mut_alleles/tumor_normal_alleles)
}

#' @export
#' @rdname expected_vaf
expected_vaf_somatic = function(purity, mcn, lcn) {

    tcn = mcn + lcn # total number of alleles in tumor
    tumor_normal_alleles = purity*tcn + (1-purity)*2 # total number of alleles in sample

    mcn_mut_alleles = purity*mcn # number of mutated alleles in tumor if mcn, plus mut alleles in normal cells
    lcn_mut_alleles = purity*lcn # number of mutated alleles in tumor if lcn, plus mut alleles in normal cells

    c(vaf_mcn = mcn_mut_alleles/tumor_normal_alleles, vaf_lcn = lcn_mut_alleles/tumor_normal_alleles)
}
kpjonsson/kpjmisc documentation built on Jan. 14, 2024, 2:38 a.m.