连锁不平衡的计算方法

连锁不平衡(linkage disequilibrium,LD)是指在某一个群体中,不同座位上两个基因同时遗传的频率明显高于预期的随机频率现象。


我们一般用D,D'和r2来表示LD的程度。


D是LD的基本单位,度量观察到的单倍型频率与平衡状态下期望频率的偏差,算法如下:

D=P(AB)-P(A)*P(B);

P(AB)表示实际观察到的AB频率,P(A)*P(B)表示AB频率的期望值。(如果发生连锁不平衡,实际观测到的AB频率肯定不等于AB频率的期望值)


如果D值显著偏离0,则说明存在LD。因为D的取值强烈地依赖于人为制定的等位基因频率,所以它不利于LD程度的比较。标准化的不平衡系数D'能够避免这种对

等位基因频率的依赖。D'的计算方法如下:

D'=D/Dmax

当D<0, Dmax=min{P(A)P(B),P(a)P(b)};

当D>0, Dmax=min{P(A)P(b),P(a)P(B)};

当D‘=1,表示连锁完全不平衡,没有重组;

D‘=0,表示连锁完全平衡,随机组合;


但D'也有它的局限性,比如当单倍型为2中或3种时,|D'|一定等于1,但是当|D'|<1时,D'的值究竟表示多大程度的连锁不平衡,是很难做出准确判断的。另外D'严格依赖于样品的大小,。如果样本偏少时,snp数量比较少,这样算出来的D'就会偏大,尤其是某个位点其中一个等位基因频率很低时,因此较高D‘背后,实际上可能是连锁不平衡程度很低的两个位点。统计学上较高的D'值进济南市重组发生率低,而普通程度的D'<1不适合度量LD,以及比较不同研究之间的LD程度,因此只有统计学上显著性接近1的D'值才能够解释这两个位点之间有较小的历史重组,而D'则不能用来研究这种情况。这是就需要引进r2来表示LD,r2的计算方法如下:

r2=D*D/(P(A)P(a)P(B)P(b))

r2=1,表示连锁完全不平衡,没有重组

r2=0,表示连锁完全平衡,随机组合


同时,r2=1有更严格的解释:两个位点的等位基因有相同的频率,并且一个位点某个等位基因的出现完全预示着另外一个位点相应等位基因的出现,这时候两个位点组成的四种可能的单倍型仅表现为两种。与D'相比,r2在连锁不平衡中更加有用,因为其具有较强的群体遗传学理论基础和一些统计学上的优势:

1 r2的期望值和有效种群大小和重组系数相关,r2=1/(1+4NeC),其中Ne是有小种群大小,C是重组系数。

2 r2有很好的取样特性,样本量和r2的乘积就是所观察到的关联水平概率对应的卡方值。在检测snp和致病位点之间的关联时,如果要达到同样的统计效力,所需要的样本量要增大1/r2倍。例如,假设snp1与疾病相关,我们要对它附近的snp2进行基因分型,他们之间的LD系数r2=0.5,为了达到与snp1位点检测相同的统计效力,必须把样本增加2倍。

3 与D'相比,在同样长度的染色体范围内,r2往往更低,这个特性能够帮助我们找到更精度的基因定位。

另外,r2和D'相比,受样本量和等位基因频率的影响较小(但影响仍然存在)。


下面举个例子,如图所示,可以自己先计算一下再看下面步骤:



1 P(A)=0.5, P(a)=0.5, P(B)=0.5, P(b)=0.5

D=0.25-0.5*0.5=0

D'=r2=0


2  P(A)=0.75, P(a)=0.25, P(B)=0.5, P(b)=0.5

D=0.5-0.75*0.25=0.125

D'=0.125/min{0.75*0.5, 0.25*0.5}=1

r2=0.125*0.125/(0.75*0.25*0.5*0.5)=0.33


3 P(A)=0.5, P(a)=0.5, P(B)=0.5, P(b)=0.5

D=0.5-0.5*0.5=0.25

D'=0.25/min{0.5*0.5, 0.5*0.5}=1

r2=0.25*0.25/(0.5*0.5*0.5*0.5)=1


### 如何去除连锁平衡SNP 在生物信息学分析中,处理连锁平衡LD, Linkage Disequilibrium)是一个常见需求。为了有效去除处于连锁平衡状态下的单核苷酸多态性位点(SNPs),可以采用多种方法和工具。 #### 使用PLINK软件过滤SNP PLINK是一款广泛使用的全基因组关联研究(GWAS)数据分析工具,在其中提供了专门针对连锁平衡区域进行筛选的功能。通过设置参数`--indep-pairwise`来实现基于滑动窗口的方式移除高度相关的SNP[^2]: ```bash plink --indep-pairwise 50 5 0.2 \ --out filtered_snps ``` 上述命令表示:以每50个碱基对作为一个窗口大小;每次移动5个位置作为步长;当r&sup2;值大于等于0.2时认为两个标记间存在显著的相关关系并保留其中一个代表性的SNP。 #### 利用VCFtools计算与过滤 对于Variant Call Format (VCF)文件格式的数据集来说,VCFtools也是一个错的选择。该程序允许用户指定阈值来进行连锁平衡度量,并据此剔除非独立变化的变体: ```bash vcftools --recode \ --stdout | bgzip -c > output.vcf.gz ``` 此脚本实现了如下操作:读取压缩后的VCF输入文件;计算成对样本间的基因型决定系数(r&sup2;);限定最大物理距离为10kb范围内考虑相邻变异之间的联系强度;只保存那些与其他任何其他变异之间r&sup2;超过0.8水平上的记录。 #### 应用Python库Pyseer执行更灵活的操作 如果希望获得更加定制化的解决方案,则可以通过编程方式调用特定算法完成任务。例如利用开源项目Pyseer中的功能模块,能够方便地集成到自动化工作流当中去: ```python from pyseer import LD_prune # 假设已经加载好了一个包含多个个体基因分型矩阵的对象gts pruned_gts = LD_prune(gts=gts, window_size=1e4, # 定义扫描区间长度(单位bp) r2_threshold=0.9) # 设定剪枝标准即最小可接受的相关性程度 ``` 以上三种方案均能有效地帮助研究人员解决因连锁平衡带来的困扰问题,具体选择取决于实际应用场景和个人偏好等因素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值