我正在尝试使用rpy2中的bioconductor(特别是seqLogo)。我找到了有用的包裹:
http://pythonhosted.org/rpy2-bioconductor-extensions/index.html
然而,当我从包的文档中尝试这个时:
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
base = importr('base')
# evaluate locally a remote R script
base.source("http://www.bioconductor.org/biocLite.R")
base.require("biocLite")
bioclite = robjects.globalenv['biocLite']
我收到错误
File "/usr/local/lib/python2.7/dist-packages/rpy2-2.3.6-py2.7-linux-x86_64.egg/rpy2/robjects/environments.py", line 17, in __getitem__
res = super(Environment, self).__getitem__(item)
LookupError: 'biocLite' not found
在我的系统的R环境中,以下工作完美:
> require(seqLogo)
我想使用rpy2中已安装的seqLogo
软件包。如何才能做到这一点?因为我安装了rpy2,我可以这样做:
>>> import bioc
但不确定如何从bioc
安装新的bioconductor软件包,例如seqLogo。
如果我尝试:
importr("seqLogo")
我收到错误:
rpy2.rinterface.RRuntimeError: Error in loadNamespace(name) : there is no package called ‘seqLogo’
感谢。
答案 0 :(得分:10)
Bioconductor项目改变了其软件包安装程序的内部结构。以下应该有效:
from rpy2.robjects.packages import importr
# do the following _only the first time_, to install the package seqLogo
base = importr('base')
base.source("http://www.bioconductor.org/biocLite.R")
biocinstaller = importr("BiocInstaller")
biocinstaller.biocLite("seqLogo")
# load the installed package "seqLogo"
seqlogo = importr("seqLogo")
否则rpy2的bioconductor扩展已经有一段时间没有更新了。可能还有其他事情需要修复。