Trinity簡介(1)--用於無參考基因組的轉錄組de novo組裝
Trinity,是由 the Broad Institute 開發的轉錄組de novo組裝軟體,由三個獨立的軟體模組組成:
Inchworm,Chrysalis和Butterfly。三個軟體依次來處理大規模的RNA-seq的reads資料。
Trinity的簡要工作流程為:
Inchworm: 將RNA-seq的原始reads資料組裝成Unique序列;
Chrysalis: 將上一步生成的contigs聚類,然後對每個類構建Bruijn圖;
Butterfly: 處理這些Bruijn圖,依據圖中reads和成對的reads來尋找路徑,從而得到具有可變剪接的全長轉錄子,同時將旁系同源基因的轉錄子分開。
Trinity發表在 Nature Biotechnology。
二、 Trinity的安裝
1. 下載Trinity。
2. 安裝Trinity。
1
$ tar zxvf trinityrnaseq_r2013-02-25.tgz
2
$ cd trinityrnaseq_r2013-02-25
3
$ make
僅需要在安裝目錄下進行make即可。該命令編譯了由C++編寫的Inchworm和Chrysalis,而 使用Java編寫的Butterfly則不需要編譯,可以直接使用。
######
$ ls
Analysis/ docs/ Inchworm/ notes README Trinity* util/
Butterfly/ galaxy-plugin/ LICENSE.txt
Chrysalis/ htc_conf/ Makefile PerlLib/ sample_data/ trinity-plugins/
######3
三、Trinity的使用
1. 直接執行安裝目錄下的程式Trinity.pl來使用該軟體,不帶引數則給出使用幫助。其典型用法為:
1
Trinity.pl --seqType fq --JM 50G --left reads_1.fq --right reads_2.fq --CPU 8
2. Trinity引數
必須的引數:
--seqType reads的型別:(cfa, cfq, fa, or fq)
--JM jellyfish使用多少G記憶體用來進行k-mer的計算,包含‘G’這個字元
--left 左邊的reads的檔名
--rigth 右邊的reads的檔名
--single 不成對的reads的檔名
#######################################
,呼叫bowtie, samtools
./Trinity --seqType fq --JM 10G --left ACGATC_forward_paired.fq --right ACGATC_reverse_paired.fq --CPU 8 --output trinity_out_dir1
Current settings:
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 8192
coredump(blocks) 0
memory(kbytes) unlimited
locked memory(kbytes) 64
process unlimited
nofiles 8192
vmemory(kbytes) unlimited
locks unlimited
Paired mode requires bowtie. Found bowtie /home/..
and bowtie-build at /home/..
Found samtools at: /usr/local/bin/samtools
-since butterfly will eventually be run, lets test for proper execution of java
#######################################
Running Java Tests
Friday, October 28, 2016: 14:47:47 CMD: java -Xmx64m -jar tools/de_novo_tools/trinityrnaseq_r20140717/util/support_scripts/ExitTester.jar 0
CMD finished (2 seconds)
Friday, October 28, 2016: 14:47:49 CMD: java -Xmx64m -jar tools/de_novo_tools/trinityrnaseq_r20140717/util/support_scripts/ExitTester.jar 1
-we properly captured the java failure status, as needed. Looking good.
Java tests succeeded.
###################################
Friday, October 28, 2016: 14:47:49 CMD: mkdir -p /home/trinity_out_dir1
CMD finished (0 seconds)
Friday, October 28, 2016: 14:47:49 CMD: mkdir -p /home/trinity_out_dir1/chrysalis
CMD finished (0 seconds)
Converting input files. (in parallel)Friday, October 28, 2016: 14:47:50 CMD: /hometoools/de_novo_tools/trinityrnaseq_r20140717/trinity-plugins/fastool/fastool --illumina-trinity --to-fasta /home/ionadmin/lix_test_home/gmx/yunjiankang_data/CHG014690/oldmethod/ACGATC_forward_paired.fq >> left.fa 2> /home/ionadmin/lix_test_home/gmx/yunjiankang_data/CHG014690/oldmethod/ACGATC_forward_paired.fq.readcount
Friday, October 28, 2016: 14:47:50 CMD: /home/toools/de_novo_tools/trinityrnaseq_r20140717/trinity-plugins/fastool/fastool --illumina-trinity --to-fasta /home/ACGATC_reverse_paired.fq.readcount
***********************************************************************************************************8
........
##########################################3
可選引數:
Misc:
--SS_lib_type reads的方向。成對的reads: RF or FR; 不成對的reads : F or R。在資料具有鏈特異性的時候,設定此引數,則正義和反義轉錄子能得到區分。預設 情況下,不設定此引數,reads被當作非鏈特異性處理。FR: 匹配時,read1在5'端上游, 和前導鏈一致, read2在3'下游, 和前導鏈反向互補. 或者read2在上游, read1在下游反 向互補; RF: read1在5'端上游, 和前導鏈反向互補, read2在3'端下游, 和前導鏈一致;
--output 輸出結果資料夾。預設情況下生成trinity_out_dir資料夾並 將輸出結果儲存到此資料夾中。
--CPU 使用的CPU執行緒數,預設為2
--min_contig_length 報告出的最短的contig長度。預設為200
--jaccard_clip 如果兩個轉錄子之間有UTR區重疊,則這兩個轉錄子很有可能在 de novo組裝的時候被拼接成一條序列,稱為融合轉錄子(Fusion Transcript)。如果有 fastq格式的paired reads,並儘可能減少此類組裝錯誤,則選用此引數。值得說明的是: 1. 適合於基因在基因組比較稠密,轉錄子經常在UTR區域重疊的物種,比如真菌基因組。而對 於脊椎動物和植物,則不推薦使用此引數; 2. 要求fastq格式的paired reads檔案(檔案 中reads名分別以/1和/2結尾,以利於軟體識別),同時還需要安裝bowtie軟體用於reads 的比對;
3. 單獨使用具有鏈特異性的RNA-seq資料的時候,能極大地減少UTR重疊區很小的 融合轉錄子; 4. 此選項耗費運算,若沒必要,則不用此引數。
--prep 僅僅準備一些檔案(利於I/O)並在kmer計算前停止程式執行
--no_cleanup 保留所有的中間輸入檔案
--full_cleanup 僅保留Trinity fasta檔案,並重命名成${output_dir}. Trinity.fasta
--cite 顯示Trinity文獻引證和一些參與的軟體工具
--version 報告Trinity版本並推出 Inchworm 和 K-mer 計算相關選項:
--min_kmer_cov 使用Inchworm來計算K-mer數量時候,設定的Kmer的最小值。 預設為1
--inchworm_cpu Inchworm使用的CPU執行緒數,預設為6和--CPU設定的值中的 小值。 Chrysalis相關選項:
--max_reads_per_graph 在一個Bruijn圖中錨定的最大的reads數目,預設為200 000
--no_run_chrysalis 執行Inchworm完畢,在執行chrysalis之前停止執行 Trinity
--no_run_quantifygraph 在平行化運算quantifygrahp前停止執行Trinity Butterfly相關選項:
--bfly_opts Butterfly額外的引數
--max_number_of_paths_per_node 從node A -> B,最多允許多少條路徑。預設 為10
--group_pairs_distance 最大插入片讀長度,預設為500
--path_reinforcement_distance 延長轉錄子路徑時候,reads間最小的重疊鹼基 數。預設PE:75; SE:25
--no_triplet_lock 不鎖定triplet-supported nodes
--bflyHeapSpaceMax 執行Butterfly時java最大的堆積空間,預設 為20G
--bflyHeapSpaceInit java初始的堆積空間,預設為1G
--bflyGCThreads java進行無用資訊的整理時使用的執行緒數,默 認由java來決定
--bflyCPU 執行Butterfly時使用的CPU執行緒數,預設為2
--bflyCalculateCPU 計算Butterfly所執行的CPU執行緒數,由公式 80% * max_memory / maxbflyHeapSpaceMax 得到
--no_run_butterfly 在Chrysalis執行完畢後,停止執行Butterfly Grid-computing選項:
--grid_computing_module 選定Perl模組,在/Users/bhaas/SVN/trinityr naseq/trunk/PerlLibAdaptors/。
3. 適合於illumina測序資料的真菌物種轉錄組組裝的Trinity命令為:
Trinity.pl --seqType fq --JM 50G --left reads_1.fq --right reads_2.fq --SS_lib_type FR --output transcriptome_tissue --CPU 24 --jaccard_clip --inchworm_cpu 24 --group_pairs_distance 500 --bflyCPU 24
4. Trinity生成的結果檔案
執行程式結束後,轉錄組結果為trinity_out_dir/Trinity.fasta。可以使用軟體所帶的一支程式分析轉錄組統計資訊。
$ $TRINITY_HOME/util/TrinityStats.pl trinity_out_dir/Trinity.fasta Total trinity transcripts: 30706 Total trinity components: 26628 Contig N50: 554
三. Trinity執行原理與過程
1. 檢測java的可執行性,因為buttfly會用到
2. 執行jellyfish,使用其dump命令得到jellyfish.kmers.fa檔案
3. Inchworm(Linear contig construction from k-mers)
assembles the RNA-seq data into the unique sequences of transcripts, often generating full-length transcripts for a dominant isoform, but then reports just the unique portions of alternatively spliced transcripts.
4. Chrysalis
clusters the Inchworm contigs into clusters and constructs complete de Bruijn graphs for each cluster. Each cluster represents the full transcriptonal complexity for a given gene (or sets of genes that share sequences in common). Chrysalis then partitions the full read set among these disjoint graphs.
5. Butterfly
then processes the individual graphs in parallel, tracing the paths that reads and pairs of reads take within the graph, ultimately reporting full-length transcripts for alternatively spliced isoforms, and teasing apart transcripts that corresponds to paralogous genes.
四. 注意事項
1 Trinity分步執行
當資料量比較大的時候,trinity執行的時間會很長,同時,記憶體不夠等情況出現的時候有可能程式執行崩潰。最好是分步執行。下一步會接著前一步進行下去。
Stage 1: generate the kmer-catalog and run Inchworm: –no_run_chrysalis
Stage 2: Chrysalis clustering of inchworm contigs and mapping reads: –no_run_quantifygraph
Stage 3: Chrysalis deBruijn graph construction: –no_run_butterfly
Stage 4: Run butterfly, generate final Trinity.fasta file. (exclude –no_ options)
2 計算資源
Ideally, you will have access to a large-memory server, ideally having ~1G of RAM per 1M reads to be assembled (but often, much less memory may be required).
The assembly from start to finish can take anywhere from ~1/2 hour to 1 hour per million reads (your mileage may vary). 個人記錄了一次,使用dell伺服器,64GB RAM,24 threads : 53M 的reads,運行了16.5h(平均3.2M/h),記憶體使用峰值為43G.