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环境。
解压缩上传的压缩包,并删除压缩包:
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文件:
mkdir -p /share/apps/modulefiles/bowtie
mkdir -p /share/apps/modulefiles/bowtie
在该路径下创建一个新的文件:
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
集群上其他用户需要加载该模块的时候执行如下的命令即可:
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/
并创建一个提交脚本:
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
使用如下的命令提交任务:
sbatch submit.sh
sbatch submit.sh