当前位置: 首页 > news >正文

【基于R语言群体遗传学】-14-种群起源的相对似然

我们可以将预测的基因型比例视为在种群中看到一组特定等位基因的概率。如果种群在等位基因频率上存在差异,我们可以使用基因型来推断个体起源于每个种群的相对可能性。大家可以先看一下之前的博客:群体遗传学_tRNA做科研的博客-CSDN博客


种群起源的相对似然

假设我们有一个在南太平洋采集的蓝鲸(Balaenoptera musculus)的DNA样本,我们想推断这个个体是起源于南极种群还是澳大利亚种群(目前被认为是亚种,分别是B. m. intermedia和B. m. brevicauda)。下表列出了蓝鲸七个微卫星的实际基因型。

我们可以利用鲸鱼基因型表来确定这两个鲸鱼种群中等位基因的频率(Attard等人,2012年)。我们的popgenr软件包中的“whale”数据集包含了来自南极和澳大利亚的大量鲸鱼基因型。 可以计算两个地区鲸鱼群体中等位基因的频率。这通常涉及到统计每个微卫星位点上不同等位基因的出现次数,并将这些次数除以总的等位基因数量以得到频率。 一旦获得了等位基因频率,就可以比较南极和澳大利亚两个地区的鲸鱼群体在这些微卫星位点上的遗传差异。这种比较有助于理解不同地理区域鲸鱼群体的遗传结构,并可能揭示迁移模式、繁殖隔离或其他进化过程的证据。 


这个数据集包含了264个蓝鲸个体在七个不同位点上的基因型。让我们尝试计算每个等位基因的等位基因频率,特别是在每个亚种群内。为了做到这一点,我们需要先从一个地点,然后从另一个地点计算每个等位基因的数量。因为蓝鲸是二倍体,每个位点名称都有一个下标“1”或“2”来指定每个位点的两个不同副本。我们对数据进行基本处理:

library(popgenr)
data("whale")# 提取唯一的基因座(loci)名称,移除列名中的下划线和后续字符
loci <- unique(sub(pattern="_.", replacement="", colnames(whale)[-1]))# 初始化一个空的数据框,用于存储结果
dat <- NULL# 遍历每个独特的地理位置
for(i in unique(whale$Location)){# 筛选出当前地理位置的鲸鱼数据x <- whale[whale$Location==i,]# 对每个基因座进行处理for(j in loci){# 构造基因座的第一和第二等位基因的列名loc1 <- paste(j, "_1", sep="")loc2 <- paste(j, "_2", sep="")# 计算这两个等位基因的频率count <- table(c(x[,colnames(x)==loc1], x[,colnames(x)==loc2]))freq <- count / sum(count)# 创建一个包含地点、基因座和频率的数据框y <- data.frame(i, j, freq)# 将这个数据框添加到结果数据框中dat <- rbind(dat, y)}
}# 设置最终数据框的列名
colnames(dat) <- c("Location", "Locus", "Allele", "Frequency")# 显示数据框的前几行以检查结果
head(dat)

现在我们已经得到了每个群体的等位基因频率,我们可以使用p²i2pipj来计算预期的纯合子和杂合子,然后开始得到我们神秘鲸鱼在两个群体中出现的相应基因型的概率。

来自第i个种群的多位点基因型数据(x)的概率是每个基因型j的乘积,它是人群i中相应等位基因频率(pk或pl)的函数,并根据基因型的合子性计算得出,我们先计算GATA位点和Bmy位点:

# 计算南极地区在GATA028位点上,等位基因189和201的频率乘积的两倍
2 * dat[dat$Location == "Antarctica" &dat$Locus == "GATA028" &dat$Allele == 189, ]$Frequency *dat[dat$Location == "Antarctica" &dat$Locus == "GATA028" &dat$Allele == 201, ]$Frequency# 计算澳大利亚地区在GATA028位点上,等位基因189和201的频率乘积的两倍
2 * dat[dat$Location == "Australia" &dat$Locus == "GATA028" &dat$Allele == 189, ]$Frequency *dat[dat$Location == "Australia" &dat$Locus == "GATA028" &dat$Allele == 201, ]$Frequency# 计算南极地区在Bmy1位点上,等位基因265的频率的平方
dat[dat$Location == "Antarctica" &dat$Locus == "Bmy1" &dat$Allele == 265, ]$Frequency^2# 计算澳大利亚地区在Bmy1位点上,等位基因265的频率的平方
dat[dat$Location == "Australia" &dat$Locus == "Bmy1" &dat$Allele == 265, ]$Frequency^2

 假设这些位点是独立遗传的(它们之间有足够的重组并且不是紧密连锁的),我们可以将各个基因型的概率相乘。

上面的例子给出了我们的鲸鱼来自南极种群的总概率。对两个种群进行乘法运算,我们得到的概率非常小,即我们的蓝鲸来自南极(1.905097 × 10^-9)或澳大利亚(1.338643 × 10^-7)。事实上,任何单个复合基因型出现的概率都很低,但我们可以比较概率的可能性比率(一个种群中基因型的概率与另一个种群的概率相比)。

以及两个种群之间的概率占两个概率总和的比例(相对概率):

(Ant <- 0.0569*0.00978*0.121*0.0788*0.0959*0.0192*0.195)
(Aus <- 0.101*0.00723*0.202*0.303*0.760*0.0492*0.0801)
(Rat_ant <- Ant/Aus)
(Rat_aus <- Aus/Ant)
(Rel_ant <- Ant/(Ant+Aus))
(Rel_aus <- Aus/(Ant+Aus))

我们通过pia图进行可视化:

任何单一的微卫星都不是诊断性的,一些基因型在澳大利亚群体中更可能出现,而其他基因型在南极洲更可能出现。然而,有了足够的数据,在这个案例中是七个微卫星,我们可以为我们的鲸鱼可能起源的地方建立一个更有力的案例。我们采样的鲸鱼来自澳大利亚的可能性大约是70倍,确实如此。

DNA fingerprinting

DNA指纹技术作为新技术,给比如亲子鉴定、疑犯鉴定提供了精确的方法,我们来简要看一些问题:

-1-个体并不是从种群中随机抽取的,而是以亲属群的形式存在,他们更有可能共享基因型。

-2-某些个体(人类的同卵双胞胎、无性繁殖克隆或单性生殖物种)在基因上基本上是相同的。检测双胞胎之间罕见的突变差异并考虑体细胞突变,需要比通常进行的更为庞大的基因分型工作。 -3-选择合适的参考种群(一个或多个)来确定等位基因频率会影响计算,而且并不总是清楚哪个种群是最合适的参考。此外,从个体收集遗传数据也存在伦理和法律问题

-4-突变确实会发生。高度可变的标记物,如微卫星,之所以高度可变,是因为它们具有高突变率。偶尔会出现新的突变,可能会使推断变得复杂,如亲子鉴定分析。

-5-这里列出的许多问题使得标准概率计算变得不那么保守;然而,一般来说,足够数量的标记将产生压倒性的概率,可以克服这些问题。 在批判性地解释DNA指纹识别数据时,还必须考虑非遗传因素,如样本可能被污染或混合,人为错误(或故意伪造),如样本标签错误等。这些因素产生的概率可能远高于随机机会下真正的多位点基因型匹配。

对于种群起源的问题远比这里所列出的一些要复杂的多,以后也会更新一些自己的工作。

下一篇博客将讲述最重要的coalescent 理论,也就是溯祖理论

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【云原生】AWS云平台,ECR推送Helm chart包
  • TCP/IP协议超时重传,以及应用层超时重传一文详解
  • OpenHarmony 入门——ArkUI自定义组件的基础语法(一)
  • 开源项目的认识理解
  • 深度学习中的超参管理方法:argparse模块
  • Nodejs 第八十六章(部署pm2)
  • 如何在uniapp中使用websocket?
  • 如何选择一款适合自己的鼠标?
  • 在Mac上一键安装Mysql(解决所有安装问题)
  • 网络安全威胁也日益复杂,分布式拒绝服务(DDoS)攻击因其高频率和破坏力而成为一大挑战
  • Okhttp实现原理
  • linux kernel ptr dump
  • python 知识点累积
  • js逆向-webpack-python
  • YOLOv8损失函数改进-增加MPDIoU提升边界框回归精度【附代码】
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【Linux系统编程】快速查找errno错误码信息
  • Angular4 模板式表单用法以及验证
  • CSS中外联样式表代表的含义
  • Git初体验
  • Java 网络编程(2):UDP 的使用
  • java中的hashCode
  • oschina
  • Spring Boot MyBatis配置多种数据库
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Vultr 教程目录
  • 阿里云前端周刊 - 第 26 期
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 来,膜拜下android roadmap,强大的执行力
  • 聊聊directory traversal attack
  • 前端攻城师
  • 前端面试题总结
  • 山寨一个 Promise
  • 栈实现走出迷宫(C++)
  • PostgreSQL之连接数修改
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​2020 年大前端技术趋势解读
  • #NOIP 2014#Day.2 T3 解方程
  • (04)odoo视图操作
  • (10)ATF MMU转换表
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (万字长文)Spring的核心知识尽揽其中
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)http-server应用
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)编辑寄语:因为爱心,所以美丽
  • .Mobi域名介绍
  • .net core 控制台应用程序读取配置文件app.config