R/qtl 定位分析(五)Two-QTL scans

2023-03-14  本文已影响0人  风知秋

在此之前,仅仅考虑了一维的基因组扫描,但是多数复杂性状都是多个遗传位点共同作用的结果,不同位点之间可能存在连锁或者上位性。而这一部分开始考虑 QTL 之间的连锁和相互作用。

通过考虑较大效应的QTL,可以减少残差变异,从而更好地识别效应较小的QTL;通过比较双 QTL 模型和最佳单 QTL 模型的拟合,可以较好地分离连锁 QTL;另外,QTL 之间的上位性只能通过考虑多个 QTL 的模型来实现。


在此之前,有需要的可以看一下前面几篇内容:

R/qtl 定位分析(一)读取数据

R/qtl 定位分析(二)Data Check

R/qtl 定位分析(三)Single-QTL analysis

R/qtl 定位分析(四)Non-normal phenotypes


首先考虑符合正态分布的性状的 two-dimensional genome scans。

1. 原理

假设基因组上存在 2 个 QTL,它们可能出现在基因组上的任何位置,考虑以下 4 种模型:

可以看出,Hf 考虑了 QTL 之间的相互作用;Ha 仅考虑了两个 QTL 之间的加性效应;H1 仅考虑单个 QTL 存在的情况;H0 考虑了不存在 QTL 的情况。

为比较表型和标记之间的关系对于上述 4 种模型的拟合情况,定义了 LOD 得分来衡量:

LODf,衡量了 full two-locus model 相较于 null model 对于拟合的提升,在考虑了相互作用的情况下表明至少一个 QTL 存在的证据。

LODa 衡量了 the two-locus additive model 对拟合的提升,并在假设没有相互作用的情况下,至少有一个 QTL 的证据。

LODi 衡量了 full model 优于 additive model 的拟合,表明了相互作用的证据。

LOD1仅表示了一维单 QTL 扫描的得分。

这些 LOD 得分可能不好解释。如果一个位置 s0 处存在 QTL,那么 LOD1(s0) 会很大,而 LODf(s0, t) 和 LODa(s0, t)  对于任何 t 都会很大。

重要的是对第二个 QTL 存在的证据进行评估,即双 QTL 模型是否比单 QTL 模型提供了足够好的拟合。

因此,可以关注单个染色体或一对染色体(两条染色体分别用  j 和 k 表示,二者可以相等),每一对染色体最大的 LOD 得分可以计算:

进一步可以计算如下的 LOD 得分:

Mi(j, k) 为假设两条染色体上各存在一个 QTL,或单条(j=k)染色体上存在两个 QTL ,两个 QTL 之间相互作用的证据;

Mfv1(j, k) 是允许上位效应的情况下,第二个 QTL 存在的证据;

Mav1(j, k) 是假设没有上位效应的情况下,第二个 QTL 存在的证据。

因此,在 two-QTL 基因组扫描中,将着重关注如下 5 个 LOD 得分的分布,通过模拟可以获得每一个得分的阈值,在满足以下任一条件时则报告:


2. 计算

这一计算是通过 scantwo 函数完成的。需要注意的是,这一步的计算量增加会很多。

library(qtl)

data(hyper)

hyper <- calc.genoprob(hyper, step=2.5, err=0.001)     # step设置为了更快的计算速度

out2 <- scantwo(hyper, verbose=FALSE)

上述计算结果的一系列绘图分析就不展示和解释了,主要还是不同 LOD 得分之间的绘图比较,而且也不好解释,这里直接使用 summary 来看一下结果。

summary(out2, thresholds=c(6.0, 4.7, 4.4, 4.7, 2.6))

# 这里的阈值使用的是小鼠回交模拟得到的 95% 分位的阈值。

其中,pos1f, pos2f 分别表示在 full model 下估计的两个 QTL 的位置;pos1a, pos2a 分别表示在 additive model 下估计的两个 QTL 的位置;

结果可以发现,1 和 4 号染色体上存在一对 QTL,但二者之间没有相互作用(Mi = 0.305);而 6 和 15 号染色体明显存在一对 QTL,但只在允许相互作用的情况下存在(Mfv1 = 5.4 and Mav1 = 1.9),并且不同模型下的位置相差很大。

一般来说,我们最好还是基于自己的数据情况通过模拟得到不同 LOD 得分的阈值。命令很简单,就是比较耗时:

operm2 <- scantwo(hyper, n.perm=1000)

summary(operm2)

summary(out2, perms=operm2, alphas=c(0.2, 0.2, 0, 0.2, 0.2), pvalues=TRUE)

结果相较之前,在 3 号染色体多了一对紧密连锁的 QTL,不过由于位置过近,可能是 artifact。为降低这种 artifact 可能性,可以在 scantwo 函数中增加 clean.output=TRUE 参数。

summary(clean(out2), perms=operm2, alphas=c(0.2, 0.2, 0, 0.2, 0.2))

该案例中结果并没有改变。

大多数 QTL 在单 QTL 扫描中就可以得到,但双 QTL 扫描对于那些参与上位性相互作用的 QTL 有较好的识别,以及可以识别连锁的 QTL。


上一篇 下一篇

猜你喜欢

热点阅读