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映射工作流:
- 提交映射任务至:
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术语
- 以及更多(参见
/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)- 使用任何查询搜索UniProtget_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获取全面的语法文档。
最佳实践
- 尽可能使用已审核条目:使用
reviewed:true过滤Swiss-Prot(手动审核)条目 - 明确指定格式:选择最合适的格式(FASTA用于序列,TSV用于表格数据,JSON用于程序化解析)
- 使用字段选择:仅请求需要的字段以减少带宽和处理时间
- 处理分页:对于大型结果集,实施适当的分页或使用流式端点
- 缓存结果:本地存储频繁访问的数据以最小化API调用
- 速率限制:尊重API资源;为大型批量操作实施延迟
- 检查数据质量: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)的代码示例