Swiss-Prot 注释--生信工具079

基于 Swiss-Prot 数据库的同源基因注释全流程实操

diamond安装与使用-diamond-2.1.8(bioinfomatics tools-010)_diamond makedb-CSDN博客

01 背景介绍

Swiss-Prot(隶属于 UniProt 知识库)是经过人工审核、注释信息高度可靠的蛋白质序列数据库,包含了基因本体(GO)、代谢通路(KEGG)、物种同源性等核心注释信息。基于 Swiss-Prot 的同源基因注释,是基因组功能注释中最常用且高效的方法之一 ------ 通过将待注释的蛋白质序列与 Swiss-Prot 中已注释的同源序列比对,可快速推导目标基因的功能、所属通路及物种同源关系,广泛应用于植物、动物、微生物等各类基因组研究。

相较于从头注释,同源注释依托 Swiss-Prot 的高质量注释数据,能大幅降低注释假阳性率,且结合 DIAMOND/BLAST + 的快速比对能力,可高效处理大规模基因组数据(大数据场景),是生物信息学中 "从序列到功能" 的核心环节。

02 完整操作流程

第一步:下载并合并 UniProt 植物注释文件

首先从 UniProt 官方 FTP 服务器下载植物分类下的 Swiss-Prot(人工注释)和 TrEMBL(自动注释)dat 格式文件,合并为统一的注释库,为后续注释提供基础数据。

复制代码
# 下载Swiss-Prot植物注释文件
wget ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/taxonomic_divisions/uniprot_sprot_plants.dat.gz
# 下载TrEMBL植物注释文件
wget ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/taxonomic_divisions/uniprot_trembl_plants.dat.gz
# 解压并合并两个dat文件
zcat uniprot_sprot_plants.dat.gz uniprot_trembl_plants.dat.gz > uniprot_plants.dat

第二步:从 dat 文件中提取 FASTA 序列

dat 文件包含注释文本和序列信息,需通过 awk 脚本提取出以 UniProt 登录号(AC)为标识的 FASTA 序列,用于后续建立比对索引。

复制代码
dat=uniprot_plants.dat
awk '{if (/^ /) {gsub(/ /, ""); print} else if (/^AC/) print ">" $2}' $1 > ${1%%.dat}_AC.fasta

第三步:建立 DIAMOND 比对索引

diamond安装与使用-diamond-2.1.8(bioinfomatics tools-010)_diamond makedb-CSDN博客

DIAMOND 是比 NCBI BLAST + 更快的序列比对工具,适合大数据量的蛋白质序列比对,先基于提取的 FASTA 序列构建索引库。

复制代码
diamond makedb --in uniprot_plants_AC.fasta -d uniprot_plants_AC

若使用 NCBI BLAST+,可替换为:makeblastdb -in uniprot_plants_AC.fasta -dbtype prot -out uniprot_plants_AC

第四步:执行序列比对

将待注释的蛋白质序列(proteins.fasta)与构建好的索引库进行 blastp 比对,设置 e 值阈值(1e-5)过滤低可信度比对结果。

复制代码
diamond blastp -d /data/database/UniProt-Plant/uniprot_plants_AC.dmnd -q proteins.fasta --evalue 1e-5 > blastp.outfmt6

若使用 NCBI BLAST+,可替换为:blastp -db uniprot_plants_AC -query proteins.fasta -evalue 1e-5 -out blastp.outfmt6 -outfmt 6

第五步:筛选每个 Query 的最佳比对结果

每个待注释基因(Query)可能匹配多个同源序列(Subject),需筛选出相似度最高的 1 条结果,保证注释的唯一性和可靠性。

复制代码
python -m jcvi.formats.blast best -n 1 blastp.outfmt6

第六步:提取 GO/KEGG/ 同源基因注释信息

使用自定义脚本add_annotation_from_dat.py(GitHub 开源),结合比对结果和原始 dat 注释文件,提取核心注释信息,需提前安装 BioPython 库(兼容 Python2/3)。

python 复制代码
#!/user/bin/env python
import re
import sys
from Bio import SeqIO

if len(sys.argv) < 2:
    print("usage: add_annotation_from_dat.py blastp dat")
    sys.exit(1)

blastp_file = sys.argv[1]
dat = sys.argv[2]

uniprot = SeqIO.index(dat, "swiss")

out_file = open("swiss_annotation.tsv", "w")


for line in open(blastp_file, "r"):
    gene,acc,ident = line.strip().split()[0:3]
    if not uniprot.get(acc.strip(";")):
        continue
    record = uniprot.get_raw(acc.strip(";"))
    GO_RECORD = re.findall(r"GO; (GO:\d+); ([F|P|C]):.*?; (.*):",record.decode('utf-8'))

    SPECIES = re.findall(r"OS   .*.", record.decode('utf-8'))
    if len(SPECIES) == 0:
        SPECIES = [""]
    else:
        SPECIES = [ SPECIES[0].replace("\t"," ") ]

    ENSEMBLE_Plant = re.findall(r"EnsemblPlants; (.*?);", record.decode('utf-8'))
    if len(ENSEMBLE_Plant) == 0:
        ENSEMBLE_Plant = [""]
    else:
        ENSEMBLE_Plant = [ENSEMBLE_Plant[0].replace("\t"," ")]

    for GO in GO_RECORD:
        outline = "\t".join([gene, acc,ident] + SPECIES + ENSEMBLE_Plant + list(GO))
        out_file.writelines(outline + "\n")

out_file.close()
复制代码
python ~/myscripts/add_annotation_from_dat.py blastp.outfmt6.best /data/database/UniProt-Plant/uniprot_plants.dat

执行完成后会生成swiss_annotation.tsv文件,包含以下核心列:

  1. gene id:待注释的基因 ID
  2. uniprot accession:匹配的 UniProt 登录号
  3. identity:序列相似度
  4. homology species:同源物种
  5. EnsemblPlants:Ensembl 植物数据库对应 ID
  6. GO ID:基因本体 ID
  7. GO component, CC/MF/BP:GO 分类(细胞组分 / 分子功能 / 生物过程)
  8. evidence:GO 注释证据类型

03 关键注意事项

  1. 数据量适配:植物 TrEMBL 文件体积较大(数十 GB),建议在 Linux 服务器(≥16G 内存)上操作,避免内存不足;
  2. 工具依赖 :DIAMOND/NCBI BLAST + 需提前安装并配置环境变量,jcvi库可通过pip install jcvi安装;
  3. 注释可靠性:Swiss-Prot(uniprot_sprot)为人工审核数据,注释可信度高于 TrEMBL,若追求高精度可仅使用 Swiss-Prot 文件;
  4. BioPython 安装 :执行pip install biopython即可完成依赖安装,Python2 环境需注意版本兼容性。

小结

  1. 基于 Swiss-Prot 的同源基因注释核心是 "序列比对 + 注释提取",DIAMOND 的引入大幅提升了大数据量下的比对效率;
  2. 关键步骤为 "下载合并注释文件→提取序列建索引→比对→筛选最佳结果→提取功能注释",流程标准化且可批量处理;
  3. 最终输出的swiss_annotation.tsv包含 GO、KEGG、同源物种等核心信息,可直接用于后续的功能富集、机器学习建模等分析。
相关推荐
XDHCOM1 分钟前
MySQL ER_IB_MSG_919报错解析,故障修复与远程处理指南
数据库·mysql·adb
爬山算法5 分钟前
MongoDB(88)如何进行数据迁移?
数据库·mongodb
小小程序员.¥8 分钟前
oracle--函数
数据库·sql·mysql
Leon-Ning Liu8 分钟前
Oracle 26ai 新特性: True Cache(真实缓存)
数据库·缓存·oracle
Leon-Ning Liu9 分钟前
Oracle 26ai 的 SQL 语言增强特性
数据库·sql·oracle
Elastic 中国社区官方博客10 分钟前
Elasticsearch:语义搜索,现在默认支持多语言
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
小江的记录本10 分钟前
【JEECG Boot】 JEECG Boot 数据字典管理——六大核心功能(内含:《JEECG Boot 数据字典开发速查清单》)
java·前端·数据库·spring boot·后端·spring·mybatis
小年糕是糕手12 分钟前
【35天从0开始备战蓝桥杯 -- Day9】
数据结构·数据库·c++·算法·蓝桥杯
Austindatabases18 分钟前
SQLite需要初始化参数,怎么调优-- SQLite 五脏俱全系列 (1)
数据库·sqlite
NineData19 分钟前
NineData V5.0 产品发布会:让 AI 成为数据管理的驱动力,4 月 16 日!
数据库·人工智能·数据库管理工具·ninedata·数据库迁移工具·数据安全管理·权限管控