# Linear Models for the Prediction of Animal Breeding Values, 3rd Edition.

# Raphael Mrode

# Example 11.1 p180

SNP effect를 고정효과로 모형에 넣어 SNP 추정하고 개체의 genotype을 이용하여 개체의 DGV(direct genomic breeding value)를 추정할 수 있다. SNP effect로 개체의 모든 유전적 효과를 설명할 수 없으므로  polygenic effect를 추가하여 분석한다. 그래서 분석모형은 y = mean + snp effect + polygenic effect + e 가 된다.

 

SNP effect의 design matrix를 만드는 방법은 다음과 같다. SNP gentype을 먼저 0, 1, 2로 코드화 한다. SNP 별로 평균을 구하는데 각 개체별로 두 개의 SNP가 동원된 것으므로 SNP 별 합을 개체의 2배수로 나누어 평균을 구한다. 코드화한 genotype에서 각 SNP의 평균의 2배를 빼 SNP effect의 design matrix를 구한다. 이 개체별 design matrix를 이용하여 나중에 SNP effect 추정 후 DGV를 추정한다. 

 

예제에서는 단지 3개의 SNP만을 이용하는 것을 보여준다.

 

Data

animal sire dam mean edc fat_dyd snp1 snp2 snp3 snp4 snp5 snp6 snp7 snp8 snp9 snp10
13 0 0 1 558 9 2 0 1 1 0 0 0 2 1 2
14 0 0 1 722 13.4 1 0 0 0 0 2 0 2 1 0
15 13 4 1 300 12.7 1 1 2 1 1 0 0 2 1 2
16 15 2 1 73 15.4 0 0 2 1 0 1 0 2 2 1
17 15 5 1 52 5.9 0 1 1 2 0 0 0 2 1 2
18 14 6 1 87 7.7 1 1 0 1 0 2 0 2 2 1
19 14 9 1 64 10.2 0 0 1 1 0 2 0 2 2 0
20 14 9 1 103 4.8 0 1 1 0 0 1 0 2 2 0
21 1 3 1 13 7.6 2 0 0 0 0 1 2 2 1 2
22 14 8 1 125 8.8 0 0 0 1 1 2 0 2 0 0
23 14 11 1 93 9.8 0 1 1 0 0 1 0 2 2 1
24 14 10 1 66 9.2 1 0 0 0 1 1 0 2 0 0
25 14 7 1 75 11.5 0 0 0 1 1 2 0 2 1 0
26 14 12 1 33 13.3 1 0 1 1 0 2 0 1 0 0

 

Pedigree

animal sire dam
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 0
13 0 0
14 0 0
15 13 4
16 15 2
17 15 5
18 14 6
19 14 9
20 14 9
21 1 3
22 14 8
23 14 11
24 14 10
25 14 7
26 14 12

 

Program

# Fixed Effect Model for SNP Effect, unweighted analysis

# Linear Models for the Prediction of Animal Breeding Values, 3rd Edition.

# Raphael Mrode

# Example 11.1 p180

# MASS packages
if (!("MASS" %in% installed.packages())) {
  install.packages("MASS", dependencies = TRUE)
}
library(MASS)

# functions

# make design matrix 
desgn <- function(v) {
  if (is.numeric(v)) {
    va = v
    mrow = length(va)
    mcol = max(va)
  }
  if (is.character(v)) {
    vf = factor(v)
    # 각 수준의 인덱스 값을 저장
    va = as.numeric(vf)
    mrow = length(va)
    mcol = length(levels(vf))
  }
  
  # 0으로 채워진 X 준비
  X = matrix(data = c(0), nrow = mrow, ncol = mcol)
  
  for (i in 1:mrow) {
    ic = va[i]
    X[i, ic] = 1
  }
  return(X)
}

# function to make inverse of numerator relationship matrix
ainv = function(pedi) {
  n = nrow(pedi)
  Ainv = matrix(c(0), nrow = n, ncol = n)
  
  for (i in 1:n) {
    animal = pedi[i, 1]
    sire = pedi[i, 2]
    dam = pedi[i, 3]
    
    if (sire == 0 & dam == 0) {
      # both parents unknown
      alpha = 1
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
    } else if (sire != 0 & dam == 0) {
      # sire known
      alpha = 4/3
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
      Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
      Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
      Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
    } else if (sire == 0 & dam != 0) {
      # dam known
      alpha = 4/3
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
      Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
      Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
      Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
    } else {
      # both parents known
      alpha = 2
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
      Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
      Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
      Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
      Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
      Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
      Ainv[sire, dam] = alpha/4 + Ainv[sire, dam]
      Ainv[dam, sire] = alpha/4 + Ainv[dam, sire]
      Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
    }
  }
  return(Ainv)
}

# set working directory 
setwd(".") 

# print working directory 
getwd()

# prdigree and data

# read pedigree : animal sire dam
pedi = read.table("fem_snp_pedi.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)

# print
pedi

# read data : animal, sex, pre-weaning gain
data = read.table("fem_snp_data.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)

# print
data

# variance component and ratio
sigma_a = 35.241
sigma_e = 245
alpha = sigma_e/sigma_a

# print
sigma_a
sigma_e
alpha

# observation
y = data[1:8, 6]

# print
y

# design matrix

# design matrix of fixed effect
X = matrix(rep(1, 8), 8, 1)

# print
X

# SNP effect
M = as.matrix(data[1:8, 7:9])

# design matrix for SNP effect
# mean of SNP effect
M_all = as.matrix(data[, 7:9])
snp_mean = colMeans(M_all) / 2
Z = sweep(M, 2, snp_mean * 2)
Z

# design matrix for polygenic effect
W = cbind(matrix(rep(0, 8 * 12), 8, 12), diag(8), matrix(rep(0, 8 * 6), 8, 6))
W

# inverse matrix of NRM
ai = ainv(pedi)

# print
ai

# LHS, RHS

# LHS
LHS = rbind(
  cbind(t(X) %*% X, t(X) %*% Z, t(X) %*% W), 
  cbind(t(Z) %*% X, t(Z) %*% Z, t(Z) %*% W),
  cbind(t(W) %*% X, t(W) %*% Z, t(W) %*% W + ai * alpha))

# print
LHS

# RHS
RHS = rbind(t(X) %*% y, 
            t(Z) %*% y,
            t(W) %*% y)

# print
RHS

# Solutions

# generalized inverse of LHS
gi_LHS = ginv(LHS)

# print
gi_LHS

# solution
sol = gi_LHS %*% RHS

# print
sol

# mean effect of solutions
mean_eff = sol[1]
mean_eff

# snp effect of solutions
snp_eff = sol[2:4]
snp_eff

# polygenic effect of solutions
polge_eff = sol[5:30]
polge_eff

# calculate DGV
# genotype of animals

# design matrix of animals
P2 = sweep(M_all, 2, snp_mean * 2)
P2

# DGV
dgv = P2 %*% snp_eff
dgv

# GEBV : animal 13 ~ 26
gebv = dgv + polge_eff[13:26]
gebv

 

Result

RStudio에서 실행한 결과

 

> # Fixed Effect Model for SNP Effect, unweighted analysis
> 
> # Linear Models for the Prediction of Animal Breeding Values, 3rd Edition.
> 
> # Raphael Mrode
> 
> # Example 11.1 p180
> 
> # MASS packages
> if (!("MASS" %in% installed.packages())) {
+   install.packages("MASS", dependencies = TRUE)
+ }
> library(MASS)
> 
> # functions
> 
> # make design matrix 
> desgn <- function(v) {
+   if (is.numeric(v)) {
+     va = v
+     mrow = length(va)
+     mcol = max(va)
+   }
+   if (is.character(v)) {
+     vf = factor(v)
+     # 각 수준의 인덱스 값을 저장
+     va = as.numeric(vf)
+     mrow = length(va)
+     mcol = length(levels(vf))
+   }
+   
+   # 0으로 채워진 X 준비
+   X = matrix(data = c(0), nrow = mrow, ncol = mcol)
+   
+   for (i in 1:mrow) {
+     ic = va[i]
+     X[i, ic] = 1
+   }
+   return(X)
+ }
> 
> # function to make inverse of numerator relationship matrix
> ainv = function(pedi) {
+   n = nrow(pedi)
+   Ainv = matrix(c(0), nrow = n, ncol = n)
+   
+   for (i in 1:n) {
+     animal = pedi[i, 1]
+     sire = pedi[i, 2]
+     dam = pedi[i, 3]
+     
+     if (sire == 0 & dam == 0) {
+       # both parents unknown
+       alpha = 1
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+     } else if (sire != 0 & dam == 0) {
+       # sire known
+       alpha = 4/3
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+       Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
+       Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
+       Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
+     } else if (sire == 0 & dam != 0) {
+       # dam known
+       alpha = 4/3
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+       Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
+       Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
+       Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
+     } else {
+       # both parents known
+       alpha = 2
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+       Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
+       Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
+       Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
+       Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
+       Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
+       Ainv[sire, dam] = alpha/4 + Ainv[sire, dam]
+       Ainv[dam, sire] = alpha/4 + Ainv[dam, sire]
+       Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
+     }
+   }
+   return(Ainv)
+ }
> 
> # set working directory 
> setwd(".") 
> 
> # print working directory 
> getwd()
[1] "D:/users/bhpark/2020/job/공부하기/07_Linear Models for the Prediction of Animal Breeding Values_3rd_Mrode/11_fixed effecct model for SNP effects_unweighted"
> 
> # prdigree and data
> 
> # read pedigree : animal sire dam
> pedi = read.table("fem_snp_pedi.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)
> 
> # print
> pedi
   animal sire dam
1       1    0   0
2       2    0   0
3       3    0   0
4       4    0   0
5       5    0   0
6       6    0   0
7       7    0   0
8       8    0   0
9       9    0   0
10     10    0   0
11     11    0   0
12     12    0   0
13     13    0   0
14     14    0   0
15     15   13   4
16     16   15   2
17     17   15   5
18     18   14   6
19     19   14   9
20     20   14   9
21     21    1   3
22     22   14   8
23     23   14  11
24     24   14  10
25     25   14   7
26     26   14  12
> 
> # read data : animal, sex, pre-weaning gain
> data = read.table("fem_snp_data.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)
> 
> # print
> data
   animal sire dam mean edc fat_dyd snp1 snp2 snp3 snp4 snp5 snp6 snp7 snp8 snp9 snp10
1      13    0   0    1 558     9.0    2    0    1    1    0    0    0    2    1     2
2      14    0   0    1 722    13.4    1    0    0    0    0    2    0    2    1     0
3      15   13   4    1 300    12.7    1    1    2    1    1    0    0    2    1     2
4      16   15   2    1  73    15.4    0    0    2    1    0    1    0    2    2     1
5      17   15   5    1  52     5.9    0    1    1    2    0    0    0    2    1     2
6      18   14   6    1  87     7.7    1    1    0    1    0    2    0    2    2     1
7      19   14   9    1  64    10.2    0    0    1    1    0    2    0    2    2     0
8      20   14   9    1 103     4.8    0    1    1    0    0    1    0    2    2     0
9      21    1   3    1  13     7.6    2    0    0    0    0    1    2    2    1     2
10     22   14   8    1 125     8.8    0    0    0    1    1    2    0    2    0     0
11     23   14  11    1  93     9.8    0    1    1    0    0    1    0    2    2     1
12     24   14  10    1  66     9.2    1    0    0    0    1    1    0    2    0     0
13     25   14   7    1  75    11.5    0    0    0    1    1    2    0    2    1     0
14     26   14  12    1  33    13.3    1    0    1    1    0    2    0    1    0     0
> 
> # variance component and ratio
> sigma_a = 35.241
> sigma_e = 245
> alpha = sigma_e/sigma_a
> 
> # print
> sigma_a
[1] 35.241
> sigma_e
[1] 245
> alpha
[1] 6.95213
> 
> # observation
> y = data[1:8, 6]
> 
> # print
> y
[1]  9.0 13.4 12.7 15.4  5.9  7.7 10.2  4.8
> 
> # design matrix
> 
> # design matrix of fixed effect
> X = matrix(rep(1, 8), 8, 1)
> 
> # print
> X
     [,1]
[1,]    1
[2,]    1
[3,]    1
[4,]    1
[5,]    1
[6,]    1
[7,]    1
[8,]    1
> 
> # SNP effect
> M = as.matrix(data[1:8, 7:9])
> 
> # design matrix for SNP effect
> # mean of SNP effect
> M_all = as.matrix(data[, 7:9])
> snp_mean = colMeans(M_all) / 2
> Z = sweep(M, 2, snp_mean * 2)
> Z
        snp1       snp2       snp3
1  1.3571429 -0.3571429  0.2857143
2  0.3571429 -0.3571429 -0.7142857
3  0.3571429  0.6428571  1.2857143
4 -0.6428571 -0.3571429  1.2857143
5 -0.6428571  0.6428571  0.2857143
6  0.3571429  0.6428571 -0.7142857
7 -0.6428571 -0.3571429  0.2857143
8 -0.6428571  0.6428571  0.2857143
> 
> # design matrix for polygenic effect
> W = cbind(matrix(rep(0, 8 * 12), 8, 12), diag(8), matrix(rep(0, 8 * 6), 8, 6))
> W
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26]
[1,]    0    0    0    0    0    0    0    0    0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0
[2,]    0    0    0    0    0    0    0    0    0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0
[3,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0
[4,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0
[5,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
[6,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0
[7,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
[8,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
> 
> # inverse matrix of NRM
> ai = ainv(pedi)
> 
> # print
> ai
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
 [1,]  1.5  0.0  0.5  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.0     0     0     0     0     0    -1     0     0     0     0
 [2,]  0.0  1.5  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.5    -1     0     0     0     0     0     0     0     0     0
 [3,]  0.5  0.0  1.5  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.0     0     0     0     0     0    -1     0     0     0     0
 [4,]  0.0  0.0  0.0  1.5  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.5   0.0  -1.0     0     0     0     0     0     0     0     0     0     0
 [5,]  0.0  0.0  0.0  0.0  1.5  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.5     0    -1     0     0     0     0     0     0     0     0
 [6,]  0.0  0.0  0.0  0.0  0.0  1.5  0.0  0.0    0   0.0   0.0   0.0   0.0   0.5   0.0     0     0    -1     0     0     0     0     0     0     0
 [7,]  0.0  0.0  0.0  0.0  0.0  0.0  1.5  0.0    0   0.0   0.0   0.0   0.0   0.5   0.0     0     0     0     0     0     0     0     0     0    -1
 [8,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.5    0   0.0   0.0   0.0   0.0   0.5   0.0     0     0     0     0     0     0    -1     0     0     0
 [9,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    2   0.0   0.0   0.0   0.0   1.0   0.0     0     0     0    -1    -1     0     0     0     0     0
[10,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   1.5   0.0   0.0   0.0   0.5   0.0     0     0     0     0     0     0     0     0    -1     0
[11,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   1.5   0.0   0.0   0.5   0.0     0     0     0     0     0     0     0    -1     0     0
[12,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   1.5   0.0   0.5   0.0     0     0     0     0     0     0     0     0     0     0
[13,]  0.0  0.0  0.0  0.5  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   1.5   0.0  -1.0     0     0     0     0     0     0     0     0     0     0
[14,]  0.0  0.0  0.0  0.0  0.0  0.5  0.5  0.5    1   0.5   0.5   0.5   0.0   5.0   0.0     0     0    -1    -1    -1     0    -1    -1    -1    -1
[15,]  0.0  0.5  0.0 -1.0  0.5  0.0  0.0  0.0    0   0.0   0.0   0.0  -1.0   0.0   3.0    -1    -1     0     0     0     0     0     0     0     0
[16,]  0.0 -1.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0  -1.0     2     0     0     0     0     0     0     0     0     0
[17,]  0.0  0.0  0.0  0.0 -1.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0  -1.0     0     2     0     0     0     0     0     0     0     0
[18,]  0.0  0.0  0.0  0.0  0.0 -1.0  0.0  0.0    0   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     2     0     0     0     0     0     0     0
[19,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   -1   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     2     0     0     0     0     0     0
[20,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   -1   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     2     0     0     0     0     0
[21,] -1.0  0.0 -1.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.0     0     0     0     0     0     2     0     0     0     0
[22,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0 -1.0    0   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     2     0     0     0
[23,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0  -1.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     2     0     0
[24,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0  -1.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     0     2     0
[25,]  0.0  0.0  0.0  0.0  0.0  0.0 -1.0  0.0    0   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     0     0     2
[26,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0  -1.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     0     0     0
      [,26]
 [1,]     0
 [2,]     0
 [3,]     0
 [4,]     0
 [5,]     0
 [6,]     0
 [7,]     0
 [8,]     0
 [9,]     0
[10,]     0
[11,]     0
[12,]    -1
[13,]     0
[14,]    -1
[15,]     0
[16,]     0
[17,]     0
[18,]     0
[19,]     0
[20,]     0
[21,]     0
[22,]     0
[23,]     0
[24,]     0
[25,]     0
[26,]     2
> 
> # LHS, RHS
> 
> # LHS
> LHS = rbind(
+   cbind(t(X) %*% X, t(X) %*% Z, t(X) %*% W), 
+   cbind(t(Z) %*% X, t(Z) %*% Z, t(Z) %*% W),
+   cbind(t(W) %*% X, t(W) %*% Z, t(W) %*% W + ai * alpha))
> 
> # print
> LHS
                      snp1       snp2       snp3                                                                                                   
      8.0000000 -0.1428571  1.1428571  2.2857143  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
snp1 -0.1428571  3.8775510 -0.5204082 -1.0408163  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
snp2  1.1428571 -0.5204082  2.1632653  0.3265306  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
snp3  2.2857143 -1.0408163  0.3265306  4.6530612  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000 10.428194  0.000000  3.476065  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000 10.428194  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  3.476065  0.000000 10.428194  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000 10.428194  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000 10.428194  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000 10.428194  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 10.428194  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 10.428194  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 13.90426  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000 10.428194
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      1.0000000  1.3571429 -0.3571429  0.2857143  0.000000  0.000000  0.000000  3.476065  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      1.0000000  0.3571429 -0.3571429 -0.7142857  0.000000  0.000000  0.000000  0.000000  0.000000  3.476065  3.476065  3.476065  6.95213  3.476065
      1.0000000  0.3571429  0.6428571  1.2857143  0.000000  3.476065  0.000000 -6.952130  3.476065  0.000000  0.000000  0.000000  0.00000  0.000000
      1.0000000 -0.6428571 -0.3571429  1.2857143  0.000000 -6.952130  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      1.0000000 -0.6428571  0.6428571  0.2857143  0.000000  0.000000  0.000000  0.000000 -6.952130  0.000000  0.000000  0.000000  0.00000  0.000000
      1.0000000  0.3571429  0.6428571 -0.7142857  0.000000  0.000000  0.000000  0.000000  0.000000 -6.952130  0.000000  0.000000  0.00000  0.000000
      1.0000000 -0.6428571 -0.3571429  0.2857143  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 -6.95213  0.000000
      1.0000000 -0.6428571  0.6428571  0.2857143  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 -6.95213  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000 -6.952130  0.000000 -6.952130  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 -6.952130  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000 -6.952130
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000 -6.952130  0.000000  0.00000  0.000000
      0.0000000  0.0000000  0.0000000  0.0000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  0.000000
                                                                                                                                                    
      0.000000  0.000000  1.0000000  1.0000000  1.0000000  1.0000000  1.0000000  1.0000000  1.0000000  1.0000000  0.00000  0.00000  0.00000  0.00000
snp1  0.000000  0.000000  1.3571429  0.3571429  0.3571429 -0.6428571 -0.6428571  0.3571429 -0.6428571 -0.6428571  0.00000  0.00000  0.00000  0.00000
snp2  0.000000  0.000000 -0.3571429 -0.3571429  0.6428571 -0.3571429  0.6428571  0.6428571 -0.3571429  0.6428571  0.00000  0.00000  0.00000  0.00000
snp3  0.000000  0.000000  0.2857143 -0.7142857  1.2857143  1.2857143  0.2857143 -0.7142857  0.2857143  0.2857143  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000 -6.95213  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000  3.4760648 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000 -6.95213  0.00000  0.00000  0.00000
      0.000000  0.000000  3.4760648  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000  3.4760648  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  3.4760648  0.0000000  0.0000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  3.4760648  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  3.4760648  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000 -6.95213  0.00000  0.00000
      0.000000  0.000000  0.0000000  6.9521296  0.0000000  0.0000000  0.0000000  0.0000000 -6.9521296 -6.9521296  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  3.4760648  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000 -6.95213
     10.428194  0.000000  0.0000000  3.4760648  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000 -6.95213  0.00000
      0.000000 10.428194  0.0000000  3.4760648  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000 11.4281944  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      3.476065  3.476065  0.0000000 35.7606481  0.0000000  0.0000000  0.0000000 -6.9521296 -6.9521296 -6.9521296  0.00000 -6.95213 -6.95213 -6.95213
      0.000000  0.000000 -6.9521296  0.0000000 21.8563889 -6.9521296 -6.9521296  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000 -6.9521296 14.9042592  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000 -6.9521296  0.0000000 14.9042592  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000 14.9042592  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000 14.9042592  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000 14.9042592  0.00000  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000 13.90426  0.00000  0.00000  0.00000
      0.000000  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000 13.90426  0.00000  0.00000
     -6.952130  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000 13.90426  0.00000
      0.000000  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000 13.90426
      0.000000  0.000000  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
      0.000000 -6.952130  0.0000000 -6.9521296  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.00000  0.00000  0.00000  0.00000
                      
      0.00000  0.00000
snp1  0.00000  0.00000
snp2  0.00000  0.00000
snp3  0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
     -6.95213  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000 -6.95213
      0.00000  0.00000
     -6.95213 -6.95213
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
      0.00000  0.00000
     13.90426  0.00000
      0.00000 13.90426
> 
> # RHS
> RHS = rbind(t(X) %*% y, 
+             t(Z) %*% y,
+             t(W) %*% y)
> 
> # print
> RHS
      [,1]
     79.10
snp1  0.95
snp2  2.85
snp3 29.60
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
      9.00
     13.40
     12.70
     15.40
      5.90
      7.70
     10.20
      4.80
      0.00
      0.00
      0.00
      0.00
      0.00
      0.00
> 
> # Solutions
> 
> # generalized inverse of LHS
> gi_LHS = ginv(LHS)
> 
> # print
> gi_LHS
               [,1]          [,2]          [,3]          [,4]          [,5]          [,6]          [,7]          [,8]          [,9]         [,10]
 [1,]  2.029219e-01 -3.255082e-02 -8.500123e-02 -9.538670e-02 -8.813991e-17 -7.749019e-03 -5.907393e-17 -7.339499e-03 -8.423214e-03 -1.124651e-02
 [2,] -3.255082e-02  3.248575e-01  8.134068e-02  9.542976e-02 -1.098782e-16  1.072783e-02  1.818259e-16 -4.884210e-03  1.164245e-02 -4.992010e-03
 [3,] -8.500123e-02  8.134068e-02  5.604372e-01  2.307770e-02  4.164755e-16  2.081808e-02  1.597493e-16 -1.878828e-02 -1.406575e-02 -1.939051e-02
 [4,] -9.538670e-02  9.542976e-02  2.307770e-02  3.295430e-01 -5.230087e-17 -1.481457e-02  5.306137e-17 -2.760843e-02  5.080273e-03  1.647388e-02
 [5,]  2.329623e-18 -3.804909e-16  6.298383e-19 -2.879471e-16  1.438408e-01  4.622486e-16  1.249001e-16 -5.883868e-16  7.059733e-16 -2.124216e-18
 [6,] -7.749019e-03  1.072783e-02  2.081808e-02 -1.481457e-02  1.074399e-17  1.418405e-01  5.505648e-17 -1.363038e-04  3.553867e-04 -1.322611e-03
 [7,] -9.458291e-17 -2.158422e-16  1.088446e-16 -2.082423e-16  1.249001e-16  4.318604e-16  1.438408e-01 -6.173507e-16  7.389172e-16 -6.170158e-17
 [8,] -7.339499e-03 -4.884210e-03 -1.878828e-02 -2.760843e-02 -6.340412e-17 -1.363038e-04  1.479604e-17  1.424464e-01 -7.088821e-04  1.078415e-04
 [9,] -8.423214e-03  1.164245e-02 -1.406575e-02  5.080273e-03  2.970513e-17  3.553867e-04  3.015109e-17 -7.088821e-04  1.407702e-01  1.005601e-03
[10,] -1.124651e-02 -4.992010e-03 -1.939051e-02  1.647388e-02 -6.298026e-17 -1.322611e-03  7.610779e-18  1.078415e-04  1.005601e-03  1.415624e-01
[11,]  2.602085e-18 -8.933826e-17 -2.775558e-17 -2.263814e-16 -1.173397e-16  2.873136e-18 -1.536369e-16  6.017322e-17 -1.454864e-17  5.895349e-17
[12,] -2.862294e-17  2.602085e-17  2.428613e-17 -5.030698e-17  6.117076e-17  1.610040e-17  1.851744e-16  4.044074e-17 -3.342731e-17  1.669671e-17
[13,] -1.922866e-02  2.429536e-02  5.003082e-03  3.922659e-03 -7.208471e-17  1.958920e-03 -5.429396e-17  1.885193e-03  1.888782e-03  7.119691e-04
[14,] -1.214306e-17  6.765422e-17 -1.474515e-16 -4.336809e-18 -1.062664e-17  1.512462e-17 -1.474799e-16  4.380177e-17  5.109303e-18 -2.287667e-17
[15,]  3.469447e-18 -1.170938e-16  1.214306e-17 -9.020562e-17  1.516989e-16 -5.025277e-17  1.248652e-16  1.647987e-17  1.526015e-17  4.526544e-18
[16,] -1.821460e-17  7.546047e-17 -3.816392e-17  1.040834e-17 -4.032172e-17 -3.680866e-17 -3.779099e-18  7.166576e-17 -1.586323e-17  3.686287e-18
[17,] -2.676957e-02 -5.539375e-02  4.722536e-03 -3.923171e-02  1.830766e-16  4.916905e-04 -2.540570e-17  6.855658e-04 -2.361692e-03  8.977596e-04
[18,] -6.308434e-02  1.860433e-02  2.170085e-02  5.617790e-02 -6.347784e-17  6.532274e-04  3.333540e-17 -4.389663e-04  2.891378e-03  8.778743e-04
[19,] -2.439404e-02 -3.502319e-02 -2.582116e-02 -6.102850e-02  8.483571e-17  4.138959e-05  2.492510e-17  7.017152e-02 -2.244169e-03  6.106421e-04
[20,] -2.382055e-02 -1.419855e-03  1.831654e-02 -5.273610e-02  7.677376e-17  6.894064e-02  7.392803e-17  3.488130e-02 -5.890045e-04 -1.678596e-03
[21,] -2.483184e-02 -4.792207e-05 -3.400920e-02 -2.289384e-02  1.050041e-17  5.537749e-04  6.646180e-17  3.402244e-02  6.619246e-02  1.813723e-03
[22,] -4.841193e-02  1.814151e-03 -1.823534e-02  5.279976e-02 -7.729679e-17 -1.657303e-03 -3.493507e-18 -5.772085e-05  2.954091e-03  6.894169e-02
[23,] -5.362241e-02  3.632630e-02  3.465475e-02  3.278580e-02 -7.449488e-17  2.983928e-03  1.998763e-17  1.035410e-03  2.862601e-03  5.004040e-04
[24,] -4.791926e-02  3.086876e-02 -2.947737e-03  3.123741e-02 -1.102180e-16  1.587140e-03 -3.077451e-17  2.296009e-03  3.806341e-03  1.801408e-03
[25,]  7.898705e-18 -5.436645e-16 -2.488422e-17 -3.772473e-16  7.192041e-02  6.303627e-16  7.192041e-02 -8.573219e-16  1.034442e-15 -2.944094e-17
[26,] -3.154217e-02  9.302166e-03  1.085042e-02  2.808895e-02  2.137914e-17  3.266137e-04  1.717343e-16 -2.194831e-04  1.445689e-03  4.389372e-04
[27,] -3.154217e-02  9.302166e-03  1.085042e-02  2.808895e-02  5.746220e-17  3.266137e-04  1.583557e-16 -2.194831e-04  1.445689e-03  4.389372e-04
[28,] -3.154217e-02  9.302166e-03  1.085042e-02  2.808895e-02 -4.739571e-17  3.266137e-04 -8.756498e-17 -2.194831e-04  1.445689e-03  4.389372e-04
[29,] -3.154217e-02  9.302166e-03  1.085042e-02  2.808895e-02 -1.313957e-16  3.266137e-04 -9.889781e-17 -2.194831e-04  1.445689e-03  4.389372e-04
[30,] -3.154217e-02  9.302166e-03  1.085042e-02  2.808895e-02 -6.701577e-17  3.266137e-04 -2.937504e-17 -2.194831e-04  1.445689e-03  4.389372e-04
              [,11]         [,12]         [,13]         [,14]         [,15]         [,16]         [,17]         [,18]         [,19]         [,20]
 [1,] -5.551115e-17 -7.806256e-18 -1.922866e-02  5.204170e-18 -2.775558e-17 -2.515349e-17 -2.676957e-02 -6.308434e-02 -2.439404e-02 -2.382055e-02
 [2,] -9.540979e-18  6.938894e-18  2.429536e-02 -8.760354e-17  1.066855e-16 -9.714451e-17 -5.539375e-02  1.860433e-02 -3.502319e-02 -1.419855e-03
 [3,] -1.439820e-16 -1.561251e-17  5.003082e-03 -1.422473e-16  7.459311e-17 -1.214306e-17  4.722536e-03  2.170085e-02 -2.582116e-02  1.831654e-02
 [4,] -1.821460e-17 -5.204170e-18  3.922659e-03 -9.194034e-17  3.729655e-17 -4.597017e-17 -3.923171e-02  5.617790e-02 -6.102850e-02 -5.273610e-02
 [5,] -5.247009e-17 -1.715734e-16  2.485646e-16 -1.381342e-16 -1.409332e-16 -2.060732e-16 -7.631449e-17  8.574258e-17 -3.209790e-16  3.571539e-17
 [6,] -2.883978e-17 -1.149254e-17  1.958920e-03  7.155734e-18  6.619054e-17 -3.393553e-17  4.916905e-04  6.532274e-04  4.138959e-05  6.894064e-02
 [7,] -1.441928e-16 -8.548200e-17  3.535717e-16 -2.256486e-16 -2.257681e-16 -3.538410e-17 -2.422365e-17  2.345273e-16 -3.973950e-16  5.911108e-17
 [8,]  4.857226e-17  5.724587e-17  1.885193e-03  6.071532e-17  2.320193e-17  5.822166e-17  6.855658e-04 -4.389663e-04  7.017152e-02  3.488130e-02
 [9,] -7.264155e-18  3.416592e-17  1.888782e-03 -1.091656e-17  4.254138e-17  1.465706e-17 -2.361692e-03  2.891378e-03 -2.244169e-03 -5.890045e-04
[10,]  1.620882e-17  1.859407e-17  7.119691e-04  1.493488e-17 -1.414884e-17  3.930233e-18  8.977596e-04  8.778743e-04  6.106421e-04 -1.678596e-03
[11,]  1.438408e-01 -1.816039e-17 -2.753874e-17  3.339343e-17 -2.152141e-17 -7.746625e-17  1.052760e-16  1.604619e-17  1.476683e-16  9.432559e-17
[12,]  9.698188e-17  1.438408e-01  2.883978e-17 -8.164042e-17  2.222614e-18 -2.423192e-17  3.024924e-17 -3.903128e-18  6.526897e-17  6.112190e-17
[13,]  9.671083e-17 -6.635317e-17  1.390523e-01  3.512815e-17 -4.380177e-17  4.185020e-17  3.589691e-06 -1.659950e-03  2.829584e-03  4.353172e-03
[14,] -5.177065e-17 -5.187907e-17  5.312591e-17  1.438408e-01 -8.407988e-17 -1.859407e-17 -1.561251e-17  1.084202e-17  4.228388e-17  2.556007e-17
[15,] -6.911789e-17 -1.414884e-17  5.204170e-17  1.778092e-17  1.438408e-01 -6.559423e-18  3.469447e-17 -2.645453e-17  4.401861e-17 -8.782038e-18
[16,]  4.591596e-17  1.263096e-17  2.688821e-17 -1.530893e-16 -5.144539e-17  1.438408e-01 -8.565197e-18 -2.038300e-17  5.009014e-17  2.425902e-17
[17,]  3.946496e-17  2.949030e-17  3.589691e-06  4.130810e-17 -1.702197e-17  3.144186e-17  1.407936e-01  3.330344e-03  7.142513e-02  3.645010e-02
[18,]  1.023487e-16 -2.168404e-17 -1.659950e-03  3.122502e-17  6.505213e-18  2.645453e-17  3.330344e-03  1.381869e-01  1.006723e-03  1.483202e-03
[19,]  5.052382e-17  4.727121e-17  2.829584e-03  6.028164e-17 -6.071532e-18  4.531965e-17  7.142513e-02  1.006723e-03  1.409698e-01  7.054701e-02
[20,]  8.104411e-18  5.204170e-17  4.353172e-03  3.932943e-17  6.114900e-17  6.423898e-18  3.645010e-02  1.483202e-03  7.054701e-02  1.386845e-01
[21,]  2.580401e-17  1.886512e-17  4.247966e-03  1.951564e-17  8.890458e-18  2.092510e-17  3.217003e-02  4.840428e-03  6.711867e-02  3.439000e-02
[22,]  6.071532e-17 -8.239937e-18  2.379786e-04  2.298509e-17 -1.257675e-17  6.505213e-18  3.011811e-03  7.041027e-02  1.419324e-03 -1.776292e-03
[23,]  1.227317e-16 -6.461845e-17  6.646977e-02  2.688821e-17 -2.081668e-17  3.209238e-17  1.827191e-03  6.816151e-02  2.466711e-03  5.709247e-03
[24,]  1.079865e-16 -5.854692e-17  6.613409e-02  3.426079e-17 -3.035766e-17  3.339343e-17  1.510333e-03  6.670550e-02  4.199179e-03  4.480300e-03
[25,] -1.427243e-16 -1.969319e-16  3.742461e-16 -2.425523e-16 -2.478455e-16 -1.864753e-16 -5.631687e-17  1.414053e-16 -5.271757e-16  6.804336e-17
[26,]  1.951564e-17  7.192041e-02 -8.299750e-04  1.461505e-16 -1.821460e-17 -5.854692e-17  1.665172e-03  6.909345e-02  5.033613e-04  7.416012e-04
[27,]  9.150666e-17 -3.035766e-17 -8.299750e-04 -6.158268e-17  7.192041e-02  6.114900e-17  1.665172e-03  6.909345e-02  5.033613e-04  7.416012e-04
[28,]  6.028164e-17 -1.387779e-17 -8.299750e-04  7.192041e-02 -1.647987e-17  1.621966e-16  1.665172e-03  6.909345e-02  5.033613e-04  7.416012e-04
[29,]  7.192041e-02 -6.895526e-17 -8.299750e-04 -9.974660e-18  5.247539e-17 -6.938894e-17  1.665172e-03  6.909345e-02  5.033613e-04  7.416012e-04
[30,] -1.734723e-18  9.107298e-18 -8.299750e-04  1.162265e-16 -6.808790e-17  7.192041e-02  1.665172e-03  6.909345e-02  5.033613e-04  7.416012e-04
              [,21]         [,22]         [,23]         [,24]         [,25]         [,26]         [,27]         [,28]         [,29]         [,30]
 [1,] -2.483184e-02 -4.841193e-02 -5.362241e-02 -4.791926e-02 -1.050221e-16 -3.154217e-02 -3.154217e-02 -3.154217e-02 -3.154217e-02 -3.154217e-02
 [2,] -4.792207e-05  1.814151e-03  3.632630e-02  3.086876e-02  9.667407e-17  9.302166e-03  9.302166e-03  9.302166e-03  9.302166e-03  9.302166e-03
 [3,] -3.400920e-02 -1.823534e-02  3.465475e-02 -2.947737e-03  4.748412e-16  1.085042e-02  1.085042e-02  1.085042e-02  1.085042e-02  1.085042e-02
 [4,] -2.289384e-02  5.279976e-02  3.278580e-02  3.123741e-02  4.566415e-18  2.808895e-02  2.808895e-02  2.808895e-02  2.808895e-02  2.808895e-02
 [5,]  2.611025e-16  7.438382e-17  2.170978e-16  2.341855e-16  7.192041e-02  2.074505e-17 -1.276276e-16 -1.703319e-16 -3.906911e-17  2.854173e-17
 [6,]  5.537749e-04 -1.657303e-03  2.983928e-03  1.587140e-03  6.913168e-17  3.266137e-04  3.266137e-04  3.266137e-04  3.266137e-04  3.266137e-04
 [7,]  2.785272e-16  1.014383e-16  3.715807e-16  3.646591e-16  7.192041e-02 -1.650363e-17 -1.828810e-18  1.472670e-16  8.431150e-17 -1.323675e-17
 [8,]  3.402244e-02 -5.772085e-05  1.035410e-03  2.296009e-03  2.494461e-17 -2.194831e-04 -2.194831e-04 -2.194831e-04 -2.194831e-04 -2.194831e-04
 [9,]  6.619246e-02  2.954091e-03  2.862601e-03  3.806341e-03  5.572096e-17  1.445689e-03  1.445689e-03  1.445689e-03  1.445689e-03  1.445689e-03
[10,]  1.813723e-03  6.894169e-02  5.004040e-04  1.801408e-03 -4.553002e-17  4.389372e-04  4.389372e-04  4.389372e-04  4.389372e-04  4.389372e-04
[11,]  7.686993e-17  3.079134e-17 -4.770490e-18 -4.033232e-17  2.049676e-16  1.214306e-17  1.127570e-17  1.778092e-17  7.192041e-02 -6.765422e-17
[12,]  1.832302e-17 -1.474515e-17  9.974660e-18 -1.734723e-17 -8.632881e-17  7.192041e-02  1.040834e-17 -4.380177e-17  2.558717e-17 -2.341877e-17
[13,]  4.247966e-03  2.379786e-04  6.646977e-02  6.613409e-02 -8.332182e-17 -8.299750e-04 -8.299750e-04 -8.299750e-04 -8.299750e-04 -8.299750e-04
[14,]  4.976488e-17 -1.561251e-17  3.512815e-17  1.994932e-17  7.420757e-17 -4.336809e-17 -7.979728e-17  7.192041e-02 -3.946496e-17  2.255141e-17
[15,]  3.491131e-17 -3.165870e-17  7.372575e-18 -1.778092e-17 -2.976979e-16 -1.647987e-17  7.192041e-02  1.301043e-17 -5.854692e-17 -4.336809e-17
[16,]  1.593777e-17 -2.688821e-17  2.168404e-18 -1.257675e-17  1.265510e-16 -2.168404e-18 -2.255141e-17 -1.543904e-16  3.035766e-17  7.192041e-02
[17,]  3.217003e-02  3.011811e-03  1.827191e-03  1.510333e-03  5.811441e-17  1.665172e-03  1.665172e-03  1.665172e-03  1.665172e-03  1.665172e-03
[18,]  4.840428e-03  7.041027e-02  6.816151e-02  6.670550e-02 -1.879806e-17  6.909345e-02  6.909345e-02  6.909345e-02  6.909345e-02  6.909345e-02
[19,]  6.711867e-02  1.419324e-03  2.466711e-03  4.199179e-03  9.221979e-17  5.033613e-04  5.033613e-04  5.033613e-04  5.033613e-04  5.033613e-04
[20,]  3.439000e-02 -1.776292e-03  5.709247e-03  4.480300e-03  1.174630e-16  7.416012e-04  7.416012e-04  7.416012e-04  7.416012e-04  7.416012e-04
[21,]  1.328480e-01  5.140798e-03  5.527257e-03  7.809102e-03  6.274527e-17  2.420214e-03  2.420214e-03  2.420214e-03  2.420214e-03  2.420214e-03
[22,]  5.140798e-03  1.386177e-01  3.483136e-02  3.605486e-02 -7.342940e-17  3.520513e-02  3.520513e-02  3.520513e-02  3.520513e-02  3.520513e-02
[23,]  5.527257e-03  3.483136e-02  1.352606e-01  6.584049e-02 -3.876275e-17  3.408076e-02  3.408076e-02  3.408076e-02  3.408076e-02  3.408076e-02
[24,]  7.809102e-03  3.605486e-02  6.584049e-02  1.331332e-01 -8.314716e-17  3.335275e-02  3.335275e-02  3.335275e-02  3.335275e-02  3.335275e-02
[25,]  3.845722e-16  8.174885e-17  3.219778e-16  3.378198e-16  1.438408e-01 -5.498276e-17 -1.277190e-16 -4.527046e-17 -1.257900e-17 -3.813977e-17
[26,]  2.420214e-03  3.520513e-02  3.408076e-02  3.335275e-02 -6.326058e-17  1.424273e-01  3.454673e-02  3.454673e-02  3.454673e-02  3.454673e-02
[27,]  2.420214e-03  3.520513e-02  3.408076e-02  3.335275e-02 -2.253800e-16  3.454673e-02  1.424273e-01  3.454673e-02  3.454673e-02  3.454673e-02
[28,]  2.420214e-03  3.520513e-02  3.408076e-02  3.335275e-02  4.798244e-17  3.454673e-02  3.454673e-02  1.424273e-01  3.454673e-02  3.454673e-02
[29,]  2.420214e-03  3.520513e-02  3.408076e-02  3.335275e-02  1.484779e-16  3.454673e-02  3.454673e-02  3.454673e-02  1.424273e-01  3.454673e-02
[30,]  2.420214e-03  3.520513e-02  3.408076e-02  3.335275e-02  5.835403e-17  3.454673e-02  3.454673e-02  3.454673e-02  3.454673e-02  1.424273e-01
> 
> # solution
> sol = gi_LHS %*% RHS
> 
> # print
> sol
               [,1]
 [1,]  9.895358e+00
 [2,]  6.068652e-01
 [3,] -4.080274e+00
 [4,]  1.934155e+00
 [5,] -6.311179e-15
 [6,]  1.220146e-01
 [7,] -6.787405e-15
 [8,]  1.945577e-01
 [9,] -1.042586e-01
[10,]  9.507380e-02
[11,] -1.720163e-15
[12,] -1.656048e-15
[13,] -2.644430e-01
[14,]  1.180100e-16
[15,] -2.138676e-15
[16,] -6.615097e-16
[17,] -2.988163e-01
[18,]  2.558718e-01
[19,]  1.424285e-01
[20,]  2.542361e-01
[21,] -8.517367e-02
[22,]  2.705466e-01
[23,] -9.223368e-02
[24,] -1.807806e-01
[25,] -7.584268e-15
[26,]  1.279359e-01
[27,]  1.279359e-01
[28,]  1.279359e-01
[29,]  1.279359e-01
[30,]  1.279359e-01
> 
> # mean effect of solutions
> mean_eff = sol[1]
> mean_eff
[1] 9.895358
> 
> # snp effect of solutions
> snp_eff = sol[2:4]
> snp_eff
[1]  0.6068652 -4.0802744  1.9341548
> 
> # polygenic effect of solutions
> polge_eff = sol[5:30]
> polge_eff
 [1] -6.311179e-15  1.220146e-01 -6.787405e-15  1.945577e-01 -1.042586e-01  9.507380e-02 -1.720163e-15 -1.656048e-15 -2.644430e-01  1.180100e-16
[11] -2.138676e-15 -6.615097e-16 -2.988163e-01  2.558718e-01  1.424285e-01  2.542361e-01 -8.517367e-02  2.705466e-01 -9.223368e-02 -1.807806e-01
[21] -7.584268e-15  1.279359e-01  1.279359e-01  1.279359e-01  1.279359e-01  1.279359e-01
> 
> # calculate DGV
> # genotype of animals
> 
> # design matrix of animals
> P2 = sweep(M_all, 2, snp_mean * 2)
> P2
            snp1       snp2       snp3
 [1,]  1.3571429 -0.3571429  0.2857143
 [2,]  0.3571429 -0.3571429 -0.7142857
 [3,]  0.3571429  0.6428571  1.2857143
 [4,] -0.6428571 -0.3571429  1.2857143
 [5,] -0.6428571  0.6428571  0.2857143
 [6,]  0.3571429  0.6428571 -0.7142857
 [7,] -0.6428571 -0.3571429  0.2857143
 [8,] -0.6428571  0.6428571  0.2857143
 [9,]  1.3571429 -0.3571429 -0.7142857
[10,] -0.6428571 -0.3571429 -0.7142857
[11,] -0.6428571  0.6428571  0.2857143
[12,]  0.3571429 -0.3571429 -0.7142857
[13,] -0.6428571 -0.3571429 -0.7142857
[14,]  0.3571429 -0.3571429  0.2857143
> 
> # DGV
> dgv = P2 %*% snp_eff
> dgv
             [,1]
 [1,]  2.83345926
 [2,]  0.29243931
 [3,]  0.08047441
 [4,]  3.55388367
 [5,] -2.46054553
 [6,] -3.78783512
 [7,]  1.61972891
 [8,] -2.46054553
 [9,]  0.89930449
[10,] -0.31442586
[11,] -2.46054553
[12,]  0.29243931
[13,] -0.31442586
[14,]  2.22659408
> 
> # GEBV : animal 13 ~ 26
> gebv = dgv + polge_eff[13:26]
> gebv
            [,1]
 [1,]  2.5346429
 [2,]  0.5483112
 [3,]  0.2229029
 [4,]  3.8081198
 [5,] -2.5457192
 [6,] -3.5172885
 [7,]  1.5274952
 [8,] -2.6413261
 [9,]  0.8993045
[10,] -0.1864899
[11,] -2.3326096
[12,]  0.4203752
[13,] -0.1864899
[14,]  2.3545300
> 

 

SNP effect를 고정효과로 하여 추정한 후 개체의 SNP effect의 design matrix를 이용하여 DGV를 추정하였다. DGV와 polygenic effect를 합하여 GEBV를 계산하였다.

 

+ Recent posts