Velvet基因組拼接軟體的使用方法和參數簡介(一)
Velvet簡單介紹:
velvet是一款常用的基因組拼接軟體,與soapdenovo一起常用于二代測序資料的處理,相對于soapdenovo拼接的完整性更好。他能同時支援fasta、fastq格式的資料,同時支援多個文庫的資料同時使用。

其工作的一般過程簡化為:輸入short read序列,排除錯誤,産生高品質的contigs。然後用paired-end read和long read資訊,檢索contigs之間的重複區域。
Velvet工作原理:
1、Bruijn算法
給定的資料總是存在着備援資訊,是以,算法的使用很重要。目前大多數是用的overlap-consensus-layout算法,它的每一個 read都是單獨的實體。而Bruijn算法,将分析基于observed words(或者k-mers)。給定k-mers,不管發現多少次,都是唯一的node。此外,他可以無差别的容納long和short read的混合物。
建構Bruijn圖關鍵在于對所有的reads進行hash。Hash值通過設定參數給定,或者是預設的21。這對所有的序列進行成對比對時會減少 時間,一旦所有的reads已經被hash,由k-mer node可以追溯他們的每一個路徑。增值覆寫率和建立arcs就屬于這種方法。
2、錯誤移除
錯誤移除算法:Tour Bus,對沒有錯誤連接配接的graph進行移除。這要確定基因組中低覆寫率的唯一的點沒有被破壞。是以,這一步在畫圖之後進行。
錯誤的類型主要有:
- Tips:起源于低品質的read的結尾部分沒有任何的重疊。
- Bubbles:他産生于長read的中間或兩個錯誤的read結尾部分重疊。
首先去除tips,由長度和覆寫率來定義。然後去除bubbles,運用的是與Dijkstra’s類似的算法,最後低覆寫率的點會被去掉。
使用方法
在前面的文章中已經介紹了velvet的安裝方法()。
1.準備輸入資料
無論是fasta格式的資料還是fastq格式資料,首先利用velvet自帶的兩個腳本程式對每一個pair-end資料進行合并;方法如下:
對于fasta格式資料
shuffleSequences_fasta.pl s1_1.fasta s1_2.fasta s1.fasta
最後的得到的資料格式如下(成對的正反向reads連續放在一起):
>2:1:3789:2197:Y/1
CAGACTAATACCAATCCAACCCATTTCATGAATAAAATGTGACCAATTAACCAACCAACAAAACTGCTTGTTACAAATAA
>2:1:3789:2197:Y/2
ATACAATAACTGTACTAGCTCTACCGTATCTTTTGTTTCATTTCTTCTGGAATAATCACAAAAACTTTTTTGATTATGGA
>2:1:4209:2183:Y/1
TTATAGAAAAGAAAGAAAAGAATGAAAAATAAAGTAATTTTTGATTGGGCCGGGAATCCTATTTTGGATTCGGTATGGAT
>2:1:4209:2183:Y/2
ATCTTTCGCCTATAAATTCAATGAATGAATTACCTCTCAATGATCTTGAATCGGATCAAGATCATGAATAACAATATCTG
>2:1:6191:2192:Y/1
AAAGCATTCACTCCTCTTTTATATCTTGCATCTCTAGTATTTTTGCCCTGGTGGATTTCTCTTTCATTTAATAAAAGTCT
>2:1:6191:2192:Y/2
ATTCCTATACGAAGGTTTTGTAGATGTGTCTCCGAGTATTCCTTGATCATTTCCTCCAAGGGAAGGATTTCCTCTAATTC
對于fastq格式資料
shuffleSequences_fastq.pl s1_1.fq s1_2.fq s1.fq
得到的資料格式與上面類似,隻是資料是fastq格式而已,以上得到的s1.fasta或s1.fq可以直接被後續使用。
2.格式化reads
Velveth用一些序列檔案産生一個hashtable,并輸出兩個檔案:Sequences和Roadmaps。一般使用以下指令即可,藍色标記的部分可以重複,即當你有多個文庫的時候都按照藍色部分的格式來寫
./velveth directory hash_length { [-file_format] [-read_type] [filename] } [options]
directory:輸出檔案所在路徑的名字(即建立一個檔案夾存放結果檔案)
hash_length:也叫k-mer length,預設為31bp,儲存hash length,值越大,記憶體需求越大
filename:标準輸入檔案名
Options:
-strand_specific:轉錄組序列資料,預設為off
支援的檔案格式:fasta,fastq,fasta.gz,fastq.gz,eland,gerald。預設為fasta
讀類别:short,shortPaired,short2,shortPaired2,long,longPaired。預設為short
例子1:
> ./velveth output_directory/ 21 –fasta –short solexa1.fa solexa2.fa solexa3.fa –long capillary.fa ;
預設參數為fasta、short,是以可以寫成:
>./velveth output_directory/ 21 solexa*.fa –long capillary.fa
例子2:
假如你用一個标準的轉錄組序列來做,為使結果更好,可用一下選項(-strand_specific)。
> ./velveth output_directory/ 21 (...data files...) -strand_specific
3.序列組裝
Velvetg是velvet的核心,他建立bruijn圖并對reads進行組裝。
./velvetg directory [options]
directory:工作路徑名
Standard options:
-cov_cutoff <floating-point|auto>:移除低覆寫率的node,預設不移除
-ins_length <integer>:two paired end reads之間的期望距離,預設no read pairing
-read_trkg <yes|no>:在集合中對short read位置進行跟蹤,預設不跟蹤
-min_contig_lgth <int>:導出到contig.fa檔案中的最小contig長度,預設為hash長度的2倍
-amos_file <yes|no>:導出到AMOS檔案中,預設不導出(no)
-exp_cov <floating point|auto>:唯一區域的期望覆寫率
Advanced options:
-ins_length2 <int>:兩個paired-end reads在第二個short-read資料集中的期望距離,預設否
-ins_length_long <integer>:兩個long paired-end reads的期望距離,預設否
-ins_length*_sd <int>:資料集的标準差,預設corresponding length的10%(*代表:nothing,2,_long)
-scaffolding <yes|no>:scaffolding of contigs used paired end information (default: on)
-max_branch_length <integer>:在bubble中的堿基對的最大長度,預設100
-max_pergence <floating-point>:在一個bubble中的兩個分支的最大分歧率,預設0.2
-max_gap_count <integer>:在一個bubble中的兩個分支比對中允許的最大gap值,預設3
-min_pair_count <integer>:構成兩個長contigs的paired end的最小值,預設10
-max_coverage <floating point>:在tour bus後移除高覆寫率的node
-long_mult_cutoff <int>:合并contig的long reads的最小值,預設2
-unused_reads <yes|no>:将不用的reads導出到UnusedReads.fa檔案中,預設否
-alignments <yes|no>:導出一個主要的contig并和參照序列對其,預設否
例子3、
設定覆寫截斷值:
> ./velvetg output_directory/ -cov_cutoff 5.2
排除最高的覆寫資料,設定最大覆寫截斷值:
> ./velvetg output_directory/ -max_coverage 300 (... other parameters ...)
自動設定覆寫截斷值:
> ./velvetg output_directory/ -cov_cutoff auto
例子4、
如果你有一個足夠覆寫面的短read,有任意數量的長read,你可以用長read做repeat。為了達到他,velvet需要對短read的序列有一個期望覆寫的适當的估計。簡單的方法是重疊群被發現的分布,也要看覆寫點的聚類情況。如果期望覆寫是19x:
> ./velvetg output_directory/ -exp_cov 19 (... other parameters ...)
假如你有理由相信合理的統一的覆寫你的sample,你可以要求velvet估計他:
> ./velvetg output_directory/ -exp_cov auto (... other parameters ...)
例子5:
Minimum long read connection cuto?:對于用long reads拼接完成contigs,需要設定一個門檻值來減少誤差(預設為2)。假如你的長序列沒有與之重疊的序列(例如contigs),你可以設為0, 對他直接進行使用。相反的,如果你的長序列覆寫範圍很高,就需要設一個高的門檻值。
Minimum read-pair validation:假如你的資料不是paired-end reads,隻是偶然成對,那麼為減少誤差,就需要你在對兩個contigs進行拼接時至少要有10對pairs(預設)。
> ./velvetg output_directory/ -min_pair_count 20 (...other parameters...)