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


###################################################
### chunk number 2: load-targets
###################################################
library(rtracklayer)
data(targets)


###################################################
### chunk number 3: create-iranges
###################################################
targetRanges <- IRanges(targets$start, targets$end)


###################################################
### chunk number 4: create-track
###################################################
targetTrack <- with(targets, 
  GenomicData(targetRanges, target, 
              strand = strand,
              chrom = chrom, genome = "hg18"))


###################################################
### chunk number 5: attribute-accessors
###################################################
head(start(targetTrack))


###################################################
### chunk number 6: sol1-strand-accessor
###################################################
head(strand(targetTrack))


###################################################
### chunk number 7: sol2-width-accessor
###################################################
genome(targetTrack)


###################################################
### chunk number 8: access-column
###################################################
head(targetTrack$target)


###################################################
### chunk number 9: sol3-reconstruct
###################################################
data.frame(chrom = chrom(targetTrack), 
           start = start(targetTrack), 
           end = end(targetTrack),
           strand = strand(targetTrack))


###################################################
### chunk number 10: subset-features
###################################################
## get the first 10 targets
first10 <- targetTrack[1:10,]
## get pos strand targets
posTargets <- targetTrack[strand(targetTrack)=="+",]
## get chromosome 1 features
chr1Targets <- targetTrack[1]


###################################################
### chunk number 11: sol4-subset
###################################################
chr2 <- targetTrack["2"]
negChr2 <- chr2[strand(chr2) == "-",]


###################################################
### chunk number 12: export
###################################################
export(targetTrack, "targets.bed")
restoredTrack <- import("targets.bed")
## as character vector
targetChar <- export(targetTrack, format = "gff1")


###################################################
### chunk number 13: sol5-export-gff
###################################################
export(targetTrack, "targets.gff")


###################################################
### chunk number 14: sol6-import-gff
###################################################
targetGff <- import("targets.gff", 
                    genome = "hg18")


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


###################################################
### chunk number 16: genomeBrowsers
###################################################
genomeBrowsers()


###################################################
### chunk number 17: layTrack
###################################################
track(session, "targets") <- targetTrack
## equivalently
session$targets <- targetTrack


###################################################
### chunk number 18: sol7-load-track eval=FALSE
###################################################
## session$target100 <- targetTrack[1:100,]


###################################################
### chunk number 19: first-site-range
###################################################
region <- range(targetTrack[1,])


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


###################################################
### chunk number 21: browserView
###################################################
view <- browserView(session, region)


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


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


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


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


###################################################
### chunk number 26: sol9-view-second-site
###################################################
range(view) <- range(targetTrack[2,]) * -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
cons <- session$Conservation


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


