SuperAPI AI 工具集

ena-database

数据与分析

查看项目

更新于 10-15 10:54

技能介绍

用途

ENA Database 技能用于访问欧洲核苷酸档案库(European Nucleotide Archive,ENA)这一公共核苷酸序列数据与元数据存储库。它面向基因组学与生物信息学场景,帮助用户通过 REST API 和 FTP 检索 DNA/RNA 序列、原始测序读段、基因组组装以及功能注释数据。

主要能力

数据类型与结构

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

  • 研究/项目(Studies/Projects):将相关数据分组并控制发布日期,是引用归档数据的主要单位。
  • 样本(Samples):代表产生测序文库的生物材料单位,提交大多数数据类型前必须先注册样本。
  • 原始读段(Raw Reads):由实验(Experiments,测序方法、文库制备与仪器等元数据)和运行(Runs,指向单次测序运行原始读段数据文件的引用)组成。
  • 组装(Assemblies):基因组、转录组、宏基因组或宏转录组组装,具有不同完成度级别。
  • 序列(Sequences):存储在 EMBL 核苷酸序列数据库中的已组装与注释序列,包括编码/非编码区域及功能注释。
  • 分析(Analyses):序列数据计算分析的结果。
  • 分类记录(Taxonomy Records):包括谱系与等级的分类信息。

程序化访问

ENA 提供多个 REST API:

  • ENA Portal API:跨所有 ENA 数据类型的进阶搜索,文档见 https://www.ebi.ac.uk/ena/portal/api/doc ,适用于复杂查询与元数据搜索。
  • ENA Browser API:按 accession 直接检索记录与元数据,文档见 https://www.ebi.ac.uk/ena/browser/api/doc ,返回 XML 格式数据。
  • ENA Taxonomy REST API:查询分类信息,可获取谱系、等级及相关分类数据。
  • ENA Cross Reference Service:访问外部数据库的相关记录,端点 https://www.ebi.ac.uk/ena/xref/rest/ 。
  • CRAM Reference Registry:检索参考序列,端点 https://www.ebi.ac.uk/ena/cram/ ,可按 MD5 或 SHA1 校验和查询。

限速:所有 API 限速为每秒 50 次请求,超出将返回 HTTP 429(Too Many Requests)。

搜索与检索

基于浏览器的搜索支持:全字段自由文本搜索、序列相似性搜索(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()

数据检索格式

元数据格式:XML(ENA 原生格式)、JSON(通过 Portal API)、TSV/CSV(表格化摘要)。

序列数据:FASTQ(原始读段)、BAM/CRAM(比对读段)、FASTA(组装序列)、EMBL 平文件格式(注释序列)。

下载方式:直接 API 下载(小文件)、FTP(批量数据传输)、Aspera(大数据集高速传输)、enaBrowserTools 命令行工具(批量下载)。

使用方式

常见用例

按 accession 检索原始测序读段:

# 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}"

与分析流程集成

批量下载模式:使用 Portal API 搜索符合标准的 accession,从搜索结果中提取文件 URL,通过 FTP 或 enaBrowserTools 下载文件,再在流程中处理下载的数据。

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

适用场景

  • 按 accession 检索核苷酸序列或原始测序读段
  • 按元数据标准搜索样本、研究或组装
  • 下载 FASTQ 文件或基因组组装用于分析
  • 查询生物体的分类信息
  • 访问序列注释与功能数据
  • 将 ENA 数据集成到生物信息学流程中
  • 执行到相关数据库的交叉引用搜索
  • 通过 FTP 或 Aspera 批量下载数据集

限制与最佳实践

限速:收到 HTTP 429 响应时实施指数退避;尽可能批量请求以保持在每秒 50 次限制内;大数据集使用批量下载工具而非迭代 API 调用。

数据引用:发表时始终使用研究/项目 accession 引用;包含所用特定样本、运行或组装的 accession 编号。

API 响应处理:处理响应前检查 HTTP 状态码;使用正确的 XML 库(而非正则表达式)解析 XML 响应;处理大型结果集的分页。

性能:下载大于 100MB 的文件使用 FTP/Aspera;仅需元数据时优先使用 TSV/JSON 格式而非 XML;处理大量记录时在本地缓存分类查询结果。

资源

本技能包含详细参考文档:references/api_reference.md,涵盖 Portal API 与 Browser API 的详细参数、响应格式规范、进阶查询语法与操作符、用于过滤和搜索的字段名、常见 API 模式与示例。在构建复杂 API 查询、调试 API 响应或需要特定参数细节时可加载此参考。