Seqtk 的编译安装及使用 
Seqtk是一个用于处理FASTA和FASTQ格式序列的快速且轻量级的工具。该工具可以轻松的将FASTA和FASTQ格式的文件进行互相转换。该软件使用C语言编写,因此需要使用gcc之类的编译器进行编译。
下面将介绍如何在SonmiHPC集群中编译安装该软件。
克隆并编译源码 
通过下面的命令从github中克隆该仓库的最新源码:
shell
cd /tmp
git clone https://github.com/lh3/seqtk.gitcd /tmp
git clone https://github.com/lh3/seqtk.git然后进行编译:
shell
cd seqtk && makecd 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/seqtkchmod -R 755 /share/apps/seqtkModulefile 编写 
为了方便在集群中使用,将编译好的程序通过Module模块加载的方式提供给集群中其他用户使用,可以编写如下的Modulefile文件:
shell
mkdir -p /share/apps/modulefiles/seqtkmkdir -p /share/apps/modulefiles/seqtk在该路径下创建一个新的文件:
shell
cd /share/apps/modulefiles/seqtk && vim latestcd /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/modulefileschmod -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/latestmodule load seqtk/latest使用示例 
在用户目录下创建一个seqtk-example的文件夹,并上传一个FASTQ文件,下面以SRR999549_1.fastq.gz为例子。
并创建一个提交脚本:
shell
vim submit.shvim 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.shsbatch submit.sh