注释DB在rpy2中没有'select'方法
Annotation DB has no 'select' method in rpy2
我在 R 中有以下代码:
require(hgu133a.db)
entrezIDs <- select(hgu133a.db, probeNames, "ENTREZID")
其中 probeNames
是与在此数据库中找到的探测器相对应的字符串列表。
我正在尝试使用 rpy2:
将其翻译成 Python
from rpy2.robjects.packages import importr
hgu133a_db = importr('hgu133a.db')
entrez_ids = hgu133a_db.select(hgu133a_db, probe_names, 'ENTREZID')
但是收到错误:
AttributeError: module 'hgu133a.db' has no attribute 'select'
我搜索了文档 (?select
),据我所知,数据库 hgu133a.db 继承了一个 select
方法来自 AnnotationDbi class.
如何正确解析 select()
来自的库,以便我可以在 Python 中使用它?
显然上面有两个问题。首先,应该使用AnnotationDbi来解析select()
方法。其次,hgu133a_db
是一个 InstallSTPackage 对象 - 而必须使用 hgu133a_db.hgu133a_db
。放在一起,从 R 到 Python 的翻译是:
from rpy2.robjects.packages import importr
annotation_dbi = importr('AnnotationDbi')
hgu133a_db = importr('hgu133a.db')
entrez_ids = annotation_dbi.select(hgu133a_db.hgu133a_db, probe_names, 'ENTREZID')
[应该是对@merv 的回答的评论,但超出了字符数]
rpy2
的 importr()
试图帮助明确 R 对象来自哪个包名称空间,而 R 的常见用法则少得多(并且可能导致诸如此类的烦恼作为 R 包的加载顺序会影响其中一个具有相同名称的函数被执行)。
与 importr
的权衡是人们必须知道 R 符号的来源。 rpy2
中有一个鲜为人知的函数可以帮助找到给定 R 符号的定义位置 (*):https://rpy2.readthedocs.io/en/version_2.8.x/robjects_rpackages.html#finding-where-an-r-symbol-is-coming-from .
否则,也可以使用 r()
检索将在 R 会话中拾取 (*) 的对象。
from rpy2.robjects import r
r('select')
(*:如前所述,在会话中较早加载 R 包的顺序会影响选择哪个 R 对象。
我在 R 中有以下代码:
require(hgu133a.db)
entrezIDs <- select(hgu133a.db, probeNames, "ENTREZID")
其中 probeNames
是与在此数据库中找到的探测器相对应的字符串列表。
我正在尝试使用 rpy2:
将其翻译成 Pythonfrom rpy2.robjects.packages import importr
hgu133a_db = importr('hgu133a.db')
entrez_ids = hgu133a_db.select(hgu133a_db, probe_names, 'ENTREZID')
但是收到错误:
AttributeError: module 'hgu133a.db' has no attribute 'select'
我搜索了文档 (?select
),据我所知,数据库 hgu133a.db 继承了一个 select
方法来自 AnnotationDbi class.
如何正确解析 select()
来自的库,以便我可以在 Python 中使用它?
显然上面有两个问题。首先,应该使用AnnotationDbi来解析select()
方法。其次,hgu133a_db
是一个 InstallSTPackage 对象 - 而必须使用 hgu133a_db.hgu133a_db
。放在一起,从 R 到 Python 的翻译是:
from rpy2.robjects.packages import importr
annotation_dbi = importr('AnnotationDbi')
hgu133a_db = importr('hgu133a.db')
entrez_ids = annotation_dbi.select(hgu133a_db.hgu133a_db, probe_names, 'ENTREZID')
[应该是对@merv 的回答的评论,但超出了字符数]
rpy2
的 importr()
试图帮助明确 R 对象来自哪个包名称空间,而 R 的常见用法则少得多(并且可能导致诸如此类的烦恼作为 R 包的加载顺序会影响其中一个具有相同名称的函数被执行)。
与 importr
的权衡是人们必须知道 R 符号的来源。 rpy2
中有一个鲜为人知的函数可以帮助找到给定 R 符号的定义位置 (*):https://rpy2.readthedocs.io/en/version_2.8.x/robjects_rpackages.html#finding-where-an-r-symbol-is-coming-from .
否则,也可以使用 r()
检索将在 R 会话中拾取 (*) 的对象。
from rpy2.robjects import r
r('select')
(*:如前所述,在会话中较早加载 R 包的顺序会影响选择哪个 R 对象。