【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)

news2024/11/13 15:24:07

Tajima's D Test

已经开发了几种中性检验,用于识别模型假设的潜在偏差。在这里,我们将说明一种有影响力的中性检验,即Tajima's D(Tajima 1989)。Tajima's D通过比较数据集中的两个𝜃 = 4N𝜇估计值来工作。我们已经推导出了𝜃is,等于平均成对杂合性(average pairwise heterozygosity),当我们讨论共祖时(也称为Tajima的估计器)。当考虑DNA序列集合中的等位基因或SNP总数以及将它们联合到共同祖先的共祖树内包含的预期世代数时,可以得出另一种推导。这被称为Watterson的𝜃估计器或𝜃W(Yong 2019)。正如我们在共祖中所展示的,n个谱系的预期共祖时间是:

一组n个初始谱系到一个单一祖先的所有共祖时间的总和是:

在每次共祖事件之间的步骤中,有i + 1个谱系可能发生突变。因此,当考虑一段时间内所有谱系可能产生的等位基因数量时,我们乘以i + 1:

我们将树上所有谱系的总时间乘以每代突变率𝜇,得到我们期望在n个DNA序列样本中的等位基因总数,而4N是一个常数,所以我们可以将其放在求和之外

其中S是序列集合中SNP的数量。这可以重新排列以从SNP的数量估计𝜃W=4N𝜇:

请注意,Watterson的𝜃估计器需要了解一组谱系的共祖,但这是在1975年发表的,当时还没有发表超过两个谱系的共祖(Kingman 1982)。Tajima's D是平均成对杂合性𝜃估计值与从样本中SNP数量估计的𝜃之间的差异,除以该差异的预期方差的平方根:

而:

这看起来有点乱,但在各种位置反复出现两个不同的n求和,只需要计算一次然后填入。这可以用以下代码计算(平均成对差异和S也可以从数据集中计算,但为了简洁起见,我们在这里省略了)。 

Tajima's D是用来评估一个种群中中性突变(即没有自然选择影响的突变)的假设是否成立。它通过比较两个不同的估计器来衡量种群的遗传多样性和种群规模的变化,我们通过R语言实现:
 

# Calculates Tajima’s D

# 平均成对差异,用于估计theta_IS
theta_IS <- 2.8

# 数据集中的SNP数量
S <- 16

# 采样的等位基因拷贝数
n <- 20

# 初始化求和变量
i1_sum <- 0.0

# 循环计算i1的和,这是Watterson's theta的一部分
for(i in 2:n-1){
    i1_sum <- i1_sum + 1/i
}

# 计算Watterson's theta,它是基于序列多态性的一个种群规模的估计器
theta_W <- S / i1_sum

# 初始化第二个求和变量
i2_sum <- 0.0

# 循环计算i2的和,用于后续计算
for(i in 2:n-1){
    i2_sum <- i2_sum + 1/i^2
}

# 计算期望值e1,它是Tajima's D公式中的项
e1 <- ((n+1)/(3*(n-1)) - 1/i1_sum) / i1_sum

# 计算期望值e2,它也是Tajima's D公式中的项
e2 <- (2*(n^2+n+3)/(9*n*(n-1)) - (n+2)/(n*i1_sum) + i2_sum/i1_sum^2) / (i1_sum^2 + i2_sum)

# 计算Tajima's D值,它衡量的是theta_IS和theta_W之间的标准化差异
(D <- (theta_IS - theta_W) / sqrt(e1*S + e2*S*(S-1)))

前三个变量将根据您的数据进行调整。在这个例子中,返回的D = -1.409。大于或小于2的D被认为是显著的;然而,实际的p值是通过模拟确定的。D的正值表示中间频率等位基因过多,这可能是由于人口减少或平衡选择,因为这两种情况都会延长人口历史较老部分的共祖事件时间。在更大的种群中,有更多的祖先可供选择,共祖是一种罕见的事件,并会膨胀𝜃IS,因为相对于𝜃W,较老的谱系在后代中以更高的频率共享。这种负D表示稀有频率等位基因过多(共祖的最近尖端被放大;它们对S和𝜃W的贡献比对平均成对差异的贡献更多,因为它们很稀有),这表明人口扩张、选择性清除或对有害等位基因的低效净化选择。关键是要计算多个位点的D值,并寻找异常值以标记假定选择候选者。人口统计学效应,如人口规模的变化,应该影响基因组中的所有位点,而选择(通常被认为)在其影响上是位点特异性的。还有许多其他的中性检验,如HKA检验(Hudson等人,1987)、McDonald-Kreitman检验(McDonald和Kreitman,1991)、Fay和Wu的H(Fay和Wu,2000)以及dN/dS比率(Yang和Bielawski,2000)。其中许多也利用了物种之间发生的遗传变化,它们都有各自的优点和缺点。

linkage disequilibrium (LD)

群体遗传学的一个独特性质,在进化博弈论等类似领域中并未发现,即不同位点甚至不同染色体上的等位基因可以“链接”(尽管并不总是与经典遗传学中的重组图谱同义),并且比随机预期更频繁地一起遗传。 连锁不平衡(LD)的程度由𝒟量化,不要与Tajima的D混淆。考虑两个位点:一个具有A/a多态性,另一个具有B/b多态性。我们对于跨位点一起遗传的等位基因之间的关联感到好奇。使用概率的乘法规则,我们期望AB单倍型(pAB)的频率是两个等位基因频率pApB的乘积,如果它们是独立遗传的话。这两者之间的差异由𝒟量化,作为连锁不平衡的一种度量。

根据AB单倍型是过量还是不足,𝒟可以是正数或负数(或者如果你从ab单倍型任意计算𝒟,符号会改变)。𝒟也可以从所有单倍型频率计算得出。

为了说明,假设我们有一个包含两个SNP的单倍型频率的小型数据集。一个是A/G多态性,另一个具有C/T等位基因:

让我们关注A-C单倍型。A等位基因的频率是0.57,C等位基因的频率是0.65

遗传漂变、种群结构和强选择是推动𝒟偏离零的力量。在大种群中,预测𝒟随时间呈指数衰减轨迹返回到零,就像在小种群中遗传漂变下的杂合性一样:

其中r是感兴趣的位点对之间预期的重组分数。这可以用来估计单倍型的年龄。最后,即使对于在不同染色体上独立分配的位点,𝒟也需要时间衰减。哈代-温伯格基因型可以在一代中恢复,但过去的事件对LD有持续影响,这可以用来推断更远的过去的过程,如种群中不再存在的种群结构。 当从实际数据集计算𝒟时,双重杂合子是不明确的。假设我们有一个个体的C/T,A/G SNP集合。C等位基因与第二个位置的A还是G等位基因相关联?通常我们不知道。但是,不明确的单倍型频率为我们提供了关于解决双重杂合子可能方式的信息。如果C-G单倍型非常常见,而C-A单倍型很少见,那么这表明C/T,A/G个体可能具有C-G/T-A单倍型。使用这种方法计算𝒟太繁琐,无法手工完成。 幸运的是,这正是EM算法发挥作用的地方。Kalinowski和Hedrick(2001)使用大角羊(Ovis canadensis)数据集(Boyce等人,1997)来估计LD。这个物种很罕见,样本量很小,所以我们需要从可用的数据中获得尽可能多的信息。 以下R代码实现了Kalinowski和Hedrick(2001)给出的方程式。它从猜测相等的单倍型频率和𝒟 = 0开始。然后它更新这个猜测,并迅速达到最大似然解𝒟 ≈0.0779和na-B单倍型频率基本为零。

# 定义各个复合基因型的频率
AABB <- 2  # 两个位点都是纯合子AABB的个体数量
AaBB <- 0  # 一个位点是杂合子,另一个是纯合子AaBB的个体数量
aaBB <- 0  # 一个位点是纯合子aa,另一个是纯合子BB的个体数量
AABb <- 0  # 第一个位点是纯合子AA,第二个位点是杂合子Bb的个体数量
AaBb <- 1  # 两个位点都是杂合子AaBb的个体数量(双杂合子)
aaBb <- 0  # 第一个位点是纯合子aa,第二个位点是杂合子Bb的个体数量
AAbb <- 1  # 第一个位点是纯合子AA,第二个位点是纯合子bb的个体数量
Aabb <- 0  # 第一个位点是杂合子Aa,第二个位点是纯合子bb的个体数量
aabb <- 0  # 两个位点都是纯合子aabb的个体数量

# 使用上述输入运行函数‘Dcalc’
Dcalc(AABB, AaBB, aaBB, AABb, AaBb, aaBb, AAbb, Aabb, aabb)

𝒟与用于衡量线性相关性的统计相关系数(皮尔逊)“r”有关。让我们使用ℛ表示相关系数,以避免将其与重组分数r混淆。𝒟2除以所有等位基因频率的乘积等于ℛ^2。

此外,奇怪的是,如果我们将ℛ2乘以采样的染色体总数(如果我们观察n个二倍体个体,通常为2n),那么我们就会得到一个具有一个自由度的𝜒2统计量:

然而,这并不令人惊讶。在如此小的样本量下,即使LD非常强,检测偏差的能力也非常有限。最后,我们希望指出,EM算法是一种“爬山”算法,它找到一个局部最大似然峰值。可能存在其他峰值,可以使用MCMC方法来处理这个问题,并更全面地探索复杂的似然表面。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nssm的下载和使用

nssm&#xff08;Non-Sucking Service Manager&#xff09;是一个用于在Windows系统上管理服务的工具。它允许你将.exe文件和.bat文件转换为Windows服务&#xff0c;并提供了一些功能来管理这些服务。 下载和安装 首先&#xff0c;你需要从nssm官方网站&#xff08;https://n…

顺序结构 ( 四 ) —— 标准数据类型 【互三互三】

序 C语言提供了丰富的数据类型&#xff0c;本节介绍几种基本的数据类型&#xff1a;整型、实型、字符型。它们都是系统定义的简单数据类型&#xff0c;称为标准数据类型。 整型&#xff08;integer&#xff09; 在C语言中&#xff0c;整型类型标识符为int。根据整型变量的取值范…

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

C/C++ list模拟

模拟准备 避免和库冲突&#xff0c;自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…

宝塔:如何开启面板ssl并更新过期ssl

1、登录宝塔面板 > 前往面板设置 > 最上方的安全设置 > 面板SSL > 面板SSL配置 打开后先查看自签证书的时间&#xff0c;如果时间是已经过期的&#xff0c;就前往这个目录&#xff0c;将该目录下所有文件都删掉 重新回到面板SSL配置的位置&#xff0c;打开后会看到…

web后端开发--请求响应

目录 前言 请求 简单参数 原始方法 Spring方式 Post请求乱码处理 实体参数 简单实体参数 复杂实体参数 ​编辑 数组集合参数 数组参数 ​编辑 集合参数 日期参数 ​编辑 Json参数 ​编辑 传递json数据 json数组 json对象&#xff08;POJO&#xff09; jso…

conda篇----在已有conda环境的基础上升级python包

conda篇----在已有conda环境的基础上升级python包 原先的python版本 第一步&#xff1a; conda update --all(py11) [xxxaivrs01 xxx]$ conda update --all Collecting package metadata (current_repodata.json): done Solving environment: done> WARNING: A newer vers…

PTC可复位保险丝 vs 传统型保险丝:全面对比分析

PTC可复位保险丝&#xff0c;又称为自恢复保险丝、自恢复熔断器或PPTC保险丝&#xff0c;是一种电子保护器件。它利用材料的正温度系数效应&#xff0c;即电阻值随温度升高而显著增加的特性&#xff0c;来实现电路保护。 当电路正常工作时&#xff0c;PTC保险丝呈现低阻态&…

可理解性评估:使用Google Gemini优化语音识别的意义保留

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

从零开始实现大语言模型(三):Token Embedding与位置编码

1. 前言 Embedding是深度学习领域一种常用的类别特征数值化方法。在自然语言处理领域&#xff0c;Embedding用于将对自然语言文本做tokenization后得到的tokens映射成实数域上的向量。 本文介绍Embedding的基本原理&#xff0c;将训练大语言模型文本数据对应的tokens转换成Em…

MongoDB - 集合和文档的增删改查操作

文章目录 1. MongoDB 运行命令2. MongoDB CRUD操作1. 新增文档1. 新增单个文档 insertOne2. 批量新增文档 insertMany 2. 查询文档1. 查询所有文档2. 指定相等条件3. 使用查询操作符指定条件4. 指定逻辑操作符 (AND / OR) 3. 更新文档1. 更新操作符语法2. 更新单个文档 updateO…

【AI前沿】深度学习:神经网络基础

文章目录 &#x1f4d1;引言一、神经元和感知器1.1 神经元的基本概念1.2 感知器模型 二、多层感知器&#xff08;MLP&#xff09;2.1 MLP的基本结构2.2 激活函数的重要性2.3 激活函数2.4 激活函数的选择 三、小结 &#x1f4d1;引言 深度学习是现代人工智能的核心技术之一&…

p12初步认识c语言

1.初识c语言 什么是c语言 c语言是一门计算机语言 计算机语言是什么 人和计算机交流语言 c/c/JAVA/python 语言发展&#xff1a; 二进制语言 硬件-电-正电/负电 1010001010101010101010101010手册 科学家 1010100010-ADD -助记符-汇编语言 B语言 C语言 C、---高级…

【全面介绍语言模型的原理,实战和评估】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🥂语言模型的原理 🥂语言模型基于统计和机器学习的原理,目标…

实验1 —— 安全策略的练习

实验拓扑图 实验要求 1.DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c;生产区的设备全天可以访问&#xff1b; 2.生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3.办公区…

Java protobuf序列化

Protobuf概述 Protobuf&#xff08;全称&#xff1a;Protocol Buffers&#xff09;是由 Google 开发的一种语言中立、平台无关、可扩展的序列化协议。它用于高效地结构化数据的序列化和反序列化。Protobuf 的主要特点是其紧凑、高效和可扩展的编码格式&#xff0c;使其在各种网…

Nginx中文URL请求404

这两天正在搞我的静态网站。方案是&#xff1a;从思源笔记Markdown笔记&#xff0c;用MkOcs build成静态网站&#xff0c;上传到到Nginx服务器。遇到一个问题&#xff1a;URL含有中文会404&#xff0c;全英文URL则正常访问。 ‍ 比如&#xff1a; ​​ ‍ 设置了utf-8 ht…

mac安装配置cmake

本机是2015 macbook pro mid&#xff0c;已经有点老了&#xff0c;用homebrew下cmake老出问题 其实cmake官网安装也不麻烦 一、官网下载对应安装包 Download CMake 和所有dmg文件一样安装 二、改成命令行使用 一般来说 tutorial 给的都是命令行build 命令行的设置如下&am…

React Hooks学习笔记

一、usestate的使用方法-初始化state函数 import React, { useState } from "react"; function App() {const [count, setCount] useState(0);return (<div><p>点击{count}次</p><button onClick{() > setCount(count 1)}>点击</bu…

【TAROT学习日记】韦特体系塔罗牌学习(1)——愚者 THE FOOL 0

韦特体系塔罗牌学习&#xff08;1&#xff09;——愚者 THE FOOL 0 https://www.tarotchina.net/major-arcana0-vip/ 目录 韦特体系塔罗牌学习&#xff08;1&#xff09;——愚者 THE FOOL 0牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际关…