如何使用 Python 解析 PubMed 基线数据

想解析多个 PubMed 文件?另请参见我们的后续文章如何使用 Python 并行解析所有 PubMed 基线文件

PubMed 在 NCBI 服务器上提供所有 PubMed 文章的元数据转储。

在此示例中,我们将使用 pubmed_parser Python 库解析其中一个压缩的元数据 XML 文件。

首先,下载其中一个 .xml.gz 文件。在此示例中,我们将使用 pubmed20n0001.xml.gz

现在我们可以安装所需的库:

install_pubmed_parser.sh
pip install git+git://github.com/titipata/pubmed_parser.git six numpy

现在你可以下载并运行我们的脚本。在此示例中,我们将为每个条目提取 MeSH 术语列表,并打印 PubMed ID 和 MeSH ID 列表。

parse_pubmed_mesh.py
#!/usr/bin/env python3
import pubmed_parser as pp

# 对于此示例不解析作者和引用,因为我们不需要
dat = pp.parse_medline_xml("pubmed20n0001.xml.gz", author_list=False, reference_list=False)
# 迭代该文件中的 PubMed 条目
for entry in dat:
    # entry["mesh_terms"] 类似 "D000818:Animal; ..."
    # 在此示例中,我们只对 MeSH ID 感兴趣,如 D000818。
    # 打印 PubMed ID,后跟 MeSH 术语列表。
    print(entry["pmid"], [
        term.partition(":")[0].strip() for term in entry["mesh_terms"].split(";")
    ])

运行此脚本在我的笔记本上需要 13.3 秒,相当于每秒约 1.4 MB 的 GZip 压缩输入数据。运行脚本时,你将看到类似这样的行

pubmed_parse_output.txt
30957 ['D000319', 'D001794', 'D003864', 'D006801', 'D006973', 'D007676', 'D010869']

which means that the PubMed Article with ID 30957 has the MeSH terms ['D000319', 'D001794', 'D003864', 'D006801', 'D006973', 'D007676', 'D010869'].

请参见 pubmed_parser 文档,或只是交互式尝试以获取有关可迭代条目中可用字段的更多信息。


Check out similar posts by category: Bioinformatics, Python