biopython - Entrez.esearch()查询转换与我的查询不对应

时间:2012-08-29 14:16:48

标签: python biopython

我是Biopython的新手。使用此代码:

handle = Entrez.esearch(db="nuccore", term="complete", field="title", FILT="refseq", porgn="viruses", rettype='xml')
print Entrez.read(handle)[u'QueryTranslation']

我明白了:

complete[Title]

但我期待这样:

complete[Title] AND "viruses"[porgn]

(来自http://www.ncbi.nlm.nih.gov/nuccore上的搜索结果的QueryTranslation)

refseq过滤器似乎也不起作用。我究竟做错了什么? 提前谢谢!

3 个答案:

答案 0 :(得分:1)

根据当前的NCBI文档,没有选项FILT或progrn - NCBI可能会默默地忽略它们(我个人更喜欢它们的显式错误消息)。

根据你现在可以做的http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESearch

>>> from Bio import Entrez
>>> handle = Entrez.esearch(db="nuccore", term="complete", field="title", rettype='xml')
>>> print Entrez.read(handle)[u'QueryTranslation']
complete[Title]

作为替代:

>>> from Bio import Entrez
>>> handle = Entrez.esearch(db="nuccore", term="complete[title]", rettype='xml')
>>> print Entrez.read(handle)[u'QueryTranslation']
complete[Title]

该字段选项是(我很确定)NCBI的新功能,但实际上并没有添加任何新功能。这似乎只对琐碎的搜索有意义。

为了进行您想要的复杂搜索,请执行以下操作:

>>> from Bio import Entrez
>>> handle = Entrez.esearch(db="nuccore", term="complete[title] AND viruses[porgn]", rettype='xml')
>>> print Entrez.read(handle)[u'QueryTranslation']
complete[title] AND viruses[porgn]

Biopython教程中有这样的例子。另请参阅http://news.open-bio.org/news/2009/06/ncbi-einfo-biopython/(现在也在Biopython教程中)。

答案 1 :(得分:0)

我认为您需要编辑term关键字参数。您需要加入AND viruses[porgn]

>>> handle = Entrez.esearch(db="nuccore", term="complete AND viruses[porgn]", field="title", FILT="refseq", rettype='xml')
>>> print Entrez.read(handle)[u'QueryTranslation']
complete[Title] AND viruses[porgn]

答案 2 :(得分:0)

要添加RefSeq要求,您也可以

>>> from Bio import Entrez
>>> handle = Entrez.esearch(db="nuccore", term="complete[title] AND refeq[filter] AND viruses[porgn]", rettype='xml')