mcpField
E
ensembl-database

ensembl-database

github.com/ovachiever数据与数据库5646 次安装48 周前更新
代码仓库

关于 ensembl-database

Ensembl Database 技能面向使用 Ensembl 基因、序列、变异和比较基因组数据的研究工作。它介绍 REST API 和 Python 包的查询流程,可用于获取注释、分析变异及转换基因组坐标。

主要功能

  1. 01查询基因并获取序列
  2. 02使用 VEP 预测变异效应
  3. 03查找直系同源基因、旁系同源基因和基因树
  4. 04查询基因组及调控区域
  5. 05转换不同组装版本间的坐标

适用场景

  1. 01构建基因注释工作流
  2. 02评估变异后果和频率
  3. 03比较不同物种的基因
  4. 04转换不同基因组组装版本间的坐标

安装

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

$npx skills add https://github.com/ovachiever/droid-tings --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