序列拼接 - Velvet
基因组测序数据的从头组装过程:测序读段(reads) > contig > scaffold > chromosome
1.核心算法
基因组测序数据的从头组装的的核心算法主要可以分为以下几大类:
-
基于贪婪算法(greedy-extention)(基本淘汰);
-
基于Overlap-Layout-Consensus(OLC)(适用于一代测序**);
-
基于de Bruijn Graph;
-
以上两种或多种算法的组合;
-
其他类型。
-
结果比较:contig N50, scaffold N50, BUSCO
2. 一般步骤
-
第一步是数据质控控制 - fastp
-
第二步,确定起始参数,如K-mer和覆盖率
-
第三步,使用不同软件进行组装;
-
第四步,评估组装结果,如contig N50, scaffold N50, 判断是否需要修改参数重新组装。(QUAST和BUSCO)
3. 序列拼接 - velvet
1. Velvet - Current version: 1.2.10
一般工作过程简化为:输入short reads序列 > 排除错误 > 产生高质量的contigs > 用paired-end reads和long reads信息检索contigs之间的重复区域。
2. Velvet下载安装
- 下载velvet的安装包,直接使用make命令来编译,即可获得可执行主程序velveth和velvetg。安装如下:
wget \
-O velvet.tgz
http://www.ebi.ac.uk/~zerbino/velvet/velvet_....tgz
tar zxf velvet.tgz
cd velvet.tgz
make 'CATEGORIES=10' 'MAXKMERLENGTH=57'\ 'LONGSEQUENCES=1' 'OPENMP=1' 'BUNDLEDZLIB=1'
参数详解
-
CATEGORIES=10: 输入 10 groups of short reads。根据原始数据相应增减该值的大小;值越大,耗内存越大。
-
MAXKMERLENGTH=31: 最大的Kmer长度31(默认为 31)。(k-mers一般选择17即可,对于高度重复基因组或者基因组过大,可以选择19甚至31也行。但不是越大越好,kmer越大,越耗内存,而且如果一条reads里有一个错误位点,越大的k-mers就会导致包含这个错误位点的k-mers个数增多)
-
BIGASSEMBLY=1: 超过 2.2G 的reads用于组装基因组的时候,需要设置该值。
-
LONGSEQUENCES=1: 当contigs长度超过 32kb 长的时候,需要设置该值。
-
OPENMP=1:多线程运行。需要设置环境变量 OMP_NUM_THREADS 和 OMP_THREAD_LIMIT。最多为 OMP_NUM_THREADS+1 或 OMP_THREAD_LIMIT 个线程.
-
BUNDLEDZLIB=1: velvet默认使用系统自带的zlib,如果系统没有zlib,则需要加入该参数来使用velvet源码包中的zlib.
3. 功能介绍
- velveth - 准备数据
利用velvet自带的两个脚本程序对每一个pair-end数据进行合并
#fasta 格式
shuffleSequences_fasta.pl s1_1.fasta s1_2.fasta s1.fasta
#fastq 格式
shuffleSequences_fastq.pl s1_1.fq s1_2.fq s1.fq
-
格式化
代码:./velveth directory/ hash_length
[-file_format] [-read_type] [filename] [options]
当有多个文库的时候,按照粗体部分的格式重复写。
directory:输出文件所在路径的名字(即创建一个文件夹存放结果文件)
hash_length:也叫k-mer length(起始设定,值越大,内存需求越大)
filename:标准输入文件名
Options:
-strand_specific:转录组序列数据,默认为off
支持的文件格式:fasta(默认),fastq,fasta.gz,fastq.gz,eland,gerald。
读类别:short,shortPaired,short2,shortPaired2,long,longPaired。默认为short
例子:
./velveth output_directory/ 21 –fasta –short solexa1.fa solexa2.fa solexa3.fa –long capillary.fa </pre>
- Velvetg - 序列组装
代码:./velvetg directory [options]
directory:工作路径名
Standard options:
-cov_cutoff <floating-point|auto>:移除低覆盖率的node,默认不移除
#参数名 + 数字,如:
./velvetg output_directory/ -cov_cutoff 5.2
-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_pergence <floating-point>:在一个bubble中的两个分支的最大分歧率,默认0.2-->
-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并和参照序列对其,默认否
- velvetg - 输出结果
- directory/contigs.fa 长度2倍长于kmer的contigs; -scaffolding决定生成的fasta文件是否包含scaffold序列;
- directory/stats.txt - 决定覆盖度cutoff的统计表
- directory/PreGraph - 初始的de vruijin图
- directory/Graph2 - 最终de bruijin图。
- directory/velvet_asm.afg - MOS兼容的文件,能用于AMOS基因组组装软件包
- directory/Log velvet的运行记录