UniProt数据库访问技能Skill uniprot-database

该技能提供对UniProt蛋白质数据库的REST API直接访问,支持蛋白质搜索、FASTA序列检索、ID映射、Swiss-Prot/TrEMBL注释获取等功能。适用于生物信息学、蛋白质分析、数据科学工作流,关键词包括UniProt、蛋白质数据库、REST API、生物信息学、数据检索、序列分析、ID映射、注释获取。

其他 0 次安装 0 次浏览 更新于 3/16/2026

name: uniprot-database description: “直接通过REST API访问UniProt。蛋白质搜索、FASTA检索、ID映射、Swiss-Prot/TrEMBL。对于使用多个数据库的Python工作流,推荐使用bioservices(统一接口访问40多个服务)。适用于直接的HTTP/REST工作或UniProt特定控制。”

UniProt数据库

概述

UniProt是全球领先的全面蛋白质序列和功能信息资源。通过名称、基因或登录号搜索蛋白质,以FASTA格式检索序列,跨数据库执行ID映射,通过REST API访问Swiss-Prot/TrEMBL注释以进行蛋白质分析。

何时使用此技能

此技能应在以下情况使用:

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

核心能力

1. 搜索蛋白质

使用自然语言查询或结构化搜索语法搜索UniProt。

常见搜索模式:

# 按蛋白质名称搜索
query = "胰岛素 AND organism_name:\"人类\""

# 按基因名称搜索
query = "gene:BRCA1 AND reviewed:true"

# 按登录号搜索
query = "accession:P12345"

# 按序列长度搜索
query = "length:[100 TO 500]"

# 按分类学搜索
query = "taxonomy_id:9606"  # 人类蛋白质

# 按GO术语搜索
query = "go:0005515"  # 蛋白质结合

使用API搜索端点: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映射

在不同数据库系统之间映射蛋白质标识符并高效检索多个条目。

ID映射工作流:

  1. 提交映射任务至:https://rest.uniprot.org/idmapping/run
  2. 检查任务状态:https://rest.uniprot.org/idmapping/status/{jobId}
  3. 检索结果:https://rest.uniprot.org/idmapping/results/{jobId}

支持的映射数据库:

  • UniProtKB AC/ID
  • 基因名称
  • Ensembl、RefSeq、EMBL
  • PDB、AlphaFoldDB
  • KEGG、GO术语
  • 以及更多(参见/references/id_mapping_databases.md

限制:

  • 每个任务最多100,000个ID
  • 结果存储7天

4. 流式传输大型结果集

对于超出分页限制的大型查询,使用流式端点:

https://rest.uniprot.org/uniprotkb/stream?query={query}&format={format}

流式端点返回所有结果而无需分页,适合下载完整数据集。

5. 自定义检索字段

指定需要检索的字段以实现高效数据传输。

常见字段:

  • accession - UniProt登录号
  • id - 条目名称
  • gene_names - 基因名称
  • organism_name - 生物体
  • protein_name - 蛋白质名称
  • sequence - 氨基酸序列
  • length - 序列长度
  • go_* - 基因本体注释
  • cc_* - 评论字段(功能、交互等)
  • ft_* - 特征注释(结构域、位点等)

示例: https://rest.uniprot.org/uniprotkb/search?query=胰岛素&fields=accession,gene_names,organism_name,length,sequence&format=tsv

参见/references/api_fields.md获取完整字段列表。

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服务客户端

查询语法示例

布尔运算符:

激酶 AND organism_name:人类
(糖尿病 OR 胰岛素) AND reviewed:true
癌症 NOT 肺癌

字段特定搜索:

gene:BRCA1
accession:P12345
organism_id:9606
taxonomy_name:\"人类\"
annotation:(type:信号)

范围查询:

length:[100 TO 500]
mass:[50000 TO 100000]

通配符:

gene:BRCA*
protein_name:激酶*

参见/references/query_syntax.md获取全面的语法文档。

最佳实践

  1. 尽可能使用已审核条目:使用reviewed:true过滤Swiss-Prot(手动审核)条目
  2. 明确指定格式:选择最合适的格式(FASTA用于序列,TSV用于表格数据,JSON用于程序化解析)
  3. 使用字段选择:仅请求需要的字段以减少带宽和处理时间
  4. 处理分页:对于大型结果集,实施适当的分页或使用流式端点
  5. 缓存结果:本地存储频繁访问的数据以最小化API调用
  6. 速率限制:尊重API资源;为大型批量操作实施延迟
  7. 检查数据质量:TrEMBL条目是计算预测;Swiss-Prot条目是手动审核的

资源

scripts/

uniprot_client.py - Python客户端,包含用于常见UniProt操作的辅助函数,包括搜索、检索、ID映射和流式传输。

references/

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

附加资源