Samtools 编译安装及使用 
Samtools是一组实用程序,用于与Heng Li编写的SAM,BAM和CRAM格式的短DNA序列读取比对进行交互并进行后处理。这些文件是由短读取对齐器(如BWA)作为输出生成的。提供了简单和高级工具,支持复杂任务,例如变体调用和对齐查看以及分类,索引,数据提取和格式转换。 本教程将介绍如何在SonmiHPC集群中使用Intel OneAPI编译器来编译安装该工具,并介绍简单的使用方法。
源码下载 
使用wget下载源码:
shell
wget https://github.com/samtools/samtools/releases/download/1.20/samtools-1.20.tar.bz2wget https://github.com/samtools/samtools/releases/download/1.20/samtools-1.20.tar.bz2国内由于网络问题无法下载或者速度过慢的话,可以自己本地用代理下载后再上传到集群中。
然后解压源码压缩包:
shell
tar xvf samtools-1.20.tar.bz2tar xvf samtools-1.20.tar.bz2切换到解压出来的文件夹中:
shell
cd samtools-1.20cd samtools-1.20编译安装 
先安装依赖的库:
shell
dnf install ncurses-devel bzip2-devel xz-devel -ydnf install ncurses-devel bzip2-devel xz-devel -y执行以下的命令进行编译安装:
shell
./configure --prefix=/share/apps/samtools
make
make install./configure --prefix=/share/apps/samtools
make
make install为了集群中其他用户也可以共同使用该程序,修改安装文件夹权限:
shell
chmod -R 755 /share/apps/samtoolschmod -R 755 /share/apps/samtoolsModulefile编写 
为了方便在集群中使用,将编译安装好的程序通过Module模块加载的方式提供给集群中其他用户使用,可以编写如下的Modulefile文件:
shell
mkdir -p /share/apps/modulefiles/samtoolsmkdir -p /share/apps/modulefiles/samtools在该文件夹目录下新增一个新的文件:
shell
cd /share/apps/modulefiles/samtools && vim 1.20cd /share/apps/modulefiles/samtools && vim 1.20新增文件内容如下:
#%Module###########################################
set modulefilename "Samtools"
set modulefilever  "1.20"
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/samtools/bin
prepend-path MANPATH /share/apps/samtools/share#%Module###########################################
set modulefilename "Samtools"
set modulefilever  "1.20"
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/samtools/bin
prepend-path MANPATH /share/apps/samtools/share保存后,设置一下权限:
shell
chmod -R 755 /share/apps/modulefileschmod -R 755 /share/apps/modulefiles用户使用如下的命令就可以看到该模块:
[root@sonmi samtools]# module avail 
--------------- /share/apps/modulefiles ----------------
samtools/1.20[root@sonmi samtools]# module avail 
--------------- /share/apps/modulefiles ----------------
samtools/1.20需要加载该模块的时候执行如下的命令即可:
module load samtools/1.20module load samtools/1.20使用示例 
创建一个示例文件夹,并且该文件夹中上传一个input.fastq文件。
在该目录下创建提交 submit.sh 脚本如下:
shell
#!/bin/bash
#SBATCH --job-name=samtools
#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 samtools/1.20
cd $SLURM_SUBMIT_DIR
samtools import input.fastq > output.bam#!/bin/bash
#SBATCH --job-name=samtools
#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 samtools/1.20
cd $SLURM_SUBMIT_DIR
samtools import input.fastq > output.bam使用如下的命令提交任务:
sbatch submit.shsbatch submit.sh