PLINK用法匯總

<<寫在前面>>

PLINK 是GWAS分析中最常用的軟件之一,也常用于指代其標(biāo)準(zhǔn)基因型數(shù)據(jù)格式(PLINK 格式)。


軟件版本

PLINK v1.9.0-b.7.7 64-bit (22 Oct 2024)

官網(wǎng):https://www.cog-genomics.org/plink/1.9/

???本文所有命令均基于PLINK v1.9,不適用于PLINK v2.0。


PLINK的主要功能模塊

1. 數(shù)據(jù)格式轉(zhuǎn)換

2. 基因型數(shù)據(jù)質(zhì)控

3. 統(tǒng)計(jì)分析

4. SNP / 樣本提取與過濾



<<進(jìn)入主題>>

1. 數(shù)據(jù)格式轉(zhuǎn)換

1.1 PLINK → VCF(文本文件)

plink? --bfile? snp? ?--recode? ?vcf? ?--out? ?snp

輸出:snp.vcf

1.2 VCF → PLINK(二進(jìn)制文件)

plink??--vcf? ?snp.vcf? --make-bed? ?--out? ?snp

輸出:snp.bed + snp.bim + snp.fam

1.3 VCF → PED/MAP(文本文件)

plink ?--vcf?? snp.vcf? ??--recode? ?--out? snp

輸出:snp.ped + snp.map

1.4?PLINK → PED/MAP(文本文件)

plink??--bfile? snp? ?--recode??--out? snp

輸出:snp.ped + snp.map



2. 基因型數(shù)據(jù)質(zhì)控(QC)

2.1 Sample-level QC

2.1.1?樣本缺失率(missingness / call rate)

?? PLINK 在執(zhí)行 --mind?參數(shù)時(shí),會(huì)內(nèi)部自動(dòng)計(jì)算每個(gè)樣本的缺失率,并按閾值過濾樣本,因此無(wú)需預(yù)先計(jì)算(即使基因型文件中沒有提供)。

plink --bfile? test? --mind 0.1 --make-bed --out? test_qc

--mind 0.1,刪除基因型缺失率超過 10% (call rate < 90%)的樣本。

?? 只影響樣本,不影響 SNP


2.1.2?雜合度異常(heterozygosity)

plink --bfile data --het

F 值代表:雜合度系數(shù)

F > 0??純合偏多

F ≈ 0 正常

F < 0??雜合偏多

F ~0.01 – 0.05?是非常典型、非常健康的分布

F > 0.15–0.20:可疑(近交 / batch / ancestry)

F < ?0.15:高度懷疑污染或樣本混合

常見經(jīng)驗(yàn)閾值:|F ? mean(F)| > 3 SD?→ 異常樣本


2.1.3?重復(fù)樣本 (IBD檢查)

識(shí)別重復(fù)樣本,一、二級(jí)親屬(如果存在,通常保留一個(gè)樣本)

plink --bfile data --genome

Z0,兩個(gè)樣本共享 0 條 IBD (identity-by-descent)等位基因的概率

????????Z0 ≈ 1 → 完全不相關(guān) ;Z0 ≈ 0 → 高度相關(guān) / 重復(fù)

Z1,共享1 條 IBD 等位基因的概率,一般在親子 / 一度親屬中較高

Z2,共享2 條 IBD 等位基因的概率,Z2 ≈ 1?→ 重復(fù)樣本 / 單卵雙胞胎

PI_HAT,總體親緣系數(shù)(PI_HAT=Z2+0.5×Z1)

????????PI_HAT?~1?→?重復(fù)樣本 / 單卵雙胞胎

? ??????PI_HAT?~0.5?→?一度親屬(親子/同胞)

? ??????PI_HAT?~0.25?→?二度親屬

? ??????PI_HAT?~0?→?兩個(gè)樣本基本無(wú)關(guān)(unrelated)


2.2 SNP-level?QC

2.2.1?SNP 缺失率 (Missingness)

?? PLINK 在執(zhí)行?--geno 參數(shù)時(shí),會(huì)內(nèi)部自動(dòng)計(jì)算每個(gè) SNP 的缺失率,并按閾值過濾 SNP,因此無(wú)需預(yù)先計(jì)算(即使基因型文件中沒有提供)。

# 1.?計(jì)算并輸出缺失率,只看看分布,不做過濾(可選)

plink --bfile test --missing

--missing,只計(jì)算并輸出每個(gè) SNP 的缺失率(可選)

?? 在輸出文件中,

*.imiss 里的 F_MISS = 樣本缺失率?

*.lmiss 里的 F_MISS = SNP 缺失率

# 2. 過濾(一步到位,完全沒問題)

plink --bfile test --geno 0.05?--make-bed --out test_qc

--geno 0.05,如果某個(gè)SNP在所有樣本中缺失大于5%,刪除該SNP (常用閾值:geno ≤ 0.05)


2.2.2?次要等位基因頻率(MAF,Minor Allele Frequency)

plink --bfile test --maf 0.05 --make-bed --out test_qc

--maf 0.05,如果某個(gè)SNP的次要等位基因頻率小于0.05,刪除該SNP?(常用閾值:0.01或0.05)


2.2.3?Hardy–Weinberg 平衡(HWE)

?? PLINK 在執(zhí)行 --hwe?參數(shù)時(shí),會(huì)內(nèi)部自動(dòng)計(jì)算每個(gè) SNP 的 HWE P-value,并按閾值過濾 SNP,因此無(wú)需預(yù)先計(jì)算(即使基因型文件中沒有提供)。

# 1. 計(jì)算并輸出HWE?P-value,只看看分布,不做過濾(可選)

plink --bfile?data?--hardy?--out data

--hardy,只計(jì)算并輸出每個(gè) SNP 的 HWE 統(tǒng)計(jì)量(可選)

輸出文件: data.hwe,包含每個(gè) SNP 的 HWE P-value

# 2. 過濾(一步到位,完全沒問題):用于刪除由于分型錯(cuò)誤或批次效應(yīng)帶來(lái)的異常位點(diǎn)

plink --bfile data --hwe 1e-6 --make-bed --out?qc_hwe

--hwe 1e-6,內(nèi)部計(jì)算并過濾,如果某個(gè)SNP 的 HWE?P-value 小于 1e-6,刪除該SNP?(常用閾值:?1e-6,病例樣本可放寬)


2.2.4?次要等位基因計(jì)數(shù)(MAC,Minor Allele Count?)

?? 小樣本強(qiáng)烈推薦,比 MAF 更穩(wěn)?。╯c-eQTL 常用)

一行代碼實(shí)現(xiàn):Plink內(nèi)部自動(dòng)計(jì)算每個(gè)SNP的MAC + 自動(dòng)刪除MAC < 20 的SNP

plink --bfile data --mac 20 --make-bed --out qc_mac

--mac 20,僅保留 MAC ≥ 20 的 SNP

?? INFO → MAC:如果是Imputation結(jié)果,先按INFO過濾,再按MAC過濾


2.2.5 典型QC組合

應(yīng)用場(chǎng)景:對(duì)基因型數(shù)據(jù)執(zhí)行一套標(biāo)準(zhǔn)的質(zhì)量控制(QC)流程。

在樣本層面,--mind 0.1用于刪除基因型缺失率大于 10% 的低質(zhì)量樣本;在位點(diǎn)層面,--geno 0.05用于去除在所有樣本中缺失率超過 5% 的 SNP,--maf 0.05用于過濾次要等位基因頻率低于 5% 的低頻變異,而--hwe 1e-6則用于剔除在?Hardy–Weinberg 平衡檢驗(yàn)中顯著偏離(P < 1×10??)的異常位點(diǎn)。

經(jīng)過上述過濾后,保留下來(lái)的高質(zhì)量基因型數(shù)據(jù)被重新導(dǎo)出為 PLINK 二進(jìn)制格式(--make-bed),并保存為新的數(shù)據(jù)集,用于后續(xù)分析。

plink --bfile data? \

????--mind 0.1 \? ? ? ?

? ? --geno 0.05 \????????

????--maf 0.05?\? ??

????--hwe 1e-6 \? ?

????--make-bed \????????

????--out clean

???需要注意的是,imputation 置信度較低的變異位點(diǎn)必須在 VCF 階段基于 imputation quality(R2 ≥ 0.8)進(jìn)行過濾,該步驟不包含在上述 PLINK 命令中。



3. 統(tǒng)計(jì)分析

3.1 連鎖不平衡(LD)分析

應(yīng)用場(chǎng)景:當(dāng)已經(jīng)識(shí)別出一組?lead SNP?后,需要確定哪些周圍 SNP可能與 lead SNP 處于高度連鎖狀態(tài)。該命令基于1000 Genomes(hg38)參考基因型數(shù)據(jù),以指定的 lead SNP 為中心,在每個(gè) lead SNP 上下游 ±1 Mb 的窗口內(nèi)計(jì)算成對(duì) LD(以r2衡量),并篩選出與 lead SNP 高度連鎖(r2≥ 0.8)的變異位點(diǎn)。

plink \

????--bfile??1KG_PCA5_hg38?\

????--r2 \

????--ld-snp-list? ?lead_snp.txt? \

????--ld-window-kb? 1000? \

????--ld-window? 99999? \

????--ld-window-r2? 0.8? \

????--out? ?mydata

--bfile,指定用于 LD 計(jì)算的參考基因型數(shù)據(jù)集前綴(BED/BIM/FAM 格式),這里為 1000 Genomes Project 的 hg38 版本數(shù)據(jù)。

--r2,指定以r2作為 LD 指標(biāo),計(jì)算 SNP 之間的成對(duì)連鎖不平衡。

--ld-snp-list,提供待分析的目標(biāo) SNP 列表(通常為 GWAS 或 QTL 分析中識(shí)別的 lead SNP),每行一個(gè) SNP ID。PLINK 將以這些 SNP 作為中心計(jì)算 LD。

--ld-window-kb 1000,設(shè)置 LD 計(jì)算的基因組窗口大小,為每個(gè) lead SNP 上下游 ±1 Mb 的區(qū)域。

--ld-window 99999,允許在窗口內(nèi)最多包含 99,999 個(gè) SNP,避免因 SNP 數(shù)量限制而截?cái)?LD 計(jì)算(默認(rèn)值為 10)。

--ld-window-r2 0.8,僅輸出r2≥ 0.8 的 SNP 對(duì),用于篩選與 lead SNP 處于高度連鎖狀態(tài)的變異(默認(rèn)閾值為 0.2;若設(shè)為 0,則輸出所有 LD 結(jié)果)。

--out,指定輸出文件前綴,生成的 LD 結(jié)果將以該前綴命名。


3.2 計(jì)算Genotype PCs (gPCs)

??先進(jìn)行 LD pruning 的原因:通過去除高度連鎖的冗余位點(diǎn),僅保留彼此相對(duì)獨(dú)立的 SNP,使每個(gè)基因組區(qū)域?qū)?PCA 的貢獻(xiàn)更加均衡;若不進(jìn)行 LD pruning,PCA 往往會(huì)被局部強(qiáng) LD 區(qū)域主導(dǎo),導(dǎo)致主成分反映局部連鎖結(jié)構(gòu)而非真實(shí)的整體群體結(jié)構(gòu)。

# Step1.?LD pruning (在 QC 后數(shù)據(jù)上挑“相對(duì)獨(dú)立 SNP”)

plink \

????--bfile clean \

????--indep-pairwise 50 5 0.2 \

????--out prune

參數(shù)解析:

--bfile clean,輸入 QC 后的 PLINK 二進(jìn)制數(shù)據(jù)集:clean.bed / clean.bim / clean.fam

--indep-pairwise 50 5 0.2,進(jìn)行 LD pruning(去除高度連鎖的冗余 SNP),輸出一組相對(duì)獨(dú)立的 SNP

????50:窗口大?。╳indow size),單位是SNP 數(shù)(一個(gè)窗口包含 50 個(gè) SNP)

????5:步長(zhǎng)(step),每次窗口向前滑動(dòng)5 個(gè) SNP

????0.2:LD 閾值(r2 閾值)。在窗口內(nèi),如果某些 SNP 兩兩相關(guān)性r2 > 0.2,PLINK 會(huì)移除其中的冗余 SNP,只保留代表性位點(diǎn)

--indep-pairwise 閾值選擇方法:

跑完后看保留的 SNP 數(shù)量;如果還有幾千到幾萬(wàn)+,一般就夠穩(wěn)了;

如果只剩幾百~一兩千SNP:太少,PCA 容易不穩(wěn) ,可以把閾值放寬,例如:50 10 0.3。


輸出文件:

prune.in 保留下來(lái)的獨(dú)立 SNP 列表(后續(xù) PCA 要用它)

prune.out:被剔除的 SNP 列表


# Step2.?PCA? (用 pruned SNP 做計(jì)算 gPCs,作為協(xié)變量)

plink \????

????--bfile clean \????

????--extract prune.in \????

????--pca header tabs \????

????--out gpc

參數(shù)解析:

--pca header tabs,計(jì)算 genotype principal components

????header:在輸出文件中添加列名

????tabs:使用制表符(tab)分隔輸出結(jié)果

輸出文件:

gpc.eigenvec:每個(gè)個(gè)體(donor)的 PC1、PC2、…,在 single-cell 分析中,把 gPC 映射到細(xì)胞的 donor_id 上即可。

gpc.eigenval:每個(gè) PC 的特征值(解釋的方差大?。?/p>


3.3 基礎(chǔ)款 GWAS 分析

#?連續(xù)性狀(線性回歸)

plink --bfile data? --pheno pheno.txt? --covar covar.txt? --linear? --out gwas

# 二分類性狀(邏輯回歸)

plink --bfile data? --pheno pheno.txt? --covar covar.txt? --logistic? --out gwas



4.?SNP / 樣本提取與過濾

4.1 按染色體提取 SNP

plink --bfile data --chr 6? --make-bed --out chr6


4.2 按 SNP ID 列表提取 / 刪除

plink --bfile data --extract id_snp.txt --make-bed --out snp

plink --bfile data --exclude id_snp.txt --make-bed --out re

--extract, 提取SNP ID

--exclude, 刪除SNP ID


4.3 按染色體物理坐標(biāo)區(qū)間提取

plink --bfile mydata --chr 2 --from-kb 5000 --to-kb 10000??--make-bed? --out region_snps

plink --bfile mydata --chr 2 --from-bp 12345678? --to-bp 23456789? --make-bed? --out region_snps


4.4 樣本提取 / 刪除

plink --bfile a --keep id_sample.txt --make-bed --out kept

plink --bfile a --remove id_sample.txt --make-bed --out removed

--keep, 提取樣本ID

--remove,刪除樣本ID



5. 常用參數(shù)說(shuō)明

5.1 輸入文件格式:

--vcf,輸入文件為 VCF格式(?? 需寫完整文件名,不能只寫文件前綴;,支持.vcf 或 .vcf.gz)

--file,輸入文件格式為一般文本格式(.ped + .map)

--bfile,輸入文件格式為二進(jìn)制PLINK格式 (.bed + .bim + .fam)(?? 只需寫文件前綴)


5.2 輸出文件格式:

--out <prefix>,指定輸出文件前綴

--make-bed,指定輸出為PLINK二進(jìn)制格式 ?? 如果不加--make-bed,PLINK 不會(huì)生成 bed/bim/fam

--recode vcf,指定輸出為VCF文本格式

--recode 不帶子參數(shù)時(shí),默認(rèn)輸出 PED/MAP?文本格式(.ped + .map)


5.3 其他常用參數(shù)說(shuō)明:

--allow-extra-chr,允許輸入數(shù)據(jù)中包含非標(biāo)準(zhǔn)染色體編號(hào)或命名(如scaffold、contig、chrUn等)。當(dāng)染色體名稱不符合 PLINK 默認(rèn)規(guī)則時(shí)(常見于非人類物種或自定義參考基因組),該參數(shù)可避免程序報(bào)錯(cuò)。需要注意的是,該參數(shù)僅放寬格式限制,并不意味著這些染色體適合用于下游分析。

--chr-set 19,PLINK 默認(rèn)參考基因組?human(人類染色體集合);對(duì)于非人類物種,需顯式指定染色體集合以避免染色體編碼不匹配的問題。例如,小鼠具有 19 條常染色體。

--biallelic-only strict,僅保留嚴(yán)格意義上的雙等位基因變異,自動(dòng)刪除所有多等位位點(diǎn)(multiallelic variants)。該參數(shù)常用于 GWAS、PCA 和 LD 等分析,以保證模型假設(shè)和結(jié)果的穩(wěn)定性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容