Seqtk 的编译安装及使用
Seqtk是一个用于处理FASTA和FASTQ格式序列的快速且轻量级的工具。该工具可以轻松的将FASTA和FASTQ格式的文件进行互相转换。该软件使用C语言编写,因此需要使用gcc之类的编译器进行编译。
下面将介绍如何在SonmiHPC集群中编译安装该软件。
克隆并编译源码
通过下面的命令从github中克隆该仓库的最新源码:
shell
cd /tmp
git clone https://github.com/lh3/seqtk.git
cd /tmp
git clone https://github.com/lh3/seqtk.git
然后进行编译:
shell
cd seqtk && make
cd seqtk && make
将编译好的二进制可执行文件移动到共享应用目录中:
shell
mkdir /share/apps/seqtk
mv seqtk /share/apps/seqtk/
mkdir /share/apps/seqtk
mv seqtk /share/apps/seqtk/
为了集群中其他用户也可以共同使用该程序,修改该路径的权限:
shell
chmod -R 755 /share/apps/seqtk
chmod -R 755 /share/apps/seqtk
Modulefile 编写
为了方便在集群中使用,将编译好的程序通过Module模块加载的方式提供给集群中其他用户使用,可以编写如下的Modulefile文件:
shell
mkdir -p /share/apps/modulefiles/seqtk
mkdir -p /share/apps/modulefiles/seqtk
在该路径下创建一个新的文件:
shell
cd /share/apps/modulefiles/seqtk && vim latest
cd /share/apps/modulefiles/seqtk && vim latest
文件内容如下:
#%Module###########################################
set modulefilename "Seqtk"
set modulefilever "latest"
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/seqtk/
#%Module###########################################
set modulefilename "Seqtk"
set modulefilever "latest"
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/seqtk/
保存后,设置一下权限:
shell
chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles
用户使用如下的命令就可以看到该模块:
[root@sonmi seqtk]# module avail
--------------- /share/apps/modulefiles ---------------
seqtk/latest
[root@sonmi seqtk]# module avail
--------------- /share/apps/modulefiles ---------------
seqtk/latest
集群上其他用户需要加载该模块的时候执行如下的命令即可:
shell
module load seqtk/latest
module load seqtk/latest
使用示例
在用户目录下创建一个seqtk-example的文件夹,并上传一个FASTQ文件,下面以SRR999549_1.fastq.gz为例子。
并创建一个提交脚本:
shell
vim submit.sh
vim submit.sh
脚本内容如下,该脚本主要是将上传的FASTQ文件转换为FASTA文件:
#!/bin/bash
#SBATCH --job-name=seqtk
#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 seqtk/latest
cd $SLURM_SUBMIT_DIR
seqtk seq -a SRR999549_1.fastq.gz > out.fa
#!/bin/bash
#SBATCH --job-name=seqtk
#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 seqtk/latest
cd $SLURM_SUBMIT_DIR
seqtk seq -a SRR999549_1.fastq.gz > out.fa
使用下面的命令提交任务:
shell
sbatch submit.sh
sbatch submit.sh