采用Trinotate对拼接结果进行注释

一:开始之前需要准备三个东西:

第一:安装软件

1.Trinity(用于生成拼接后的转录本fasta文件)

2.TransDecoder(用于预测转录本的蛋白编码区域)

3.SQLite (用于整合数据库数据,我下的是Trinotate_v3.sqlite)

4.NCBI BLAST+(用于比对Blast库)

5.HMMER/PFAM(用于通过HMMER工具注释蛋白质结构域)

第二:构建所需数据库

## sqlite3 --help cd

$~/biosoft mkdir Trinotate && cd Trinotate

# http://trinotate.github.io/

# https://github.com/Trinotate/Trinotate/releases

$wget https://github.com/Trinotate/Trinotate/archive/v3.0.1.tar.gz -O Trinotate.v3.0.1.tar.gz 

$tar zxvf Trinotate.v3.0.1.tar.gz

$~/biosoft/Trinotate/Trinotate-3.0.1/Trinotate -h 

$wget https://data.broadinstitute.org/Trinity/Trinotate_v3_RESOURCES/Pfam-A.hmm.gz

$wget https://data.broadinstitute.org/Trinity/Trinotate_v3_RESOURCES/uniprot_sprot.pep.gz

$wget https://data.broadinstitute.org/Trinity/Trinotate_v3_RESOURCES/Trinotate_v3.sqlite.gz -O Trinotate.sqlite.gz

$gunzip Trinotate.sqlite.gz gunzip uniprot_sprot.pep.gz

$makeblastdb -in uniprot_sprot.pep -dbtype prot

$gunzip Pfam-A.hmm.gz

$hmmpress Pfam-A.hmm

最后生成一下文件:

-rw-rw-r--  1 spider spider 1348848383 Mar  7  2016Pfam-A.hmm   数据库文件

-rw-rw-r--  1 spider spider  304256653 Apr 13 10:02 Pfam-A.hmm.h3f

-rw-rw-r--  1 spider spider    1124460 Apr 13 10:02 Pfam-A.hmm.h3i

-rw-rw-r--  1 spider spider  558372538 Apr 13 10:02 Pfam-A.hmm.h3m

-rw-rw-r--  1 spider spider  656774195 Apr 13 10:02 Pfam-A.hmm.h3p

drwxrwxr-x 10 spider spider       4096 Apr 11  2016 Trinotate-3.0.1

-rw-rw-r--  1 spider spider   29102393 Apr 12 11:46 Trinotate.v3.0.1.tar.gz

-rw-rw-r--  1 spider spider  359515136 Mar  7  2016 Trinotate_v3.sqlite

-rw-------  1 spider spider        317 Apr 12 22:07 nohup.out

-rw-rw-r--  1 spider spider  232512443 Mar  7  2016uniprot_sprot.pep  数据库文件

-rw-rw-r--  1 spider spider   70142548 Apr 12 22:07 uniprot_sprot.pep.phr

-rw-rw-r--  1 spider spider    4404496 Apr 12 22:07 uniprot_sprot.pep.pin

-rw-rw-r--  1 spider spider  197023228 Apr 12 22:07 uniprot_sprot.pep.psq

第三:需要我们用TransDecoder构建得到了转录本的编码蛋白的蛋白序列(我的如下)


准备就绪就开始了。

二: 序列比对

接下来的工作就是通过之前下载配置好的Blast+和HMMER进行比对和预测(当然两者工具采用的算法会有差异)

$nohup blastx -query /data1/spider/ytbiosoft/data/trinity.all/trinity_out_dir_all.Trinity.fasta -db uniprot_sprot.pep -num_threads 8 -max_target_seqs 1 -outfmt 6 -evalue 1e-3 > blastx.outfmt6 &  blastx比对

$nohup blastp -query /data1/spider/ytbiosoft/data/trinity.all/TransDecoder.LongOrfs/trinity_out_dir_all.Trinity.fasta.transdecoder.pep -db uniprot_sprot.pep -num_threads 8 -max_target_seqs 1 -outfmt 6 -evalue 1e-3 > blastp.outfmt6 &  blastp比对

这条命令都是采用的Blast比对算法进行的

还有一种是HMMER基于隐马尔科夫链的算法进行的。

看一下hmmscan的帮助文档

$hmmscan -h

# hmmscan :: search sequence(s) against a profile database

# HMMER 3.2.1 (June 2018); http://hmmer.org/

# Copyright (C) 2018 Howard Hughes Medical Institute.

# Freely distributed under the BSD open source license.

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Usage: hmmscan [-options]

Basic options:

  -h : show brief help on version and usage

Options controlling output:

  -o            : direct output to file , not stdout

  --tblout      : save parseable table of per-sequence hits to file

  --domtblout   : save parseable table of per-domain hits to file

  --pfamtblout : save table of hits and domains to file, in Pfam format

  --acc            : prefer accessions over names in output

  --noali          : don't output alignments, so output is smaller

  --notextw        : unlimit ASCII text output line width

  --textw       : set max width of ASCII text output lines  [120]  (n>=120)

Options controlling reporting thresholds:

  -E      : report models <= this E-value threshold in output  [10.0]  (x>0)

  -T      : report models >= this score threshold in output

  --domE : report domains <= this E-value threshold in output  [10.0]  (x>0)

  --domT : report domains >= this score cutoff in output

Options controlling inclusion (significance) thresholds:

  --incE     : consider models <= this E-value threshold as significant

  --incT     : consider models >= this score threshold as significant

  --incdomE : consider domains <= this E-value threshold as significant

  --incdomT : consider domains >= this score threshold as significant

Options for model-specific thresholding:

  --cut_ga : use profile's GA gathering cutoffs to set all thresholding

  --cut_nc : use profile's NC noise cutoffs to set all thresholding

  --cut_tc : use profile's TC trusted cutoffs to set all thresholding

Options controlling acceleration heuristics:

  --max    : Turn all heuristic filters off (less speed, more power)

  --F1 : MSV threshold: promote hits w/ P <= F1  [0.02]

  --F2 : Vit threshold: promote hits w/ P <= F2  [1e-3]

  --F3 : Fwd threshold: promote hits w/ P <= F3  [1e-5]

  --nobias : turn off composition bias filter

Other expert options:

  --nonull2     : turn off biased composition score corrections

  -Z         : set # of comparisons done, for E-value calculation

  --domZ     : set # of significant seqs, for domain E-value calculation

  --seed     : set RNG seed to (if 0: one-time arbitrary seed)  [42]

  --qformat : assert input is in format : no autodetection

  --cpu      : number of parallel CPU workers to use for multithreads  [2]

开始用hmmer算法比对:

$hmmscan --cpu 4 --domtblout TrinotatePFAM.out Pfam-A.hmm /data1/spider/ytbiosoft/data/trinity.all/TransDecoder.LongOrfs/trinity_out_dir_all.Trinity.fasta.transdecoder.pep > pfam.log

所以最后总共会生成2个基于blast的文件和一个基于hmmer的文件:

三:比对完之后我们需要把数据整合导入到SQL数据库中,进行统一管理。

首先得到的结果放到Trinotate SQLite数据库中进行合并。因此我们需要把以下的几个结果进行Load到SQLite db中,在我们这个工作中的SQLite db就是Trinotate_v3.sqlite

1.转录本和蛋白数据     (就是上面比对用到的*.fasta文件和*..transdecoder.pep文件)

2.Blast的结果(这个包括蛋白比对和核酸比对的两个结果)  (blastx与blastp的结果文件)

3.HMMER比对的Pfam结果  (hmmscan比对结果文件 )

那么接下来就是采用以下命令进行 (这个要明白Trinotate就是一个把数据装到数据库的工具)

1. 导入转录本和蛋白数据

$TrinotateSeqLoader.pl  #调用的脚本

--sqliteTrinotate_v3.sqlite#导入的数据库(就是之前你下的)

--gene_trans_map /data1/spider/ytbiosoft/data/trinity.all/trinity_out_dir_all.Trinity.fasta.gene_trans_map  #导入的是转录本与基因的关系文件

--transcript_fasta /data1/spider/ytbiosoft/data/trinity.all/trinity_out_dir_all.Trinity.fasta  #导入转录本文件

--transdecoder_pep     /data1/spider/ytbiosoft/data/trinity.all/TransDecoder.LongOrfs/trinity_out_dir_all.Trinity.fasta.transdecoder.pep #导入转录本编码蛋白质文件

结果如下:

$TrinotateSeqLoader.pl --sqlite Trinotate_v3.sqlite --gene_trans_map /data1/spider/ytbiosoft/data/trinity.all/trinity_out_dir_all.Trinity.fasta.gene_trans_map --transcript_fasta /data1/spider/ytbiosoft/data/trinity.all/trinity_out_dir_all.Trinity.fasta --transdecoder_pep /data1/spider/ytbiosoft/data/trinity.all/TransDecoder.LongOrfs/trinity_out_dir_all.Trinity.fasta.transdecoder.pep

-parsing gene/trans map file.... done.

-loading Transcripts.

[375700]   

done.

-loading ORFs.

[180000]   

done.

Loading complete..

2.接下来导入Blast比对结果:

$Trinotate_BLAST_loader.pl --sqlite Trinotate_v3.sqlite --outfmt6 blastx.outfmt6 --prog blastx --dbtype Swissprot

#调用的脚本                    #处理的数据库                  #导入的是blastx的结果

$Trinotate_BLAST_loader.pl --sqlite Trinotate_v3.sqlite --outfmt6 blastp.outfmt6 --prog blastp --dbtype Swissprot

#调用的脚本                  #处理的数据库                   #导入的是blastp的结果

3.最后导入HMMER比对结果

$Trinotate_PFAM_loader.pl --sqlite Trinotate_v3.sqlite --pfam TrinotatePFAM.out

#调用的脚本                  #处理的数据库                   #导入的是pfam的结果

最终,这样我们就将之前的结果导入到了我们 Trinotate_v3.sqlite 这个文件中。之后在其他的地方我们会使用到这个,而且这个数据库也可以通过脚本Trinotate_report_writer.pl直接进行调用:

$Trinotate_report_writer.pl--sqlite Trinotate_v3.sqlite > database_report.xls

最终我们将blast结果以及hmmer预测结果进行了整合, 同时发现SQL数据库的管理在大数据整合过程中非常重要,而且SQL数据库还可以在其他地方被调用。

你可能感兴趣的:(采用Trinotate对拼接结果进行注释)