群体遗传学统计指标——群体间分歧度检验(Fst)

基本概念

Fst:群体间遗传分化指数,是种群分化和遗传距离的一种衡量方法,分化指数越大,差异越大。适用于亚群体间多样性的比较。用于衡量种群分化程度,取值从0到1,为0则认为两个种群间是随机交配的,基因型完全相似;为1则表示是完全隔离的,完全不相似。它往往从基因的多样性来估计,比如SNP。是一种以哈温平衡为前提的种群遗传学统计方法。

在群体遗传学中衡量群体间的遗传分化的程度的指标有许多种,较为常见的就是遗传分化指数(Fst),fst是由F统计量演变而来,F统计量主要有三种(FIS,FIF,FST)。Fst是针对一对等位基因,如果基因座上存在复等位基因,则需要用Gst衡量,基因差异分化系数(gene differentiation coefficient,Gst)。假定有s个地方群体,第k个地方群体相对大小为wk,k地方群体中第i个等位基因频率为qk(i),杂合体频率观察值为hk,那么,整个群体中观察到的杂合体频率平均值HI,地方群体为理想群体的期望杂合体频率平均值HS,整个群体为理想群体的期望杂合体频率HT,分别为:

FIS,是HI相对于HS减少量的比值,即地方群体的平均近交系数。

FST,是HS相对于HT减少量的比值,即有亲缘关系地方群体间的平均近交系数。

FIT,是HI相对于HT减少量的比值,即整个群体的平均近交系数。

简单来说,两个种群之间遗传差异的基本测量就是统计量FST。在遗传学中,F一词通常代表“近亲繁殖”,它倾向于减少群体中的遗传变异。遗传变异可以用杂合度来衡量,所以F一般表示群体中杂合性的减少。 FST是与它们所属的总群体相比,亚群体中杂合性的减少量。

具体可以用下面的公式表示:

Fst= (Ht-Hs)/ Ht

Hs:亚群体中的平均杂合度

Ht:复合群体中的平均杂合度

Fst值的取值范围是【0,1】,最大值为1表明两个群体完全分化,最小值为0表明群体间无分化。

在实际的研究中Fst值为0--0.05时说明群体间遗传分化很小,可以不做考虑;

为0.05--0.15时,表明群体间存在中等程度的遗传分化;

为0.15--0.25时群体间存在较大的遗传分化;

为0.25以上的时候群体间就存在很大的遗传分化了。

不用看太懂的数学公式

理论上计算Fst的步骤

1)找出每个亚群的等位基因频率。

2)查找复合群体的平均等位基因频率

3)计算每个亚群的杂合度(2pq)

4)计算这些亚群杂合度的平均值,这是HS。

5)根据总体等位基因频率计算杂合度,这是HT。

6)最后,计算FST =(HT-HS)/ HT

举个例子:

基因SLC24A5是黑色素表达途径的关键部分,其导致皮肤和毛发色素沉着。与欧洲较轻的皮肤色素密切相关的SNP是rs1426654。 SNP有两个等位基因A和G,其中G与轻度皮肤相关,在犹他州的欧裔美国人中,频率为100%。美洲印第安人与美国印第安人混血儿的SNP在频率上有所不同。墨西哥的样本有38%A和62%G;在波多黎各,频率分别为59%A和41%G,查尔斯顿的非裔美国人样本中有19%A和81%G.这个例子中的FST是什么?

手动计算Fst步骤

怎么做?

看了眼花缭乱的理论知识,感觉云里雾里的应该是正常的感受。总结一下,其实Fst分析就是看两个群体之间分化程度的一种方法,Fst值越大(越接近1)表明两个群体间分化程度越高,亲缘关系越远;Fst值越小(越接近0)表明群体间分化程度越低,亲缘关系越近。

一般我们用于分析的序列都很长,样本量也很大,靠笔算可能比西天取经还难。所以我们用强大的VCF分析工具——vcftools软件来计算Fst值。

计算FST值有两种情况:

SNP单点计算

vcftools --vcf YourDataName.vcf --weir-fst-pop population_1.txt --weir-fst-pop population_2.txt --out YourDataName_1_2

按照区域(窗口模式)计算

vcftools --vcf YourDataName.vcf --weir-fst-pop population_1.txt --weir-fst-pop population_2.txt --out YourDataName_1_2 --fst-window-size 500000 --fst-window-step 50000

其中--vcf 是输入vcf格式文件,里面保存的是全部样品的位点信息,具体细节大家自己查一查。

--weir-fst-population 这个命令是告诉计算机需要计算的群体ID名,该文件必须是txt格式,每个ID占一行,每次计算两个群之间的关系,因此需要population_1.txt和population_2.txt两个文件。

单点计算就是每个SNP位点单独计算,窗口模式就是按照预先设定的步长,多个SNP位点计算一次,两者的区别就是在后面加上窗口的大小和步长参数:--fst-window-size 500000 --fst-window-step 50000 ,这里窗口设置为500kb,步长设置为50kb,窗口的设置没有一个固定的标准和要求,都是按照自己的需要而定。

数据可视化

数据可视化换句话说就是清(hua)楚(shi)的展示你的结果。回头看看,在Fst分析中,Fst值越大(越接近1)表明两个群体间分化程度越高,亲缘关系越远;Fst值越小(越接近0)表明群体间分化程度越低,亲缘关系越近。那么我们所画的图,应该要清晰的展示两个群体Fst值的大小。因此,我们会选择散点图,它可以展示在整个基因组上,每个区域两个群体Fst值的大小。当然,如果你要比较多个群体之间的关系,也可以把整个基因组看作一个整体,用箱图展示群体之间的Fst值大小关系。

废话太多,先上个某文章的经典图片:

红番茄和粉番茄的比较

文章对它的描述如下:A major genomic signature of modern processing tomatoes and three causative variants for pink fruit. FST values for all SNP sites between tomatoes for fresh consumption and modern processing tomatoes. Blue dots above the horizontal dashed line indicate highly divergent SNPs (top 1%; FST = 0.4464).

怎么画?

我是用R画的,当然你也可以直接把数据导入EXCEL,用EXCEL画也是非常漂亮的。

我的数据整理后长这样,用到的是窗口模式返回结果的WEIGHTED_FST列数据(这里我重新命名为Sample):

整理后用于作图的数据

分享一下我写得一个R:(大家需要自己根据自己的数据就行调整,但是万变不离其中,你们可以的!)

#读入数据;

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

# 加载ggplot2包;

library(ggplot2)

#建立颜色与数据的关系,这里让点按照数据大小显示不同的颜色;

p1<-ggplot(dt1, aes(No, Sample,color= factor(Chr)))+geom_point(color=dt1$Color)

#设置x轴范围,避免点的溢出绘图区(我的基因组全长9M,8条染色体,所以根据各染色体的大小设置了如下参数)

p1<-p1+scale_x_continuous(limits = c(-1000, 9059582),breaks = c(440000, 1370000, 2410000, 3515000, 4610000,5800000,7095000,8399791),label = c("1","2","3","4","5","6","7","8"))

#设置y轴范围

p1<-p1+scale_y_continuous(limits = c(-0.005,1.005),breaks = c(0,0.25,0.50,0.75,1),labels = c("0.00","0.25","0.50","0.75","1.00"))

#设置图例、坐标轴、图表的标题;

p1<-p1+labs(y="Fst",x="Chr")

#自定义图表主题,对图表做精细调整;

top.mar=0.2

right.mar=0.2

bottom.mar=0.2

left.mar=0.2

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 = "white"),

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

              axis.title.x = element_text(size = rel(1.2),color = "black"),

              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"))

p1<-p1+mytheme

参考:

Vcftools Manual

Genomic analyses provide insights into the history of tomato breeding

Fst的计算原理与实战

你可能感兴趣的:(群体遗传学统计指标——群体间分歧度检验(Fst))