01 背景
Bowtie 是一个超快速、内存高效的短读取比对器,适用于来自下一代测序仪的短DNA序列(读取)。序列比对统计,一般是基因组会贴使用,转录组用的较少。它和STAR相比性能差不多(后续出STAR)。
02 参考
https://sourceforge.net/projects/bowtie-bio #官网
https://sourceforge.net/projects/bowtie-bio/files/bowtie2/
03 安装
##下载
wget -c https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.5.2/bowtie2-2.5.2-linux-x86_64.zip
#解压
unzip bowtie2-2.5.2-linux-x86_64.zip
04 使用
4.1 bowtie
./bowtie2 -h
bowtie2 [选项]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> | --interleaved <i> | -b <bam>} [-S <sam>]
<bt2-idx> 索引文件名前缀(不包括末尾的 .X.bt2)。
注意: Bowtie 1 和 Bowtie 2 的索引不兼容。
<m1> 带有 #1 伴侣的文件,与 <m2> 中的文件配对。
可以是 gzip 压缩的(扩展名: .gz)或 bzip2 压缩的(扩展名: .bz2)。
<m2> 带有 #2 伴侣的文件,与 <m1> 中的文件配对。
可以是 gzip 压缩的(扩展名: .gz)或 bzip2 压缩的(扩展名: .bz2)。
<r> 带有未配对读取的文件。
可以是 gzip 压缩的(扩展名: .gz)或 bzip2 压缩的(扩展名: .bz2)。
<i> 带有交错配对端 FASTQ/FASTA 读取的文件
可以是 gzip 压缩的(扩展名: .gz)或 bzip2 压缩的(扩展名: .bz2)。
<bam> 文件是按读取名称排序的未对齐 BAM。
<sam> SAM 输出的文件(默认为: stdout)
<m1>、<m2>、<r> 可以是逗号分隔的列表(无空格)并且可以多次指定。例如:'-U file1.fq,file2.fq -U file3.fq'。
选项(默认值在括号中):
输入:
-q 查询输入文件为 FASTQ .fq/.fastq(默认)
--tab5 查询输入文件为 TAB5 .tab5
--tab6 查询输入文件为 TAB6 .tab6
--qseq 查询输入文件为 Illumina 的 qseq 格式
-f 查询输入文件为 (多-)FASTA .fa/.mfa
-r 查询输入文件为一行一个序列的原始数据
-F k:<int>,i:<int> 查询输入文件为从 FASTA 文件 <s> 中提取的子字符串(k-mer)形成的连续 FASTA,
并在参考序列的偏移量 1, 1+i, 1+2i ... 结束处进行对齐
-c <m1>、<m2>、<r> 是序列本身,而不是文件
-s/--skip <int> 跳过输入中的前 <int> 个读取/对(无)
-u/--upto <int> 在第一个 <int> 个读取/对后停止(无限制)
-5/--trim5 <int> 从读取的 5'/左端修剪 <int> 个碱基(0)
-3/--trim3 <int> 从读取的 3'/右端修剪 <int> 个碱基(0)
--trim-to [3:|5:]<int> 修剪超过 <int> 个碱基的读取,从 3' 或 5' 端开始
如果未指定读取端,则默认为 3(0)
--phred33 质量值为 Phred+33(默认)
--phred64 质量值为 Phred+64
--int-quals 以空格分隔的整数编码的质量值
预设: 等同于:
对于 --end-to-end:
--very-fast -D 5 -R 1 -N 0 -L
22 -i S,0,2.50
--fast -D 10 -R 2 -N 0 -L 22 -i S,0,2.50
--sensitive -D 15 -R 2 -N 0 -L 22 -i S,1,1.15(默认)
--very-sensitive -D 20 -R 3 -N 0 -L 20 -i S,1,0.50
对于 --local:
--very-fast-local -D 5 -R 1 -N 0 -L 25 -i S,1,2.00
--fast-local -D 10 -R 2 -N 0 -L 22 -i S,1,1.75
--sensitive-local -D 15 -R 2 -N 0 -L 20 -i S,1,0.75(默认)
--very-sensitive-local -D 20 -R 3 -N 0 -L 20 -i S,1,0.50
对齐:
-N <int> 种子对齐中的最大错配数;可以是 0 或 1(0)
-L <int> 种子子字符串的长度;必须大于 3,小于 32(22)
-i <func> 种子子字符串间隔与读取长度的关系(S,1,1.15)
--n-ceil <func> 对齐中允许的最大非 A/C/G/T 数的函数(L,0,0.15)
--dpad <int> 在 DP 表的两侧包含 <int> 个额外的参考字符(15)
--gbar <int> 禁止在读取极端的 <int> 个核苷酸内出现间隙(4)
--ignore-quals 将所有质量值视为 Phred 刻度上的 30(关闭)
--nofw 不对齐读取的正向(原始)版本(关闭)
--norc 不对齐读取的反向互补版本(关闭)
--no-1mm-upfront 在尝试扫描最佳种子对齐之前不允许 1 个错配对齐
--end-to-end 整个读取必须对齐;无剪切(开启)
或
--local 局部对齐;端部可能被软剪切(关闭)
计分:
--ma <int> 匹配奖励(对于 --end-to-end 为 0,对于 --local 为 2)
--mp <int> 错配的最大惩罚;质量低 = 惩罚低(6)
--np <int> 读取/参考中非 A/C/G/T 的惩罚(1)
--rdg <int>,<int> 读取间隙开启、扩展惩罚(5,3)
--rfg <int>,<int> 参考间隙开启、扩展惩罚(5,3)
--score-min <func> 接受的最小对齐分数与读取长度的关系
(对于局部对齐为 G,20,8,对于端到端为 L,-0.6,-0.6)
报告:
(默认) 查找多个对齐,报告最佳对齐,并附上 MAPQ
或
-k <int> 每个读取报告最多 <int> 个对齐;MAPQ 无意义
或
-a/--all 报告所有对齐;非常慢,MAPQ 无意义
努力:
-D <int> 在连续 <int> 次扩展失败后放弃(15)
-R <int> 对于具有重复种子的读取,尝试 <int> 组种子(2)
成对端:
-I/--minins <int>
最小片段长度(0)
-X/--maxins <int> 最大片段长度(500)
--fr/--rf/--ff -1, -2 伴侣以 fw/rev, rev/fw, fw/fw 对齐(--fr)
--no-mixed 抑制成对读取的未配对对齐
--no-discordant 抑制成对读取的不协调对齐
--dovetail 伴侣相互延伸时一致
--no-contain 一个伴侣对齐包含另一个时不一致
--no-overlap 伴侣有任何重叠时不一致
BAM:
--align-paired-reads
Bowtie2 默认尝试对齐未配对的 BAM 读取。
使用此选项改为对齐成对端读取。
--preserve-tags 通过将原始 BAM 记录中的标签附加到相应的 SAM 输出末尾来保留标签。
输出:
-t/--time 打印搜索阶段所需的实际时间
--un <path> 将未对齐的未配对读取写入 <path>
--al <path> 将至少对齐一次的未配对读取写入 <path>
--un-conc <path> 将未协调对齐的对写入 <path>
--al-conc <path> 将至少协调对齐一次的对写入 <path>
(注意:对于 --un、--al、--un-conc 或 --al-conc,将 '-gz' 添加到选项名称中,例如
--un-gz <path>,以 gzip 压缩输出,或添加 '-bz2' 以 bzip2 压缩输出。)
--quiet 除了严重错误外,不向 stderr 打印任何内容
--met-file <path> 将指标发送到 <path> 处的文件(关闭)
--met-stderr 将指标发送到 stderr(关闭)
--met <int> 每 <int> 秒报告内部计数器和指标(1)
--no-unal 抑制未对齐读取的 SAM 记录
--no-head 抑制标题行,即以 @ 开头的行
--no-sq 抑制 @SQ 标题行
--rg-id <text> 设置读取组 id,在 @RG 行和 RG:Z: 可选字段中反映
--rg <text> 向 SAM 标题的 @RG 行添加 <text>("lab:value")。
注意:仅在设置 --rg-id 时打印 @RG 行。
--omit-sec-seq 在次级对齐中,SEQ 和 QUAL 字段使用 '*'。
--sam-no-qname-trunc
抑制在第一个空白处截断读取名的标准行为
以产生非标准的 SAM,但代价是生成非标准 SAM。
--xeq 使用 '='/'X' 而不是 'M' 来指定 SAM 记录中的匹配/错配。
--soft-clipped-unmapped-tlen
报告 TLEN 时排除软剪切的碱基
--sam-append-comment
将 FASTA/FASTQ 注释附加到 SAM 记录中
性能:
-p/--threads <int> 启动的对齐线程数(1)
--reorder 强制 SAM 输出顺序与输入读取的顺序匹配
--mm 使用内存映射 I/O 进行索引;许多 'bowtie' 可以共享
其他:
--qc-filter 根据 QSEQ 过滤器过滤掉不良读取
--seed <int> 随机数生成器的种子(0)
--non-deterministic
任意种子随机数生成器,而不是使用读取属性
--version 打印版本信息并退出
-h/--help 打印此使用信息
4.2 bowtie2-build
./bowtie2-build -h
用法:bowtie2-build [选项]* <reference_in> <bt2_index_base>
reference_in 以逗号分隔的含参考序列的文件列表
bt2_index_base 将 bt2 数据写入此目录/基本名的文件中
*** Bowtie 2 索引将与 Bowtie v1.2.3 及更高版本兼容。***
选项:
-f 参考文件为 Fasta 格式(默认)
-c 命令行中给出的参考序列(作为 <reference_in>)
--large-index 强制生成的索引为“大”索引,即使参考序列少于 40 亿核苷酸
--debug 使用调试二进制文件;更慢,启用断言
--sanitized 使用已清理的二进制文件;更慢,使用 ASan 和/或 UBSan
--verbose 记录发出的命令
-a/--noauto 禁用自动的 -p/--bmax/--dcv 内存拟合
-p/--packed 内部使用压缩字符串;更慢,内存占用更少
--bmax <int> 块状后缀数组构建器的最大桶大小
--bmaxdivn <int> 最大桶大小作为参考长度的除数(默认:4)
--dcv <int> 块状差分覆盖周期(默认:1024)
--nodc 禁用差分覆盖(算法变为二次方)
-r/--noref 不构建 .3/.4 索引文件
-3/--justref 仅构建 .3/.4 索引文件
-o/--offrate <int> 每 2^<int> 个 BWT 字符抽样一次 SA(默认:5)
-t/--ftabchars <int> 初始查找中消耗的字符数(默认:10)
--threads <int> 线程数
--seed <int> 随机数生成器的种子
-q/--quiet 详细输出(用于调试)
--h/--help 打印此消息并退出
--version 打印版本信息并退出
05 常用命令行
bowtie一般为RSEM等内置程序,它和STAR一样均承担比对计算的任务。常用bowtie2-build,和bowtie2两个程序。
1 参考基因组建立索引
bowtie2-build -f XX.fasta --threads 10 bwXX
#-f:指明index的参考fasta文件
#<bwXX>:生成的index文件的前缀
#-xs输出索引
2 序列比对
bowtie2 -x bwXX -1 read1.fq.gz -2 read2.fq.gz -S read_bwXX.sam -p 10
#-x:由bowtie2-build所生成的索引文件的前缀
#-1:双端测序的文件1
#-2:双端测序的文件2
#-U:单端测序的文件,可以为多个文件,用逗号隔开 很少用
#-S:所生成的SAM格式的文件前缀
#-p:线程数
具体详见上一小节
06 参考文献
Langmead B, Salzberg SL. Fast gapped-read alignment with Bowtie 2. Nat Methods. 2012 Mar 4;9(4):357-9. doi: 10.1038/nmeth.1923. PMID: 22388286; PMCID: PMC3322381.