📜  Biopython – Entrez 数据库连接(1)

📅  最后修改于: 2023-12-03 14:39:31.468000             🧑  作者: Mango

Biopython – Entrez 数据库连接

简介

Biopython 是一个用于生物信息学、计算生物学的 Python 库。其中, Entrez 模块可以连接 NCBI 数据库(National Center for Biotechnology Information),并允许进行数据库查询和获取。

安装
pip install biopython
连接数据库

使用 Entrez 模块连接 NCBI 数据库,需要先设置一个 email 地址。email 地址用于记录在 NCBI 数据库查询时的联系方式。同时,为了避免 NCBI 对查询的限制,需要使用 Entrez 模块设置一定的等待时间(推荐为 0.5 秒)。

from Bio import Entrez

Entrez.email = "your.email@example.com"
Entrez.api_key = "your_API_key"
Entrez.tool = "your_tool_name"
Entrez.max_tries = 20
Entrez.api_key = "your_api_key"
Entrez.rate_limit = 3.0
Entrez.require_valid_certificate = False
  • Entrez.email: 记录在 NCBI 数据库查询时的联系方式。
  • Entrez.tool: 记录所使用的 tool name
  • Entrez.max_tries: 设置最大查询次数。
  • Entrez.rate_limit: 设置查询频率(每秒查询的次数)。
查询数据库

通过设置 Entrez.esearch() 查询 NCBI 数据库。下面是查询 pubmed 数据库中 sickle cell anaemia 相关文章的实例。

handle = Entrez.esearch(db="pubmed", term="sickle cell anaemia")
  • db: 设置查询的数据库。
  • term: 设置查询的关键字(支持 AND, OR, NOT 等逻辑关键字)。

执行以上代码,返回的 handle 用于获取查询结果。

record = Entrez.read(handle)
print(record)

查询结果如下所示:

{'Count': '97909', 'RetMax': '20', 'RetStart': '0', 'IdList': ['34615987', '34615551', '34615090', '34615017', '34614933', '34614875', '34614765', '34614687', '34614684', '34614506', '34614399', '34614348', '34614310', '34614228', '34614210', '34614203', '34614165', '34614160', '34613267', '34613137'], 'TranslationSet': [], 'QueryTranslation': 'sickle cell anaemia'}

其中,Count 表示符合查询条件的记录数,IdList 则为查询结果的 id 列表。可以通过以下代码获取查询结果的详细信息:

id_list = record["IdList"]
print(id_list)

返回的是一个 id 列表:

['34615987', '34615551', '34615090', '34615017', '34614933', '34614875', '34614765', '34614687', '34614684', '34614506', '34614399', '34614348', '34614310', '34614228', '34614210', '34614203', '34614165', '34614160', '34613267', '34613137']

通过以上代码,可以使用 Entrez.efetch() 获取 pubmed 数据库中的所有相关论文。

papers = []
for id in id_list:
    handle = Entrez.efetch(db="pubmed", id=id, rettype="medline", retmode="text")
    paper = handle.read()
    papers.append(paper)

print(papers)

查询结果如下所示(部分省略):

['PMID-34615987\nOWN - NLM\nSTAT- Publisher\nLR  - 20211007\nIS  - 1533-4406 (Electronic)\nIS  - 0028-4793 (Linking)\nVI  - \nDP  - 2021 Oct 6\nTI  - Cancer prevalence in sickle cell anemia: a systematic review and meta-analysis.\nPG  - \nLID - 10.105[..]
['PMID-34615551\nOWN - NLM\nSTAT- Publisher\nLR  - 20211007\nIS  - 1529-8027 (Electronic)\nIS  - 0003-066X (Linking)\nVI  - \nDP  - 2021 Oct 6\nTI  - Sickle Cell Anemia, Hemodialysis and the COVID-19 Pandemic: A Case Report.\nPG  - \nLID - 10.1177_0003[..]
['PMID-34615090\nOWN - NLM\nSTAT- In-Data-Review\nLR  - 20211005\nIS  - 1468-6244 (Electronic)\nIS  - 0007-1447 (Linking)\nVI  - 375\nIP  - 10211\nDP  - 2021 Oct 9\nTI  - Haemoglobin disorders and blood donation: policy and practice in the UK.\nPG  - 2[..]
['PMID-34615017\nOWN - NLM\nSTAT- Publisher\nLR  - 20211007\nIS  - 1932-6203 (Electronic)\nIS  - 1932-6203 (Linking)\nVI  - 16\nIP  - 10\nDP  - 2021\nTI  - Beliefs and experiences with nusinersen in Latin American patients with spinal muscular atrophy: ..]
...

以上,就是使用 Biopython - Entrez 模块连接 NCBI 数据库进行查询的简要介绍。具体功能,请参阅 Biopython 官方文档。

参考文献