python - 使用 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。
谢谢你。
解决方案
解决方案非常简单:
只需去掉搜索词中的逗号:使用而不是.,
执行搜索。term="surgery oral [MH]"
term="surgery, oral [MH]"
通过以前的搜索,我目前收到的计数为 69945 - 与我在 PubMed 网页上搜索手术、口腔 [mh]时获得的数字相同。
目前,后一个搜索词的计数为 8561。
如果您仔细查看您的输出,您会发现您的原始搜索词已被翻译成"surgery, oral"[MeSH Terms]
. 在 PubMed 上输入该字符串(包括"
引号)也会为您提供 8561 个结果 - [MeSH 术语] 只是 [mh] 的长形式。
推荐阅读
- php - 将数组转换为对象并打印结果
- java - 如何修复java函数
- javascript - Axios.post 在表单提交后返回:ERR_EMPTY_RESPONSE
- sql - SQL匹配其他表中日期之后的第一行
- html - 我需要用悬停动画汉堡菜单
- .net-core - 如何永久删除 .net 核心应用程序中的源代码引用
- c# - 如何在 C# 中读取 json 字符串
- reactjs - 为什么在 webpack 构建后我的基本 React 应用程序很重?
- python - 将使用 CPLEX 的 Tkinter(连同其他模块)Python 代码转换为可执行文件
- python - Beautifulsoup 和 csv 的问题(写入的数据丢失)