BWA (Burrows-Wheeler Aligner)
BWA主要是将reads比对到大型基因组上,主要功能是:序列比对。首先通过BWT(Burrows-Wheeler Transformation,BWT压缩算法)为大型参考基因组建立索引,然后将reads比对到基因组。特点是快速、准确、省内存。由三种类似算法组成:BWA-backtrack,BWA-SW和BWA-MEM。首推BWA-MEM。
三种算法的适用范围
- BWA-backtrack:reads长度<70bp时,推荐本算法,建议输入reads长度 < 100bp。
- BWA-SW:在reads具有频繁的gap时,比对更敏感,推荐本算法。reads长度一般为70bp-1Mbp,支持long-reads,split alignment。
- BWA-MEM(首推):在reads长度在70bp-1Mbp范围时,推荐本算法(除了上面两种情况)。支持long-reads,split alignment。
语法
- bwa index ref.fa #首先建立基因组索引
- bwa mem ref.fa reads.fq > aln-se.sam # 调用BWA-MEM
- bwa mem ref.fa read1.fq read2.fq > aln-pe.sam # 调用BWA-MEM
- bwa aln ref.fa short_read.fq > aln_sa.sai # 调用BWA-backtrack
- bwa samse ref.fa aln_sa.sai short_read.fq > aln-se.sam # 调用BWA-backtrack
- bwa sampe ref.fa aln_sa1.sai aln_sa2.sai read1.fq read2.fq > aln-pe.sam # 调用BWA-backtrack
- bwa bwasw ref.fa long_read.fq > aln.sam # 调用BWA-SW
- 注意:BWA输入的是fastq/fq的原始测序数据。
BWA参数
- 序列比对BWA之参数:index, mem, aln, samse, sampe, bwasw
SAM格式
short-reads比对
- 比对精度
- 评估插入长度分布
- 比对速度
比对速度很大程度取决于请求序列的错误率(r)。当接近完全匹配时,BWA速度最快。当允许多个失配时,BWA需要寻找更多的候选位点。允许太多失配时,不建议采用BWA。
BWA-0.6的改变
0.6版本以来,BWA可以处理长度在4G以上的基因组。这样有可能将正负链互补的基因组序列整合到一个索引(FM-index)中去,可以使BWA-short和BWA-SW更快。
最新版本BWA-SW同样可以处理长度大于100bp的pair-end reads。与BWA-short相比,BWA-SW对高度唯一的reads准确性更高和相对更长的插入与结构突变时更稳健。尽管如此,从许多次优比对中选取最优比对时,BWA-short更好。
其他情况
- 一个read有多部分匹配
BWA-MEM / BWA-SW可以报告单个reads分段比对到基因组上不同位置。在结构变异,基因融合或参考序列错误组合等情况下,多部分比对是可能的。这需要后续分析。可使用选项'-M'将附加匹配标记为次要。 - BWA是否可以发现嵌合reads(chimeric reads)?
是的,BWA-SW和BWA-MEM都能找到嵌合reads。 BWA通常为每次读取报告一个比对,但如果read/config是嵌合reads,则可以输出两个或多个比对。(我想:应与上面的1相同) - BWA是否分析SNP?
不,BWA只比对。其SAM格式输出结果,可通过如samtools和GATK分析SNP。 - paired-end数据中一条reads具有很高的比对质量(high mapping quality),另一条是0
这是对的。比对质量是分配给单个read,而不是读read pair。 - BWA是否能处理长度超过4GB的参考序列?
是。自0.6.x以来,所有BWA算法都可以处理总长度超过4GB的基因组。但是,单个染色体不应超过2GB。 - 测序错误的容忍度是多少?
Bwa-back主要为reads错误率小于2%而设计。可通过命令行参数调整算法对错误率的容忍度,但其性能会迅速降低。对于Illumina读取,bwa-backtrack可以在比对前将3'端低质量碱基修剪,3'尾部有高错误率的很多reads能够完成比对,这是Illumina数据的典型特征。
BWA-SW和BWA-MEM在给定较长对准的情况下都容忍更多的错误。仿真表明,如果100bp对齐误差为2%,200bp误差为3%,500bp误差为5%,1000bp或更长对齐误差为10%,则仿真结果可能会很好。 - 有reads比对出染色体末端,并被标记为未映射(标志0x4)。这里发生了什么?
BWA内部实现时,会将所有参考序列先连接成一个长序列。reads可以被映射到两个相邻参考序列的交点。在这种情况下,BWA会将读取标记为未映射,不过你会看到位置,CIGAR和所有标记。一个更好的解决方案是选择一个替代的位置或者调整最终的比对方式,但是这在编程中非常复杂,目前尚未实现。
Published Articles:
- The short read alignment component (bwa-short) has been published:
Li H. and Durbin R. (2009) Fast and accurate short read alignment with Burrows-Wheeler Transform. Bioinformatics, 25:1754-60. [PMID: 19451168] - If you use BWA-SW, please cite:
Li H. and Durbin R. (2010) Fast and accurate long-read alignment with Burrows-Wheeler Transform. Bioinformatics, Epub. [PMID: 20080505] - If you use the fastmap component of BWA, please cite:
Li H. (2012) Exploring single-sample SNP and INDEL calling with whole-genome de novo assembly. Bioinformatics, 28, 1838-1844. [PMID: 22569178]