因为最近群里有小伙伴问plink使用和数据处理的问题,鉴于plink在SNP数据的处理上发挥的作用那真不是一般大,小Q想着那就更新一个系列来讲解plink以及它在数据处理上的应用吧。以下都是基于小Q实际操作的经验写的,如有缺的地方可以给小Q留言哦!
- 小建议:
如果是新手学习plink可以先看看plink1.04的网页版说明文档,http://zzz.bwh.harvard.edu/plink/
因为这个说明文档是按照特定章节排版的,比plink1.9排版好些,学起来会更方便些。
plink输入文件格式
自从plink更新到1.9/2.0以后,它接受多种输入格式,小Q常用的是它自己的标准格式以及VCF格式,更多其他的格式请见http://www.cog-genomics.org/plink/1.9/input 。这里简单介绍它自己的标准格式,
请注意,以下的文件都是成对同时出现的,即有一个另一个也必须存在,plink才能识别。
假设样本都是二倍体,总共是2个样本,2个SNP
- ped & map
ped: 家庭ID 样本ID 父亲ID 母亲ID 性别 疾病状态 SNP1的基因型 SNP2的基因型
ind1FID ind1IID 0 0 0 0 A G G T
ind2FID ind2IID 0 0 0 0 G G T T
map: 染色体号 SNPID 遗传距离 物理距离
1 snp1 0 100
2 snp2 0 1000
- 为何会有家庭ID和样本ID之分?
plink最早是为了分析家系数据而生的,在多个家系的情况下,就用家庭编号和样本编号来独特的表示一个样本.另外会记录样本的父母信息。因此:当你的样本不是家系数据的时候,让家庭ID和样本ID相同即可.父母ID用0表示即可。 - 为什么会有疾病状态?
plink最早也记录样本的患病状态,患病=2或不患病=1。当你的数据不需要记录这样的信息的时候,用0表示即可。 - 遗传距离没有怎么办?
1)没有这个信息且你不想要这个信息的时候,用0表示即可。
2)如果你需要这个信息,可以根据物种的遗传图谱+插值法进行计算,或者根据1Mb=x cM的换算公式进行换算。 - 性别信息怎么办?
1)没有这个信息且你不想要这个信息的时候,用0表示即可。
2)如果你需要这个信息,1-男性,2-女性,other-unknown(一般我用0表示)
- bed & bim & fam
bed:二进制的基因型数据
bim:染色体号 SNPID 遗传距离 物理距离 碱基1 碱基2
1 snp1 0 100 A G
2 snp2 0 1000 G T
fam:家庭ID 样本ID 父亲ID 母亲ID 性别 疾病状态
ind1FID ind1IID 0 0 0 0
ind2FID ind2IID 0 0 0 0 - tped & tfam
tped: 染色体号 SNPID 遗传距离 物理距离 样本1基因型 样本2基因型
1 snp1 0 100 A G G G
2 snp2 0 1000 G T T T
tfam: 家庭ID 样本ID 父亲ID 母亲ID 性别 疾病状态
ind1FID ind1IID 0 0 0 0
ind2FID ind2IID 0 0 0 0
需要注意的点
- 对于SNP数据,plink只接受且识别二等位位点,比如A/G,如果是多等位位点,比如A/G/T,plink会报错。
- 如果使用vcf文件作为输入,我经常用的参数是:--snps-only --biallelic-only strict --set-missing-var-ids @:# ,大家可以参考,至于每个参数是什么含义,下章我会介绍。
下期预告:
- 第2篇-如何修改plink里的样本信息
- 第3篇-如何利用plink提取部分数据
- 第4篇-如何利用plink合并不同来源的数据
......
喜欢的小伙伴,点个喜欢或赞赏下吧!
转载请标明出处和作者 ^+^
撰文 & 编辑:VickieQ
校对:HCLO4 & 花毛