群體遺傳學統計指標——種群核苷酸多樣性

理論

種群核苷酸多樣性,顧名思義指的就是核苷酸多樣性,值越大說明核苷酸多樣性越高。通常用于衡量群體內的核苷酸多樣性,也可以用來推演進化關系。計算公式為:


核苷酸多樣性計算公式

計算群體的π值,可以理解成先把群體內每個樣本兩兩求解,再求得群體的均值。

計算的軟件最常見的是vcftools,也有對應的R包PopGenome。通常是選定某一基因組區域,設定好窗口大小,然后滑動窗口進行計算。

使用VCFTOOLS計算種群核苷酸多樣性

VCF文件處理

給VCF文件添加ID

SNP data通常都是以VCF格式文件呈現,老規矩,拿到VCF文件的第一件事情就是添加各個SNP位點的ID。

先看一下最開始生成的VCF文件:

原始VCF文件

可以看到,ID列都是".",需要我們自己加上去。我用的是某不知名大神寫好的perl腳本,可以去我的github上下載(https://github.com/Wanyi-Huang/VCF_add_id),用法:

perl path2file/VCF_add_id.pl YourDataName.vcf YourDataNameWithId.vcf

當然也可以用excel手工添加。添加后的文件如下圖所示(格式:CHROMID__POS):

添加ID后的VCF文件

SNP位點過濾

原始Call出來的SNP實在是太多了,而且有一些低頻位點會影響后續的分析(軟件有時候還會報錯),不僅會影響速度,也會影響最后結果的準確性,因此我們去掉他們。此處用到強大的plink軟件,用法:

plink --vcf YourDataNameWithId.vcf --maf 0.05 --geno 0.2 --recode vcf-iid -out YourDataNameWithId-maf0.05 --allow-extra-chr

參數解釋:--maf 0.05:過濾掉次等位基因頻率低于0.05的位點;--geno 0.2:過濾掉有20%的樣品缺失的SNP位點;--allow-extra-chr:我的參考數據是Contig級別的,個數比常見分析所用的染色體多太多,所以需要加上此參數。

準備樣本ID文件

非常簡單,把某群體的全部樣本ID放在一個TXT文件里就行,注意要每一行一個ID。

計算核苷酸多樣性(π)

vcftools --vcf YourDataNameWithId.vcf --keep YourDataName.txt --window-pi 10000 --out YourDataName_pi

--window-pi?指定窗口的大小,這里我設置了10000,具體大小根據基因組大小選擇

--out?指定輸出文件的前綴名

數據可視化

數據可視化就是花式展示你的結果。在多樣性分析中,π值越大表明群體中該位點的核苷酸多樣性越大,反之亦然。那么我們所畫的圖,應該要展示基因組各個區域π值的大小。因此,我們可以選擇散點圖or折線圖。


某文章描述群體核苷酸多樣性使用的散點圖

畫散點圖的方法,之前在群體分歧度檢驗中已經分享過啦,各位移步參考。

那如用R何畫折線圖嘞?

我的數據集如下圖所示:


用于畫圖的數據表pi.txt

注:第一列為位置信息;第二列為對應位置的pi值;第三列為需要的顏色;最后一列為染色體位置信息(非必要)。

分享一下我寫得一個R流程:(大家需要自己根據自己的數據就行調整,但是萬變不離其中,你們可以的!)

#讀入數據;

dt1<- read.delim("pi.txt",sep="\t", header = T, check.names = F)

# 加載ggplot2包;

library(ggplot2)

#定義染色體位置。

#我分析的物種有8條染色體,我將所有的染色體都串起來作圖,因此需要標出每條染色體的中間位置在哪。

br = c(440000, 1370000, 2410000, 3515000, 4610000,5800000,7095000,8399791)

la = c("1","2","3","4","5","6","7","8")

#自定義圖表主題,對圖表做精細調整;

mytheme<-theme(panel.grid.major =element_blank(),

? ? ? ? ? ? ? ? panel.grid.minor = element_blank(),

? ? ? ? ? ? ? ? panel.background = element_blank(),

? ? ? ? ? ? ? ? panel.border = element_blank(),

? ? ? ? ? ? ? ? axis.line.y = element_line(color = "black"),

? ? ? ? ? ? ? ? axis.line.x = element_line(color = "black"),

? ? ? ? ? ? ? ? #axis.title.x = element_text(size = rel(1.2)),

? ? ? ? ? ? ? ? axis.title.y = element_text(size = rel(1.2)),

? ? ? ? ? ? ? ? axis.text.y = element_text(size=rel(1.2),color="black"),

? ? ? ? ? ? ? ? #axis.text.x = element_text(size=rel(1.2),color="black"),

? ? ? ? ? ? ? ? plot.margin=unit(x=c(top.mar,right.mar,bottom.mar,left.mar),units="inches"))

#繪制

pa<-ggplot(data=dt1, mapping = aes(x=No,y=pop1))+geom_line(color=dt1$Color1,size=1)

#設置x軸范圍,避免點的溢出繪圖區;

pa<-pa+scale_x_continuous(limits = c(-1000, 9230000),breaks = br,labels = la)

#設置y軸范圍

pa<-pa+scale_y_continuous(limits = c(-0.0005,0.01),breaks = c(0,0.002,0.004,0.006,0.008,0.010),labels = c("0.0","2.0","4.0","6.0","8.0","10.0"))

#設置圖例、坐標軸、圖表的標題;

pa<-pa+labs(y="Pi (10e-3)",x=NULL)

#自定義圖表主題,對圖表做精細調整;

pa<-pa+mytheme

#出圖

pa


參考:

Vcftools Manual

Comparative genomics revealed adaptive admixture in Cryptosporidium hominis in Africa

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容