通過python運行asreml-R程序

ASReml是遺傳評估的先鋒軟件,但其R版本在R語言中的運行,受R語言的影響,有時速度上確實會有些慢。Python在數據量比較大時,運行速度確實快過R語言。所以,我也想試試,能否在Python中運行asreml-R程序。答案是可行。不過,R與Python兩種語言,在語法和編程上有所區別,仍需繼續摸索。

簡單示例如下:

### running asreml-R in python
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri
pandas2ri.activate()

## 運行asreml模型
rasr="""
library(asreml)
data(PrSpa,package='AAfun4')
fm1a.asr<-asreml(h5~1+Rep, random=~Fam, subset=Spacing=='3',data=PrSpa)
fm1a.asr
"""
asr=robjects.r(rasr)

## 提取方差分量結果
asr.res="""
function(testdata){
outdf<-summary(testdata)$varcomp[,1:2]
outdf$VarN=row.names(outdf)
outdf
}
"""
asrf=robjects.r(asr.res)
tt=asrf(asr)
rtt = pandas2ri.ri2py(tt)
rtt

運行結果如下:

In [99]: rtt
Out[99]: 
     component   std.error     VarN
0   441.974900  187.241317      Fam
1  5333.226967  337.202806  units!R

感受:確實感覺速度上好像快了些,且asreml程序運行過程不可見。

不過,在python中安裝rpy2包過程有些繁瑣,建議通過Anaconda安裝,方法參照貼子1,然後還需要一些環境變量PATH、R_HOME和R_USER,方法參照貼子2


  1. https://blog.csdn.net/qq_31342997/article/details/89428158 ↩︎

  2. https://blog.csdn.net/Lq_520/article/details/83856429 ↩︎

發佈了17 篇原創文章 · 獲贊 3 · 訪問量 2362
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章