View source: R/core_mutSignatures_scr_5.R
1 | resolveMutSignatures(mutCountData, signFreqData, byFreq = TRUE)
|
mutCountData |
|
signFreqData |
|
byFreq |
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)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.