inst/doc/CloneSeeker.R

### R code from vignette source 'CloneSeeker.Rnw'

###################################################
### code chunk number 1: lib
###################################################
library(CloneSeeker)


###################################################
### code chunk number 2: simTumor
###################################################
set.seed(21303) # for reproducibility
simTumor <- Tumor(c(5, 3, 2), rounds = 100, 
                  nu = 10, pcnv = 0.8, norm.contam = FALSE)


###################################################
### code chunk number 3: truePsi
###################################################
simTumor@psi


###################################################
### code chunk number 4: cloneMeta
###################################################
class(simTumor@clones)
length(simTumor@clones)


###################################################
### code chunk number 5: oneClone
###################################################
oneClone <- simTumor@clones[[1]]
class(oneClone)
length(oneClone)
names(oneClone)


###################################################
### code chunk number 6: oneCN
###################################################
dim(oneClone$cn)
summary(oneClone$cn)


###################################################
### code chunk number 7: oneMut
###################################################
dim(oneClone$seq)
oneClone$seq


###################################################
### code chunk number 8: simData
###################################################
simData <- generateTumorData(simTumor,
                             snps.seq = 10000,
                             snps.cgh = 600000,
                             mu = 70,
                             sigma.reads = 25,
                             sigma0.lrr = 0.15,
                             sigma0.baf = 0.03,
                             density.sigma = 0.1)


###################################################
### code chunk number 9: peekData
###################################################
class(simData)
length(simData)
names(simData)


###################################################
### code chunk number 10: simCNData
###################################################
cnDat <- simData$cn.data
dim(cnDat)
summary(cnDat)


###################################################
### code chunk number 11: simMutData
###################################################
dim(simData$seq.data)
seqDat <- simData$seq.data
somatic <- seqDat[seqDat$status=='somatic',]
dim(seqDat)
summary(seqDat)
table(seqDat$status)


###################################################
### code chunk number 12: psis
###################################################
psis <- generateSimplex(20, 5)
dim(psis)
head(psis)
tail(psis)


###################################################
### code chunk number 13: cnmodels
###################################################
cnmodels <- expand.grid(rep(list(0:5),5))
include <- sapply(1:nrow(cnmodels), function(i) {
  length(which(cnmodels[i,] >= 1))==5 | length(which(cnmodels[i,] <= 1)) == 5
})
cnmodels <- cnmodels[include,]


###################################################
### code chunk number 14: pars
###################################################
pars <- list(sigma0 = 1,    # SNP-wise standard deviation
             ktheta = 0.3,  # geometric prior parameter on number of clones
             theta = 0.9,   # geometric prior parameter on copy number changes
             mtheta = 0.9,  # gemoetric prior parameter on point mutations
             alpha = 0.5,   # parameter for a symmetric Dirichlet prior on psi
             thresh = 0.04, # smallest possible detectble clone
             cutoff = 100,  # filter out copy number segments supported by fewer SNPs
             Q = 100,       # number of new psi vectors resamples at each iteration
             iters = 4)     # number of iterations


###################################################
### code chunk number 15: realWork
###################################################
f <- system.file("auxiliary/stash.Rda", package="CloneSeeker")
if (file.exists(f)) {
  load(f)
} else {
  resCN <- seekClones(cndata = cnDat, vardata = NULL, cnmodels = cnmodels, psis, pars = pars)
  resMut <- seekClones(cndata = NULL, vardata = seqDat, cnmodels = cnmodels, psiset = psis, pars = pars)
  resBoth <- seekClones(cndata = cnDat, vardata = somatic, cnmodels = cnmodels, psis, pars = pars)
  save(resCN, resMut, resBoth, file = "../inst/auxiliary/stash.Rda")
}
rm(f)


###################################################
### code chunk number 16: resCN (eval = FALSE)
###################################################
## resCN <- seekClones(cndata = cnDat, vardata = NULL, 
##                     cnmodels = cnmodels, psiset = psis, pars = pars)


###################################################
### code chunk number 17: compare.psis
###################################################
resCN$psi
simTumor@psi


###################################################
### code chunk number 18: CNassign
###################################################
trueCN_Assignments <- t(sapply(1:nrow(resCN$filtered.data$cndata.filt),
function(i) {
  index <- rownames(simTumor@clones[[1]]$cn) == 
           rownames(resCN$filtered.data$cndata.filt)[i]
  sapply(1:length(simTumor@clones),function(j){
    simTumor@clones[[j]]$cn$A[index] + simTumor@clones[[j]]$cn$B[index]
  })
}))

inferredCN_Assignments <- (resCN$A+resCN$B)[,1:length(simTumor@clones)]
colnames(inferredCN_Assignments) <- colnames(trueCN_Assignments) <- 
  paste("C", 1:3)

data.frame(Truth = trueCN_Assignments,
           Infer = inferredCN_Assignments)


###################################################
### code chunk number 19: resMut (eval = FALSE)
###################################################
## resMut <- seekClones(cndata = NULL, vardata = seqDat, 
##                      cnmodels = cnmodels, psiset = psis, pars = pars)


###################################################
### code chunk number 20: resMutResults
###################################################
resMut$psi
simTumor@psi


###################################################
### code chunk number 21: trueMut (eval = FALSE)
###################################################
## trueMutAssignments <- sapply(1:length(simTumor@clones),function(i){
##   sapply(1:length(resMut$filtered.data$mutdata.filt$mut.id),function(j){
##     index <- which(simTumor@clones[[i]]$seq$mut.id==resMut$filtered.data$mutdata.filt$mut.id[j])
##     if(length(index)==0){
##       val <- 0
##     }else{
##       val <- simTumor@clones[[i]]$seq$mutated.copies[index]
##     }
##     val
##   })
## })
## inferredMutAssignments <- resMut$mutated[,1:length(simTumor@clones)]
## colnames(inferredMutAssignments) <- colnames(trueMutAssignments) <- c('C1','C2','C3')
## 
## data.frame(Truth = trueMutAssignments,
##            Infer = inferredMutAssignments)


###################################################
### code chunk number 22: resBoth (eval = FALSE)
###################################################
## resBoth <- seekClones(cndata = cnDat, vardata = somatic, 
##                       cnmodels = cnmodels, psiset = psis, pars = pars)


###################################################
### code chunk number 23: reBothResults
###################################################
resBoth$psi
simTumor@psi

Try the CloneSeeker package in your browser

Any scripts or data that you put into this service are public.

CloneSeeker documentation built on July 1, 2022, 3 a.m.