【基于R语言群体遗传学】-10-适应性与正选择

在之前的博客中,我们学习了哈代温伯格模型,学习了Fisher模型,学习了遗传漂变与变异的模型,没有看过之前内容的朋友可以先看一下之前的文章:

群体遗传学_tRNA做科研的博客-CSDN博客


一些新名词

(1)适应:一个平均而言在环境中变得相对更适应的过程。

Adaptation: A process of on average becoming more relatively fit in an environment.

(2)自然选择:随着时间的推移,由于自然力量的选择,变异或性状的频率发生变化。

Natural selection: The change in frequency of variants or traits over time by selection in response to natural forces.

(3)相对适合度:相对于种群平均水平,个体存活和繁殖的概率标准化。

Relative fitness: The probability of an individual surviving and reproducing standardized relative to the population average.

(4)同源性:由于共同祖先而导致的相似性。

Homology: Similarity due to shared ancestry.

(5)非整倍体:染色体数目异常,通常是由于细胞分裂过程中染色体分离不当所致。

Aneuploidy: An abnormal number of chromosomes, usually as a result of improper separation of chromosomes during cell division.

(6)基因选择:仅对一个单一遗传元素起作用的选择力,与基因型或其他遗传结构无关。

Genic selection: Selection forces operating exclusively on a single genetic element, regardless of genotype or other genetic architecture.

正选择

尽管我们一直在讨论中性变异,但早期的群体遗传学主要关注适应性的问题;具体来说,就是自然选择带来的物种进化,比如受群体中可遗传的遗传变异影响的个体平均生存和繁殖的差异 。++驱动这一过程的无数力量通常被称为模糊的"自然选择"++。

有许多与人为因素 相关的选择的例子:抗药性(Aminetzach等,2005)、工业黑化(van't Hof等,2011)、抗除草剂性(Délye等,2013)和驯化(Purugganan和Fuller,2009)。这些有时被区分为**"人工"选择** ,但两者之间的界限可能相当模糊。我们通常只使用**"选择"这个词来指代驱动等位基因频率变化的非中性过程**。 一些等位基因可能会影响生物体的生存和繁殖;携带这些等位基因的生物体可能更有可能将它们传给下一代。 在这些情况下,由于产生的表型不同,选择会影响等位基因频率在几代之间的变化。(一个经常未被提及的假设是,这些表型基于遗传无论存在多少变异,如果它不是可遗传的并且基于遗传,从进化的角度来看,选择对它是"盲目"的。)当选择的等位基因带来适应性差异时,预测的等位基因频率变化是什么,以及如何在选择面前维持遗传变异?回答这些问题仍然是当今群体遗传学的主要目标。

让我们首先考虑仅作用于单个等位基因的选择(即"单倍体"或"基因"选择)。想象一下,我们在之前镰刀型贫血病的中性漂移模拟中的等位基因a实际上赋予了某种进化优势;也许它增加了细胞表面蛋白的别构位点亲和力,从而提高了氧气运输的效率,因此在身体压力下生存几率更大。我们选择力的确切性质并不重要;我们唯一关注的是某些东西影响了这个等位基因代代相传的概率。

当我们比较两个等位基因A和a时,我们可以考虑它们各自被遗传的概率。如果这两个等位基因对适应度有完全相同的影响(即,彼此之间选择中性),那么影响它们遗传概率的唯一因素就是它们各自的起始等位基因频率。但我们现在要说的是,A等位基因比a等位基因具有额外的优势,并且具有s的适应度优势(通常被称为选择系数),因此它相对于a的适应度现在是1+s,而a等位基因的适应度为1。 如果我们考虑每一代发生的中性波动,我们现在可以在每一代中增加一个步骤,根据其相对适应度调整等位基因被传递的概率:

我们可以看到,如果选择系数为零,那么这两个值都变为1/2,我们又回到了中性遗传漂移的情况。 在基因选择下,A等位基因在下一代中的频率变化必须与其频率(p)和相对适应度(1+s)的乘积相关。但是我们必须标准化这个值,以包括a等位基因相对适应度的影响。如果a的频率是1-p,其相对适应度是1,在我们简单的单倍体选择示例中,我们可以计算出下一代(t+1)中A等位基因频率的变化。

让我们通过模拟基因选择力s随时间影响a等位基因频率变化的过程来可视化这一点。

R 复制代码
p <- 0.25 # 初始化等位基因频率为0.25
gen <- 100 # 设置模拟的代数为100代
N <- 1000 # 设置群体大小为1000个个体

# 创建一个图表,横坐标为代数(1到gen),纵坐标为等位基因频率(0到1)
plot(x=NULL, y=NULL, xlim=c(1,gen), ylim=c(0,1),
     xlab="Generations", ylab="Allele frequency")

# 对于每一代(除了第一代)
for(j in 1:(gen-1)){
  # 使用二项分布随机抽样来模拟等位基因在下一代中的数量
  # size=2*N 因为每个个体有两个等位基因
  a <- rbinom(n=1, size=2*N, prob=p[j])
  
  # 计算这一代的等位基因频率
  f <- a/(2*N)
  
  # 将新的频率添加到向量p中
  p <- c(p,f)
}

# 在图表上绘制等位基因频率随代数变化的趋势线
lines(x=1:gen, y=p, lwd=2)

A等位基因的频率在几代中没有明确的方向上下波动。在这种情况下,特定等位基因的采样仅取决于其在种群中的频率。现在,让我们探讨一下情况并非这么简单,选择也会影响等位基因频率随时间的变化。我们可以轻松地修改之前的代码,现在考虑每一代中选择和漂移的影响。为此,我们将把p(1+s)/(ps+1) 纳入我们的频率计算中。让我们给等位基因一个10%的适应度优势(s = 0.1)。

R 复制代码
p <- 0.25
gen <- 100
N <- 1000
s <- 0.1
plot(x=NULL, y=NULL, xlim=c(1,gen), ylim=c(0,1),
     xlab="Generations", ylab="Allele frequency")
for(j in 1:(gen-1)){
  #Draw the number of alleles
  a <- rbinom(n=1,size=2*N,prob=p[j])
  f <- a/(2*N) #Get the allele frequency
  #Modify the frequency by s
  p <- c(p,(f*(1+s))/(f*s+1))
}
lines(x=1:gen, y=p, lwd=2)

10%的适应度优势显然对我们的等位基因频率产生了显著影响。事实上,基因选择并不需要太多就能相当大地改变等位基因随时间的轨迹。尝试增加和减少选择系数的值,然后重新运行代码,看看随着时间的推移,什么会影响等位基因频率。选择系数也可以取负值,以表示对个体适应度有害的等位基因。我们选择五个s值的例子来强调这一点。当选择系数等于零时,我们只有遗传漂移影响着等位基因频率跨代的波动(即选择中性)

R 复制代码
gen <- 100
N <- 1000
s_values <- c(-0.05, 0, 0.05, 0.1, 0.25)
colors <- rainbow(length(s_values)) # 为每个选择系数指定一个颜色

# 初始化图形参数
plot(x=NULL, y=NULL, xlim=c(1, gen), ylim=c(0, 1),
     xlab="Generations", ylab="Allele frequency")

# 对每个选择系数循环绘图
for (i in 1:length(s_values)) {
  s <- s_values[i]
  p <- rep(0.25, gen) # 初始等位基因频率
  
  for (j in 1:(gen-1)) {
    # Draw the number of alleles
    a <- rbinom(n=1, size=2*N, prob=p[j])
    f <- a/(2*N) # Get the allele frequency
    # Modify the frequency by s
    p[j+1] <- (f*(1+s))/(f*s+1) 
  }
  
  # 绘制曲线
  lines(x=1:gen, y=p, col=colors[i], lwd=2)
}

# 添加图例
legend("topright", legend=paste("s =", s_values), col=colors, lwd=2)

我们一直以相当大的种群规模进行这些模拟。之前我们知道种群规模会影响等位基因漂移到固定或灭绝的概率。具体来说,我们看到,在较小的种群中,等位基因更有可能漂移到固定或灭绝,而不是以中间频率在种群中持续存在。那么,在我们同时有漂移和选择作用的情况下,种群规模又扮演了什么角色呢?当s = 0时(即只有中性漂移影响我们的等位基因在几代中的轨迹时),这种大种群规模的影响应该在我们的等位基因频率如何最经常地围绕我们的起始等位基因频率摆动,很少会下降很多或上升很多方面表现得非常明显。

N=10000时:

N=10时:

种群规模的显著影响应该很容易看出。尽管等位基因具有选择性优势,但固定和灭绝实际上是随机的 。显然,当种群较小时,选择的影响可能会在一定程度上被遗传漂移的力量所打乱。事实上,如果你多次运行这个模拟,你会看到,即使在小的种群规模下,高的选择系数也可能无法维持我们的等位基因在种群中的存在。这就是漂移和选择的力量如何根据所考虑的种群规模而变化的现象。一般来说,较大的种群应该能够随着时间的推移保持中性或适度选择的变异 ,而且可以预期,强烈正选择的等位基因会相对较快地达到固定状态 。另一方面,一个小种群可能同样有可能让一个中性等位基因固定,就像适度正选择的等位基因一样。即使在小的种群中,强烈选择的等位基因也可能不会很快达到固定状态,甚至可能因为它们的优势而丢失。濒危野生种群的一个主要担忧是,减少的种群数量意味着随机性比适应性力量更多地影响到未来的基因组成

下一篇博客将聚焦二倍体的情况,也就是两个等位基因的适应性进化建模。

相关推荐
结衣结衣.1 小时前
通过指令深入了解Linux
linux·运维·服务器·c语言·开发语言·笔记·学习
Hush_NUIST1 小时前
C++_sizeof的相关知识点
开发语言·c++·算法·面试
苍狼王unity学院2 小时前
C#列表按照日期进行从大到小排序
算法·unity·c#·游戏引擎·排序算法
Freesial_2 小时前
C# 方法的重载(Overload)
开发语言·c#
Garcia Shan2 小时前
【Dash】使用 Bootstrap Componnet 创建图表
开发语言·python·bootstrap·数据可视化·dash
new60ll2 小时前
决策树基础
算法·决策树·机器学习
檀越剑指大厂3 小时前
【Python系列】使用 `isinstance()` 替代 `type()` 函数
开发语言·python
汤姆和杰瑞在瑞士吃糯米粑粑4 小时前
类和对象(下)C++
开发语言·c++
王小王-1235 小时前
基于Boost算法的贷款违约预测研究
人工智能·算法·贷款违约预测·基于boosting算法
简佐义的博客5 小时前
生信分析的过去(R语言)、现在(Python)和未来(云平台)
开发语言·python·r语言