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


###################################################
### chunk number 2: peaks
###################################################
library(ShortRead)
load("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")
head(peakTrack, 3)


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


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


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


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


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


###################################################
### chunk number 9: genomeBrowsers
###################################################
genomeBrowsers()


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


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


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


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


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


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


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


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


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


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


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


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


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


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


###################################################
### chunk number 24: download-track
###################################################
cons <- track(session, "Conservation", 
              range(view) * 2)


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


