suppressPackageStartupMessages({ library(trackViewer) library(rtracklayer) library(Gviz) library(TxDb.Hsapiens.UCSC.hg19.knownGene) library(org.Hs.eg.db) library(VariantAnnotation) library(httr) }) knitr::opts_chunk$set(warning=FALSE, message=FALSE)
Plot high dense methylation/mutation/variant data by dandelion plot
Plot genomic interaction data (HiC, cooler, etc) by viewTracks
First, we import the sample data.
library(trackViewer) extdata <- system.file("extdata", package="trackViewer", mustWork=TRUE) repA <- importScore(file.path(extdata, "cpsf160.repA_-.wig"), file.path(extdata, "cpsf160.repA_+.wig"), format="WIG") ## Because the wig file does not contain any strand info, ## we need to set it manually. strand(repA$dat) <- "-" strand(repA$dat2) <- "+" fox2 <- importScore(file.path(extdata, "fox2.bed"), format="BED", ranges=GRanges("chr11", IRanges(122830799, 123116707))) dat <- coverageGR(fox2$dat) ## We can split the data by strand into two different track channels ## Here, we set the dat2 slot to save the negative strand info. fox2$dat <- dat[strand(dat)=="+"] fox2$dat2 <- dat[strand(dat)=="-"] library(TxDb.Hsapiens.UCSC.hg19.knownGene) library(org.Hs.eg.db) gr <- GRanges("chr11", IRanges(122929275, 122930122), strand="-") trs <- geneModelFromTxdb(TxDb.Hsapiens.UCSC.hg19.knownGene, org.Hs.eg.db, gr=gr)
optSty <- optimizeStyle(trackList(repA, fox2, trs)) trackList <- optSty$tracks viewerStyle <- optSty$style
browseTracks
function as a helperSince version 1.33.6, the interactive plot generated by browseTracks
function
will print the psuedocode about how to change the track styles at the bottom,
which can be used as a quick reference.
browseTracks(trackList, gr=gr)
\ \
In most cases, researchers are interested in the relative position of the peaks in the gene. Sometimes, margin needs to be adjusted to be able to show the entire gene model. The Figure below shows how to add an X scale (x-scale) and remove the x-axis using the setTrackXscaleParam and setTrackViewerStyleParam functions.
setTrackViewerStyleParam(viewerStyle, "xaxis", FALSE) setTrackViewerStyleParam(viewerStyle, "margin", c(.01, .05, .01, .01)) setTrackXscaleParam(trackList[[1]], "draw", TRUE) setTrackXscaleParam(trackList[[1]], "gp", list(cex=0.8)) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle) setTrackXscaleParam(trackList[[1]], attr="position", value=list(x=122929700, y=3, label=200)) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
The y-axis can be put to the right side of the track by setting the main slot to FALSE in the y-axis slot of each track. In addition, the limit of y-axis (ylim) can be set by setTrackStyleParam.
setTrackViewerStyleParam(viewerStyle, "margin", c(.01, .05, .01, .05)) for(i in 1:2){ setTrackYaxisParam(trackList[[i]], "main", FALSE) } ## Adjust the limit of y-axis setTrackStyleParam(trackList[[1]], "ylim", c(0, 25)) setTrackStyleParam(trackList[[2]], "ylim", c(-25, 0)) ## The y-axis tick labels can be turn off/on by setting the 'label' to FALSE/TRUE #setTrackYaxisParam(trackList[[1]], 'label', TRUE) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
The function setTrackYaxisParam
can be sued to adjust the track color/size/etc of y-axis and the y-axis labels.
## change the setTrackYaxisParam(trackList[[1]], "gp", list(cex=.8, col="green")) setTrackYaxisParam(trackList[[2]], "gp", list(cex=.8, col="blue")) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
The style of y-axis can be changed by setting the ylabgp slot in the style of each track.
setTrackStyleParam(trackList[[1]], "ylabgp", list(cex=.8, col="green")) ## set cex to avoid automatic adjust setTrackStyleParam(trackList[[2]], "ylabgp", list(cex=.8, col="blue")) setTrackStyleParam(trackList[[2]], "marginBottom", .2) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
The y-axis label can be put at the top or the bottom of each track.
setTrackStyleParam(trackList[[1]], "ylabpos", "bottomleft") setTrackStyleParam(trackList[[2]], "ylabpos", "topright") setTrackStyleParam(trackList[[2]], "marginTop", .2) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
For each transcript, the transcript name can be put on the upstream or downstream of the transcript. The Y-lab can also be removed by set 'ylabpos' to 'none' or set the name as ''.
trackListN <- trackList setTrackStyleParam(trackListN[[3]], "ylabpos", "upstream") setTrackStyleParam(trackListN[[4]], "ylabpos", "downstream") ## set cex to avoid automatic adjust setTrackStyleParam(trackListN[[3]], "ylabgp", list(cex=.6)) setTrackStyleParam(trackListN[[4]], "ylabgp", list(cex=.6)) ## remove ylab setTrackStyleParam(trackListN[[5]], "ylabpos", "none") names(trackListN)[6] <- "" gr1 <- range(unname(unlist(GRangesList(sapply(trs, function(.ele) .ele$dat))))) start(gr1) <- start(gr1) - 2000 end(gr1) <- end(gr1) + 2000 viewTracks(trackListN, gr=gr1, viewerStyle=viewerStyle)
The track color can be changed by setting the color slot in the style of each track. The first color is for the dat slot of track and the second color is for the dat2 slot.
setTrackStyleParam(trackList[[1]], "color", c("green", "black")) setTrackStyleParam(trackList[[2]], "color", c("black", "blue")) for(i in 3:length(trackList)) setTrackStyleParam(trackList[[i]], "color", "black") viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
The track height can be changed by setting the height slot in the style of each track. However, the total height for all the tracks should be 1.
trackListH <- trackList setTrackStyleParam(trackListH[[1]], "height", .1) setTrackStyleParam(trackListH[[2]], "height", .44) for(i in 3:length(trackListH)){ setTrackStyleParam(trackListH[[i]], "height", (1-(0.1+0.44))/(length(trackListH)-2)) } viewTracks(trackListH, gr=gr, viewerStyle=viewerStyle)
The track names such as gene model names can be edited easily by changing the names of trackList.
names(trackList) <- c("cpsf160", "fox2", rep("HSPA8", 5)) viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
trackViewer can be used to show to-be-compared data in the same track side by side.
cpsf160 <- importScore(file.path(extdata, "cpsf160.repA_-.wig"), file.path(extdata, "cpsf160.repB_-.wig"), format="WIG") strand(cpsf160$dat) <- strand(cpsf160$dat2) <- "-" setTrackStyleParam(cpsf160, "color", c("black", "red")) viewTracks(trackList(trs, cpsf160), gr=gr, viewerStyle=viewerStyle)
The called peaks can be plotted as annotation.
cpsf160_cp <- cpsf160 cpsf160$dat2 <- reduce(cpsf160$dat) cpsf160$dat2$score <- sample.int(length(cpsf160$dat2)) setTrackStyleParam(cpsf160, "tracktype", c("peak", "annotation")) cpsf160_cp$dat <- reduce(cpsf160_cp$dat2) cpsf160_cp$dat$score <- sample.int(length(cpsf160_cp$dat)) setTrackStyleParam(cpsf160_cp, "tracktype", c("annotation", "peak")) setTrackStyleParam(cpsf160_cp, "marginTop", 0.05) viewTracks(trackList(trs, cpsf160, cpsf160_cp), gr=gr, viewerStyle=viewerStyle)
The x-axis can be horizotally flipped for the genes in the negative strand.
viewerStyleF <- viewerStyle setTrackViewerStyleParam(viewerStyleF, "flip", TRUE) setTrackViewerStyleParam(viewerStyleF, "xaxis", TRUE) setTrackViewerStyleParam(viewerStyleF, "margin", c(.1, .05, .01, .01)) vp <- viewTracks(trackList, gr=gr, viewerStyle=viewerStyleF) addGuideLine(c(122929767, 122929969), vp=vp) addArrowMark(list(x=122929650, y=2), label="label", col="blue", vp=vp)
Currently, we support two themes: bw (black and white) and col (colored).
optSty <- optimizeStyle(trackList(repA, fox2, trs), theme="bw") trackList <- optSty$tracks viewerStyle <- optSty$style vp <- viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
optSty <- optimizeStyle(trackList(repA, fox2, trs), theme="col") trackList <- optSty$tracks viewerStyle <- optSty$style vp <- viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
optSty <- optimizeStyle(trackList(repA, fox2, trs), theme="safe") trackList <- optSty$tracks viewerStyle <- optSty$style vp <- viewTracks(trackList, gr=gr, viewerStyle=viewerStyle)
We could plot the tracks with breaks by setting multiple genomic ranges.
gr.breaks <- GRanges("chr11", IRanges(c(122929275, 122929575, 122929775), c(122929555, 122929725, 122930122)), strand="-", percentage=c(.4, .2, .4)) vp <- viewTracks(trackList, gr=gr.breaks, viewerStyle=viewerStyle)
sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.