5

我正在尝试使用 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)

我想使用这个已经seqLogo从 rpy2 安装的包。如何才能做到这一点?因为我安装了 rpy2,我可以这样做:

>>> import bioc

但不确定如何从bioc.

如果我尝试:

importr("seqLogo")

我得到错误:

rpy2.rinterface.RRuntimeError: Error in loadNamespace(name) : there is no package called ‘seqLogo’

谢谢。

4

1 回答 1

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 扩展已经有一段时间没有更新了。可能还有其他需要解决的问题。

于 2013-06-08T21:14:22.270 回答