目的:對群體結構和親緣關系進行評估以確定使用的統計模型和獲得相應的矩陣
評估內容(遺傳上差異過大應剔除,相似性高的保留其一)
Structure是與PCA、進化樹相似的方法,就是利用分子標記的基因型信息對一組樣本進行分類,分子標記可以是SNP、indel、SSR… …當然,對于重測序應用的最多的還是SNP。進化樹和PCA本質上都是計算樣本序列間的差異程度,然后利用兩兩差異度聚類(進化樹)或降維(PCA)來實現對樣本的分類。structure本質上使用了與PCA、進化樹完全不同的思路。
一、群體結構:構建系統發育樹(必備)
同一物種內序列差異不大構建NJ樹(mega),序列差異較大,不同種構建ML樹(RAxML),貝葉斯樹(ExaBayes)
常用的編輯和顯示樹圖的軟件有TreeView、FigTree、MEGA、ITOL(http://itol.embl.de/)、R包(ggtree、APE)等。
進化樹美化:https://itol.embl.de/
二、主成分分析
參考:「群體遺傳學實戰」第二課: 畫出和文章幾乎一樣的PCA圖
主成分分析(PCA)是一種線性降維方法,能從紛繁復雜的數據中抽離出關鍵因素,用來區分不同的樣本。這里介紹以下三款:
Plink:https://www.cog-genomics.org/plink/
GCTA:https://cnsgenomics.com/software/gcta/
EIGENSOFT:https://github.com/DReichLab/EIG
無論使用哪款軟件,始終都要記得它們最初為人類基因組設計,因此一定要關注和染色體有關的參數。例如Plink一定要加上?--allow-extra-chr允許非標準的染色體編號。
1、plink進行PCA分析
#將vcf文件轉換為plink的ped和map格式?
plink --vcf watermelon_414acc_SNP2.vcf.gz --recode --out watermelon_414acc --const-fid --allow-extra-chr
#將ped和map轉換為bed、bim、fam格式
plink --allow-extra-chr --file watermelon_414acc --noweb --make-bed --out watermelon_414acc??
進行PCA計算
plink --allow-extra-chr --threads 20 -bfile watermelon_414acc --pca 20 --out watermelon_414acc
這一步會得到兩個文件,一個是以.eigenval結尾的文件,記錄特征值,用來計算每個PC所占的比重。另一個是.eigenvec結尾的文件,記錄特征向量,用于坐標軸。隨后用ggplot2繪制pca圖。
用plink的EIGENSOFT可以在分析時自動剔除離群值、做LD擬合等等。經過初步的分析,確定要剔除的離群值后,用plink的--keep和--remove參數剔除個體,值分析特定樣本。它們要求輸入文件為兩列,一列是樣本所在的群體編號,一列是樣本編號。以剔除CN樣本為例,它的樣本編號為WM439,所在群體是0。代碼如下:
echo '0\tWM439' > remove.txt
plink --remove remove.txt --allow-extra-chr -bfile watermelon_414acc --pca 20 --out watermelon_414acc_no_cn?
2、GCTA進行PCA分析
要求染色體的編號一定得是數字,不然在讀取bim結尾的文件時,一定會報illegal chr number錯誤。
三、Admixture繪制群體結構圖
參考:GWAS 學習之admixture、、Admixture:一款快速分析群體遺傳結構的軟件、、【一起學生信】群體結構圖形—structure堆疊圖
群體遺傳學中測出很多個個體,得到了最終的SNP vcf文件,需要將其分成群體,看哪幾個物種聚在一起。一般使用的軟件是STRUCTURE,但是STREUTURE運行速度極慢,后面frappe軟件提升了速度,但是也不是很快;admixture憑借其運算速度,成為了主流的分析軟件。
admixture的下載:http://software.genetics.ucla.edu/admixture/download.html? ?不需要安裝,解壓出來即可使用
admixture輸入文件:經plink處理后的.bed文件
1、創建PLINK?的-bed?文件
plink --noweb --file bw.chip --geno 0.05 --maf 0.05 --mind 0.05 --make-bed --out bw.chip? #這里包含了數據質控過濾
生成bed、bim、fam三種文件
2、用Admixture軟件構建群體遺傳結構和群體世系信息
K是樣本所包含的亞群或者祖先數,若不知理想的K值,可以設定K=1,2,3,4,5,用admixture進行計算,命令如下:
for K in 1 2 3 4 5 6 7; do admixture --cv hapmap3.bed $K | tee log${K}.out; done
3、提取出CV值,確定最佳分群數
grep -h CV log*.out
提取CV值后,可以得到上一步得到的不同K值的錯誤率數據,一般認為CV error最小值為最佳K值。
4、使用R畫圖
tbl=read.table("hapmap3.3.Q")
pdf("/USER/XXX/Project/xj/reseq/result/11.admixture/Q7.pdf")
barplot(t(as.matrix(tbl)), col=rainbow(3),xlab="Individual #", ylab="Ancestry", border=NA)?
dev.off()
本例繪制的為K=3時的圖,結果如下(供參考)