SuperAPI AI 工具集

uniprot-database

数据与分析

查看项目

更新于 10-16 04:19

技能介绍

用途

UniProt Database 技能用于通过 REST API 直接访问 UniProt——全球领先的综合性蛋白质序列与功能信息资源。它面向需要检索、获取和分析蛋白质数据的场景,例如按名称、基因符号、登录号或物种查找蛋白质条目,获取序列,跨数据库映射标识符,以及读取蛋白质注释信息。

主要能力

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

  2. 单条目获取:按登录号获取特定蛋白质条目。登录号格式包括经典格式(如 P12345、Q1AAA9、O15530,6 位:字母加 5 位字母数字)和扩展格式(如 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_(Gene Ontology 注释)、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 的现代类型化 Python 客户端)和 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)蛋白质数据
  • 流式获取大型蛋白质数据集
  • 使用字段限定搜索语法构建自定义查询

最佳实践

  • 尽可能使用已审阅条目:用 reviewed:true 过滤 Swiss-Prot(人工审阅)条目
  • 明确指定格式:序列用 FASTA,表格数据用 TSV,程序解析用 JSON
  • 使用字段选择:只请求需要的字段以减少带宽和处理时间
  • 处理分页:对大型结果集实现正确的分页或使用流式端点
  • 缓存结果:将频繁访问的数据存储在本地以减少 API 调用
  • 速率限制:尊重 API 资源,对大型批量操作实现延迟
  • 检查数据质量:TrEMBL 条目为计算预测,Swiss-Prot 条目为人工审阅

限制

  • 仅在任务明确符合上述范围时使用本技能。
  • 不要将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少必需的输入、权限、安全边界或成功标准,应停止并请求澄清。
  • ID 映射每个任务最多 100,000 个 ID,结果仅保留 7 天。

资源

  • scripts/uniprot_client.py:Python 客户端,包含搜索、检索、ID 映射和流式获取等常用操作的辅助函数。
  • references/api_fields.md:用于自定义查询的完整可用字段列表。
  • references/id_mapping_databases.md:ID 映射操作支持的数据库。
  • references/query_syntax.md:全面的查询语法及高级示例。
  • references/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/(用于高级图查询)。