mcpField
E
ena-database

ena-database

github.com/davila7数据与数据库33.0k218 次安装1 天前更新
代码仓库

关于 ena-database

面向生物信息学工作流的 ENA 数据访问技能,帮助研究人员查询欧洲核苷酸档案中的序列数据及元数据。支持多种 REST API、数据格式和批量下载方式。

主要功能

  1. 01按元数据搜索档案记录
  2. 02获取序列、原始读段和组装数据
  3. 03查询分类学信息
  4. 04以 XML、JSON、TSV 等格式获取元数据
  5. 05通过 FTP、Aspera 或命令行工具批量下载

适用场景

  1. 01按登录号下载原始测序读段
  2. 02查找研究项目中的样本
  3. 03按物种检索基因组组装
  4. 04将 ENA 数据接入生物信息学流程

安装

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

$npx skills add https://github.com/davila7/claude-code-templates --skill ena-database

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

附带文件references/api_reference.md

详细介绍

ENA 数据库

概述

欧洲核苷酸档案库(ENA)是一个全面的公共核苷酸序列数据及相关元数据存储库。可通过 REST API 和 FTP 访问并查询 DNA/RNA 序列、原始读段、基因组组装数据和功能注释,用于基因组学和生物信息学工作流。

何时使用此技能

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

  • 按登录号检索核苷酸序列或原始测序读段
  • 根据元数据条件搜索样本、研究或组装数据
  • 下载 FASTQ 文件或基因组组装数据以供分析
  • 查询生物的分类学信息
  • 访问序列注释和功能数据
  • 将 ENA 数据集成到生物信息学工作流中
  • 执行交叉引用搜索,以查找相关数据库
  • 通过 FTP 或 Aspera 批量下载数据集

核心功能

1. 数据类型和结构

ENA 将数据组织为分层对象类型:

研究/项目 — 对相关数据进行分组并控制发布日期。研究是引用已归档数据的主要单位。

样本 — 表示用于制备测序文库的生物材料单位。提交大多数数据类型前,必须先注册样本。

原始读段 — 包括:

  • 实验:关于测序方法、文库制备和仪器详情的元数据
  • 运行:指向包含单次测序运行所产生原始测序读段的数据文件

组装数据 — 完成程度各异的基因组、转录组、宏基因组或宏转录组组装数据。

序列 — 存储在 EMBL 核苷酸序列数据库中的已组装并注释的序列,包括编码/非编码区域和功能注释。

分析 — 对序列数据进行计算分析的结果。

分类学记录 — 包括谱系和分类级别的分类学信息。

2. 程序化访问

ENA 提供多个 REST API 用于访问数据。详细的端点文档请参阅 references/api_reference.md。

主要 API:

ENA Portal API — 支持跨所有 ENA 数据类型进行高级搜索

ENA Browser API — 直接检索记录和元数据

ENA Taxonomy REST API — 查询分类学信息

  • 获取谱系、分类级别及相关分类学数据

ENA 交叉引用服务 — 访问外部数据库中的相关记录

CRAM Reference Registry — 检索参考序列

速率限制:所有 API 的速率限制均为每秒 50 个请求。超出限制将返回 HTTP 429(请求过多)。

3. 搜索和检索数据

基于浏览器的搜索:

  • 跨所有字段进行全文搜索
  • 序列相似性搜索(集成 BLAST)
  • 交叉引用搜索,用于查找相关记录
  • 使用 Rulespace 查询构建器进行高级搜索

程序化查询:

  • 使用 Portal API 大规模执行高级搜索
  • 按数据类型、日期范围、分类学或元数据字段筛选
  • 将结果下载为表格形式的元数据摘要或 XML 记录

API 查询模式示例:

import requests

# Search for samples from a specific study
base_url = "https://www.ebi.ac.uk/ena/portal/api/search"
params = {
    "result": "sample",
    "query": "study_accession=PRJEB1234",
    "format": "json",
    "limit": 100
}

response = requests.get(base_url, params=params)
samples = response.json()
4. 数据检索格式

元数据格式:

  • XML(ENA 原生格式)
  • JSON(通过 Portal API)
  • TSV/CSV(表格摘要)

序列数据:

  • FASTQ(原始读段)
  • BAM/CRAM(比对后的读段)
  • FASTA(已组装的序列)
  • EMBL 平面文件格式(已注释的序列)

下载方式:

  • 直接通过 API 下载(小文件)
  • 使用 FTP 批量传输数据
  • 使用 Aspera 高速传输大型数据集
  • 使用 enaBrowserTools 命令行工具批量下载
5. 常见用例

按登录号检索原始测序读段:

# Download run files using Browser API
accession = "ERR123456"
url = f"https://www.ebi.ac.uk/ena/browser/api/xml/{accession}"

搜索某项研究中的所有样本:

# Use Portal API to list samples
study_id = "PRJNA123456"
url = f"https://www.ebi.ac.uk/ena/portal/api/search?result=sample&query=study_accession={study_id}&format=tsv"

查找特定生物体的组装数据:

# Search assemblies by taxonomy
organism = "Escherichia coli"
url = f"https://www.ebi.ac.uk/ena/portal/api/search?result=assembly&query=tax_tree({organism})&format=json"

获取分类谱系:

# Query taxonomy API
taxon_id = "562"  # E. coli
url = f"https://www.ebi.ac.uk/ena/taxonomy/rest/tax-id/{taxon_id}"
6. 与分析流水线集成

批量下载模式:

  1. 使用 Portal API 搜索符合条件的登录号
  2. 从搜索结果中提取文件 URL
  3. 通过 FTP 或使用 enaBrowserTools 下载文件
  4. 在流水线中处理下载的数据

BLAST 集成: 集成 EBI 的 NCBI BLAST 服务(REST/SOAP API),以针对 ENA 序列进行序列相似性搜索。

7. 最佳实践

速率限制:

  • 收到 HTTP 429 响应时实施指数退避
  • 尽可能批量发送请求,以遵守每秒 50 次请求的限制
  • 对于大型数据集,使用批量下载工具,而不是逐一调用 API

数据引用:

  • 发布时务必使用 Study/Project 登录号进行引用
  • 请注明所用特定样本、运行或组装数据的登录号

API 响应处理:

  • 处理响应前检查 HTTP 状态码
  • 使用合适的 XML 库解析 XML 响应(不要使用正则表达式)
  • 对大型结果集处理分页

性能:

  • 下载大型文件(>100MB)时使用 FTP/Aspera
  • 只需要元数据时,优先使用 TSV/JSON 格式,而非 XML
  • 处理多条记录时,在本地缓存分类查询结果

资源

此技能包含使用 ENA 的详细参考文档:

references/

api_reference.md - 全面的 API 端点文档,包括:

  • Portal API 和 Browser API 的详细参数
  • 响应格式规范
  • 高级查询语法和运算符
  • 用于筛选和搜索的字段名称
  • 常见 API 模式和示例

构建复杂 API 查询、调试 API 响应或需要特定参数详细信息时,请加载此参考文档。

评论

支持 Markdown