LDheatmap | SNP連鎖不平衡圖(LD)可視化,自己數(shù)據(jù)實(shí)現(xiàn)版!

本文首發(fā)于“生信補(bǔ)給站”,https://mp.weixin.qq.com/s/Gl6BChxSYbSHMo9oMpufPg

連鎖不平衡圖,用來可視化不同SNP之間的連鎖程度,前同事間俗稱“倒三角”圖。

本文使用自己的數(shù)據(jù),因?yàn)榘惭bR包后使用內(nèi)置數(shù)據(jù)集運(yùn)行出結(jié)果較容易,但是自己的數(shù)據(jù)就可能會(huì)有一些不大不小的“坑”,我替你們趟了。。。

一 載入R包 數(shù)據(jù)

數(shù)據(jù)為內(nèi)置CEUData保存后,進(jìn)行了“細(xì)微”的處理(去掉SNP堿基之間的“/”),這種基因型文件很常見;

library("LDheatmap")
#讀入數(shù)據(jù)
SNP <- read.csv("CEUSNP.csv",header = TRUE)
pos <- read.csv("CEUDist.csv",header= TRUE)
#查看數(shù)據(jù)
head(pos)
SNP[1:4,1:4]
img

二 繪制連鎖不平衡圖

2.1 直接繪制

SNPpos <- pos$x
LDheatmap(SNP, SNPpos,color = grey.colors(20)) 

Error in LDheatmap(SNP, SNPpos, color = grey.colors(20)) :
column 1 is not a genotype object

額, 也許是因?yàn)闆]有“/”的原因,加上試試?

2.2 堿基型之間加“/“

怎么加呢? 首先想到 Tidyverse|數(shù)據(jù)列的分分合合,一分多,多合一separateunite,可是沒有分隔符。。

經(jīng)高人指點(diǎn) ,使用替換的方式,解決方法很多。此處使用R-do包的函數(shù)

library(do)
df <- na.omit(SNP)
#A,C,G ,T 替換為A/,C/,G/,T/
df1 = do::Replace(df,pattern = c("A:A/","C:C/","G:G/","T:T/"))
#去掉最后的/
SNPdata <- do::Trim(df1,"/")
SNPdata[1:4,1:4]
 rs4615512 rs2283089 rs1894731 rs2283092
1       T/C       C/C       A/A       T/T
2       T/C       C/T       A/A       T/T
3       T/C       C/C       A/A       T/T
5       T/C       C/C       A/A       T/T

加上了,再次繪圖

LDheatmap(SNPdata, SNPpos,color = grey.colors(20))

Error in LDheatmap(SNPdata, SNPpos, color = grey.colors(20)) :
column 1 is not a genotype object

額 ,還是不行,同樣的報(bào)錯(cuò)。檢索報(bào)錯(cuò),嘗試轉(zhuǎn)換數(shù)據(jù)格式。

2.3 堿基型轉(zhuǎn)為genotype

使用genetics包的函數(shù)轉(zhuǎn)化

library("genetics")
for(i in 1:ncol(SNPdata)){
 SNPdata[,i]<-as.genotype(SNPdata[,i])
}
LDheatmap(SNPdata, SNPpos,color = grey.colors(20))
img

額 ,,,終于可以了。。。

三 圖形調(diào)整,優(yōu)化

3.1 調(diào)整顏色,更改標(biāo)題,標(biāo)示SNP名稱

color.rgb <- colorRampPalette(rev(c("white","red")),space="rgb")
## 繪制連鎖不平衡圖
names <- c("rs1111183", "rs2237789", "rs2299531")
LDheatmap(SNPdata, SNPpos,
         color=color.rgb(20),
         title = "DEU Pairwise LD",
         SNP.name=names,flip=TRUE)
img

3.2 使用grid調(diào)整SNP標(biāo)記名稱字體大小、顏色

library(grid)
grid.edit(gPath("ldheatmap", "geneMap","SNPnames"),
   gp = gpar(col="black",lwd = 1,cex=0.7))
img

所謂的”倒三角圖“完成,haploview軟件也很好看,且有block,批量也許不太友好,見仁見智了!

img
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。