关于 alterlab-ena
alterlab-ena 是用于查询欧洲核苷酸档案库并获取序列数据与元数据的研究技能,适合基因组学和生物信息学工作流,可按登录号检索并批量下载数据。
主要功能
- 01按元数据搜索 ENA 记录
- 02按登录号获取序列和原始读段
- 03查询分类信息和交叉引用
- 04通过 API、FTP 或 Aspera 下载文件
- 05使用脚本查询 Portal API
适用场景
- 01按研究条件查找样本或组装数据
- 02获取测序运行的 FASTQ 读段
- 03查询分类单元的生物谱系
- 04将 ENA 数据接入生物信息学流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-ena安装后在 Claude Code 中输入/alterlab-ena确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/api_reference.mdscripts/query_ena.py详细介绍
ENA 数据库
概述
欧洲核苷酸档案(ENA)是一个全面的公共存储库,用于存储核苷酸序列数据及其相关元数据。通过 REST API 和 FTP 访问并查询 DNA/RNA 序列、原始读段、基因组组装结果和功能注释,为基因组学和生物信息学工作流提供支持。
何时使用此技能
在以下情况下应使用此技能:
- 按登录号检索核苷酸序列或原始测序读段
- 根据元数据条件搜索样本、研究或组装结果
- 下载 FASTQ 文件或基因组组装结果用于分析
- 查询生物的分类学信息
- 访问序列注释和功能数据
- 将 ENA 数据集成到生物信息学工作流中
- 执行交叉引用搜索,查找相关数据库记录
- 通过 FTP 或 Aspera 批量下载数据集
不适用的情况
| 情况 | 改用 |
|---|---|
| 处理后的表达系列(GSE/GSM、系列矩阵),而非原始读段 | alterlab-geo |
| 来自 NCBI Gene 的以基因为中心的注释(符号、RefSeq、GO) | alterlab-gene-db |
| 基因组注释、VEP、直系同源物或坐标查询 | alterlab-ensembl |
| 在本地针对自定义数据库运行 BLAST | alterlab-blast |
核心功能
1. 数据类型和结构
ENA 将数据组织为分层对象类型:
研究/项目 - 将相关数据归为一组,并控制发布日期。研究是引用已存档数据的主要单位。
样本 - 表示用于制备测序文库的生物材料单位。提交大多数数据类型前,必须先注册样本。
原始读段 - 包括:
- 实验:关于测序方法、文库制备和仪器详情的元数据
- 运行:指向包含单次测序运行所产生原始测序读段的数据文件
组装结果 - 不同完成度的基因组、转录组、宏基因组或宏转录组组装结果。
序列 - 存储在 EMBL 核苷酸序列数据库中的组装和注释序列,包括编码区/非编码区及功能注释。
分析 - 对序列数据进行计算分析所得的结果。
分类记录 - 分类学信息,包括谱系和等级。
2. 程序化访问
ENA 提供多个 REST API,用于访问数据。详细的端点文档请参阅 references/api_reference.md。
主要 API:
ENA Portal API - 跨所有 ENA 数据类型执行高级搜索
- 文档:https://www.ebi.ac.uk/ena/portal/api/doc
- 用于复杂查询和元数据搜索
ENA Browser API - 直接检索记录和元数据
- 文档:https://www.ebi.ac.uk/ena/browser/api/doc
- 用于按登录号下载特定记录
- 根据端点不同,返回 XML(元数据)或 FASTA / EMBL 平面文件(序列)
ENA Taxonomy REST API - 查询分类学信息
- 获取谱系、等级及相关分类学数据
ENA Cross Reference Service - 访问外部数据库中的相关记录
CRAM Reference Registry - 获取参考序列
- 端点:https://www.ebi.ac.uk/ena/cram/
- 按 MD5 或 SHA1 校验和查询
速率限制:ENA 将程序化访问限制为每秒 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. 常见用例
按登录号检索原始测序读段:
# Get FASTQ download URLs via the Portal filereport endpoint
# (the Browser API xml/{accession} returns run METADATA, not file URLs).
accession = "ERR123456"
url = ("https://www.ebi.ac.uk/ena/portal/api/filereport"
f"?accession={accession}&result=read_run"
"&fields=run_accession,fastq_ftp,fastq_md5&format=tsv")
# Then fetch each ;-separated fastq_ftp URL over FTP/HTTPS.
搜索研究中的所有样本:
# 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. tax_tree()/tax_eq() take a numeric NCBI taxon ID —
# tax_tree(Escherichia coli) returns HTTP 400. Resolve names via the taxonomy API first.
taxon_id = 562 # Escherichia coli
url = ("https://www.ebi.ac.uk/ena/portal/api/search?result=assembly"
f"&query=tax_tree({taxon_id})&fields=accession,scientific_name&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. 与分析流水线集成
批量下载模式:
- 使用 Portal API 搜索符合条件的登录号
- 从搜索结果中提取文件 URL
- 通过 FTP 或使用 enaBrowserTools 下载文件
- 在流水线中处理下载的数据
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 响应或需要特定参数详情时,请加载此参考文档。
脚本
scripts/query_ena.py — 可运行的 ENA Portal API 辅助工具(无需密钥):
python scripts/query_ena.py search --result read_run \
--query 'study_accession="PRJEB1787"' --fields run_accession,fastq_ftp --limit 5
python scripts/query_ena.py filereport ERR164407