mcpField
E
ensembl-database

ensembl-database

github.com/leonchaox数据与数据库99470 次安装15 周前更新
代码仓库

关于 ensembl-database

ensembl-database 是通过 REST API 或 Python 包查询 Ensembl 基因组数据的技能。它支持基因注释、序列、变异、比较基因组学和组装版本坐标映射等研究流程。

主要功能

  1. 01查询基因及注释
  2. 02获取 DNA、转录本和蛋白质序列
  3. 03使用 VEP 分析变异
  4. 04查找直系与旁系同源基因
  5. 05查询基因组区域特征
  6. 06转换不同组装版本的坐标

适用场景

  1. 01构建基因注释流程
  2. 02预测遗传变异的影响
  3. 03比较不同物种的基因
  4. 04转换基因组组装版本间的坐标

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/leonchaox/qinyan-academic-skills --skill ensembl-database

安装后在 Claude Code 中输入/ensembl-database确认已加载。

附带文件references/api_endpoints.mdscripts/ensembl_query.py

详细介绍

Ensembl 数据库

概览

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

何时使用此技能

在以下情况下应使用此技能:

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

核心功能

1. 获取基因信息

按符号、Ensembl ID 或外部数据库标识符查询基因数据。

常见操作:

  • 按符号查询基因信息(例如,“BRCA2”“TP53”)
  • 获取转录本和蛋白质信息
  • 获取基因坐标和染色体位置
  • 访问指向外部数据库(UniProt、RefSeq 等)的交叉引用

使用 ensembl_rest 包:

from ensembl_rest import EnsemblClient

client = EnsemblClient()

# Look up gene by symbol
gene_data = client.symbol_lookup(
    species='human',
    symbol='BRCA2'
)

# Get detailed gene information
gene_info = client.lookup_id(
    id='ENSG00000139618',  # BRCA2 Ensembl ID
    expand=True
)

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

import requests

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

# Symbol lookup
response = requests.get(
    f"{server}/lookup/symbol/homo_sapiens/BRCA2",
    headers={"Content-Type": "application/json"}
)
gene_data = response.json()
2. 获取序列

以多种格式(JSON、FASTA、纯文本)获取基因组、转录本或蛋白质序列。

操作:

  • 获取基因或基因组区域的 DNA 序列
  • 获取转录本序列(cDNA)
  • 访问蛋白质序列
  • 提取带侧翼区域或经过修饰的序列

示例:

# Using ensembl_rest package
sequence = client.sequence_id(
    id='ENSG00000139618',  # Gene ID
    content_type='application/json'
)

# Get sequence for a genomic region
region_seq = client.sequence_region(
    species='human',
    region='7:140424943-140624564'  # chromosome:start-end
)
3. 变异分析

查询遗传变异数据,并使用 Variant Effect Predictor(VEP)预测变异的后果。

功能:

  • 按 rsID 或基因组坐标查找变异
  • 预测变异的功能后果
  • 访问群体频率数据
  • 获取表型关联信息

VEP 示例:

# Predict variant consequences
vep_result = client.vep_hgvs(
    species='human',
    hgvs_notation='ENST00000380152.7:c.803C>T'
)

# Query variant by rsID
variant = client.variation_id(
    species='human',
    id='rs699'
)
4. 比较基因组学

进行跨物种比较,以识别直系同源基因、旁系同源基因及进化关系。

操作:

  • 查找直系同源基因(不同物种中的同一基因)
  • 识别旁系同源基因(同一物种中的相关基因)
  • 访问展示进化关系的基因树
  • 获取基因家族信息

示例:

# Find orthologs for a human gene
orthologs = client.homology_ensemblgene(
    id='ENSG00000139618',  # Human BRCA2
    target_species='mouse'
)

# Get gene tree
gene_tree = client.genetree_member_symbol(
    species='human',
    symbol='BRCA2'
)
5. 基因组区域分析

查找特定区域中的所有基因组特征(基因、转录本、调控元件)。

使用场景:

  • 识别染色体区域内的所有基因
  • 查找调控特征(启动子、增强子)
  • 定位区域内的变异
  • 获取结构特征

示例:

# Find all features in a region
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

# Map coordinates from GRCh37 to GRCh38
mapper = AssemblyMapper(
    species='human',
    asm_from='GRCh37',
    asm_to='GRCh38'
)

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

API 最佳实践

速率限制

Ensembl REST API 有速率限制。请遵循以下做法:

  1. **遵守速率限制:**匿名用户每秒最多发送 15 个请求
  2. **处理 429 响应:**遇到速率限制时,检查 Retry-After 标头并等待
  3. **使用批量端点:**查询多个项目时,尽可能使用批量端点
  4. **缓存结果:**存储经常访问的数据,以减少 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:
            # Rate limited - wait and retry
            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")

安装

Python 包(推荐)
uv pip install ensembl_rest

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

直接使用 REST API

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

uv pip install requests

资源

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. 分析进化保守性

物种和组装信息

如需查询可用的物种和组装:

# List all available species
species_list = client.info_species()

# Get assembly information for a species
assembly_info = client.info_assembly(species='human')

常见物种标识符:

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

其他资源

评论

支持 Markdown