📅  最后修改于: 2023-12-03 14:39:31.468000             🧑  作者: Mango
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
官方文档。