plink是进行连锁不平衡分析的常用工具之一,需要两个基本的输入文件,后缀分别为ped和map。ped文件格式在之前的文章中已经详细介绍过,这里只介绍map文件。
map文件主要保存SNP位点的名称和位置信息,内容如下
代码语言:javascript复制1 snp1 0 1
1 snp2 0 2
共4列,每一行代表一个SNP位点,第一列代表SNP位点所在染色体的名字,第二列代表SNP位点的ID,通常是rs
编号,也可以是自定义的ID;第三列代表SNP位点的遗传距离,如果没有实际数值可以用0填充;第四列代表SNP位点在染色体上的位置。
plink 进行LD分析有以下两种方式:
1. 分析指定的两个SNP位点
命令如下
代码语言:javascript复制plink --file test --ld snp1 snp2
在log信息中,会输出LD分析的结果
代码语言:javascript复制LD information for SNP pair [ snp1 snp2 ]
R-sq = 0.009 D' = 0.163
Haplotype Frequency Expectation under LE
--------- --------- --------------------
AG 0.116 0.139
CG 0.300 0.278
AT 0.217 0.194
CT 0.366 0.389
In phase alleles are AT/CG
Analysis finished: Sat Jun 23 11:48:35 2018
给出了R2和D’ 两个值,同时还给出了不同单倍型的频率。
2. 对所有的SNP位点进行分析
命令如下:
代码语言:javascript复制plink --file test --r
plink --file test --r2
--r
会直接输出所有LD分析的结果,而--r2
会根据R2值对结果进行过滤。在实际分析中,SNP位点个数是非常多的,如果不进行过滤,结果文件会非常的大。过滤的参数有以下几种
--ld-window
默认值为10,这个参数限定了一个SNP位点最多和10个其他的SNP位点进行LD分析。--ld-window-kb
默认值为1Mb, 只对距离在1Mb之内的SNP位点进行分析。--ld-window-r2
这个参数只能和--r2
参数搭配使用,默认值为0.2, 对输出结果进行过滤,只输出R2大于该参数值的LD分析结果。
输出文件为plink.ld
。这个文件给出了SNP位点间的R值或者R2值,示例如下
CHR_A BP_A SNP_A CHR_B BP_B SNP_B R
1 1 snp1 1 2 snp2 -0.108465
通过指定--ld-snp
参数,也可以只分析某个SNP位点与其他位点的连锁关系,用法如下
plink --file test --r2 --ld-snp snp1 --ld-window-kb 1000 --ld-window 99999 --ld-window-r2 0
以上两种方法更有优劣,第一种方法会给出D’和R2两个值,第二种方法只会给出R值;第一种方法一次只能分析两个SNP位点间的连锁关系,而第二种方法一次可以分析多个SNP位点间的连锁关系。
更多参数的用法请参考官方文档
http://zzz.bwh.harvard.edu/plink/ld.shtml