Velvet基因组拼接⽅法和参数详解
1. Velvet的安装
Velvet⽤于基因组的de novo组装,⽀持各种原始数据,包括Illumina的short reads和454的long reads。
⾸先下载velvet的安装包,直接使⽤make命令来编译,即可获得可执⾏主程序velveth和velvetg。安装如下:
$ wget www.ebi.ac.uk/~zerbino/velvet/velvet_1.
$ tar zxf velvet_1.
湖南第一师范学院$ 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、lo
ngPaired。 默认情况下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 -ads.fastq
-shortPaired2 -ads.fastq
-shortPaired3 -ads.fastq
-shortPaired4 -ads.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 default: no removal
移除低long-read覆盖度的nodes。
-ins_length
教师管理信息系统成对的short reads间的distance的期望值,即插⼊⽚段的平均长度。
-ins_length*
代表第组shortPaired reads, 和 velveth 中的参数相对应。
-
ins_length_long
和前两个参数⼀样,代表longPaired reads的插⼊⽚段长度。
-ins_length*_sd
此时’*'代表’nothing、2、3…、long’等,和上⾯的3个参数相匹配;该值设置插⼊⽚段长度的标准差。有关插⼊⽚段长度和sd的如果不设 置,velvet则会⾃动计算。velvet是将成对的reads⽐对到组装出来的nodes上,最后计算出⼀个inrt size 和sd。这样做的话,可能估算的不准确,需要看velvet的运⾏输出信息,检测其预算是否准确。
-scaffolding <yes|no> defautl: yes
是否要使⽤paired end信息进⾏scaffolds组装
-max_branch_length default: 100
处理⽓泡(bubble)的参数。默认下,如果两条序列超过了100bp的位点处的kmer不⼀致,则将这两条序列分开成单独的contigs。
-max_divergence default: 0.2
在⼀个bubble内两条branches最⼤的差异率(分母为较长的branch的长度)。
-max_gap_count default: 3
在⼀个bubble内两条branches⽐对结果中,运⾏的最⼤gap数。该参数和上两个参数为重要的参数,能很⼤程度上影响组装结果。如果设置得松点,可分别将值设为200,0.33,5。
安塞腰鼓课文-min_pair_count default: 5
默认,将两个contigs连成scaffold最少需要5对paired reads的验证。如果测序深度较⼤,则可以提⾼该值;测序深度低,则降低该值。
-long_mult_cutoff default: 2
新乡关山默认下,融合两个contigs需要最少有2个long reads验证。
-max_coverage default: no removal
最⾼的覆盖度,⾼于此覆盖度的nodes将被删除。
-coverage_mask default: 1
contigs最⼩的置信覆盖度,低于此覆盖度的contigs被makd。
-shortMatePaired* <yes|no> default: no
如果哪⼀个shortPaired为mate-pair library测序的结果,则需要指定该参数为yes。
-conrveLong <yes|no> default: no
是否保留含有long reads的序列
-unud_reads <yes|no> default: no
是否输出unud reads, 保存到 UnudReads.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 default: hash length * 2
输出结果中最⼩的contigs长度
-amos_file <yes|no> default: no
是否输出AMOS⽂件
velvetg的默认输出结果
directory/contigs.fa 长度2倍长于kmer的contigs。参数-scaffolding决定⽣成的该fasta⽂件是否包含scaffold序列。 ⽤于决定覆盖度cutoff的统计表
directory/PreGraph 初始的de vruijin图
什么是cookiedirectory/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组装出⼀个初步结果后,利⽤结果⽂件来估算出kmer的期望覆盖度。
$velvetHome/contrib/estimate-exp_cov/velvet-estimate-exp_cov.pl
[options]
4.2 obrved-inrt-length.pl
在使⽤velvetg组装出⼀个初步结果后,以结果⽂件夹为输⼊,计算inrt size和inrt sd。
$velvetHome/contrib/obrved-inrt-length.pl/obrved-inrt-length.pl
[options] Velvet_directory
描写枫叶的句子4.3 shuffleSequences
将对称的reads1和reads2⽂件合并成⼀个⽂件,⽤于velvet的输⼊。velvet不能将两个⽂件⽤于输⼊。
KaTeX par error: Undefined control quence: \ at position 69: …ences_fastq.pl \reads1.fastq …PATH中有velveth和velvetg两个主要 的velvet命令。以下就不详细介绍该命令参数,仅给出⼀个例⼦:
$velvetHome/contrib/VelvetOptimir-2.2.4/VelvetOptimir.pl
–s 17 --e 97 --x 2 --a --t 4 --k ‘n50’ --c ‘Lbp’
–f ‘-shortPaired -ads.fastq
-shortPaired2 -ads.fastq
-shortPaired3 -ads.fastq
-shortPaired4 -ads.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 AsmblyAsmbler
该程序能使⽤不同的kmer组装出很多Asmblies,然后将这些Asmblies组装融合出⼀个最终的结果。其使⽤⽅法位于该程序的通⽬录下的README⽂本⽂件中。给出⼀个例⼦如下:
$velvetHome/contrib/AsmblyAsmbler1.3/AsmblyAsmbler1.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 指出Asmbly中larger repeated contigs的长度;
read_prepare 和 lect_paired ⽤于NGS数据的过滤