plink軟件是GWAS
分析中常用的軟件,它也是一個數(shù)據(jù)格式,plink里面有很多非常強大的功能,運算速度很快,是我日常分析中常用的軟件之一。
之前寫了一系列的GWAS
教程,點擊這里查看,這里繼續(xù)進行。看到我的學習筆記幫助了一些同學,我也由衷的感到高興。
這里,我將plink
軟件分為三部分:
1. 格式轉(zhuǎn)換
「第一種常用的格式:plink
格式」
- 正常格式
map
和ped
:比如a.ped,a.map - 二進制文件
bim
,bed
,fam
:比如a.bed, a.bim, a.fam
「第二種常用的格式:vcf
格式」
「第三種常用的格式:hapmap
格式」
1.1 plink正常格式轉(zhuǎn)二進制格式
比如這里有plink格式的文件,前綴為a的plink文件:
$ ls
a.map a.ped
將其轉(zhuǎn)化為二進制文件:b.bed, b.bim, b.fam
plink --file a --out b
結(jié)果:
$ ls b*
b.bed b.bim b.fam b.log
「注意:」
- 如果染色體超過23,比如30對染色體,需要設(shè)定
--chr-set 30
- 如果有非數(shù)字染色體,比如性染色體,需要設(shè)定
--allow-extra-chr
- 常用的動物都有對應的參數(shù),直接設(shè)定相關(guān)動物就行,比如牛的
--cow
,下面是其它動植物的。如果沒有對應的物種,直接設(shè)置染色體的條數(shù)以及允許非數(shù)字染色體即可。
--cow
--dog
--horse
--mouse·
--rice
--sheep
1.2 plink二進制格式轉(zhuǎn)為正常格式(map和ped)
這里有plink格式的文件,前綴為b的plink二進制文件:
$ ls b*
b.bed b.bim b.fam b.log
將其轉(zhuǎn)化文件:c.map, c.ped
plink --bfile b --recode --out c
「注意:」
- --bfile,因為輸入文件b*為二進制,所以用--bfile,如果是一般格式,用--file即可
- --recode,要輸出正常格式,所以用--recode指定,如果不加這個參數(shù),默認是輸出二進制文件
結(jié)果:
$ ls *c*
c.hh c.log c.map c.ped
1.3 正常plink文件轉(zhuǎn)為vcf文件
這里有plink格式的文件,前綴為c的plink二進制文件:
$ ls *c*
c.hh c.log c.map c.ped
將其轉(zhuǎn)化文件:d.vcf
plink --file c --recode vcf --out d
「注意:」
- --file,用--file指定正常plink格式的文件
文件預覽:
1.4 二進制plink文件轉(zhuǎn)為vcf文件
和正常plink文件類似,除了--file
變?yōu)?code style="overflow-wrap: break-word;margin-right: 2px;margin-left: 2px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(53, 148, 247);background: rgba(59, 170, 250, 0.1);padding-right: 2px;padding-left: 2px;border-radius: 2px;height: 21px;line-height: 22px;">--bfile即可。
現(xiàn)有文件:
$ ls b*
b.bed b.bim b.fam b.log
將二進制文件轉(zhuǎn)化為vcf文件:
plink --bfile b --recode vcf --out e
結(jié)果預覽:
1.5 vcf文件轉(zhuǎn)化為plink文件
「轉(zhuǎn)化為正常plink文件:」
現(xiàn)有文件:
$ ls e.vcf
e.vcf
plink --vcf e.vcf --recode --out f
「注意:」
- --vcf 需要文件名完整,不能只寫前綴,所以這里要寫
--vcf e.vcf
保存為二進制文件:
plink --vcf e.vcf --out g
結(jié)果:
$ ls g*
g.bed g.bim g.fam g.log
2. 常用質(zhì)控
2.1 SNP缺失質(zhì)控
?無論是測序還是芯片,得到的基因型數(shù)據(jù)要進行質(zhì)控,而對缺失數(shù)據(jù)進行篩選,可以去掉低質(zhì)量的數(shù)據(jù)。如果一個個體,共有50萬SNP數(shù)據(jù),發(fā)現(xiàn)20%的SNP數(shù)據(jù)(10萬)都缺失,那這個個體我們認為質(zhì)量不合格,如果加入分析中可能會對結(jié)果產(chǎn)生負面的影響,所以我們可以把它刪除。同樣的道理,如果某個SNP,在500個樣本中,缺失率為20%(即該SNP在100個個體中都沒有分型結(jié)果),我們也可以認為該SNP質(zhì)量較差,將去刪除。當然,這里的20%是過濾標準,可以改變質(zhì)控標準。
?
現(xiàn)有文件:
$ ls a*
a.map a.ped
「某個SNP在樣本中缺失大于10%,刪除該SNP:--geno
」
plink --file a --geno 0.1 --recode --out re
「某個在某個樣本中,SNP缺失大于10%,刪除該樣本:--mind
」
plink --file a --mind 0.1 --recode --out re
2.2 最小等位基因頻率過濾
?最小等位基因頻率怎么計算?比如一個位點有AA或者AT或者TT,那么就可以計算A的基因頻率和T的基因頻率,qA + qT = 1,這里誰比較小,誰就是最小等位基因頻率,比如qA = 0.3, qT = 0.7, 那么這個位點的MAF為0.3. 之所以用這個過濾標準,是因為MAF如果非常小,比如低于0.02,那么意味著大部分位點都是相同的基因型,這些位點貢獻的信息非常少,增加假陽性。更有甚者MAF為0,那就是所有位點只有一種基因型,這些位點沒有貢獻信息,放在計算中增加計算量,沒有意義,所以要根據(jù)MAF進行過濾。
?
現(xiàn)有文件:
$ ls a*
a.map a.ped
「某個SNP在的MAF小于0.01,那么該SNP刪掉:--maf 0.01
」
plink --file a --maf 0.01 --recode --out re
2.3 哈溫平衡過濾
?「卡方適合性檢驗!」 ,一個群體是否符合這種狀況,即達到了遺傳平衡,也就是一對等位基因的3種基因型的比例分布符合公式:p2+2pq+q2=1,p+q=1,(p+q)2=1.基因型MM的頻率為p2,NN的頻率為q2,MN的頻率為2pq。MN:MN:NN=P2:2pq:q2。MN這對基因在群體中達此狀態(tài),就是達到了遺傳平衡。如果沒有達到這個狀態(tài),就是一個遺傳不平衡的群體。但隨著群體中的隨機交配,將會保持這個基因頻率和基因型分布比例,而較易達到遺傳平衡狀態(tài)。應用Hardy-Weinberg遺傳平衡吻合度檢驗方法,把計算得到的基因頻率代入,計算基因型平衡頻率,再乘以總?cè)藬?shù),求得預期值(e)。把觀察數(shù)(O)與預期值(e)作比較,進行χ2檢驗。病例組和對照組的基因型分布的觀察值和預期值差異無顯著性(P>0.05),符合遺傳平衡定律.
現(xiàn)有文件:
?
$ ls a*
a.map a.ped
「某個SNP在哈溫平衡檢驗中p值小于1e-5,那么該SNP刪掉:--hwe 1e-5
」
plink --file a --hwe 1e-5 --recode --out re
3. 文件提取
文件提取,可以提取plink個數(shù)中的樣本信息,也可以提取特定的SNP位點信息。
3.1 樣本提取--keep
和--remove
「提取樣本文件的格式:」
1328 NA06989
1377 NA11891
1349 NA11843
1330 NA12341
1344 NA10850
1328 NA06984
1463 NA12877
1418 NA12275
13291 NA06986
1418 NA12272
「樣本提取」
plink --file a --keep id_sample.txt --recode --out re
完成。
$ wc -l re*
2 re.hh
32 re.log
1431211 re.map
10 re.ped
「樣本刪除」
plink --file a --remove id_sample.txt --recode --out re
完成。
3.2 SNP提取--extract
和--exclude
「提取樣本文件的格式:」
rs2185539
rs11240767
rs3131972
rs3131969
rs1048488
rs12562034
rs12124819
rs4040617
rs2905036
rs4245756
「SNP提取」
plink --file a --extract id_snp.txt --recode --out re
完成。
$ wc -l re*
179 re.hh
30 re.log
10 re.map
164 re.ped
可以看到,map共10行,共提取10個SNP
「SNP刪除」
plink --file a --exclude id_snp.txt --recode --out re
完成。