概述
是一种短序列拼装工具,由European Bioinformatics Institute (EMBL-EBI)的D.R. Zerbino 和 E. Birney编写,主要用于Solexa、454等高通量测序仪产出的de novo数据的拼接
Velvet目前已经集成了短序列拼接,错误序列修正功能,能够产出较高质量的重叠群(Contigs)。同时Velvet 也能够处理paired-end序列,从而进行构架构建(Scaffold) 和间隙填补(Gap Closure)。
de Bruijn算法
Velvet使用了de Bruijn算法,这也是新一代的短序列拼接程序一般采用的算法。在de Bruijn算法中,每一个节点N代表了一系列长短为K的单词(mers)(称为k-mers),相接的k-mers之间的重叠为k-1个碱基。序列的排布信息就由依次重叠 的k-mers的最后一个碱基的读取顺序决定。N节点上的序列的内容表示为s(N)。
由于序列的测定的方向性并不明确,为了保证序列拼接的正确性,对于每一个N节点,都有一个反向的N'节点而对应,N与N‘是关联在一起的,所有对于N的操作同时也对N’有效。
de Bruijn算法的主要工作就是通过获得的原始数据构建一个有众多N节点的图,然后用“边”来连接这些节点,从而构建一个连续的序列信息,称为“路径图”(roadmap)。
算法优化
同Velvet之前的算法相比,Velvet的优势之处在于其加入了对原始数据进行简化的步骤,从而减少了不必要的数据量,加快了运算速度的同时,也使得构建出的Contig更长。
1、合并节点:
对于A、B两个节点,如果A、B均没有分支,有且只有一条路径连接A、B,那么可以将AB两个节点合并;
2、去除短序列读取错误:
基于对原始数据的统计,如果原始数据中的某一个特定的read具有较低的频率,那么将这个read去除;
3、去除tips:
一个tips指的是,对于一个节点,没有任何的后续节点与其相连,即形成了“盲端”。当发现这种节点,则去掉这个节点;
4、去除bubbles:
一个bubble值得是,在roadmap上连通两个节点的路径上,同时存在两个以上的路径。Velvet使用称作TourBus的方法将这些并行的路径尽可能合并为较少的路径,从而减少数据复杂度,同时消除读取错误及SNP等对于拼接的影响。
版本信息
Velvet为遵循GPL协议的自由开源工具。
Velvet的最新版本为1.0.09 (15/06/2010)
版本更新历史:
09/09/2008: Velvet 0.7
This
releasecontains the new Pebble algorithm which now replaces the BreadCrumb paired-end module.
02/06/2008: Velvet 0.6
This
releaseallows the use of sparse long reads to resolve repeats.
17/03/2008: Velvet paperaccepted.
27/02/2008: Velvet 0.5
This
releaseprovides functionalities for downstream analysis and visualization.
11/12/2007: Velvet 0.4
This
releasedrastically reduces memory costs, at roughly the same calculation speed.
17/10/2007: Velvet 0.3
This
releaseof Velvet now deals with paired end information to resolve repeats.
运行需求
Velvet是在64-bit linux环境上设计的,测试表明可以兼容各种Linux 64bit系统, Mac OS X, 以及Cygwin.
对于32bit的linux,由于内存限制,不推荐运行Velvet。
Velvet的内存需求量取决于基因组大小,测序reads的大小,以及K-mers中K值的大小。经验公式如下:
Ram required for velvetg = -109635 + 18977*ReadSize + 86326*GenomeSize + 233353*NumReads - 51092*K
计算的结果是kb,除以1048576可以得到Gb.