SuperAPI AI 工具集

uniprot-database

数据与分析

查看项目

更新于 10-15 09:03

技能介绍

用途

UniProt Database 技能用于通过 REST API 直接访问 UniProt——全球领先的蛋白质序列与功能信息资源。它面向需要检索蛋白质条目、获取序列、进行标识符映射或访问蛋白质注释的场景,尤其适合与 Python 工作流配合使用。

主要能力

  1. 蛋白质搜索:支持自然语言查询和结构化搜索语法,可按蛋白质名称、基因名、登录号、序列长度、分类学、GO 术语等条件检索。搜索端点:https://rest.uniprot.org/uniprotkb/search?query={query}&format={format},支持 JSON、TSV、Excel、XML、FASTA、RDF、TXT 等格式。

  2. 单条条目获取:按登录号获取特定蛋白质条目。登录号格式包括经典格式(如 P12345、Q1AAA9、O15530,6 位)和扩展格式(如 A0A022YWF9,10 位)。端点:https://rest.uniprot.org/uniprotkb/{accession}.{format},例如 https://rest.uniprot.org/uniprotkb/P12345.fasta。

  3. 批量检索与 ID 映射:在不同数据库系统之间映射蛋白质标识符。映射流程为:提交任务到 https://rest.uniprot.org/idmapping/run,查询状态 https://rest.uniprot.org/idmapping/status/{jobId},获取结果 https://rest.uniprot.org/idmapping/results/{jobId}。支持的映射数据库包括 UniProtKB AC/ID、基因名、Ensembl、RefSeq、EMBL、PDB、AlphaFoldDB、KEGG、GO 术语等。限制:每个任务最多 100,000 个 ID,结果保留 7 天。

  4. 流式获取大型结果集:对于超出分页限制的大型查询,使用流式端点 https://rest.uniprot.org/uniprotkb/stream?query={query}&format={format},返回全部结果而不分页,适合下载完整数据集。

  5. 自定义返回字段:可指定需要检索的字段以提高传输效率。常用字段包括 accession、id、gene_names、organism_name、protein_name、sequence、length、go_、cc_、ft_* 等。示例:https://rest.uniprot.org/uniprotkb/search?query=insulin&fields=accession,gene_names,organism_name,length,sequence&format=tsv。

使用方式

技能提供 Python 辅助脚本 scripts/uniprot_client.py,实现以下函数:

  • search_proteins(query, format) - 使用任意查询搜索 UniProt
  • get_protein(accession, format) - 获取单条蛋白质条目
  • map_ids(ids, from_db, to_db) - 在标识符类型之间映射
  • batch_retrieve(accessions, format) - 批量获取多条条目
  • stream_results(query, format) - 流式获取大型结果集

也可使用替代 Python 包:Unipressed(现代、带类型的 UniProt REST API 客户端)、bioservices(综合生物信息学 Web 服务客户端)。

查询语法示例:

  • 布尔运算符:kinase AND organism_name:human;(diabetes OR insulin) AND reviewed:true;cancer NOT lung
  • 字段搜索:gene:BRCA1;accession:P12345;organism_id:9606;taxonomy_name:"Homo sapiens";annotation:(type:signal)
  • 范围查询:length:[100 TO 500];mass:[50000 TO 100000]
  • 通配符:gene:BRCA*;protein_name:kinase*

适用场景

  • 按名称、基因符号、登录号或物种搜索蛋白质条目
  • 以 FASTA 或其他格式获取蛋白质序列
  • 在 UniProt 与外部数据库(Ensembl、RefSeq、PDB 等)之间映射标识符
  • 访问蛋白质注释,包括 GO 术语、结构域和功能描述
  • 高效批量获取多条蛋白质条目
  • 查询已审核(Swiss-Prot)与未审核(TrEMBL)蛋白质数据
  • 流式获取大型蛋白质数据集
  • 使用字段特定搜索语法构建自定义查询

限制与最佳实践

  • ID 映射每个任务最多 100,000 个 ID,结果仅保留 7 天。
  • 建议尽可能使用已审核条目:通过 reviewed:true 过滤 Swiss-Prot(人工审编)条目。
  • 明确指定格式:序列用 FASTA,表格数据用 TSV,程序解析用 JSON。
  • 使用字段选择:只请求所需字段以减少带宽和处理时间。
  • 处理分页:大型结果集应实现正确分页或使用流式端点。
  • 缓存结果:本地存储频繁访问的数据以减少 API 调用。
  • 速率限制:尊重 API 资源,大批量操作应实现延迟。
  • 检查数据质量:TrEMBL 条目为计算预测,Swiss-Prot 条目为人工审核。

资源

scripts/ 目录:uniprot_client.py - 包含搜索、获取、ID 映射和流式获取等常用操作的 Python 客户端。

references/ 目录:

  • api_fields.md - 用于自定义查询的完整可用字段列表
  • id_mapping_databases.md - ID 映射操作支持的数据库
  • query_syntax.md - 全面的查询语法与高级示例
  • api_examples.md - 多语言代码示例(Python、curl、R)

其他资源:

  • API 文档:https://www.uniprot.org/help/api
  • 交互式 API 浏览器:https://www.uniprot.org/api-documentation
  • REST 教程:https://www.uniprot.org/help/uniprot_rest_tutorial
  • 查询语法帮助:https://www.uniprot.org/help/query-fields
  • SPARQL 端点:https://sparql.uniprot.org/(用于高级图查询)