1. Velvet的安裝
Velvet用於基因組的de novo組裝,支持各種原始數據,包括Illumina的short reads和454的long reads。
首先下載velvet的安裝包,直接使用make命令來編譯,即可獲得可執行主程序velveth和velvetg。安裝如下:
$ wget http://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz $ tar zxf velvet_1.2.10.tgz $ cd velvet_1.2.10 $ make 'CATEGORIES=10' 'MAXKMERLENGTH=57' 'LONGSEQUENCES=1' \ 'OPENMP=1' 'BUNDLEDZLIB=1'
值得注意的是,make后有多種參數,需要對velvet軟件進行需要的設置:
CATEGORIES=10: 默認情況下velvet只能輸入 2 groups of short reads,此處設置為10. 如果有多個文庫或多種類型的原始數據,需要相應增加該值的大小。該值越大,耗內存越大。
MAXKMERLENGTH=57: 最大的Kmer長度,默認情況下該值為 31, 一般de novo組裝基因組,31 是不夠的,故需要增大該值。組裝過程中kmer越大,越耗內存。
BIGASSEMBLY=1: 當超過 2.2G 的reads用於組裝基因組的時候,需要設置該值。實際上很少會有如此之多的reads用於基因組組裝,可以不用設置該值。設置該值后,會消耗更多的內存。
LONGSEQUENCES=1: 當組裝出的contigs長度超過 32kb 長的時候,需要設置該值。會消耗跟多內存。
OPENMP=1:打開多線程運行。需要設置環境變量 OMP_NUM_THREADS 和 OMP_THREAD_LIMIT。 Velvet最多使用 OMP_NUM_THREADS+1 或 OMP_THREAD_LIMIT 個線程。也值喲部分的velvet算法支持多線程運行,不會造成運行時間的線性減少。
BUNDLEDZLIB=1: 默認velvet使用系統自帶的zlib,如果系統沒有zlib,則需要加入該參數來使用velvet源碼包中自帶的zlib。
在上述 make 編譯完 Velvet 后,繼續velvet的使用
2. 使用velveth來准備數據
velveth接受輸入的文件,產生一個hash表。生成兩個文件:Sequences和Roadmaps。velveth用法為:
$ velveth $ velveth output_directory hash_length \ -file_format -read_type filename1 filename2 ... \ [-file_format -read_type filename1 filename2 ...]
在不帶參數情況下,直接運行velveth會給出其幫助文件。而其參數如下:
output_directory:輸出文件夾的路徑
hash_length: 設置Kmer的大小。該值3點要求:1.必須為奇數;2.必須小於或等於編譯velvet時設置的MAXKMERLENGTH值;3.必須小於reads的長度。
file_format: 支持的格式有fasta(默認)、fastq、bam等。
reads_type: short(默認)、shortpaired、short2、shortpaired2 … short10、shortpaired10、long、longPaired。 默認情況下short reads只保留了2個通道。在之前設置中將CATEGORIES值設置為10,則velvet最多支持10種不同類型的short reads數據。long支持長的reads,比如sanger測序數據和454測序數據。 如果reads_type一致,則同一個reads_type下可以有多個文件。
filename1: reads的文件名。如果是成對的reads,則需要將兩個reads文件合並成一個文件。Velvet安裝文件夾中提供了這樣的一個文件。
一個velveth的例子。對5個Illumina測序的結果和一個454測序的結果使用velvet進行組裝:
$ velveth output/ 31 \ -shortPaired -fastq fragment1.reads.fastq \ -shortPaired2 -fastq fragment2.reads.fastq \ -shortPaired3 -fastq jumping1.reads.fastq \ -shortPaired4 -fastq jumping2.reads.fastq \ -long -fastq 454.fasta
3. 使用velvetg來進行基因組組裝
velvetg是vlevet軟件的進行de Bruijin圖構建和操作的核心。在命令行下直接鍵入命令velvetg,這樣描述:velvetg – de Bruijn graph construction, error removal and repeat resolution。其使用方法如下:
$ velvetg $ velvetg directory [options] $ velvetg output -exp_cov auto -cov_cutoff auto \ -shortMatePaired3 yes -shortMatePaired4 yes \ -clean yes -scaffolding yes -amos_file yes
velvetg的具體參數如下:
directory 工作的目錄名,即為上一步驟velveth中的輸出文件夾。
-cov_cutoff <float|auto> default: no removal
設置最低kmer覆蓋度的值。默認下會生成很多nodes,而有些nodes很短,覆蓋度較低,需要去除掉。auto則自動設置該值,是該值為所有nodes的kmer覆蓋度值的median值的1/2。
-exp_cov <float|auto> default: no long or paired-end read resolution。
期望的kmer覆蓋度。如果設置了auto,則該值為所有nodes的kmer覆蓋度值的median值; 該值設置為auto,則同時自動設置-cov_cutoff為auto。如果對雜合基因組進行組裝時,設置auto,卻很難進行預測,組裝結果肯定不好。 auto適用於標准的基因組測序。
-long_cov_cutoff <float> default: no removal
移除低long-read覆蓋度的nodes。
-ins_length <interger>
成對的short reads間的distance的期望值,即插入片段的平均長度。
-ins_length* <interger>
*代表第*組shortPaired reads, 和 velveth 中的參數相對應。
-ins_length_long <interger>
和前兩個參數一樣,代表longPaired reads的插入片段長度。
-ins_length*_sd <interger>
此時’*'代表’nothing、2、3…、long’等,和上面的3個參數相匹配;該值設置插入片段長度的標准差。有關插入片段長度和sd的如果不設 置,velvet則會自動計算。velvet是將成對的reads比對到組裝出來的nodes上,最后計算出一個insert size 和sd。這樣做的話,可能估算的不准確,需要看velvet的運行輸出信息,檢測其預算是否准確。
-scaffolding <yes|no> defautl: yes
是否要使用paired end信息進行scaffolds組裝
-max_branch_length <integer> default: 100
處理氣泡(bubble)的參數。默認下,如果兩條序列超過了100bp的位點處的kmer不一致,則將這兩條序列分開成單獨的contigs。
-max_divergence <float> default: 0.2
在一個bubble內兩條branches最大的差異率(分母為較長的branch的長度)。
-max_gap_count <integer> default: 3
在一個bubble內兩條branches比對結果中,運行的最大gap數。該參數和上兩個參數為重要的參數,能很大程度上影響組裝結果。如果設置得松點,可分別將值設為200,0.33,5。
-min_pair_count <integer> default: 5
默認,將兩個contigs連成scaffold最少需要5對paired reads的驗證。如果測序深度較大,則可以提高該值;測序深度低,則降低該值。
-long_mult_cutoff <integer> default: 2
默認下,融合兩個contigs需要最少有2個long reads驗證。
-max_coverage <float> default: no removal
最高的覆蓋度,高於此覆蓋度的nodes將被刪除。
-coverage_mask <integer> default: 1
contigs最小的置信覆蓋度,低於此覆蓋度的contigs被maksed。
-shortMatePaired* <yes|no> default: no
如果哪一個shortPaired為mate-pair library測序的結果,則需要指定該參數為yes。
-conserveLong <yes|no> default: no
是否保留含有long reads的序列
-unused_reads <yes|no> default: no
是否輸出unused reads, 保存到 UnusedReads.fa 中。
-alignments <yes|no> default: no
是否輸出contig比對到參考序列的summary.
-exportFiltered <yes|no> default: no
是否輸出由於覆蓋度的原因被過濾掉的long nodes。
-clean <yes|no> default: no
是否刪除所有的不能用於重新計算的中間文件
-very_clean <yes|no> default: no
是否刪除所有的中間文件(刪除后不能重新計算)
-min_contig_lgth <integer> default: hash length * 2
輸出結果中最小的contigs長度
-amos_file <yes|no> default: no
是否輸出AMOS文件
velvetg的默認輸出結果
directory/contigs.fa 長度2倍長於kmer的contigs。參數-scaffolding決定生成的該fasta文件是否包含scaffold序列。
directory/stats.txt 用於決定覆蓋度cutoff的統計表
directory/PreGraph 初始的de vruijin圖
directory/Graph2 最終的de bruijin圖 關於該文件中內容的解釋,請見velvet PDF manual。
directory/velvet_asm.afg AMOS兼容的組裝文件,能用於AMOS基因組組裝軟件包
directory/Log velvet的運行記錄
4. Velvet提供了額外的一些scripts
這些scripts非常有用,位於$velvetHome/contrib/文件夾下。
4.1 estimate-exp_cov
在使用velvetg組裝出一個初步結果后,利用結果文件stats.txt來估算出kmer的期望覆蓋度。
$ $velvetHome/contrib/estimate-exp_cov/velvet-estimate-exp_cov.pl \ [options] stats.txt
4.2 observed-insert-length.pl
在使用velvetg組裝出一個初步結果后,以結果文件夾為輸入,計算insert size和insert sd。
$ $velvetHome/contrib/observed-insert-length.pl/observed-insert-length.pl \ [options] Velvet_directory
4.3 shuffleSequences
將對稱的reads1和reads2文件合並成一個文件,用於velvet的輸入。velvet不能將兩個文件用於輸入。
$ $velvetHome/contrib/shuffleSequences_fasta/shuffleSequences_fastq.pl \ reads1.fastq reads2.fastq reads.fastq
4.4 VelvetOptimiser
輸入該腳本的命令,不加參數,給出詳細的幫助信息。該程序用於選取不同的Kmer值,來對原始數據進行組裝,同時計算出最優化的組裝參數。最后給出 最優化方案的組裝結果。非常適合於簡單基因組的自動化組裝操作。其參數設置較為簡單。當然需要能在$PATH中有velveth和velvetg兩個主要 的velvet命令。以下就不詳細介紹該命令參數,僅給出一個例子:
$ $velvetHome/contrib/VelvetOptimiser-2.2.4/VelvetOptimiser.pl \ --s 17 --e 97 --x 2 --a --t 4 --k 'n50' --c 'Lbp' \ --f '-shortPaired -fastq fragment1.reads.fastq \ -shortPaired2 -fastq fragment2.reads.fastq \ -shortPaired3 -fastq jumping1.reads.fastq \ -shortPaired4 -fastq jumping2.reads.fastq \ -long -fastq 454.fasta' \ -o 'shortMatePaired3 yes shortMatePaired4 yes' \ [-g 40M]
以上命令意義為:使用kmer長度從17到97,每次運行kmer長度+2; –a表示要生成amosfile;使用N50來決定kmer的選取;以’Lbp’,即大於1kb的contigs的總鹼基數來決定coverage cutoff的值的選取;–f后為velveth的參數;–o后接velvetg的參數;-g后為預計的基因組大小,用於計算該命令下內存的消耗,然后退 出運行,由於該程序會同時運行多個velvet和velveg,消耗的內存巨大。
4.5 AssemblyAssembler
該程序能使用不同的kmer組裝出很多Assemblies,然后將這些Assemblies組裝融合出一個最終的結果。其使用方法位於該程序的通目錄下的README文本文件中。給出一個例子如下:
$ $velvetHome/contrib/AssemblyAssembler1.3/AssemblyAssembler1.3.py \ -s 17 -e 99 -v $velvetHome -c 5.1 -t 35 -i 300 -m 51 -r y \ -f "-fastq -shortPaired reads.fastq"
以上命令意義為:使用從17到99的kmer,每種kmer都組裝出基因組並最后合並成一個結果。-c為coverage cutoff值;-t設置為只有大於35的kmer時,才進行coverage cutoff;-i表示插入片段長度為300;-m表示期望的kmer覆蓋度為51;-r表示結果給出short reads要包含到最后的組裝結果中。
可以看出該程序適合於只有一種類型的short reads時,才適合。因為其參數-i只能設置一種插入片段長度大小。
4.6 其它程序
extractContigReads用於提取和指定conting相對應的reads;
afg_handing 用於檢查 .afg 文件;
fasta2agp 用於將fasta格式的基因組組裝結果(gaps用N表示)轉換成AGP文件,用於提交到EMBL或NCBI;
show_repeats 指出Assembly中larger repeated contigs的長度;
read_prepare 和 select_paired 用於NGS數據的過濾
源自:http://fhqdddddd.blog.163.com/blog/static/186991542013799262437/