zoukankan      html  css  js  c++  java
  • Velvet基因组拼接软件的使用方法和参数简介(二)

    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://www.cnblogs.com/xianghang123/p/3543082.html

  • 相关阅读:
    Resin4 自定义端口
    设备系统识别,解决方案。
    Reactjs-JQuery-Vuejs-Extjs-Angularjs对比
    HTML页面的加载
    传输层协议TCP和UDP
    常用的14种HTTP状态码速查手册
    前端总结·基础篇·CSS(二)视觉
    前端总结·基础篇·CSS(一)布局
    AngularJS 中的Promise --- $q服务详解
    ngRoute 和 ui.router 的使用方法和区别
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/6428800.html
Copyright © 2011-2022 走看看