Skip to content

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

参考链接

  1. Seqtk Github 仓库主页

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