參考:https://cran./web/packages/rrBLUP/rrBLUP.pdf 思路: 1,模擬200個體,每個個體1000SNP的基因型數(shù)據(jù) 2,模擬一個表型數(shù)據(jù),首先模擬每個SNP的效應值,然后根據(jù)遺傳力,模擬表型值 3,使用rrBLUP計算A矩陣(G矩陣) 4,使用rrBLUP計算GBLUP,因為有真值(True breeding value),計算準確性 5,使用asreml軟件,計算GBLUP,這里G矩陣的對角線加0.01,防止奇異。同時使用attr將G的ID賦予rowNames,用于asreml的定義。 6,rrBLUP和asreml結(jié)果對比。 總體來說,這篇微信文是代碼的分享,然后炫耀我會使用這么多軟件。中午吃飯時,討論為什么要戒煙以及戒游戲,得到這個結(jié)論:人生的樂趣這么少,為什么還要戒。。。 1,生成模擬基因組數(shù)據(jù)生成200*1000個SNP數(shù)據(jù),其中有200個個體,每個個體有1000個SNP rm(list=ls())
set.seed(100)
M <- matrix(rep(0,200*1000),200,1000) 2,生成模擬表型數(shù)據(jù),遺傳力為0.5#random phenotypes
3,使用rrBLUP計算計算G矩陣if(!requireNamespace("rrBLUP")) install.packages("rrBLUP")
4,使用rrBLUP計算GBLUP,并比較準確性ans <- kin.blup(data=data,geno="gid",pheno="y",K=A)
accuracy <- cor(g,ans$g)
accuracy
plot(g,ans$g) 0.73764143220772 5,使用asreml-r計算GBLUPif (!requireNamespace("learnasreml")) devtools::install_github("dengfei2013/learnasreml") diag(A) = diag(A) + 0.01 ASReml: Fri Nov 09 21:10:14 2018
LogLik S2 DF wall cpu
-831.0248 1261.3325 199 21:10:14 0.0
-829.6764 1027.8914 199 21:10:14 0.0
-828.6137 764.9393 199 21:10:14 0.0
-828.1743 535.8671 199 21:10:14 0.0
-828.1459 468.9919 199 21:10:14 0.0
-828.1457 463.5712 199 21:10:14 0.0
-828.1457 463.7794 199 21:10:14 0.0
Finished on: Fri Nov 09 21:10:14 2018
LogLikelihood Converged
pin(mod,h2 ~V1/(V1+V2))
pre <- predict(mod,"gid")$prediction$pvals ASReml: Fri Nov 09 21:10:18 2018
LogLik S2 DF wall cpu
-828.1457 463.7690 199 21:10:18 0.0
-828.1457 463.7692 199 21:10:18 0.0
-828.1457 463.7694 199 21:10:18 0.0
-828.1457 463.7695 199 21:10:18 0.0
Finished on: Fri Nov 09 21:10:18 2018
LogLikelihood Converged
計算GBLUP和TBV的相關性 cor(g,pre$predicted.value)
plot(g,pre$predicted.value) 0.736187643745443 計算asreml和rrBLUP的GBLUP相關性cor(pre$predicted.value,ans$g)
plot(pre$predicted.value,ans$g) 0.999913776260597 結(jié)論
|
|
來自: 育種數(shù)據(jù)分析 > 《待分類》