地址:https://sourceforge.net/projects/bio-bwa/files/
wget http://superb-sea2.dl.sourceforge.net/project/bio-bwa/bwa-0.7.17.tar.bz2
tar -jxf bwa-0.7.17.tar.bz2
cd bwa-0.7.17/
make
make install
echo 'export PATH=/home/li.han/Softwares/bwa-0.7.17:$PATH ' >> ~/.bashrc
./bwa
BWA 是一种能够将差异度较小的序列比对到一个较大的参考基因组上的软件包
比对小于100bp的序列
参数:aln / samse / sampe
比对70bp-1Mbp的序列
参数:bwasw
比对70bp-1Mbp的序列,但BWA-MEM更快更准确,在比对70-100bp的reads时也比BWA-backtrack好
参数:mem
格式:
fai是对ref基因组文件建的索引,方便软件快速随机读取基因组序列
sai是将fastq比对后出来的文件,用于最后输出比对结果sam文件的
根据reference genome data 建立 Index File,最后生成文件:hg19.fa.amb、hg19.fa.ann、hg19.fa.bwt、hg19.fa.pac和hg19.fa.sa。
bwa index -a bwtsw reference.fa
-a参数:
bwa构建索引有三种算法,三种算法都是基于BWT的,这三种算法通过参数-a is 、-a div和-a bwtsw进行选择。
-a is(效果和-a div是一样的)是默认参数,虽然相对较快,但是需要较大的内存,适用于小于等于2G的参考基因组文件。
-a bwtsw适用于大于等于10Mb的参考基因组文件。
1. 寻找输入reads文件的SA坐标
aln功能:
将目标序列与参考序列进行比对,生成sai文件
aln用法:bwa aln [options]
处理pair-end 数据(read_1.fq和read_2.fq)
bwa aln -l 30 -k 2 -t 4 -I hg19.fa read_1.fq.gz > read_1.sai
bwa aln -l 30 -k 2 -t 4 -I hg19.fa read_2.fq.gz > read_2.sai
处理single 数据(read.fq)
bwa aln -l 30 -k 2 -t 4 -I hg19.fa read.fq.gz > read.sai
如果希望多线程运行,在其中加入 -t这个参数,另外-f这个参数可以指定结果输出文件,如:
bwa aln -t 3 -f read.sai hg19.fa read.fq
aln参数:
-b | 输入格式为bam格式 |
-B int | 设置标记序列。从5’端开始多少个碱基作为标记序列,当-B为正值时,在比对之前会将每个read的标记序列剪切,并将此标记序列表示在BC SAM 标签里,对于pair end数据,两端的标记序列会被连接。 |
-d int | 不允许在3’端出现大于多少bp的deletion |
-e int | 每个gap允许的最大长度 |
-f | 输出文件 |
-i int | 不允许在reads两端出现大于多少bp的indel |
-I int | 大写 i,表示输入的文件格式为Illumina 1.3+的fq格式。 |
-k int | 在seed中的最大编辑距离,使用默认2,与-l配合使用。 |
-l int | 小写 L,Read前多少个碱基作为seed,如果设置的seed大于read长度,将无法继续,最好设置在25-35,与-k 2 配合使用。 |
-n | 允许最大错配数:mismatch+gap |
-o int | 允许出现的最大gap数 |
-R int | 此参数只应用于pair end中,当没有出现大于此值的最佳比对结果时,将会降低标准再次进行比对。增加这个值可以提高配对比对的准确率,但是同时会消耗更长的时间,默认是32。 |
-t | 使用的线程数 |
2: 生成sam格式的比对文件。如果一条read比对到多个位置,会随机选择一种。
如果是pair-end数据
bwa sampe -a 500 -f pair-end.sam hg19.fa read_1.sai read_2.sai read_1.fq read_2.fq
参数说明:
-a int | 最大插入片段大小 |
-f | 输出Sam文件 |
-n int | 如果reads比对次数超过多少次,就不在XA标签显示 |
-o int | pair end两reads中其中之一所允许配对的最大次数,超过该次数,将被视为single end。降低这个参数,可以加快运算速度,对于少于30bp的read,建议降低-o值。 |
-r str | 定义头文件。‘@RG\tID:foo\tSM:bar’,如果在此步骤不进行头文件定义,在后续GATK分析中还是需要重新增加头文件。 |
如果是single reads数据
bwa samse -f single.sam hg19.fa read.sai read.fq
参数说明:
-n int | 如果reads比对次数超过多少次,就不在XA标签显示 |
-r str | 定义头文件。同pair end。 |
原理:
mem 使用MEMs(maximal exact matches)进行seedling alignments,再使用 SW(affine-gap Smith-Waterman 算法)进行seeding extending。
mem 进行局部比对,因此,对于一条序列的不同区域可能会产生多种最优匹配结果, 这对于long reads 来说尤为重要。有些软件如 Picard’s markDuplicates 跟 mem 的这种剪接性比对不兼容,在这种情况下,可以使用 –M 选项来将 shorter split hits 标记为次优。
用法:
bwa mem -M -t 15 -R '@RG\tID:foo_lane\tPL:illumina\tLB:library\tSM:sample_name' > lane.sam
参数:
-M | 处理同一个reads比对到参考基因组上不同位置的情况,将 shorter split hits 标记为次优,以兼容 Picard’s markDuplicates 软件 |
-p | 若无此参数,输入文件只有1个,则进行单端比对;若输入文件有两个,则作为paired reads进行比对。若加入此参数,则仅以第一个文件作为输入,该文件必须是read1.fq和read2.fq进行reads交叉的数据 |
-R | 设置Read Group信息,“\t”分割。 它是用来将比对的read进行分组的,这个信息对于我们后续对比对数据进行错误率分析和Mark duplicate时非常重要。不设置-R参数不会报错,但使用GATK时是会报错的。ID,PL和SM信息在正式的项目中是不能缺少的(如果样本包含多个测序文库的话,LB信息也不要省略) |
-t | 线程数,默认是1 |
在Read Group中,有如下几个信息非常重要:
ERROR MESSAGE: The platform (xx) associated with read group GATKSAMReadGroupRecord @RG:xx is not a recognized platform.
这个时候你需要对比对文件的header信息进行重写,就会稍微比较麻烦。