生物信息杂谈数据可视化生物信息学与算法

SNP连锁不平衡图(LD)可视化R包LDheatmap的使用

2018-01-01  本文已影响416人  生信杂谈

理解SNPs之间的联系或连锁不平衡(LD)模式对于单体型的选择具有重要作用,然而,对于密集的SNP图谱,随着区域内SNPs数量的增加,很难直接从复杂的VCF文件来看出SNPs间的连锁不平衡关系。LDheatmap就是这样一个能够可视化SNPs之间连锁不平衡关系的R包。

先举个小例子:

随机创建100个样本5个SNPs的基因型矩阵,并实现LD热图:

rm(list=ls())
set.seed(1)
gdat<-matrix(rbinom(n=500,size=2,prob=.5),ncol=5) 
require(chopsticks)
gdat<-as(gdat,"snp.matrix")
LDheatmap(gdat,genetic.distances=c(0,1000,3000,4000,10000))

上图的5个SNPs的物理距离为10kb,每个SNP的位置通过genetic.distances参数控制。颜色越深表示LD显著。

下面使用这个包的内置数据:

data(CEUData)

这个包的内置数据分为两部分:
一个是SNPs在各个样本中的基因型信息:



另一个是所对应SNPs的物理距离:


作图:

MyHeatmap <- LDheatmap(CEUSNP, genetic.distances = CEUDist,color = grey.colors(20))

也可以翻转图形:

flippedHeatmap<-LDheatmap(MyHeatmap,flip=TRUE)

还可以高亮指定的区域,比如用红色高亮出第3个SNP到第5个SNP之间的区域:

MyHeatmap <- LDheatmap(CEUSNP, genetic.distances = CEUDist,color = grey.colors(20))
LDheatmap.highlight(MyHeatmap, i = 3, j = 5, col = "red")

对指定区域进行标注符号,比如用红色星号标注第4个和第7个SNP的LD:

MyHeatmap <- LDheatmap(CEUSNP, genetic.distances = CEUDist, color = grey.colors(20))
LDheatmap.marks(MyHeatmap,  4,  7,  gp=gpar(cex=2,col="red"),  pch = "*")

也可以自定义调色板重新上色:

rgb.palette <- colorRampPalette(rev(c("blue", "orange", "red")), space = "rgb")
LDheatmap(MyHeatmap, color=rgb.palette(18))

在物理距离图谱上标注SNP的名称:

MyHeatmap <- LDheatmap(CEUSNP, genetic.distances = CEUDist, color = grey.colors(20))
LDheatmap(MyHeatmap, SNP.name = c("rs2283092", "rs6979287"))

使用grid.edit修改图形的各项属性:

# 修改标题颜色
grid.edit(gPath("ldheatmap", "heatMap", "title"), gp = gpar(col = "red"))

# 修改SNP标签大小
grid.edit(gPath("ldheatmap", "geneMap","SNPnames"), gp = gpar(cex=1.5))

# 使用白线间隔LD色块:
grid.edit(gPath("ldheatmap", "heatMap", "heatmap"), gp = gpar(col = "white",lwd = 2))

grid.edit更详细的使用方法请参考官方文档。


更多原创精彩视频敬请关注生信杂谈:

上一篇下一篇

猜你喜欢

热点阅读