使用 prepgetannot() 以获取 seqinr 中注释部分的特定字段

Using of prepgetannot() in order to get specific fields of the annotation section in seqinr

我正在尝试使用 seqinr 获取一些特定的注释。我最近开始使用 R,也开始使用 seqinr。 所以,问题是:我想先使用 prepgetannot 然后使用 getAnnots 来获取注释部分的一些特定字段。 我告诉你我在做什么:

首先(到这里没问题)

s <- choosebank("genbank")
cavia <- query("cavia", "TID=10140 AND O=mitochondrion", socket = s$socket)

此时我可以使用 getAnnots 来获取 cavia 的一些注释,例如 getAnnots(cavia$req[1:2]) 但我的意图是例如过滤它并仅获取定义或有机体。

我想我可以使用 prepgetannot 函数来做到这一点,但老实说,我不知道该怎么做。我的第一个想法是使用 prepgetannot,然后使用 getAnnots,但这似乎行不通。这就是我所做的。

prepgetannots(what = "OR", setfor = c("scan", "getannots"), socket = s$socket, verbose = FALSE)

然后像以前一样使用 getAnnots() 函数,但我得到了相同的结果,即包含所有字段的完整注释。显然我做错了什么,但我无法意识到我的错误是什么。 谢谢,抱歉我的英语不好,这是我第一次 post 在这里提问。如果你想要,我可以 post 注释的输出,但只是我请求的加入的完整注释

您可以在使用 getAnnot() 后只提取某些字段。请注意,至少在 seqinr 的 3.1-3 版本中,函数 getAnnots() 不存在。

要获得定义,您可以执行类似

的操作
# From your example
s <- choosebank("genbank")
cavia <- query("cavia", "TID=10140 AND O=mitochondrion", socket = s$socket)

# Retrieve all annotations
cavia1_annot <- getAnnot(cavia$req[1])

# Store only the definition in an object
cavia1_def <- cavia1_annot[[1]][2]

# Store only the organism name in an object
cavia1_org <- cavia1_annot[[1]][8]

因为所有的注释都存储在一个列表中,你只需要找出列表中的哪个数字与你想要的字段相匹配。描述是列表中的第二项,有机体是第八项。

这可能不是最优雅的解决方案,但它确实有效。