如何利用 Python 脚本从 NCBI 蛋白质数据库中获取特定生物项目中的蛋白质序列

247 阅读2分钟

NCBI 蛋白质数据库是一个海量的蛋白质序列数据库,包含了来自不同生物物种的蛋白质序列。用户可以通过 NCBI 的网站或编程的方式来检索和下载这些序列。在某些情况下,用户需要从 NCBI 蛋白质数据库中获取特定生物项目中的蛋白质序列。例如,用户可能需要获取某个细菌或病毒的全部蛋白质序列,以便对其进行分析。

huake_00257_.jpg

2、解决方案

可以使用 Python 脚本来自动化地从 NCBI 蛋白质数据库中获取特定生物项目中的蛋白质序列。具体步骤如下:

  1. 首先,需要使用 NCBI 的 E-utilities 工具来获取特定生物项目中所有蛋白质的 UID。E-utilities 是 NCBI 提供的一套在线工具,允许用户对 NCBI 数据库进行查询和检索。具体操作步骤如下:

    • 打开 NCBI 的 E-utilities 网站(www.ncbi.nlm.nih.gov/entrez/euti…
    • 选择 "ELink" 工具。
    • 在 "Database" 字段中选择 "bioproject"。
    • 在 "LinkName" 字段中选择 "bioproject_protein"。
    • 在 "ID" 字段中输入特定生物项目的 UID。
    • 点击 "Send" 按钮。
  2. 上述操作将返回一个 XML 格式的结果,其中包含了特定生物项目中所有蛋白质的 UID。可以使用 Python 的 xmltodict 库将 XML 格式的结果解析成 Python 字典。

  3. 接下来,需要使用 NCBI 的 E-utilities 工具来获取每个蛋白质的序列。具体操作步骤如下:

    • 打开 NCBI 的 E-utilities 网站(www.ncbi.nlm.nih.gov/entrez/euti…
    • 选择 "EFetch" 工具。
    • 在 "Database" 字段中选择 "protein"。
    • 在 "ID" 字段中输入要获取序列的蛋白质的 UID。
    • 在 "RetType" 字段中选择 "fasta"。
    • 点击 "Send" 按钮。
  4. 上述操作将返回一个 FASTA 格式的序列。可以使用 Python 的 Bio 库将 FASTA 格式的序列解析成 Python 对象。

  5. 最后,就可以将解析后的序列保存到本地文件中。

下面提供了一个 Python 脚本示例,可以帮助您从 NCBI 蛋白质数据库中获取特定生物项目中的蛋白质序列:

import xmltodict
import requests
import biopython

# 获取特定生物项目中所有蛋白质的 UID
response = requests.get(
    "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi",
    params={
        "db": "bioproject",
        "linkname": "bioproject_protein",
        "id": "207383",
    },
)
result = xmltodict.parse(response.text)

# 存储所有蛋白质的 UID
protein_uids = []
for protein in result["eLinkResult"]["LinkSet"]["LinkSetDb"]:
    protein_uids.append(protein["Id"])

# 获取每个蛋白质的序列
for protein_uid in protein_uids:
    response = requests.get(
        "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi",
        params={
            "db": "protein",
            "id": protein_uid,
            "rettype": "fasta",
        },
    )
    # 解析 FASTA 格式的序列
    record = biopython.Bio.SeqIO.read(StringIO(response.text), "fasta")
    # 保存序列到本地文件
    with open(f"protein_{protein_uid}.fasta", "w") as f:
        f.write(record.format("fasta"))

通过运行此脚本,您就可以自动地从 NCBI 蛋白质数据库中获取特定生物项目中的所有蛋白质序列。