mcpField
E
ena-database

ena-database

github.com/jackspace数据与数据库1636 次安装12 周前更新
代码仓库

关于 ena-database

ENA Database 是用于访问欧洲核苷酸档案中核苷酸序列及相关元数据的技能,介绍适用于基因组研究和生物信息学流程的 API 与批量下载方式。

主要功能

  1. 01按数据类型和元数据搜索记录
  2. 02获取序列、原始读段和组装数据
  3. 03查询分类信息与交叉引用
  4. 04通过 API、FTP 或 Aspera 下载
  5. 05使用 XML、JSON、TSV 和序列格式

适用场景

  1. 01查找某项研究关联的样本
  2. 02下载原始测序读段进行分析
  3. 03查找某个生物的组装数据
  4. 04获取分类信息或序列注释

安装

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

$npx skills add https://github.com/jackspace/claudeskillz --skill ena-database

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

附带文件SKILL.json

详细介绍

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