使用ADMIXTURE估計個體的祖先成分


ADMIXTURE 是常用的群體遺傳學分析工具,可以估計個體的祖先成分。與 STRUCTURE 相比,它的速度更快。

下面介紹一下它的使用。STRUCTURE 可以輸入 Plink 或者 EIGENSTRAT 格式的數據,這里以 plink 格式的文件為例。

篩選SNP

SNP 數量太多,計算會非常慢。可以使用 plink 的 --indep-pairwise 命令,通過 LD 篩選位點:

plink --bfile data --indep-pairwise 50 10 0.1

plink --bfile data --extract plink.prune.in --make-bed --out data.pruned

尋找最佳k值

如果不知道k值設多少,可以在一系列不同的k值中進行交叉驗證,選擇最佳的k。

使用 --cv=n 參數,Admixture 會把基因型划分成均等大小的 n 份做交叉驗證。不指定 n 時,默認為5。

為了加快計算的速度,還可以通過 -jn 的命令多線程計算,其中 n 為 線程數。

比如,使用默認的 5-fold cross-validation,以 40 個線程並行,從 1 至 15 中尋找最佳的k值:

for K in $(seq 1 15); do admixture --cv data.pruned.bed $K -j40 | tee log${K}.out; done

完成計算后,獲取交叉驗證的結果:

grep -h CV log*.out

最低的 CV errors(cross-validation error)對應的 k 值,是其中最理想的選擇。比如這里最低的是 K=9 時的 0.57622,因而選擇 9 作為分析的 k 值。

利用最佳k值分析

知道最佳 k 值后,就可以直接計算群體成分。以 k=9,使用 20 個線程為例:

admixture data.pruned.bed 9 -j20

計算完成后,得到的 .Q 結尾的文件便是各個個體的群體成分。

如果只是簡單看看,直接用 R 畫個 barplot 就可以:

tbl=read.table("hapmap3.3.Q")
barplot(t(as.matrix(tbl)), col=rainbow(3),xlab="Individual #", ylab="Ancestry", border=NA)

如果要畫更詳細的圖,可以用 R 包 pophelper。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM