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、同源物种等核心信息,可直接用于后续的功能富集、机器学习建模等分析。
相关推荐
2601_948606182 小时前
MySQL B+树索引高度计算与性能阈值探讨
数据库·b树·mysql
lierenvip2 小时前
mysql用户名怎么看
数据库·mysql
qq_416018722 小时前
用户认证与授权:使用JWT保护你的API
jvm·数据库·python
KKKlucifer2 小时前
国产化适配与自主可控:国内安全厂商文档安全平台核心技术构建
大数据·数据库·人工智能
nexus_new2 小时前
Flutter 纯 Dart 数据库 Tostore 快速上手指南
数据库
MaximusCoder3 小时前
等保测评命令——达梦数据库 DM
linux·运维·数据库·安全·ffmpeg·安全威胁分析
GIS阵地3 小时前
Warning 1: PROJ: proj_create_from_database
数据库·c++·mybatis·qgis·开源gis·pyqgis
m0_743297423 小时前
实战:用Python分析某电商销售数据
jvm·数据库·python
未来龙皇小蓝3 小时前
【MySQL-索引调优】07:Sql使用索引注意点
数据库·sql·mysql·性能优化