###################################################
### chunk number 1: setup
###################################################
options(width = 40)


###################################################
### chunk number 2: peaks
###################################################
library(ShortRead)
load("../data/ctcf.rda")
library(BSgenome.Mmusculus.UCSC.mm9)
mouse.chromlens <- seqlengths(Mmusculus)
cov.ctcf <- coverage(ctcf, width = mouse.chromlens, extend = 126L)
peaks <- slice(cov.ctcf$chr10, lower = 8)
peak.depths <- viewMaxs(peaks)
peak.areas <- viewSums(peaks)
wpeaks <- tail(order(peak.depths), 4)
library(rtracklayer)


###################################################
### chunk number 3: create-track
###################################################
peakTrack <- GenomicData(peaks, depth = peak.depths, 
                         area = peak.areas, 
                         chrom = "chr10", 
                         genome = "hg18")
peakTrack


###################################################
### chunk number 4: attribute-accessors
###################################################
head(start(peakTrack))


###################################################
### chunk number 5: sol1-strand-accessor
###################################################
head(width(peakTrack))


###################################################
### chunk number 6: sol2-width-accessor
###################################################
genome(peakTrack)


###################################################
### chunk number 7: access-column
###################################################
head(peakTrack$area)


###################################################
### chunk number 8: sol3-reconstruct
###################################################
data.frame(start = start(peakTrack), 
           width = width(peakTrack),
           area = peakTrack$area,
           depth = peakTrack$depth)
## easier:
as.data.frame(peakTrack)


###################################################
### chunk number 9: subset-features
###################################################
## get the first 10 targets
first10 <- peakTrack[1:10,]
## get peaks of depth > 12
highPeaks <- peakTrack[peakTrack$depth > 12,]
## get first (and only) chromosome
chrPeaks <- peakTrack[1]


###################################################
### chunk number 10: sol4-subset
###################################################
peakTrack[peakTrack$area > 1000,"area"]


###################################################
### chunk number 11: export
###################################################
export(peakTrack, "peaks.bed")
restoredTrack <- import("peaks.bed")
## as character vector
peaksChar <- export(peakTrack, format = "gff1")


###################################################
### chunk number 12: sol5-export-gff
###################################################
export(peakTrack, "peaks.gff")


###################################################
### chunk number 13: sol6-import-gff
###################################################
peakGff <- import("peaks.gff", 
                    genome = "hg18")


###################################################
### chunk number 14: browserSession
###################################################
session <- browserSession("UCSC")


###################################################
### chunk number 15: genomeBrowsers
###################################################
genomeBrowsers()


###################################################
### chunk number 16: layTrack
###################################################
track(session, "peaks") <- peakTrack
## equivalently
session$peaks <- peakTrack


###################################################
### chunk number 17: sol7-load-track eval=FALSE
###################################################
## session$topPeaks <- peakTrack[wpeaks,]


###################################################
### chunk number 18: first-site-range
###################################################
high <- tail(wpeaks, 1)
region <- range(peakTrack[high,])


###################################################
### chunk number 19: first-site-zoom
###################################################
region <- region * -10


###################################################
### chunk number 20: coverageTrack
###################################################
covTrack <- as(cov.ctcf$chr10, "RangedData")
names(covTrack) <- "chr10"
session$coverage <- covTrack


###################################################
### chunk number 21: browserView
###################################################
view <- browserView(session, region, 
                    full = "coverage")


###################################################
### chunk number 22: sleep
###################################################
Sys.sleep(20)


###################################################
### chunk number 23: sol8-create-view
###################################################
viewOut <- browserView(session, range(view) * -2)


###################################################
### chunk number 24: browseGenome
###################################################
browseGenome(peakTrack, 
             range = range(peakTrack[high,]) * -10)


###################################################
### chunk number 25: set-view-range
###################################################
## zoom in 2X
range(view) <- range(view) * 2 


###################################################
### chunk number 26: sol9-view-second-site
###################################################
second <- tail(wpeaks, 2)[1]
range(viewOut) <- range(peakTrack[second,]) * -5


###################################################
### chunk number 27: visible
###################################################
## hide the Conservation track
visible(view)["Conservation"] <- FALSE


###################################################
### chunk number 28: sol10-show-conservation
###################################################
visible(view)["Ensembl Genes"] <- TRUE


###################################################
### chunk number 29: get-track-names
###################################################
head(trackNames(session))


###################################################
### chunk number 30: download-track
###################################################
cons <- track(session, "Conservation")
## or specific region
cons <- track(session, "Conservation", 
              range(view) * 2)
## shortcut
session$Conservation


###################################################
### chunk number 31: session-info
###################################################
sessionInfo()


