Haploview:单倍型、连锁不平衡分析
Haploview是一个做单倍型、LD分析的软件。
〇 下载地址:
https://www.broadinstitute.org/haploview/downloads
〇 要求:
JRE(Java运行环境)5.0 Update 22以上
Windows版本可以下载安装器HapInstall.exe;
Mac/Unix/Linux版本直接下载JAR,然后再命令行直接运行:
java -jar Haploview.jar [options]
Windows推荐直接下载JAR文件,直接双击运行或命令行调用均可以。
HaploView功能:
1.连锁不平衡LD与单倍型分析
2.单倍型人群频率估算
3.SNP与单倍型关联检验
4.关联显著性排列检验
5.从HapMap上下载基因型信息
6.PLINK全基因组关联结果可视化
支持的输入文件格式有Linkage Format、Haps Format、HapMap Format、HapMap PHASE、HapMap download和PLINK Format。
Linkage Format格式文件(.ped)无头文件,列依次是Pedigree Name、Individual ID、Father ID、Mother ID、Sex、Affection Status、Marker Genotypes。
Marker位置信息文件(.info)分成2列,分别是Marker ID和位置。Hapmap Format文件可以在Hapmap网站上下载数据。
今天我们将hapmap文件转换成Linkage Format文件后再进行LD分析(其实可以直接导入hapmap文件,不过小编就是想用用刚学的python做一些简单的文本处理,哈哈哈哈)。
Hapmap文件格式如上,首先按照Linkage Format的要求,提取出Marker的位置信息(.info)。
###刚学python,别笑
###Python script
###hapmap_2_linkage_format_marker_info
input_file=input("INPUT FILE: ")
a=open(input_file,'r').readlines()
b=a[1:]
output=open('test.info','w')
for c in b:
d=c.split('\t')
e=[]
e.append(d[0]+'\t'+d[3]+'\n')
e=e[0]
output.write(e)
output.close()
处理hapmap文件,单独提取一个individual作为例子,保存到一个文本中,内容只有一列,但是有很多行(与.Info文件行数相同)。然后简单脚本处理,按照ped文件格式要求输出到新文件(.ped),比如将AGCT换成对应数字1234等,最后ped文件只有一行多列。
###刚学python,别笑
###Python script
input_file=input('INPUT FILE: ')
open_file=open(input_file,'r')
read_file=open_file.readlines()
ID=(read_file[0]).rstrip('\n')+'\t'
file_name=(read_file[0]).rstrip('\n')+'.ped'
out_file=open(file_name,'w')
snp=read_file[1:]
g=[]
for i in snp:
i=i.rstrip('\n')
g.append(i)
h=''.join(g)
m=''
for j in h:
if j=='A':
j='1'
elif j=='C':
j='2'
elif j=='G':
j='3'
elif j=='T':
j='4'
else:
j='0'
m=m+j+'\t'
ID='Test'+'\t'+ID+'0\t0\t0\t2\t'+m.rstrip('\t')+'\n'
out_file.write(ID)
out_file.close()
选择需要的群体将ped文件合在一起,与info文件命名相同后,导入。选定ped文件后,info会自动选择。默认距离超过500kb的marker之间不做分析,缺失率超过50%的SNP被去除。Loading的过程中其实在进行计算。
计算结果有4栏:LD Plot、Haplotypes、Check Marker、Tagger。
LD:颜色由浅至深(白——红),表示连锁程度由低到高,深红色表示完全连锁,即r2=1。在方块上点击右键,可以看到连锁具体信息,包括R2、D’、LOD、基因型频率等。具体的r2计算值可以file中导出。
Haplotypes:单倍型
Check Marker:对marker质量进行检查,比如缺失率,MAF等,可以自己设置筛选阈值。
Tagger:可以进一步选择标签SNP
如果SNP数量有几十万或更多,直接默认运行程序很可能会java报错超过内存限制(java.lang.OutOfMemoryError或者GC overhead limit exceeded),需要在命令行添加参数运行,比如java -Xmx4096m _Xms2048m -jar Haploview.jar。
对于万级以下个marker,默认运行内存足够。使用Haploview做全基因组SNP的LD分析体验效果很差,并不推荐,但对于一般遗传标记(AFLP、SSR、RAPD等)还是值得一试的。