连锁不平衡指的是在某一群体中,两个基因同时遗传的频率大于随机组合的频率。下面通过一个例子来说明。
基因A的两个allel 分别用A和a 表示,基因B的allel分别用B和b表示,如果这这两个基因完全独立遗传,也就是说其allel 完全随机组合,那么后代中会出现4种单倍型,AB, Ab, aB, ab, 而且出现的概率都是相同的,都是0.25;如果这两个基因在遗传时不是独立的,意味着后代中单倍型出现的概率不是完全随机的了,我们就可以说两个基因是存在连锁关系的,基因在遗传时出现连锁的现象就叫做连锁不平衡。
从上面的例子可以看出,在连锁不平衡中,单倍型出现的概率与随机组合的概率之间存在了偏移。这个偏移的程度就决定了连锁不平衡的程度。接着上面的例子,独立遗传时,单倍型AB出现的概率为 P(A) X P(B), 这个概率我们暂且称之为理论概率;当出现了连锁不平衡时,单倍型AB出现的概率用P(AB)表示,我们暂且称之为实际概率,这两个概率之间的差,就反应了连锁不平衡的程度。数学表达式如下
D = P(AB) - P(A) X P(B)
D值不等于0,就可以说两个基因之间是连锁不平衡的,D
绝对值大小直接反应了两个基因之间的连锁程度的大小,绝对值越大,连锁程度越大。但是D值无法比较不同基因之间连锁程度的大小, 因为它是根据每个基因allel的频率计算出来的。为了能够比较基因连锁程度的大小,提出了D'
的概念,公式如下
D’ = D / Dmax
Dmax 的计算方式如下:
D'
值可以看做是归一化之后的D值,归一化之的值可以用于比较不同基因连锁程度的大小。D’的取值范围为0到1,D’ = 0 表示完全连锁平衡,独立遗传;D’ = 1 表示完全连锁不平衡。除了D’ 值之外,还有一个衡量连锁不平衡程度的标准,就是r
值,计算公式如下
通常情况下,会通过r值的平方来表征连锁不平衡程度,r平方等于0时,表示完全连锁平衡,独立遗传;r平方等于1时, 表示完全连锁不平衡。
下面通过一个示例,看下实际分析中,P(A)和P(B)如何计算。在一个群体中,观测到的单倍型频率分布如下
根据单倍型的频率分布,可以计算出如下的等位基因频率
单倍型A1B1
的D值计算如下
对于不同单倍型,其D值汇总如下
上面的例子,可以帮助我们理解D值计算的过程。在实际分析中,我们通常会拿到样本的基因分型文件,通过这个文件我们可以非常容易的计算出allel的频率,但是对于单倍型的频率是不能直接计算得到的,都是借助算法估算出单倍型的概率,然后进行计算。对于连锁不平衡的计算,有很多的软件可以用,最常用的有plink
和haploview
,当然也有很多的R包可以进行计算。
理论上来说任意两个基因之间都可能存在连锁不平衡,但是实际操作中,认为只有一定区间范围内的基因会存在连锁不平衡,距离大于区间的基因,两者出现连锁不平衡的概率非常小,所以就不去计算。对于连锁不平衡的结果,通常采用heatmap
热图的形式进行展示,haploview
给出的LD heatmap 示例如下
颜色从白色到红色,代表连锁程度从低到高,方框中的数值为r2,为了美观,这里将r2 乘以了100。除了heatmap 之外,还会有下面这种散点图
横坐标为基因之间的距离,纵坐标为衡量连锁不平衡的R2值。从图中可以看出连锁不平衡的规律,在一定距离内存在连锁不平衡程度较高,大于一定距离后,出现连锁不平衡的概率就大大降低了。这就是为什么在实际操作中只计算一定范围内的连锁不平衡的原因。