Velvet Optimiser Overview
Velvet is a de novo genomic assembler specially designed for short read sequencing technologies, such as Solexa or 454, developed by Daniel Zerbino and Ewan Birney at the European Bioinformatics Institute (EMBL-EBI), near Cambridge, in the United Kingdom.
Velvet currently takes in short read sequences, removes errors then produces high quality unique contigs. It then uses paired-end read and long read information, when available, to retrieve the repeated areas between contigs.
Read the Velvet documentation for details on using the Vevlet Assembler.
VelvetOptimiser
VelvetOptimiser was originally written by Simon Gladman of CSIRO.
VelvetOptimiser performs a number of velveth and velvetg steps to try and optimise an assembly based on the metrics provided below.
Outputs
Contigs
The contigs.fa file. This fasta file contains the sequences of the contigs longer than 2k, where k is the word-length used in velveth. If you have specified a min contig lgth threshold, then the contigs shorter than that value are omitted. Note that the length and coverage information provided in the header of each contig should therefore be understood in k-mers and in k-mer coverage (cf. 5.1) respectively. The N's in the sequence correspond to gaps between scaffolded contigs. The number of N's corresponds to the estimated length of the gap. For reasons of compatibility with the archives, any gap shorter than 10bp is represented by a sequence of 10 N's.
Stats
The stats.txt file. This file is a simple tabbed-delimited description of the nodes. The column names are pretty much self-explanatory. Note however that node lengths are given in k-mers. To obtain the length in nucleotides of each node you simply need to add k - 1, where k is the word-length used in velveth. The in and out columns correspond to the number of arcs on the 5' and 3' ends of the contig respectively. The coverages in columns short1 cov, short1 Ocov, short2 cov, and short2 Ocov are provided in k-mer coverage (5.1). Also, the difference between # cov and # Ocov is the way these values are computed. In the first count, slightly divergent sequences are added to the coverage tally. However, in the second, stricter count, only the sequences which map perfectly onto the consensus sequence are taken into account.
LastGraph
The LastGraph file. This file describes in its entirety the graph produced by Velvet.
AMOS.afg The velvet_asm.afg file. This file is mainly designed to be read by the open-source AMOS genome assembly package. Nonetheless, a number of programs are available to transform this kind of file into other assembly file formats (namely ACE, TIGR, Arachne and Celera). See http://amos.sourceforge.net/ for more information. The file describes all the contigs contained in the contigs.fa file (cf 4.2.1).
-scaffolding | yes|no : scaffolding of contigs used paired end information (default: on) |
-max_branch_length | |
integer : maximum length in base pair of bubble (default: 100) | |
-max_divergence | |
floating-point : maximum divergence rate between two branches in a bubble (default: 0.2) | |
-max_gap_count | integer : maximum number of gaps allowed in the alignment of the two branches of a bubble (default: 3) |
-min_pair_count | |
integer : minimum number of paired end connections to justify the scaffolding of two long contigs (default: 10) | |
-max_coverage | floating point : removal of high coverage nodes AFTER tour bus (default: no removal) |
-long_mult_cutoff | |
int : minimum number of long reads required to merge contigs (default: 2) |
Hash Length
The hash length, also known as k-mer length, corresponds to the length, in base pairs, of the words being hashed.
The hash length is the length of the k-mers being entered in the hash table. Firstly, you must observe three technical constraints:
# it must be an odd number, to avoid palindromes. If you put in an even number, Velvet will just decrement it and proceed. # it must be below or equal to MAXKMERHASH length (cf. 2.3.3, by default 31bp), because it is stored on 64 bits # it must be strictly inferior to read length, otherwise you simply will not observe any overlaps between reads, for obvious reasons.
Now you still have quite a lot of possibilities. As is often the case, it's a trade- off between specificity and sensitivity. Longer kmers bring you more specificity (i.e. less spurious overlaps) but lowers coverage (cf. below). . . so there's a sweet spot to be found with time and experience. We like to think in terms of "k-mer coverage", i.e. how many times has a k-mer been seen among the reads. The relation between k-mer coverage Ck and standard (nucleotide-wise) coverage C is Ck = C # (L - k + 1)/L where k is your hash length, and L you read length. Experience shows that this kmer coverage should be above 10 to start getting decent results. If Ck is above 20, you might be "wasting" coverage. Experience also shows that empirical tests with different values for k are not that costly to run! VelvetOptimiser automates these tests for you.
Velvetg options
Input Files
Velvet works mainly with fasta and fastq formats. For paired-end reads, the assumption is that each read is next to its mate read. In other words, if the reads are indexed from 0, then reads 0 and 1 are paired, 2 and 3, 4 and 5, etc.
Supported file formats are:
fasta fastq eland gerald
Read categories are:
short (default) shortPaired short2 (same as short, but for a separate insert-size library - i.e. if you have two libraries of different lengths) shortPaired2 (see above) long (for Sanger, 454 or even reference sequences) longPaired