## ----style-knitr, eval=TRUE, echo=FALSE, results="asis"------------------
BiocStyle::latex()

## ----load,warnings=FALSE,messages=FALSE----------------------------------
library(bsseq)
library(bsseqData)

## ----showData------------------------------------------------------------
data(BS.cancer.ex)
BS.cancer.ex <- updateObject(BS.cancer.ex)
BS.cancer.ex
pData(BS.cancer.ex)

## ----smooth,eval=FALSE---------------------------------------------------
## BS.cancer.ex.fit <- BSmooth(BS.cancer.ex, mc.cores = 1, verbose = TRUE)

## ----showDataFit---------------------------------------------------------
data(BS.cancer.ex.fit)
BS.cancer.ex.fit <- updateObject(BS.cancer.ex.fit)
BS.cancer.ex.fit

## ----cpgNumbers----------------------------------------------------------
## The average coverage of CpGs on the two chromosomes
round(colMeans(getCoverage(BS.cancer.ex)), 1)
## Number of CpGs in two chromosomes
length(BS.cancer.ex)
## Number of CpGs which are covered by at least 1 read in all 6 samples
sum(rowSums(getCoverage(BS.cancer.ex) >= 1) == 6)
## Number of CpGs with 0 coverage in all samples
sum(rowSums(getCoverage(BS.cancer.ex)) == 0)

## ----poisson-------------------------------------------------------------
logp <- ppois(0, lambda = 4, lower.tail = FALSE, log.p = TRUE)
round(1 - exp(6 * logp), 3)

## ----smoothSplit,eval=FALSE----------------------------------------------
## ## Split datag
## BS1 <- BS.cancer.ex[, 1]
## save(BS1, file = "BS1.rda")
## BS2 <- BS.cancer.ex[, 2]
## save(BS1, file = "BS1.rda")
## ## done splitting
## 
## ## Do the following on each node
## 
## ## node 1
## load("BS1.rda")
## BS1.fit <- BSmooth(BS1)
## save(BS1.fit)
## save(BS1.fit, file = "BS1.fit.rda")
## ## done node 1
## 
## ## node 2
## load("BS2.rda")
## BS2.fit <- BSmooth(BS2)
## save(BS2.fit, file = "BS2.fit.rda")
## ## done node 2
## 
## ## join; in a new R session
## load("BS1.fit.rda")
## load("BS2.fit.rda")
## BS.fit <- combine(BS1.fit, BS2.fit)

## ----keepLoci------------------------------------------------------------
BS.cov <- getCoverage(BS.cancer.ex.fit)
keepLoci.ex <- which(rowSums(BS.cov[, BS.cancer.ex$Type == "cancer"] >= 2) >= 2 &
                     rowSums(BS.cov[, BS.cancer.ex$Type == "normal"] >= 2) >= 2)
length(keepLoci.ex)
BS.cancer.ex.fit <- BS.cancer.ex.fit[keepLoci.ex,]

## ----BSmooth.tstat-------------------------------------------------------
BS.cancer.ex.tstat <- BSmooth.tstat(BS.cancer.ex.fit, 
                                    group1 = c("C1", "C2", "C3"),
                                    group2 = c("N1", "N2", "N3"), 
                                    estimate.var = "group2",
                                    local.correct = TRUE,
                                    verbose = TRUE)
BS.cancer.ex.tstat

## ----plotTstat,fig.width=4,fig.height=4----------------------------------
plot(BS.cancer.ex.tstat)

## ----dmrs----------------------------------------------------------------
dmrs0 <- dmrFinder(BS.cancer.ex.tstat, cutoff = c(-4.6, 4.6))
dmrs <- subset(dmrs0, n >= 3 & abs(meanDiff) >= 0.1)
nrow(dmrs)
head(dmrs, n = 3)

## ----plotSetup-----------------------------------------------------------
pData <- pData(BS.cancer.ex.fit)
pData$col <- rep(c("red", "blue"), each = 3)
pData(BS.cancer.ex.fit) <- pData

## ----plotDmr,fig.width=8,fig.height=4------------------------------------
plotRegion(BS.cancer.ex.fit, dmrs[1,], extend = 5000, addRegions = dmrs)

## ----plotManyRegions,eval=FALSE------------------------------------------
## pdf(file = "dmrs_top200.pdf", width = 10, height = 5)
## plotManyRegions(BS.cancer.ex.fit, dmrs[1:200,], extend = 5000,
##                 addRegions = dmrs)
## dev.off()

## ----sessionInfo,results="asis",eval=TRUE,echo=FALSE---------------------
toLatex(sessionInfo())