理解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
更详细的使用方法请参考官方文档。
更多原创精彩视频敬请关注生信杂谈: