首页 > 解决方案 > 使用 Biopython 控制术语爆炸

问题描述

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

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

https://pubmed.ncbi.nlm.nih.gov/?term=surgery%2C+oral+%5BMH%5D&sort=date&show_snippets=off

但下面的代码仅返回 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 爆词?这是 Biopython 1.75。我仅限于 Python 2.7。

谢谢你。

标签: pythonbioinformaticsbiopythonpubmed

解决方案


解决方案非常简单:

只需去掉搜索词中的逗号:使用而不是.,执行搜索。term="surgery oral [MH]"term="surgery, oral [MH]"

通过以前的搜索,我目前收到的计数为 69945 - 与我在 PubMed 网页上搜索手术、口腔 [mh]时获得的数字相同。

目前,后一个搜索词的计数为 8561。

如果您仔细查看您的输出,您会发现您的原始搜索词已被翻译成"surgery, oral"[MeSH Terms]. 在 PubMed 上输入该字符串(包括"引号)也会为您提供 8561 个结果 - [MeSH 术语] 只是 [mh] 的长形式。


推荐阅读