SuperAPI AI 工具集

ensembl-database

数据与分析

查看项目

更新于 10-15 13:11

技能介绍

用途

Ensembl 数据库技能用于访问和查询 Ensembl 基因组数据库,这是一个由 EMBL-EBI 维护的脊椎动物基因组数据综合资源。该数据库提供 250 多个物种的基因注释、序列、变异、调控信息和比较基因组学数据。当前版本为 115(2025 年 9 月)。

适用场景

该技能适用于以下情况:

  • 按基因符号或 Ensembl ID 查询基因信息
  • 获取 DNA、转录本或蛋白质序列
  • 使用变异效应预测器(VEP)分析遗传变异
  • 查找跨物种的同源基因(orthologs)和旁系同源基因(paralogs)
  • 访问调控特征和基因组注释
  • 在不同基因组组装版本之间转换坐标(如 GRCh37 到 GRCh38)
  • 执行比较基因组学分析
  • 将 Ensembl 数据集成到基因组研究流程中

主要能力

1. 基因信息检索

按符号、Ensembl ID 或外部数据库标识符查询基因数据。常见操作包括:按符号查找基因信息(如 "BRCA2"、"TP53");获取转录本和蛋白质信息;获取基因坐标和染色体位置;访问外部数据库(UniProt、RefSeq 等)的交叉引用。

使用 ensembl_rest 包:

from ensembl_rest import EnsemblClient

client = EnsemblClient()

# 按符号查找基因
gene_data = client.symbol_lookup(
    species='human',
    symbol='BRCA2'
)

# 获取详细基因信息
gene_info = client.lookup_id(
    id='ENSG00000139618',  # BRCA2 Ensembl ID
    expand=True
)

直接使用 REST API(无需安装包):

import requests

server = "https://rest.ensembl.org"

# 符号查找
response = requests.get(
    f"{server}/lookup/symbol/homo_sapiens/BRCA2",
    headers={"Content-Type": "application/json"}
)
gene_data = response.json()

2. 序列获取

以多种格式(JSON、FASTA、纯文本)获取基因组、转录本或蛋白质序列。操作包括:获取基因或基因组区域的 DNA 序列;获取转录本序列(cDNA);访问蛋白质序列;提取带侧翼区域或修饰的序列。

示例:

# 使用 ensembl_rest 包
sequence = client.sequence_id(
    id='ENSG00000139618',  # 基因 ID
    content_type='application/json'
)

# 获取基因组区域的序列
region_seq = client.sequence_region(
    species='human',
    region='7:140424943-140624564'  # 染色体:起始-结束
)

3. 变异分析

查询遗传变异数据,并使用变异效应预测器(VEP)预测变异后果。能力包括:按 rsID 或基因组坐标查找变异;预测变异的功能后果;访问群体频率数据;获取表型关联。

VEP 示例:

# 预测变异后果
vep_result = client.vep_hgvs(
    species='human',
    hgvs_notation='ENST00000380152.7:c.803C>T'
)

# 按 rsID 查询变异
variant = client.variation_id(
    species='human',
    id='rs699'
)

4. 比较基因组学

执行跨物种比较,以识别同源基因、旁系同源基因和进化关系。操作包括:查找同源基因(不同物种中的同一基因);识别旁系同源基因(同一物种中的相关基因);访问显示进化关系的基因树;获取基因家族信息。

示例:

# 查找人类基因的同源基因
orthologs = client.homology_ensemblgene(
    id='ENSG00000139618',  # 人类 BRCA2
    target_species='mouse'
)

# 获取基因树
gene_tree = client.genetree_member_symbol(
    species='human',
    symbol='BRCA2'
)

5. 基因组区域分析

查找特定区域内的所有基因组特征(基因、转录本、调控元件)。用例包括:识别染色体区域内的所有基因;查找调控特征(启动子、增强子);定位区域内的变异;获取结构特征。

示例:

# 查找区域内的所有特征
features = client.overlap_region(
    species='human',
    region='7:140424943-140624564',
    feature='gene'
)

6. 组装版本映射

在不同基因组组装版本之间转换坐标(如 GRCh37 到 GRCh38)。重要提示:GRCh37/hg19 查询使用 https://grch37.rest.ensembl.org,当前组装版本使用 https://rest.ensembl.org。

示例:

from ensembl_rest import AssemblyMapper

# 将坐标从 GRCh37 映射到 GRCh38
mapper = AssemblyMapper(
    species='human',
    asm_from='GRCh37',
    asm_to='GRCh38'
)

mapped = mapper.map(chrom='7', start=140453136, end=140453136)

使用方式

安装

Python 包(推荐):

uv pip install ensembl_rest

ensembl_rest 包为所有 Ensembl REST API 端点提供 Python 风格的接口。

直接使用 REST API:

无需安装,使用标准 HTTP 库如 requests:

uv pip install requests

API 最佳实践

速率限制

Ensembl REST API 有速率限制。请遵循以下实践:

  • 遵守速率限制:匿名用户每秒最多 15 个请求
  • 处理 429 响应:被限流时,检查 Retry-After 头并等待
  • 使用批量端点:查询多个项目时,尽可能使用批量端点
  • 缓存结果:存储频繁访问的数据以减少 API 调用

错误处理

始终实现适当的错误处理:

import requests
import time

def query_ensembl(endpoint, params=None, max_retries=3):
    server = "https://rest.ensembl.org"
    headers = {"Content-Type": "application/json"}

    for attempt in range(max_retries):
        response = requests.get(
            f"{server}{endpoint}",
            headers=headers,
            params=params
        )

        if response.status_code == 200:
            return response.json()
        elif response.status_code == 429:
            # 被限流 - 等待并重试
            retry_after = int(response.headers.get('Retry-After', 1))
            time.sleep(retry_after)
        else:
            response.raise_for_status()

    raise Exception(f"Failed after {max_retries} attempts")

资源

references/ 目录:

  • api_endpoints.md:所有 17 个 API 端点类别的综合文档,包含示例和参数

scripts/ 目录:

  • ensembl_query.py:可复用的 Python 脚本,用于常见 Ensembl 查询,内置速率限制和错误处理

常见工作流

工作流 1:基因注释流程

  1. 按符号查找基因以获取 Ensembl ID
  2. 获取转录本信息
  3. 获取所有转录本的蛋白质序列
  4. 查找其他物种中的同源基因
  5. 导出结果

工作流 2:变异分析

  1. 按 rsID 或坐标查询变异
  2. 使用 VEP 预测功能后果
  3. 检查群体频率
  4. 获取表型关联
  5. 生成报告

工作流 3:比较分析

  1. 从参考物种中的目标基因开始
  2. 在目标物种中查找同源基因
  3. 获取所有同源基因的序列
  4. 比较基因结构和特征
  5. 分析进化保守性

物种和组装信息

查询可用物种和组装版本:

# 列出所有可用物种
species_list = client.info_species()

# 获取某物种的组装信息
assembly_info = client.info_assembly(species='human')

常见物种标识符:

  • 人类:homo_sapiens 或 human
  • 小鼠:mus_musculus 或 mouse
  • 斑马鱼:danio_rerio 或 zebrafish
  • 果蝇:drosophila_melanogaster

附加资源

  • 官方文档:https://rest.ensembl.org/documentation
  • Python 包文档:https://ensemblrest.readthedocs.io
  • EBI 培训:https://www.ebi.ac.uk/training/online/courses/ensembl-rest-api/
  • Ensembl 浏览器:https://useast.ensembl.org
  • GitHub 示例:https://github.com/Ensembl/ensembl-rest/wiki

限制

资料中未提供关于收费、价格、平台兼容性、具体效果或使用步骤的更多信息。