名称: ena-database 描述: “通过API/FTP访问欧洲核苷酸存档。根据访问号检索DNA/RNA序列、原始读段(FASTQ)、基因组组装,适用于基因组学和生物信息学管道。支持多种格式。”
ENA数据库
概述
欧洲核苷酸存档(ENA)是一个全面的公共存储库,用于存储核苷酸序列数据和相关元数据。通过REST API和FTP访问和查询DNA/RNA序列、原始读段、基因组组装和功能注释,适用于基因组学和生物信息学管道。
何时使用此技能
此技能应在以下情况下使用:
- 根据访问号检索核苷酸序列或原始测序读段
- 通过元数据标准搜索样品、研究或组装
- 下载FASTQ文件或基因组组装用于分析
- 查询生物体的分类学信息
- 访问序列注释和功能数据
- 将ENA数据集成到生物信息学管道中
- 执行跨数据库搜索以找到相关记录
- 通过FTP或Aspera批量下载数据集
核心功能
1. 数据类型和结构
ENA将数据组织成层次化的对象类型:
研究/项目 - 分组相关数据并控制发布日期。研究是引用归档数据的主要单位。
样品 - 代表产生测序文库的生物材料单元。在提交大多数数据类型之前必须注册样品。
原始读段 - 包括:
- 实验:关于测序方法、文库制备和仪器细节的元数据
- 运行:引用包含单次测序运行的原始测序读段的数据文件
组装 - 基因组、转录组、宏基因组或宏转录组组装,具有不同完成水平。
序列 - 存储在EMBL核苷酸序列数据库中的组装和注释序列,包括编码/非编码区域和功能注释。
分析 - 从序列数据的计算分析中得出的结果。
分类学记录 - 分类学信息,包括谱系和等级。
2. 程序化访问
ENA提供多个REST API用于数据访问。请查阅references/api_reference.md以获取详细的端点文档。
关键API:
ENA门户API - 跨所有ENA数据类型的高级搜索功能
- 文档:https://www.ebi.ac.uk/ena/portal/api/doc
- 用于复杂查询和元数据搜索
ENA浏览器API - 直接检索记录和元数据
- 文档:https://www.ebi.ac.uk/ena/browser/api/doc
- 用于通过访问号下载特定记录
- 返回XML格式的数据
ENA分类学REST API - 查询分类学信息
- 访问谱系、等级和相关分类学数据
ENA交叉引用服务 - 访问外部数据库中的相关记录
CRAM参考注册表 - 检索参考序列
- 端点:https://www.ebi.ac.uk/ena/cram/
- 通过MD5或SHA1校验和查询
速率限制:所有API的速率限制为每秒50个请求。超出此限制将返回HTTP 429(请求过多)。
3. 搜索和检索数据
基于浏览器的搜索:
- 跨所有字段的自由文本搜索
- 序列相似性搜索(BLAST集成)
- 交叉引用搜索以找到相关记录
- 使用Rulespace查询构建器进行高级搜索
程序化查询:
- 使用门户API进行大规模高级搜索
- 按数据类型、日期范围、分类学或元数据字段筛选
- 下载结果作为表格化元数据摘要或XML记录
示例API查询模式:
import requests
# 搜索特定研究中的样品
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(通过门户API)
- TSV/CSV(表格化摘要)
序列数据:
- FASTQ(原始读段)
- BAM/CRAM(对齐读段)
- FASTA(组装序列)
- EMBL平面文件格式(注释序列)
下载方法:
- 直接API下载(小文件)
- FTP用于批量数据传输
- Aspera用于高速传输大型数据集
- enaBrowserTools命令行实用程序用于批量下载
5. 常见用例
通过访问号检索原始测序读段:
# 使用浏览器API下载运行文件
accession = "ERR123456"
url = f"https://www.ebi.ac.uk/ena/browser/api/xml/{accession}"
搜索研究中的所有样品:
# 使用门户API列出样品
study_id = "PRJNA123456"
url = f"https://www.ebi.ac.uk/ena/portal/api/search?result=sample&query=study_accession={study_id}&format=tsv"
查找特定生物的组装:
# 通过分类学搜索组装
organism = "Escherichia coli"
url = f"https://www.ebi.ac.uk/ena/portal/api/search?result=assembly&query=tax_tree({organism})&format=json"
获取分类学谱系:
# 查询分类学API
taxon_id = "562" # 大肠杆菌
url = f"https://www.ebi.ac.uk/ena/taxonomy/rest/tax-id/{taxon_id}"
6. 与分析管道集成
批量下载模式:
- 使用门户API搜索符合标准的访问号
- 从搜索结果中提取文件URL
- 通过FTP或使用enaBrowserTools下载文件
- 在管道中处理下载的数据
BLAST集成: 与EBI的NCBI BLAST服务(REST/SOAP API)集成,对ENA序列进行序列相似性搜索。
7. 最佳实践
速率限制:
- 在收到HTTP 429响应时实现指数退避
- 尽可能批量请求以保持在每秒50个请求的限制内
- 对于大型数据集,使用批量下载工具而不是迭代API调用
数据引用:
- 发表时始终使用研究/项目访问号进行引用
- 包括所使用的特定样品、运行或组装的访问号
API响应处理:
- 在处理响应前检查HTTP状态码
- 使用适当的XML库解析XML响应(不使用正则表达式)
- 处理大型结果集的分页
性能:
- 使用FTP/Aspera下载大于100MB的文件
- 当仅需要元数据时,优先选择TSV/JSON格式而不是XML
- 在处理许多记录时,本地缓存分类学查找
资源
此技能包含详细的参考文档,用于使用ENA:
references/
api_reference.md - 全面的API端点文档,包括:
- 门户API和浏览器API的详细参数
- 响应格式规范
- 高级查询语法和操作符
- 用于筛选和搜索的字段名称
- 常见API模式和示例
在构建复杂API查询、调试API响应或需要特定参数详细信息时,加载此参考文档。