基因功能注释

简介: 基因功能的注释依赖于上一步的基因结构预测,根据预测结果从基因组上提取翻译后的 蛋白序列 和主流的数据库进行比对,完成功能注释。常用数据库一共有以几种:Nr:NCBI官方非冗余蛋白数据库,包括PDB, Swiss-Prot, PIR, PRF; 如果要用DNA序列,就是nt库Pfam: 蛋白结构域注释的分类系统Swiss-Prot: 高质量的蛋白数据库,蛋白序列得到实验的验证KEGG: 代谢通路注释数据库.GO: 基因本体论注释数据库除了以上几个比较通用的数据库外,其实还有很多小众数据库,应该根据课题研究和背景进行选择。

基因功能的注释依赖于上一步的基因结构预测,根据预测结果从基因组上提取翻译后的 蛋白序列 和主流的数据库进行比对,完成功能注释。常用数据库一共有以几种:

  • Nr:NCBI官方非冗余蛋白数据库,包括PDB, Swiss-Prot, PIR, PRF; 如果要用DNA序列,就是nt库
  • Pfam: 蛋白结构域注释的分类系统
  • Swiss-Prot: 高质量的蛋白数据库,蛋白序列得到实验的验证
  • KEGG: 代谢通路注释数据库.
  • GO: 基因本体论注释数据库

除了以上几个比较通用的数据库外,其实还有很多小众数据库,应该根据课题研究和背景进行选择。注意,数据库本身并不能进行注释,你只是通过序列相似性进行搜索,而返回的结果你称之为注释。因此数据库和搜索工具要进行区分,所以你需要单独下载数据库和搜索工具,或者是同时下载包含数据库和搜索工具的安装包。

注意,后续分析中一定要保证你的蛋白序列中不能有代表氨基酸字符以外的字符,比如说有些软件会把最后一个终止密码子翻译成"."或者"*"

BLASTP

这一部分用到的数据库都是用BLASTP进行检索,基本都是四步发:下载数据库,构建BLASTP索引,数据库检索,结果整理。其中结果整理需要根据BLASTP的输出格式调整。

Nr的NCBI收集的最全的蛋白序列数据库,但是无论是用NCBI的BLAST还是用速度比较快DIAMOND对nr进行搜索,其实都没有利用好物种本身的信息。因此在RefSeq上下载对应物种的蛋白序列, 用BLASTP进行注释即可。

# download
wget -4  -nd -np -r 1 -A *.faa.gz ftp://ftp.ncbi.nlm.nih.gov/refseq/release/plant/
mkdir -p ~/db/RefSeq
zcat *.gz > ~/db/RefSeq/plant.protein.faa
# build index
~/opt/biosoft/ncbi-blast-2.7.1+/bin/makeblastdb -in plant.protein.faa -dbtype prot -parse_seqids -title RefSeq_plant -out plant
# search
~/opt/biosoft/ncbi-blast-2.7.1+/bin/blastp -query protein.fa -out RefSeq_plant_blastp.xml -db ~/db/RefSeq/uniprot_sprot.fasta -evalue 1e-5 -outfmt 5 -num_threads 50 &

Swiss-Prot里收集了目前可信度最高的蛋白序列,一共有55w条记录,数据量比较小,

# download
wget -4 -q ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz
gzip -d uniprot_sprot.fasta.gz
# builid index
~/opt/biosoft/ncbi-blast-2.7.1+/bin/makeblastdb -in uniprot_sprot.fasta -dbtype prot -title swiss_prot -parse_seqids
# search
~/opt/biosoft/ncbi-blast-2.7.1+/bin/blastp -query protein.fa -out swiss_prot.xml -db ~/db/swiss_prot/uniprot_sprot.fasta -evalue 1e-5 -outfmt 5 -num_threads 50 &

关于结果整理,已经有很多人写了脚本,比如说我搜索BLAST XML CSV,就找到了https://github.com/Sunhh/NGS_data_processing/blob/master/annot_tools/blast_xml_parse.py, 所以就不过多介绍。

InterProScan

下面介绍的工具是InterProScan, 从它的9G的体量就可以感受它的强大之处,一次运行同时实现多个信息注释。

  • InterPro注释
  • Pfam数据库注释(可以通过hmmscan搜索pfam数据库完成)
  • GO注释(可以基于NR和Pfam等数据库,然后BLAST2GO完成,)
  • Reactome通路注释,不同于KEGG

命令如下

./interproscan-5.29-68.0/interproscan.sh -appl Pfam  -f TSV -i sample.fa -cpu 50 -b sample -goterms -iprlookup -pa

-appl告诉软件要执行哪些数据分析,勾选的越多,分析速度越慢,Pfam就行。

KEGG

KEGG数据库目前本地版收费,在线版收费,所以只能将蛋白序列在KEGG服务器上运行。因此你需要在http://www.genome.jp/tools/kaas/选择合适的工具进行后续的分析。我上传的50M大小蛋白序列,在KEGG服务器上只需要运行8个小时,也就是晚上提交任务,白天回来干活。

img_13aed31903dad19df7b4e1b54e20cdc6.jpe
运行时间
目录
相关文章
|
7月前
DTL注释
DTL注释。
44 1
|
24天前
|
Python
注释
注释。
26 5
|
2月前
|
Java 编译器 C语言
2.2 注释
在编程中,/*与*/间的部分为注释,帮助他人理解程序。C语言支持多行及同行为代码添加注释,如/*这是C注释*/。C99引入了类似C++和Java的//注释方式,仅限单行://这是单行注释。甚至 int range;//此处也可注释。但需注意避免注释缺失结束标记导致的错误。
24 3
|
4月前
|
Java API 数据库
您过去使用过哪些常见的 JPA 注释?
【8月更文挑战第21天】
32 1
|
7月前
|
算法 编译器 C++
C++注释
C++注释
50 2
|
7月前
|
存储 弹性计算 运维
使用注释
【4月更文挑战第29天】
33 2
|
7月前
|
编译器 C++
C++ 注释
C++ 注释
40 0
|
7月前
|
XML 程序员 编译器
C#注释
C#注释
77 0
|
编译器 C++
C++ 注释
【摘要】 C++ 注释程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。C++ 注释一般有两种:// - 一般用于单行注释。/* ... */ - 一般用于多行注释。注释以 // 开始,直到行末为止。例如:实例#include <iostream>using n...
|
程序员
笑出腹肌的注释,就怕你不敢用!
笑出腹肌的注释,就怕你不敢用!
108 0
笑出腹肌的注释,就怕你不敢用!