前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言实现基因组浏览器可视化功能

R语言实现基因组浏览器可视化功能

作者头像
一粒沙
发布2019-07-31 14:38:06
2.6K0
发布2019-07-31 14:38:06
举报
文章被收录于专栏:R语言交流中心R语言交流中心

做生物信息的同仁们应该对基因组浏览器(IGV)都很熟悉,今天给大家介绍下在R语言中如何实现基因组的浏览。首先我们需要用到R包Gviz。其安装主要是用到bioconductor源,如果R版本>3.5可以运行下面的代码:

代码语言:javascript
复制
if(!requireNamespace("BiocManager", quietly = TRUE))
   install.packages("BiocManager")
 
BiocManager::install("Gviz")

如果R版本<3.5需要运行另一段代码:

代码语言:javascript
复制
source("https://bioconductor.org/biocLite.R")
biocLite("Gviz")

当然你执行晚上面的安装后,可能会报下面错误:

就还需要我们再安装下错误中的包GenomeInfoDb。还是需要bioconductor安装流程。

接下来我们先导入我们需要的样例数据:

代码语言:javascript
复制
library(Gviz)
library(GenomicRanges)
data(cpgIslands)
代码语言:javascript
复制
data(geneModels)

chr <-as.character(unique(seqnames(cpgIslands)))#获取染色体名称
gen <- genome(cpgIslands)#获取参考序列名称

以上就是数据的信息获取,接下来就是如何绘制我们想要的可视化图像:

首先是基础的获取track信息,所用的函数是AnnotationTrack,他可以灵活的去做任何的定位,类似UCSC的定位方式输入的可以是data.frame,IRanges ,GRangesList Irange格式。

代码语言:javascript
复制
atrack <- AnnotationTrack(cpgIslands,name = "CpG")

plotTracks(atrack)

接下来我们增加范围坐标,所用到的函数是GenomeAxisTrack,绘制范围坐标轴。调用实例:

代码语言:javascript
复制
gtrack <- GenomeAxisTrack()
plotTracks(list(gtrack, atrack))

然后还可以在染色体G带图标注染色体的位置,需要用到函数IdeogramTrack,其中主要的参数genome(染色体名称),chromosome(参考序列):

代码语言:javascript
复制
itrack <- IdeogramTrack(genome = gen,chromosome = chr)
plotTracks(list(itrack, gtrack, atrack))

然后就是更加详细的信息的展示,我们需要用到GeneRegionTrack:

我们看下实例:

代码语言:javascript
复制
grtrack <- GeneRegionTrack(geneModels,genome = gen,chromosome = chr, name = "Gene Model")
 plotTracks(list(itrack,gtrack, atrack, grtrack))

如果想注释每个model,那么需要加一个参数transcriptAnnotation = "symbol":

代码语言:javascript
复制
grtrack <- GeneRegionTrack(geneModels,genome = gen,chromosome = chr, name = "Gene Model",transcriptAnnotation = "symbol")

当然,我们也可以只显示一定范围内的models:

代码语言:javascript
复制
plotTracks(list(itrack, gtrack, atrack,grtrack),from = 26700000, to = 26750000)

接下来我们看下如何显示基因参考序列,我们需要用到函数SequenceTrack:

这个函数的使用实例用到了另一个包BSgenome.Hsapiens.UCSC.hg19(源自bioconductor):

代码语言:javascript
复制
library(BSgenome.Hsapiens.UCSC.hg19)
strack <- SequenceTrack(Hsapiens,chromosome = chr)
plotTracks(list(itrack, gtrack, atrack,grtrack, strack), from = 26591822, to = 26591852, cex = 0.8)

最后我们可以把对应的数据添加到我们的图中,比如测序深度等数据。

代码语言:javascript
复制
set.seed(255)
lim <- c(26700000, 26750000)
coords <- sort(c(lim[1], sample(seq(from= lim[1],to = lim[2]), 99), lim[2]))
dat <- runif(100, min = -10, max = 10)
dtrack <- DataTrack(data = dat, start =coords[-length(coords)],end = coords[-1], chromosome = chr, genome = gen,name ="Uniform")


plotTracks(list(itrack, gtrack, atrack,grtrack, dtrack), from = lim[1], to = lim[2])

当然,我们还可以通过type函数进行图形样式的选择默认是散点图,也可以柱状图等具体的选择可以参考下面红框中的参数:

代码语言:javascript
复制
plotTracks(list(itrack, gtrack, atrack,grtrack, dtrack), from = lim[1], to = lim[2], type = "h")

以上都是单组数据的绘图,那么多组数据也是可以进行展示的需要用到参数groups:

代码语言:javascript
复制
data(twoGroups)
dTrack <- DataTrack(twoGroups, name ="uniform")
plotTracks(dTrack, groups =rep(c("control", "treated"),  each = 3), type = c("a","p", "confint"))

当然还有更高级的,那就是多样本的多行展示:

代码语言:javascript
复制
data(dtHoriz)
dtHoriz <- dtHoriz[1:6, ]
plotTracks(dtHoriz, type ="horiz", groups = rownames(values(dtHoriz)),showSampleNames = TRUE,cex.sampleNames = 0.6,separator = 1)

我们还可以发现在IGV中可以在顶部显示测序的峰值,那么如何在此包中显示峰值,我们直接看下实例:

代码语言:javascript
复制
afrom <- 2960000
ato <- 3160000
 alTrack <-AlignmentsTrack(system.file(package = "Gviz","extdata","gapped.bam"), isPaired = TRUE)
 bmt<- BiomartGeneRegionTrack(genome = "hg19", chromosome ="chr12",start = afrom, end = ato, filter = list(with_ox_refseq_mrna =TRUE),stacking = "dense")
 plotTracks(c(bmt, alTrack), from = afrom,to = ato,  chromosome ="chr12")

当然我们也可以不显示下面所有的tracks,通过type来设置:

代码语言:javascript
复制
plotTracks(c(alTrack, bmt), from = afrom,to = ato, chromosome = "chr12", type = "coverage")

它还有个强大的功能那就是给出剪切事件的可视化展示:

代码语言:javascript
复制
plotTracks(c(bmt, alTrack), from = afrom +12700,to = afrom + 15200, chromosome = "chr12", type =c("coverage", "sashimi"))

不仅可以可视化剪切事件,同时还能对指定范围相关的事件进行筛选,通过参数sashimiFilter, sashimiFilterTolerance 。

代码语言:javascript
复制
introns <- GRanges("chr12",IRanges(start = c(2973662,2973919), end = c(2973848, 2974520)))
plotTracks(c(bmt, alTrack), from = afrom +12700,to = afrom + 15200, chromosome = "chr12", type =c("coverage", "sashimi"), sashimiFilter = introns,sashimiFilterTolerance = 5L)

欢迎大家学习交流!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档