Trinity
作為一款經典的轉錄組組裝軟件,在眾多的轉錄組組裝軟件中認可度應該是最高的,而且版本一直在更新,現在已經出到了v2.6
版。此文主要用於記錄閱讀Trinity源碼過程中的一些理解,閱讀的Trinity源碼版本是v2.4
。
Trinity的源碼涉及到的各種不同的編程語言,例如perl、c++、java
等。同時也使用了幾款不同的生物信息分析軟件,例如jellyfish、bowtie2、samtools
等。到目前為止,Trinity除了可以進行轉錄組組裝之外還打包了一些其他的軟件用於組裝之后的下游分析,如RSEM
用於計算表達量、利用R包edgeR進行差異表達分析、利用transcoder
進行CDS預測。
Trinity
官網介紹是分為三個步驟:Inchworm
、Chralysis
、Butterfly
。
拼接得到的轉錄本序列信息以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控制程序運行ButterflyButterfly
是一個通過德布魯因圖尋找正確的路徑並得到相應的contig序列的jar包。對於一個德布魯因圖會根據reads的關系來進行拆分,同時對於多個可能的路徑都會輸出為contig- 拆分得到的contig可以認為是屬於一個基因家族的轉錄本序列或者認為是旁系同源基因,而對於一條路徑延伸時有多個選擇得到的不同contig則認為是同一個基因的不同轉錄本