在进行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]的长形式。