用Biopython控制术语爆炸



在进行Medline/PubMed的Biopython搜索时,我一直无法找到有关如何控制术语爆炸的文档。

例如,如果我在PubMed上搜索surgery, oral [MH],它会找到69,926个匹配的出版物。(PubMed据说会自动爆炸术语)

https://pubmed.ncbi.nlm.nih.gov/?term=surgery%2C +口服+ % 5 bmh % 5 d& sort = date& show_snippets =了

但是下面的代码只返回8561个出版物的计数。更令人费解的是,输出中的翻译堆栈似乎声称该术语被分解了。

import Bio.Entrez as Entrez
import pprint
search_handle = Entrez.esearch( 
db = "pubmed", 
term = "surgery, oral [MH]", 
rettype = 'uilist', 
retmax = 1,
)
search_results = Entrez.read(search_handle)
search_handle.close()
pprint.pprint( search_results.items() )

输出如下:

[(u'Count', '8561'),
(u'RetMax', '1'),
(u'IdList', ['33499855']),
(u'TranslationStack',
[{u'Count': '8561', u'Field': 'MeSH Terms', u'Term': '"surgery, oral"[MeSH Terms]', u'Explode': 'Y'}, 'GROUP']),
(u'TranslationSet',
[{u'To': '"surgery, oral"[MeSH Terms]', u'From': 'surgery, oral[MH]'}]),
(u'RetStart', '0'),
(u'QueryTranslation', '"surgery, oral"[MeSH Terms]')]

我如何强迫Biopython要求Medline爆炸这个术语?这是生物蟒1.75。我仅限于Python 2.7。

谢谢。

解决方案非常简单:

在搜索词中去掉逗号,:用term="surgery oral [MH]"代替term="surgery, oral [MH]"执行搜索。

对于前一种搜索,我目前收到的计数是69945 -与我在PubMed网页上搜索surgery, oral[mh]时得到的数字相同。

后一个搜索项导致8561的计数,目前

如果你仔细看你的输出,你可以看到你原来的搜索词被翻译成"surgery, oral"[MeSH Terms]。在PubMed上输入该字符串(包括"引号)也会给你8561个结果- [MeSH Terms]只是[mh]的长形式。

最新更新