【基于R语言群体遗传学】-13-群体差异量化-Fst

在前几篇博客中,我们深度学习讨论了适应性进化的问题,从本篇博客开始,我们关注群体差异的问题,建议大家可以先看之前的博客:群体遗传学_tRNA做科研的博客-CSDN博客


一些新名词

Meta-population:An interconnected group of smaller populations.

亚种群:一个由较小的种群相互连接组成的群体。

Deme:Asingle population within a meta-population.

局域种群:亚种群内的单个种群。

Sub-population:A group of individuals within a population that are more likely to breed with each other than members of other sub-populations.

子种群:种群中的一组个体,它们彼此之间比其他子种群的成员更有可能进行繁殖。

分化的量化(quantifying divergence)-Fst

群体遗传学的一个共同关注点是量化可识别种群之间的差异。衡量种群间差异的一个关键指标是FST,它已经被反复定义和重新定义。FST是由Sewall Wright推导出的F统计量之一(更多信息请参见Weir 2012),广义上是对两个相关种群之间遗传差异的量化,通常在从零(无差异)到一(完全差异)的范围内变化

从概念上讲,FST可以被理解为一种度量,它告诉我们相对于整个种群的总多样性,不同亚种群之间缺失了多少多样性。换句话说,如果FST的值接近1,这意味着亚种群之间的遗传差异很大,每个亚种群可能具有独特的遗传特征;而如果FST的值接近0,则意味着亚种群之间的遗传差异很小,它们在遗传上是相似的。

FST的计算通常涉及到比较种群内的遗传变异与种群间的遗传变异。一个高的FST值表明种群间的遗传变异占总体遗传变异的比例较高,即种群间的差异较大;而一个低的FST值则表明种群内的遗传变异占主导,种群间的差异较小。


根据哈代-温伯格定律,我们知道当有等位基因频率时,我们可以预期的多样性(即杂合子)的数量是2p(1-p) 。如果我们有多个亚种群 的等位基因频率测量,我们可以说我们总的预期杂合性**(HT)**是:

其中p是所有亚种群的平均等位基因频率。我们可以将这个值与我们在每个亚种群内观察到的杂合性水平(HS)的平均值进行对比,如果我们有两个亚种群,那么HS将是 :

其中p1是亚种群1中的等位基因频率,p2是亚种群2中的等位基因频率,H1和H2是每个亚种群内杂合性的相应度量。

我们可以可视化Hs与Ht:

R 复制代码
# 定义两个群体的等位基因频率
p1 <- 0.15 # 第一个群体的等位基因频率
p2 <- 0.7  # 第二个群体的等位基因频率

# 计算每个群体的杂合子比例(遗传多样性)
h1 <- 2*p1*(1-p1) # 第一个群体的杂合子比例
h2 <- 2*p2*(1-p2) # 第二个群体的杂合子比例

# 计算两个群体等位基因频率的平均值
p_ave <- (p1+p2)/2 # 平均等位基因频率

# 计算在平均等位基因频率下的杂合子比例(总体遗传多样性)
ht <- 2*p_ave*(1-p_ave) # 总体的杂合子比例

# 计算两个群体杂合子比例的平均值(种群的遗传多样性)
hs <- (h1 + h2)/2 # 种群的杂合子比例

# 绘制等位基因频率与杂合子数量的曲线图
curve(2*x*(1-x), from=0, to=1, xlab="Allele frequency", # x轴为等位基因频率,y轴为杂合子数量
      ylab="Heterozygotes", lwd=2) # 线条宽度为2

# 在图中标出两个群体的具体点
points(c(p1,p2), c(h1,h2), cex=2, pch=16) # 使用大小为2的点,形状为16

# 标出平均等位基因频率下的种群和总体杂合子比例
points(c(p_ave,p_ave), c(hs,ht), cex=2) # 使用大小为2的点

# 在图中添加文本标签
text(x=p1, y=h1-0.03, "H1") # 在第一个群体杂合子比例下方添加标签H1
text(x=p2, y=h2-0.03,"H2") # 在第二个群体杂合子比例下方添加标签H2
text(x=p_ave, y=hs-0.03,"Hs") # 在种群杂合子比例下方添加标签Hs
text(x=p_ave+0.03, y=ht-0.03, "Ht") # 在总体杂合子比例下方添加标签Ht

# 添加连接线
lines(c(p1,p2), c(h1,h2), lty=2) # 连接两个群体杂合子比例的虚线
lines(c(p_ave,p_ave), c(hs,ht)) # 连接种群和总体杂合子比例的实线

我们可以观察到预期杂合度(heterozygosity)的2p(1-p)曲线呈向下凹的形状。这种曲线的特性意味着,当两个群体具有不同的等位基因频率,从而有不同的预期杂合度 (如图中的H1和H2所示)时,它们之间的组合中点(即图中虚线上的HS)总是低于预期的总杂合度(HT) 。 这个现象揭示了群体遗传学中的一个重要原理:当考虑多个群体的遗传多样性时,简单地取其等位基因频率的算术平均值并不能准确反映整体的遗传多样性 。实际上,由于2p(1-p)曲线的凹性质,两个群体等位基因频率的平均值所对应的杂合度(HS)会低于这两个群体合并后的实际总杂合度(HT)。换句话说,合并群体的总遗传多样性高于基于各自群体等位基因频率平均值预测的遗传多样性。 这一发现对于理解不同群体间的遗传交流、保护生物多样性以及制定合理的保护策略具有重要意义。它提示我们在评估和比较不同群体的遗传多样性时,不能仅仅依赖于等位基因频率的简单平均值,而应该综合考虑各群体的实际遗传构成。


Fst是一个衡量群体间遗传分化的指标,它描述的是群体内与群体间遗传变异的比例。具体来说,Fst测量的是在HS(种群内平均杂合度)与HT(总体杂合度)之间"缺失"的杂合度部分,并且这个差值是通过HT来标准化的:

在群体遗传学中,衡量两个群体间等位基因频率差异的最大情况是一个群体为100%,另一个群体为0%。在这种情况下,不存在杂合子,因此我们的H1和H2测量值都将是零。根据FST的计算公式,FST = 1 - (HS/HT),在这种极端情况下,HS(种群内平均杂合度)为0,HT(总体杂合度)为0.5,所以FST = 1 - (0/0.5) = 1。这表明两个群体间存在完全的遗传分化,没有任何遗传物质的交流。 另一方面,如果两个亚群体之间的等位基因频率测量值完全相同,那么H1和H2也将完全相同。无论我们如何计算平均值,H1 = H2 = HS = HT,这意味着(HS/HT)将等于1,从而使得FST = 0。这表示两个群体间没有遗传分化,它们在遗传上是相同的。 FST的这种性质使其成为衡量群体间遗传差异的一个非常有用的工具。FST值为1表明群体间完全隔离,没有任何基因流;而FST值为0则表示群体间完全混合,遗传上没有区别。

实际FST值通常介于0和1之间,反映了不同程度的遗传分化。我们使用之前的例子来说明:

R 复制代码
library(popgenr)
data(snp)
h_exp <- 2*snp$p*(1-snp$p)
fst <- (h_exp-snp$het) / h_exp
mean(fst)

FST是一个衡量群体间遗传分化的指标,它量化了不同群体之间的遗传差异,但本身并不提供这些差异产生的原因。群体间的遗传差异可能由多种因素造成,例如迁移率较低并伴有遗传漂变、近期的共同祖先后发生隔离和漂变、或者某些位点上强烈的选择作用导致不同地点的适应性变化等。 FST值的高低可以反映出群体间遗传结构的差异程度,但它并不直接说明这些差异是如何形成的。例如,一个较高的FST值可能指示群体间存在较少的基因流动,但这并不一定意味着迁移率低是唯一的原因。同样,群体间共享的近期祖先历史也可能导致遗传分化,而这种分化并不一定与迁移率直接相关。此外,如果某些基因位点受到强烈的选择压力,而这些位点在不同地理位置的适应性有所不同,那么这也可能导致FST值升高,尽管这种选择作用并不是由迁移率直接引起的。 因此,虽然FST是一个有用的工具来量化群体间的遗传差异,但要理解这些差异背后的生物学过程和机制,通常需要结合其他遗传学、生态学和进化生物学的研究方法和数据。这可能包括对迁移模式的直接研究、对群体历史的推断分析,以及对自然选择作用的检测等。通过这些综合的方法,研究者可以更全面地揭示导致群体遗传分化的复杂因素。

下一篇博客将讨论种群回溯祖先相关内容。

相关推荐
源码哥_博纳软云6 分钟前
JAVA同城服务场馆门店预约系统支持H5小程序APP源码
java·开发语言·微信小程序·小程序·微信公众平台
学会沉淀。13 分钟前
Docker学习
java·开发语言·学习
西猫雷婶44 分钟前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv
kiiila44 分钟前
【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)
开发语言·qt
小_太_阳1 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾1 小时前
scala借阅图书保存记录(三)
开发语言·后端·scala
唐 城2 小时前
curl 放弃对 Hyper Rust HTTP 后端的支持
开发语言·http·rust
码银3 小时前
【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割
开发语言·python
从善若水3 小时前
【2024】Merry Christmas!一起用Rust绘制一颗圣诞树吧
开发语言·后端·rust
2401_858286114 小时前
115.【C语言】数据结构之排序(希尔排序)
c语言·开发语言·数据结构·算法·排序算法