resolveMutSignatures: Resolve Mutation Signatures

Usage Arguments Examples

View source: R/core_mutSignatures_scr_5.R

Usage

1
resolveMutSignatures(mutCountData, signFreqData, byFreq = TRUE)

Arguments

mutCountData
signFreqData
byFreq

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--	or do  help(data=index)  for the standard data sets.

## The function is currently defined as
function (mutCountData, signFreqData, byFreq = TRUE) 
{
    if (class(mutCountData) == "mutationCounts") 
        mutCountData <- as.data.frame(mutCountData)
    if (class(signFreqData) == "mutationSignatures") 
        signFreqData <- as.data.frame(signFreqData)
    if (!(sum(!rownames(mutCountData) %in% rownames(signFreqData)) == 
        0 & sum(!rownames(signFreqData) %in% rownames(mutCountData)) == 
        0)) {
        stop(paste("There is an issue with the mutTypes.", "MutTypes in the mutType Count Matrix", 
            "have to match those in the signature", "Matrix... check rownames()"))
    }
    mutCountData <- mutCountData[rownames(signFreqData), ]
    if (byFreq) {
        full.Y <- apply(mutCountData, 2, (function(clmn) {
            1000 * clmn/sum(clmn)
        }))
    }
    else {
        full.Y <- as.matrix(mutCountData)
    }
    mutSums <- apply(mutCountData, 2, sum)
    my.signatures <- apply(signFreqData, 2, (function(clmn) {
        clmn/sum(clmn)
    }))
    X <- as.matrix(my.signatures)
    out <- list()
    res <- NMF::fcnnls(x = X, y = full.Y)
    beta.hat <- data.frame(t(res$x/ifelse(byFreq, 1000, 1)), 
        stringsAsFactors = FALSE)
    colnames(beta.hat) <- colnames(signFreqData)
    rownames(beta.hat) <- colnames(mutCountData)
    out$results <- list()
    out$coeffs <- list()
    out$coeffs$beta.hat <- beta.hat
    out$coeffs$unexplained.mutNum <- round((1 - apply(beta.hat, 
        1, sum)) * mutSums, digits = 0)
    out$coeffs$unexplained.mutFrac <- out$coeffs$unexplained.mutNum/mutSums
    if (byFreq) {
        for (i in 1:nrow(beta.hat)) {
            beta.hat[i, ] <- beta.hat[i, ] * mutSums[i]
        }
    }
    out$results$count.result <- as.mutation.exposure(beta.hat, 
        samplesAsCols = FALSE)
    out$results$freq.result <- as.mutation.exposure(do.call(rbind, 
        lapply(1:nrow(beta.hat), (function(jjj) {
            beta.hat[jjj, ]/sum(beta.hat[jjj, ])
        }))), samplesAsCols = FALSE)
    out$results$fitted <- res$fitted
    out$results$residuals <- res$residuals
    return(out)
  }

dami82/mutSignatures_dev documentation built on May 17, 2019, 7:02 p.m.