【基于R语言群体遗传学】-12-超显性与次显性

欢迎先看前面的博客,再继续进行后面的内容:

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

当杂合子的适应度超出纯合子的范围时,二倍体能够展现出更多令人着迷的选择实例。这种形式的一种是杂合子优势,或称为“超显性”,其中杂合子的适应度甚至高于任何一种纯合子。超显性的经典例子是在疟疾高发地区,人类镰状细胞贫血的血红蛋白等位基因。在疟疾猖獗的地区,由于改变的红细胞增加了对疟疾的抵抗力,杂合子具有适应度优势。然而,纯合子患有贫血症,尽管有抗疟疾能力,但总体适应度成本较高。 这似乎导致了一个稳定的平衡,其中等位基因频率通过选择保持在一定水平。如果它的频率上升到足够高的水平,以至于产生更多的纯合子,适应度成本会导致更少的这些等位基因被传递下去。如果它的频率较低,就会产生杂合子,并且由于平均适应度优势,该等位基因的频率会增加。让我们看一下Allison(1956)的数据,该数据收集了坦桑尼亚600多名个体的血红蛋白S的血红蛋白基因型数据。 让我们在哈代-温伯格预测下验证观察到的和预期的比例。

# 定义观察到的各基因型数量
AA <- 400
AS <- 249
SS <- 5# 计算总个体数
n <- AA + AS + SS# 计算等位基因S的频率
p <- (SS + AS/2) / n# 根据哈迪-温伯格定律计算期望的各基因型数量
EAA <- n * (1-p)^2
EAS <- n * 2 * p * (1-p)
ESS <- n * p^2# 打印观察到的和期望的基因型频率
print(paste("Observed:", AA/n, AS/n, SS/n))
print(paste("Expected:", EAA/n, EAS/n, ESS/n))# 将观察到的和期望的基因型数量放入向量
geno <- c(AA, AS, SS)
expe <- c(EAA, EAS, ESS)# 计算哈迪-温伯格平衡的卡方统计量G
G <- 2 * sum(geno * log(geno/expe))# 打印卡方统计量G
print(paste("G:", G))# 计算G统计量的P值,判断是否符合哈迪-温伯格平衡
pvalue <- pchisq(G, df=1, lower.tail=FALSE)# 打印P值
print(paste("P-value:", pvalue))

与我们之前看到的血红蛋白S数据不同:【基于R语言群体遗传学】-6-表型计算等位基因频率、最大似然估计方法-CSDN博客

基于我们的似然比检验,这些值与哈代-温伯格预测相差很大。考虑到我们对杂合子潜在适应度优势的了解,预期维持这种等位基因频率的杂合子适应度优势的大小是多少? 我们可以通过设置等位基因的平均适应度相等来计算这个平衡点。让s代表频率为p的导致镰状细胞的等位基因,a代表常见的血红蛋白等位基因,有三种基因型适应度:wss、wsa、waa。s等位基因要么与自己配对,频率为p,适应度为wss,要么与a配对,频率为1−p,适应度为wsa。这给出了平均等位基因适应度为: 

同样可以得到a等位基因的适应度为:

继续推导:

得到杂合子适应性:

Allison(1956)估计在坦桑尼亚穆索马,wss的阈值为0.2。如果我们设waa的相对适应度为1,并假设观察到的等位基因频率处于平衡状态(p = 0.199),我们可以计算假设的杂合子适应度。

p
w_ss <- 0.2
w_aa <- 1
(w_sa <- (p*(w_ss+w_aa)-w_aa) / (2*p-1))

那么,如果疟疾能够被有效地根除,我们会期待发生什么呢?使用我们估计的杂合子抵抗疟疾所带来的适应度优势,即使在面对等位基因在纯合子中配对时带来的重大健康成本,让我们看看s等位基因的多个起始等位基因频率的影响。然后,让我们看看如果我们去除疾病带来的压力会发生什么。我们可以重新利用我们之前编写的FitFreq函数。

# 设置初始等位基因频率
init_p <- p# 定义适应度值
w_ss <- 0.2 # 纯合隐性基因型的适应度
w_aa <- 1   # 纯合显性基因型的适应度
w_sa     # 杂合基因型的适应度# 定义模拟的代数
gen <- 50# 创建适应度场景列表
w <- list(c(w_ss, w_sa))# 创建初始等位基因频率矩阵
p <- matrix(c(0.01, 0.1, 0.2, 0.5, 0.9))# 生成迭代序列
iter <- seq_along(p)# 循环模拟每一代的变化
for(i in 1:(gen-1)){# 更新等位基因频率矩阵p <- cbind(p, lapply(iter,function(i, y, n) {FitFreq(y[[1]], n[[i]])},y=w, n=p[,ncol(p)]))
}# 绘制图形,设置x轴和y轴的标签及范围
plot(x=NULL, xlab="Generations", ylab="Allele frequency",xlim=c(1,2*gen), ylim=c(0, 1))# 绘制第一种适应度情景下的等位基因频率变化曲线
for(i in 1:nrow(p)){lines(1:gen, p[i,], lwd=2, col="blue")
}# 创建第二种适应度情景
w <- list(c(w_ss, 1))# 重置等位基因频率矩阵为初始频率
p <- matrix(init_p)# 重新生成迭代序列
iter <- seq_along(p)# 再次循环模拟每一代的变化
for(i in 1:gen){# 更新等位基因频率矩阵p <- cbind(p, lapply(iter,function(i, y, n) {FitFreq(y[[1]], n[[i]])},y=w, n=p[,ncol(p)]))
}# 绘制第二种适应度情景下的等位基因频率变化曲线
for(i in 1:nrow(p)){lines(gen:(2*gen), p[i,], lwd=2, col="red")
}

从结果图中,我们可以看到,如果失去适应度优势(即如果疟疾在很大程度上被根除),并且杂合子的适应度与普通纯合子相等,s等位基因预计将在另外50代中从0.2下降到约十分之一(1/10)的平衡频率,即约0.02,患贫血症的SS纯合子的比率将从4%(1/25)下降到两个数量级,即0.04%(1/2500)。

杂合子优势的反面是次显性:杂合子的适应度低于任何一种纯合子。这种形式的常见例子是在染色体重排中,例如相互易位,其中两条非同源染色体交换片段。对于平衡易位的双杂合子个体,其一半的配子是不平衡的,受精后会导致来自部分非整倍体的有害基因剂量效应。一个有用的近似是,杂合子的适应度是纯合子的一半,以模拟动态。

次显性平衡可以使用与超显性情况相同的公式和逻辑来计算:

让我们计算我们的平衡等位基因频率:

w_ss <- 0.9
w_sa <- 0.5
(p_eq <- (1- w_sa)/(w_ss-2*w_sa + 1))

如果我们的平衡等位基因频率略高于50%,让我们看看从起始等位基因频率在0.1到0.9范围内,我们可以预期什么样的等位基因频率轨迹。

# 定义模拟的代数
gen <- 20# 创建适应度场景列表
w <- list(c(w_ss, w_sa))# 创建初始等位基因频率矩阵,频率从0.1到0.9,步长为0.1
p <- matrix(seq(0.1, 0.9, 0.1))# 生成迭代序列
iter <- seq_along(p)# 循环模拟每一代的变化
for(i in 1:(gen-1)){# 更新等位基因频率矩阵p <- cbind(p, lapply(iter,function(i, y, n) {FitFreq(y[[1]], n[[i]])},y=w, n=p[,ncol(p)]))
}# 绘制图形,设置x轴和y轴的标签及范围
plot(x=NULL, xlab="Generations", ylab="Allele frequency",xlim=c(1,gen), ylim=c(0, 1))# 绘制不同初始频率下的等位基因频率变化曲线
for(i in 1:nrow(p)){lines(1:gen, p[i,], lwd=2, col="blue")
}# 创建一个新的等位基因频率矩阵,初始频率为平衡频率 p_eq
p <- matrix(p_eq)# 再次循环模拟每一代的变化
for(i in 1:(gen-1)){# 更新等位基因频率矩阵p <- cbind(p, lapply(1,function(i, y, n) {FitFreq(y[[1]], n[[i]])},y=w, n=p[,ncol(p)]))
}# 绘制平衡频率下的等位基因频率变化曲线,使用虚线表示
lines(1:gen, p, lwd=2, lty="dashed", col="blue")

从这个结果中,我们可以看到,起始等位基因频率低于我们的平衡频率的很快就会趋向灭绝,而那些起始略高于平衡频率的则有望在不久之后增加到接近固定。与超显性不同,次显性平衡是不稳定的,等位基因频率倾向于远离它,而不是趋向它。因为稀有等位基因最常以杂合子的形式出现,次显性转化为稀有等位基因的不利,稀有等位基因倾向于丢失,即使较罕见的纯合子比另一种更适应。同样,超显性被认为是稀有等位基因的优势,因为稀有等位基因倾向于存在于杂合子中,导致稳定的多样性。这说明了受倍性和适应度差异约束的进化轨迹如何被困在适应性较低的局部适应度“高峰”上的一个例子。 在种群遗传学的早期,人们推测广泛的超显性可能解释了为什么物种中存在如此多的遗传变异。然而,这些假设在很大程度上已经不再受欢迎,现在大量的遗传变异被认为是在选择上是中性的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/371821.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中的数据类型

这里写目录标题 数值类型整数类型浮点数类型定点数类型 日期和时间类型字符串类型定长字符串变长字符串文本类型二进制类型 枚举和集合类型选择标准示例 SET FOREIGN_KEY_CHECKS0; DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user (user_id bigint NOT NULL AUTO_INCREM…

轻松转换!两款AI工具让word秒变ppt!

想把Word文档一键生成PPT&#xff0c;过去有一个很常见的做法&#xff1a;先在Word文档中设置标题样式&#xff0c;通过标题样式来分隔每一部分&#xff0c;之后导出为PPT&#xff0c;就能得到一份PPT的雏形&#xff0c;但这种方法无法对PPT自动进行美化&#xff0c;即得到的只…

现货黄金技术出现这一信号赶紧止损!

很多现货黄金投资者都并不知道&#xff0c;移动平均线除了可以用于寻找进场的机会&#xff0c;还可以用来设置止损&#xff0c;让自己在交易中更好地进行防守。其实移动平均线止损&#xff0c;是常用的技术止损方法之一&#xff0c;本文将和大家分享怎样利用均线设置止损点&…

Java | Leetcode Java题解之第217题存在重复元素

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;} }

VSCode远程连接Linux服务器

VSCode远程连接Linux服务器 一、下载VSCode二、远程连接Linux服务器2.1 安装插件2.2 连接linux服务器 我用的Linux服务器(腾讯云服务器&#xff0c;如果是虚拟机需要手动去配置ssh)&#xff0c;操作系统是ubuntu 20.04&#xff08;系统如果不一样&#xff0c;可以重装系统&…

2024/7/7总结

Servlet WebServlet("/demo2") public class servlet_demo2 extends HttpServlet {/*** 就绪/服务方法&#xff08;处理请求数据&#xff09;* 系统方法&#xff0c;服务器自动调用* 当有请求到达servlet时&#xff0c;就会调用该方法* 方法可以被多次调用* param r…

iOS多target时怎么对InfoPlist进行国际化

由于不同target要显示不同的App名称、不同的权限提示语&#xff0c;国际化InfoPlist文件必须创建名称为InfoPlist.strings的文件&#xff0c;那么多个target时怎么进行国际化呢&#xff1f;步骤如下&#xff1a; 一、首先我们在项目根目录创建不同的文件夹对应多个不同的targe…

多方SQL计算场景下,如何达成双方共识,确认多方计算作业的安全性

安全多方计算在SQL场景下的限制 随着MPC、隐私计算等概念的流行&#xff0c; 诸多政府机构、金融企业开始考虑参与到多方计算的场景中&#xff0c; 扩展数据的应用价值。 以下面这个场景为例&#xff0c; 银行可能希望获取水电局和税务局的数据&#xff0c;来综合计算得到各…

基于FPGA的图像边缘检测(OV5640)

一、简介 1.应用范围 边缘主要存在于图像中目标与目标之间&#xff0c;目标与背景之间&#xff0c;区域与区域之间。 边缘检测的目的就是找到图像中亮度变化剧烈的像素点构成的集合&#xff0c;表现出来往往是轮廓。如果图像中边缘能够精确的测量和定位&#xff0c;那么&…

移动校园(2):express构建服务器,小程序调用接口,展示数据

express做服务器框架&#xff0c;mssql连接数据库&#xff0c;uni-request调用接口 这是文件夹目录 然后是index.js内容 const expressrequire(express) const appexpress() const uniRouterrequire("./uniRouter") const config{user:sa,password:123456,server:l…

数据结构--二叉树相关例题4

运用到malloc函数&#xff0c;因为之前忘记它的使用方法&#xff0c;因此附加一个 动态内存管理&#xff08;前面内容中有讲解过&#xff09;的知识点 1.二叉树遍历 //二叉树遍历 //属于IO类型题有输入有输出//因为输入包括1行字符串&#xff0c;长度不超过100&#xff0c;所以…

华为eNSP:HCIA汇总实验

本次拓扑实验需求&#xff1a; 1、内网地址用DHCP 2、VLAN10不能访问外网 3、使用静态NAT 实验用到的技术有DHCP、划分VLAN、IP配置、VLAN间的通信&#xff1a;单臂路由、VLANIF&#xff0c;静态NAT、基本ACL DHCP是一种用于自动分配IP地址和其他网络参数的协议。 划分VLA…

【Spring Boot】关系映射开发(二):一对多映射

《JPA 从入门到精通》系列包含以下文章&#xff1a; Java 持久层 API&#xff1a;JPA认识 JPA 的接口JPA 的查询方式基于 JPA 开发的文章管理系统&#xff08;CRUD&#xff09;关系映射开发&#xff08;一&#xff09;&#xff1a;一对一映射关系映射开发&#xff08;二&#…

在CenteOs7上安装mysql8.0(Super详细版)

在CenteOs7上安装mysql8.0 为什么用Mysql8.0&#xff1f;如何下载下载地址需要提前准备下载步骤 服务器上安装如何上传到服务器&#xff1f;通过wget下载到服务器并解压 开始安装非必须安装如果全部安装执行顺序 安装完后&#xff0c;启动mysql使用“systemctl”检测mysqld服务…

【K8s】专题六(5):Kubernetes 稳定性之重启策略、滚动更新策略

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、重启策略 1、基本介绍 2、资源清单&#xff08;示例&#xff09; 二、滚动更新策略 …

申请EV代码签名证书费用是多少?

代码签名证书是确保软件安全性和可信度的关键工具&#xff0c;在软件开发领域扮演着至关重要的角色。EV代码签名证书&#xff0c;即扩展验证代码签名证书&#xff0c;以其最高级别的安全性和信任度&#xff0c;成为大型企业或对安全性要求较高的软件的首选。本文旨在深入探讨EV…

可灵AI快速迭代:揭示中国AI技术的全球领先地位

最近&#xff0c;中国企业在AI技术上的快速迭代引起了广泛关注。以可灵AI为例&#xff0c;一个月内连续三次升级&#xff0c;推出了高清版和首尾帧控制等功能。这种高频率的技术更新&#xff0c;不仅显示了中国企业的拼劲&#xff0c;也对全球AI竞赛产生了深远影响。 中国企业的…

UGC与AI引领的下一个10年,丝芭传媒已经准备好

丝芭传媒最近传来的消息&#xff0c;都跟技术相关。 基于自研AI大模型“Paro&#xff08;心乐舞河&#xff09;”的AIGPT及AIGC生成工具APP“鹦鹉人”开启用户内测。2023年3月技术测试的图形化智能社交基座“美踏元宇宙”&#xff0c;也将开放首轮用户内测。 此外&#xff0c…

【分布式技术】——监控平台zabbix 介绍与部署

一、监控系统的相关知识 1.监控系统运用的原因 当我们需要实时关注与其相关的各项指标是否正常&#xff0c;往往存在着很多的服务器、网络设备等硬件资源&#xff0c;如果我们想要能够更加方便的、集中的监控他们&#xff0c;zabix可以实现集中监控管理的应用程序 监控的初衷…

Python3极简教程(一小时学完)中

异常 在这个实验我们学习 Python 的异常以及如何在你的代码中处理它们。 知识点 NameErrorTypeError异常处理&#xff08;try..except&#xff09;异常抛出&#xff08;raise&#xff09;finally 子句 异常 在程序执行过程中发生的任何错误都是异常。每个异常显示一些相关…