使用Colleau算法构建A22矩阵

在 ssGBLUP 中需要构建 A22 矩阵,通过 Colleau 算法可以避免直接构建 A 矩阵,节约内存和时间。

A 阵分解

我们可以将 分解为 (要求系谱按照出生日期顺序排序)。

其中 是一个对角矩阵,其元素计算公式如下,其中 是近交系数。

这里 是一个下三角矩阵,对角线元素为 0,非对角线只有亲子间为 0.5,其余元素也为 0 。

矩阵举例如下:

Colleau 算法

Colleau (2002) 年证明 阵与一个向量 的乘积可以在一个线性的时间内计算完成,如下

这里我们可以分步骤进行计算:

  • 首先我们定义 ,转换一下我们可以通过求解三角方程组 得到

  • 然后我们得到 ,转换一下我们可以通过求解三角方程组 得到

标量公式如下(第一行是采用 outer-product 的原理;第二行是采用向量内积的原理)

这里的 表示个体 的父母本。

通过 Colleau 算法可以用于计算子矩阵,举个例子,下面展示了如何计算

构建 A22 矩阵

这里需要注意的是,构建 阵时是按照出生日期顺序排序,但是我们提取A22 矩阵要求按照无基因型个体在前,有基因型个体在后的顺序排列,因此我们还要对原始的 阵的行和列进行重新重排。我们设相应的置换矩阵为 ,重排后按照无基因型个体在前,有基因型个体在后的顺序的矩阵称为 矩阵,则有

此时我们逐列提取 A22 矩阵的每一列,举个例子,假如基因型个体在 矩阵中的位置是 80 到 100,那么我们构建第一个 向量就是在 80位置为1,其它位置为0;构建第二个 向量就是在 81位置为1,其它位置为0 …以此类推。

通过 便可以得到 A22 矩阵个体的一列,其计算公式为

这里我们可以同样分步骤进行计算:

  • 首先计算

  • 我们定义 ,转换一下我们可以通过求解三角方程组 得到

  • 然后我们得到 ,转换一下我们可以通过求解三角方程组 得到

  • 然后我们通过 得到

最后这里得到的 还包含一些无关元素,按照上例,还需要从 提取从 80 到 100 的位置的元素,这才是真正的 A22 矩阵的一列元素。

参考文献

  1. Colleau J J. An indirect approach to the extensive calculation of relationship coefficients[J]. Genetics Selection Evolution, 2002, 34(4): 409.

  2. Misztal I, Aguilar I, Legarra A, et al. A unified approach to utilize phenotypic, full pedigree, andgenomic information for genetic evaluation[C]//9. World Congress on Genetics Applied to Livestock Production. 2010.

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2024 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信