Trinity作为一款经典的转录组组装软件,在众多的转录组组装软件中认可度应该是最高的,而且版本一直在更新,现在已经出到了v2.6版。此文主要用于记录阅读Trinity源码过程中的一些理解,阅读的Trinity源码版本是v2.4

Trinity的源码涉及到的各种不同的编程语言,例如perl、c++、java等。同时也使用了几款不同的生物信息分析软件,例如jellyfish、bowtie2、samtools等。到目前为止,Trinity除了可以进行转录组组装之外还打包了一些其他的软件用于组装之后的下游分析,如RSEM用于计算表达量、利用R包edgeR进行差异表达分析、利用transcoder进行CDS预测。

Trinity官网介绍是分为三个步骤:InchwormChralysisButterfly

拼接得到的转录本序列信息以FASTA格式储存,如下所示:

>c13_g1_i1 len=263 path=[369:0-108 477:109-148 65:149-262]
TGAAGAGGGAGGAGGCGAATTGGGTTTGGCGTGGCTGCTGTTAAGGGGCTGCAAGAGGTG
GAAAGGAGGACAGAGAAGATGGAAAGATGGAGACAAGGACTGATCTGGGTGGTAGCAACA
GTACCTGGAAGTGGGTGTTTGGAGAAAGGGCGAAAGATGTGGTCTCTGGGAATGGCGATG
GAATGGGCAGCAGCAGCAGCAGGAGTCCAGGACAGGTAGTAGCAGTGGCGGAAATTATAC
CTGGGATAAGGCCCAGATCTCTG

>后面的是转录本的id号,len=后面为转录本的长度,即该转录本的碱基数,path为从 de Bruijn Graph subComponent中经历的路径。其后为该转录本的碱
基序列。每个转录本的id号构成都为c_g_i, 其中c为拼接过程形成的de Bruijn Graph Component, g为subcomponet,可以看作为广泛意义上的gene,i 代表转录本isoform。
即:c_g为基因ID,c_g_i为c_g基因不同的转录本
c1_g1_i1与c1_g1_i2属于同一个基因的不同转录本,c1_g1_i1与c1_g2_i1属于旁系同源基因 此结果的理解属于分类后的reads重新运行Trinity得到的Trinity.fasta文件,而最终的Trinity结果是对每一类的Trinity.fasta文件的合并
对于Trinity得到的转录本序列,Trinity官网推荐取每条基因中最长的转录本作为Unigene,并用这些Unigene去进行功能注释,但是在计算表达量的时候我们依然会用到所有的转录本


当使用Trinity组装时,如果数据量过大,可以考虑使用--min_kmer_cov 2参数丢弃uniquely occurring kmer, 从而降低内存消耗
设置--no_distributed_trinity_exec会在输出目录下面(trinity_out_dir)生成一个recursive_trinity.cmds文件,这里面包含了下一步运行的所有命令,这些命令是可以并行执行的时候
然后运行Trinity会自动识别已经完成部分,接着未完成的命令继续运行
运行命令如下:

Trinity --seqType fq --max_memory 100G --CPU 50 --min_kmer_cov 3 --left   FCHK2FVCCXY_L3_WHDAVllgEAAARAAPEI-96_1.fq.gz,FCHK2FVCCXY_L3_WHDAVllgEAABRAAPEI-97_1.fq.gz,FCHK2FVCCXY_L3_WHDAVllgEAABRAAPEI-97_1.fq.gz  --right FCHK2FVCCXY_L3_WHDAVllgEAAARAAPEI-96_2.fq.gz,FCHK2FVCCXY_L3_WHDAVllgEAABRAAPEI-97_2.fq.gz,FCHK2FVCCXY_L3_WHDAVllgEAACRAAPEI-98_2.fq.gz --output gongtong_trinity_out  --group_pairs_distance 230 --no_version_check  --verbose --min_contig_length 250 --min_glue 3 --no_distributed_trinity_exec

~/bio/trinityrnaseq-Trinity-v2.4.0/trinity-plugins/parafly/bin/ParaFly -c recursive_trinity.cmds -CPU 50 -v

--trinity_complete 在递归运行Trinity时作为一个flag控制程序运行Butterfly
Butterfly 是一个通过德布鲁因图寻找正确的路径并得到相应的contig序列的jar包。对于一个德布鲁因图会根据reads的关系来进行拆分,同时对于多个可能的路径都会输出为contig
拆分得到的contig可以认为是属于一个基因家族的转录本序列或者认为是旁系同源基因,而对于一条路径延伸时有多个选择得到的不同contig则认为是同一个基因的不同转录本