Skip to content

Bowtie/Bowtie2 安装及使用

Bowtie 是一种超快速、内存高效的短序列比对工具,专为快速比对大规模短 DNA 序列(读取)到大基因组而设计。它可以在普通工作站上以每小时 2500 万条读取的速度将 35 碱基对读取比对到人类基因组。Bowtie 使用 Burrows-Wheeler 索引来索引基因组,从而保持其内存占用较小:对于人类基因组,该索引通常约为 2.2 GB(用于非配对比对)或 2.9 GB(用于配对比对)。可以同时使用多个处理器以实现更快的比对速度。Bowtie 还可以以标准 SAM 格式输出比对结果,使其能够与支持 SAM 的其他工具(包括 SAMtools 共识、SNP 和插入缺失调用工具)互操作。Bowtie 可在 Windows、Mac OS X、Linux 和 Solaris 的命令行下运行。

本教程将介绍如何在SonmiHPC集群上安装Bowtie2,并提供给集群中所有用户使用。

下载预编译二进制文件

可以从Bowtie的SourceForge主页中下载官方提供的预编译二进制版本[1],并将软件压缩包上传到集群中,上传路径为/share/apps/。请注意,集群上需要安装好Perl环境。

解压缩上传的压缩包,并删除压缩包:

shell
unzip bowtie2-2.5.4-linux-x86_64.zip && rm bowtie2-2.5.4-linux-x86_64.zip
unzip bowtie2-2.5.4-linux-x86_64.zip && rm bowtie2-2.5.4-linux-x86_64.zip

为了集群中其他用户也可以共同使用该程序,修改该路径的文件夹权限:

chmod -R 755 chmod -R 755 /share/apps/bowtie2-2.5.4-linux-x86_64/
chmod -R 755 chmod -R 755 /share/apps/bowtie2-2.5.4-linux-x86_64/

Modulefile文件编写

为了方便在集群中使用,通过Module模块加载的方式提供给集群中的用户使用,可以编写如下的Modulefile文件:

shell
mkdir -p /share/apps/modulefiles/bowtie
mkdir -p /share/apps/modulefiles/bowtie

在该路径下创建一个新的文件:

shell
cd /share/apps/modulefiles/bowtie && vim 2.5.4
cd /share/apps/modulefiles/bowtie && vim 2.5.4

新增文件内容如下:

#%Module###########################################
set modulefilename "Bowtie"
set modulefilever  "2.5.4"

set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}

if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}

if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}

prepend-path PATH /share/apps/bowtie2-2.5.4-linux-x86_64/
setenv BT2_HOME /share/apps/bowtie2-2.5.4-linux-x86_64/
#%Module###########################################
set modulefilename "Bowtie"
set modulefilever  "2.5.4"

set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}

if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}

if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}

prepend-path PATH /share/apps/bowtie2-2.5.4-linux-x86_64/
setenv BT2_HOME /share/apps/bowtie2-2.5.4-linux-x86_64/

保存后,设置一下权限:

chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles

用户使用如下的命令就可以看到该模块:

[root@sonmi bowtie]# module avail 

--------- /share/apps/modulefiles -------------
bowtie/2.5.4
[root@sonmi bowtie]# module avail 

--------- /share/apps/modulefiles -------------
bowtie/2.5.4

集群上其他用户需要加载该模块的时候执行如下的命令即可:

shell
module load bowtie/2.5.4
module load bowtie/2.5.4

使用示例

在用户目录下创建一个bowtie2-example文件夹,并从Bowtie2 安装目录中复制附带的example例子:

mkdir ~/bowtie2-example
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reference/lambda_virus.fa ~/bowtie2-example/
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reads/reads_1.fq ~/bowtie2-example/
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reads/reads_2.fq ~/bowtie2-example/
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reads/longreads.fq ~/bowtie2-example/
mkdir ~/bowtie2-example
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reference/lambda_virus.fa ~/bowtie2-example/
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reads/reads_1.fq ~/bowtie2-example/
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reads/reads_2.fq ~/bowtie2-example/
cp -r /share/apps/bowtie2-2.5.4-linux-x86_64/example/reads/longreads.fq ~/bowtie2-example/

并创建一个提交脚本:

shell
vim submit.sh
vim submit.sh

脚本内容如下:

#!/bin/bash
#SBATCH --job-name=bowtie2
#SBATCH --partition=sonmi
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --nodelist=compute-0-0
#SBATCH --exclusive
#SBATCH --time=02:00:00

ulimit -s unlimited
ulimit -l unlimited

module load bowtie/2.5.4
cd $SLURM_SUBMIT_DIR

bowtie2-build lambda_virus.fa lambda_virus
bowtie2 -x lambda_virus -U reads_1.fq -S eg1.sam
bowtie2 -x lambda_virus -1 reads_1.fq -2 reads_2.fq -S eg2.sam
bowtie2 --local -x lambda_virus -U longreads.fq -S eg3.sam
bowtie2 -x lambda_virus -1 reads_1.fq -2 reads_2.fq -S eg2.sam
#!/bin/bash
#SBATCH --job-name=bowtie2
#SBATCH --partition=sonmi
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --nodelist=compute-0-0
#SBATCH --exclusive
#SBATCH --time=02:00:00

ulimit -s unlimited
ulimit -l unlimited

module load bowtie/2.5.4
cd $SLURM_SUBMIT_DIR

bowtie2-build lambda_virus.fa lambda_virus
bowtie2 -x lambda_virus -U reads_1.fq -S eg1.sam
bowtie2 -x lambda_virus -1 reads_1.fq -2 reads_2.fq -S eg2.sam
bowtie2 --local -x lambda_virus -U longreads.fq -S eg3.sam
bowtie2 -x lambda_virus -1 reads_1.fq -2 reads_2.fq -S eg2.sam

使用如下的命令提交任务:

shell
sbatch submit.sh
sbatch submit.sh

参考链接

  1. Bowtie Sourceforge 主页
  2. Bowtie 在线手册
  3. https://cncbi.github.io/Bowtie2-Manual-CN/

本站内容未经授权禁止转载
联系邮箱: [email protected]