大家好,我是邓飞,今天介绍一下Haploview分析的方法。
本文详细介绍了Haploview单倍型的分析方法,从背景介绍、软件安装、数据准备、作图分析以及批量操作,通过学习和实践操作,读者可以轻松掌握单倍型分析的方法。
一、单倍型介绍
为何要做单倍型分析?
我们做完GWAS分析,得到了显著性位点,注释到了上下游的基因,这时,一个想法浮现在眼前:你如何证明你找到的基因不是假阳性???
答案就是单倍型分析,看一下显著性位点附近的区域,是否处于一个高度连锁的区域(block),看一下基因是否在block里面,如果显著位点附近有高连锁的BLOCK并且注释的基因也在block里面,可以证明挖掘的基因没问题,结果八九不离十了,十分可靠。
那如何做单倍型分析呢?
如果按照分析思路的话,是选择显著性为点上下游的区域,计算SNP之间的LD值,然后根据某个阈值进行划分Block,如果有block,那么block区域内只有少数的组合,这些少数的组合就是单倍型。我们定位基因,或者分子标记辅助,都会用到单倍型。
好消息是,不用自己手动计算LD值,然后变成划分block了,有现成的软件。坏消息是软件也要学习,目前主流的两款软:Haploview
和LDblockshow
,前者是桌面版软件,后者是命令行软件,两者结果基本一致。
二、Haploview软件安装
1. 软件下载
「官网:」 https://www.broadinstitute.org/haploview/downloads#JAR
「windows系统:」
「Linux系统:」
2. 配置java环境
https://www.java.com/zh-CN/download/
下载安装好之后,在终端运行java,出现帮助文档,说明配置成功。
3 windows系统
cmd终端打开,键入java,出现下面界面,说明配置成功。
找到快捷方式:
打开软件:
4 Linux系统
终端打开,键入java,出现下面界面,说明配置成功。
终端运行,即可出现图形界面。
注意:Linux系统,需要窗口界面,如果是终端登录,可以安装xming,显示窗口界面。
5 windows报错解决方案
注意,有时候会有问题,windows系统安装Haploview总是错误,解决方案是直接用jar文件,在终端cmd
中运行:
有个小伙伴说,Haploview软件在windows系统中安装报错,说是配置了java和javac环境,还是不错,我是不信的。
于是我用自己的业余电脑试了一下,果然报错:
安装报错信息:
配置好的java
然后导入java.exe文件:
太难了。重头试了一遍,还是报错。
想到一个方法,既然Linux和Mac可以运行Haploview.jar文件,那么windows系统也可以,测试一下:
然后就可以运行了。
写一个bat脚本:
双击一下,就有Haploview的GUI界面了。
三、单倍型数据准备
1. 数据准备
需要做单倍型分析的是基因型数据,一般是显著性的SNP,提取上下游500kb,然后进行block的分析。
这里,准备的是plink数据,比如我们要提取:
染色体是6
开始位置是1000000
终止位置是2000000
将其转化为plink的map和ped数据:
2. 整理数据
将map的第二列和第四列提取出来,保存为a1.info文件。
ped数据,保持不变:
3. 导入数据
选择第一种格式:Linkage Format,然后将ped数据导入到Data File中,将info数据导入到Locus Information File文件中。
结果:
查看Block:
查看TaggerSNP:
上面就是下数据分析实操方法。
4. plink格式整理常见错误
有些朋友用自己的数据分析时,会有各种问题,最近星球上有小伙伴发了一个帖子,叙述了自己的问题,各种尝试,还是错误,淡淡的忧伤和砸电脑的冲动……
https://wx.zsxq.com/dweb2/index/group/48844515845858
作为分析数据的老司机,新手遇到的错误都会遇到过,而且也有解决方案,这里总结一下常见的错误。
1,vcf变为plink,或者excel变为plink格式,然后直接读入到Haploview,卒。
vcf变为plink,以及plink提取snp导出plink格式,或者excel的格式变为plink格式,这些数据都建议用plink重新跑一下,确保数据没问题。 如果plink运行报错,就不要往下走了,先把这个问题解决掉!
2,plink格式的map数据,需要变为info格式,简单来说,就是提取map的第二列和第四列,生成info为后缀的文件
3,ped中的表型数据默认为-9,需要改为0。这个是必须的,否则就报错。
4,另外,还有一个坑,ped的ID编号中不能有-
这里建议用下划线代替,搞定这些后,就可以用Haploview读取数据,进行单倍型分析了。
代码汇总:
plink --file file --maf 0.01 --geno 0.3 --recode --out qc300
sed -i 's/-/_/g' qc300.ped
sed -i 's/-9/0/g' qc300.ped
awk '{print $2,$4}' qc300.map >qc300.info
还有一个灵魂拷问的问题,不要用所有的基因型数据做单倍型分析,只需要把显著SNP上下游一段距离(比如50kb)的位点提取出来,进行单倍型分析。
四、Haploview结果解读
1. LDblock整体结果
上图就是最常见的LDblock,该图的结果解读。
2. SNP在染色体的分布
最上面是SNP的物理位置,有些是均匀的,有些是不均匀的
3. SNP的名称信息
中间是SNP的名称,用细线联系在一起
4. block解释
最下面红白的正方形是LD值的可视化,每一个正方形是两两SNP的LD结果,颜色越淡说明LD值越小,如果相邻的SNP之间的LD大于某个阈值(比如0.9),那么就构成一个block,下图中的两个红框里面的黑框,就是两个LDblock,第一个block包括的SNP有10,11,12三个SNP,block的距离为82kb,第二个block包括两个snp,包括14和15两个snp,block的距离为32kb。
5. 查看block的频率和他们之间的联系
下图中,第一个block中,一共三个SNP,单倍型分别是:TTC,TTA,CCA,TCA,他们的频率分别是0.548,0.281,0.09和0.078,它们的频率之和为1。第二个block一共有两个SNP,单倍型分别是AG,GA和AA,频率分别是0.402,0.565,0.034,他们之间的频率之和为1.
最下面的0.67是两个block的关联,两个block的线是两者的关联性,线条越黑,说明关联性越强。
6. 查看TaggerSNP
这里有两个block,可以选择两个TaggerSNP代表这两个block
五、LDBlockshow软件安装
「要实现的下面的图:」
最下方的热图是两两SNP之间的LD值,越高越红,比较红的区域构成一个Block(用黑线连起来)
如果提供gff文件,可以显示基因的上游、下游、外显子、内含子区域
上面是位点的曼哈顿图,是区域性的曼哈顿图
位点之间,也可以根据LD值进行可视化,以最显著的位点为四方形,其它位点与其LD值的大小呈现不同的颜色
软件介绍:github链接:https://github.com/BGI-shenzhen/
A:整体上宏观上用:
PopLDdecay 软件 ,软件己经生物信息Bioinformatics杂志发表online(见我的学习笔记:
B: 从局部上查看用:
LDBlockShow软件, 软件已经正式被 briefings in bioinformatics (影响分子8.99)的杂志接收
1. 数据准备
vcf格式的数据,
InVCF
plink二进制文件,
InPlink
plink文本文件,
InPlink
2. 软件安装
网址:https://github.com/BGI-shenzhen/LDBlockShow
中文说明书:https://github.com/hewm2008/LDBlockShow/blob/main/LDBlockShow_Manual_Chinese.pdf
安装代码:
git clone https://github.com/hewm2008/LDBlockShow.git cd LDBlockShow ;
chmod 755 configure ;
./configure;
make;
3. 软件测试
数据:file.vcf
代码:这里,绘制染色体1,位置区间是:49670000:49780000
结果:
4. 进阶:Heatmap + block
vcf文件:Test.vcf.gz
命令:
LDBlockShow -InVCF Test.vcf.gz -OutPut re1 -Region chr11:24100000:24200000 -OutPng -SeleVar 1
结果文件:
re1.blocks.gz re1.png re1.site.gz re1.svg re1.TriangleV.gz
5. 进阶:Heatmap + block + GWAS
考虑GWAS的结果,加入参数:-InGWAS gwas.pvalue
vcf文件:Test.vcf.gz
GWAS结果文件:三列,Chr, Position, Pvalue,没有行头
$ head gwas.pvalue
chr11 24142640 0.00009
chr11 24142660 1.02e-9
chr11 24142669 1e-9
chr11 24142692 0.5
chr11 24142724 0.6
chr11 24142756 0.001
命令:
LDBlockShow -InVCF Test.vcf.gz -OutPut re2 -Region chr11:24100000:24200000 -InGWAS gwas.pvalue -OutPng -SeleVar 1
结果:
re2.blocks.gz re2.png re2.site.gz re2.svg re2.TriangleV.gz
结果中包括热图,block图和GWAS图合并起来了。
上面的图,可以通过ShowLDSVG
软件,进一步优化:
-Cutline,阈值定义为7
-ShowNum,显示LD值
-PointSize,显示点大小
结果:
6. Heatmap + block + GWAS + Annotation
相比较上图,增加了注释的信息。
文件需要:
vcf,vcf格式的文件
gwas_pvalue,三列的gwas结果(Chr,Position,Pvalue),无行头
gff文件,注释文件
命令:
LDBlockShow -InVCF Test.vcf.gz -OutPut re3 -Region chr11:24100000:24200000 -InGWAS gwas.pvalue -OutPng -SeleVar 1 -InGFF In.gff
也可以增加SNP的名称:
$ cat Spe.snp chr11 24142660 chr11 24142669 SpeA chr11 24142760 SpeB
命令:
7. 进阶:LDblock+GWAS+Annotation+Locuszoom
可以通过-TopSite
在GWAS图中显示最显著位点与其它位点的LD关系。
下图中,最显著的位点为四边形,其它颜色,红色表示LD高,其它颜色表示LD低。在上图的基础上,增加了最显著位点与其它位点的LD情况。
六、批量绘制单倍型图
有小伙伴在星球询问GWAS分析的显著性位点,如何批量绘制LDblock,之前写过LDblock的安装和使用说明:(LDblock绘制连锁不平衡和单体型图)
问题有3个核心点:
1,snp文件总是有^M符号,怎么去除
2,如何批量对显著位点进行LDblock分析
3,有没有现成代码
今天就搞定这个问题。 首先,看一下正常LDblock分析的代码:
有vcf文件,染色体,物理位置区间,结果文件名称。
来一个脚本:
$ cat ~/bin/plot_ld_plot_vcf.sh
#!/bin/bash
if [ $# != 4 ]
then
echo $0 name.vcf chronome_number location 20000; 第一个是vcf或者vcf.gz文件,第二个是染色体位置,第三个是物理位置,第四个是上下游区间
exit 1
fi
vcf=$1;chr=$2;pos=$3;qujian=$4
st=$(( $pos - $qujian))
en=$(( $pos + qujian))
ot=re_${chr}_${pos}
echo $chr $pos $pos >temp.txt
~/bin/LDBlockShow -InVCF $vcf -Region ${chr}:${st}:${en} -SeleVar 1 -BlockType 2 -NoShowLDist 10000000 -OutPut ${ot}
上面的脚本,给定vcf文件,染色体,物理位置,上下游区间,就会自动分析。
如何批量处理呢? 比如snp.txt文件,如下图所示:
1 280719882
7 143547413
2 141942814
2 141942735
1 175504926
10 33619582
1 245136244
10 134034686
1 54049220
1 285273845
5 18240536
5 83233487
8 123272935
6 93263605
10 144172316
10 3598262
8 4766593
5 200813276
8 160536300
上下游区间是100kb,那么先将每个snp生成一个命令行,然后运行就行了。
awk走起:
awk '{print "bash plot_ld_block_vcf.sh ../geno/genotype.vcf", $1,$2,100000}' snp.txt >temp.sh
生成的脚本文件:
$ cat temp.sh
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 1 280719882 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 7 143547413 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 2 141942814 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 2 141942735 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 1 175504926 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 10 33619582 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 1 245136244 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 10 134034686 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 1 54049220 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 1 285273845 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 5 18240536 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 5 83233487 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 8 123272935 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 6 93263605 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 10 144172316 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 10 3598262 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 8 4766593 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 5 200813276 100000
bash plot_ld_block_vcf.sh ../geno/genotype.vcf 8 160536300 100000
然后运行temp.sh文件就可以了。静等结果就可以了。
想要更好的学习和交流,快来加入飞哥的知识星球,这是一个生物统计+数量遗传学+GWAS+GS的社区,在这里你可以向飞哥提问、帮你制定学习计划、跟着飞哥一起做实战项目,冲冲冲。点击这里加入吧:飞哥的学习圈子
资源推荐:
6,飞哥的学习圈子