Kraken2是宏基因组研究中广泛使用的工具。它将核序列分类为分类学等级,例如物种,属,家庭等。
Kraken2构建了一个由K-MER组成的数据库和所有包含此K-MER的基因组。元基因组序列分解为K-MER,每个K-MER都针对Kraken 2-MER数据库进行查询以对元基因组序列进行分类。数据库中与K-MER没有匹配的宏基因组序列被标记为未分类(Wood等,2019; Wood和Salzberg,2014)。
通常,HPC提供商不允许其用户在HPC上安装软件。奇异容器是物理安装软件的绝佳选择,甚至不需要“ sudo”特权。记录使用的容器及其版本可有助于工作流的可重复性。另一方面,NextFlow是一个生物信息学工作流管理器,允许使用容器。
但是,使用Singularity容器和NextFlow在HPC上执行Kraken2(或任何作业)需要一组三个脚本:如下:
作业脚本:用NextFlow(.NF)编写的作业脚本来完成实际工作
config脚本:一个配置脚本,用于提供容器的链接和计算资源分配。默认情况下,此脚本的名称为“ nextflow.config”。如果以不同的方式命名,则需要在以下作业调度程序剧本中的“ nextflow Run”命令中指定它:“ nextflow -c xxxxxxx.config run”
作业调度程序脚本:BASH脚本,可以通过作业调度程序“ Slurm”安排工作
下面介绍了由Pawsey SuperComputer Center(https://pawsey.org.au/)提供的HPC上运行kraken2的脚本。
//data_location
params.in = "$PWD/*.fasta"
params.outdir = './results'
datasets = Channel
.fromPath(params.in)
.map { file -> tuple(file.simpleName, file) }
// taxonomy
process taxonomy {
tag "$z"
publishDir "${params.outdir}", mode:'copy'
input:
set datasetID, file(z) from datasets
output:
file "${z.baseName}_taxo.tsv" into taxonomy_ch
script:
"""
kraken2 --db path/to/the/DB --output ${z.baseName}_taxo.out --report ${z.baseName}_taxo.tsv $z --threads 28
"""
}
可以按照Kraken2手册(https://github.com/derrickwood/kraken2)下载和构建上述数据库。
或者,可以下载和使用可用的预制数据库(https://benlangmead.github.io/aws-indexes/k2)
在您的Linux计算机中创建和“ CD”,以下载Kraken2预构建数据库
转到上述预制数据库网站
转到集合表的HTTPS URL列
右键单击相应集合的tar.gz文件
复制链接地址
运行以下命令
wget link_address
提取焦油zipperiped数据库如下:
tar -zxvf downloaded_database
现在,您需要在Kraken2脚本中将此目录引用为Kraken 2数据库
运行Kraken2时,数据库需要在将运行命令的同一计算机中(例如,在Zeus或Pawsey的Magnus中)。最好是在同一目录中
即使数据库在同一目录中,数据库的完整路径也需要在Kraken2命令中给出
至少需要100 GB的无磁盘空间和50 GB RAM。 Kraken2将数据库加载到本地RAM中,并从那里使用它。缺乏足够的磁盘或内存空间将导致错误“错误阅读哈希表”
“读取哈希表的错误”可能源于数据库中某种损坏的文件。这可能在跨计算机传输未拉链数据库时发生。可以通过重新提取下载的kraken2数据库的zipped文件来解决此问题
trace {
fields = 'name,hash,status,exit,realtime,submit'
}
profiles {
zeus {
workDir = "$PWD/work"
process {
cache = 'lenient'
stageInMode = 'symlink'
}
process {
withName:taxonomy { container = 'quay.io/biocontainers/kraken2:2.1.2--pl5262h7d875b9_0' }
}
singularity {
enabled = true
autoMounts = true
//runOptions = '-e TERM=xterm-256color'
envWhitelist = 'TERM'
}
params.slurm_account = 'XXXXX'
process {
executor = 'slurm'
clusterOptions = "--account=${params.slurm_account}"
queue = 'workq'
cpus = 1
time = '1h'
memory = '10GB'
withName: 'taxonomy' {
cpus = 28
time = '24h'
}
}
}
}
#SBATCH --job-name=nxf-master
#SBATCH --account=XXXX
#SBATCH --partition=workq
#SBATCH --time=1-00:00:00
#SBATCH --no-requeue
#SBATCH --export=none
#SBATCH --nodes=1
unset SBATCH_EXPORT
module load singularity
module load nextflow
nextflow run nanopore_nextflow.nf -profile zeus -name nxf-${SLURM_JOB_ID} -resume --with-report
安装Kraken2
将Kraken2路径添加到路径环境变量
下载适当的Kraken2数据库。要下载数据库,请参见上面的注释
制作Kraken2分析目录
将测序读取,数据库和以下脚本保持在“ Kraken2”目录中
使用“ Kraken2”目录中的“结果”目录来收集结果
运行脚本如下:
./kraken2.sh
#!/usr/bin/env bash
#textFormating
Red="$(tput setaf 1)"
Green="$(tput setaf 2)"
reset=`tput sgr0` # turns off all atribute
Bold=$(tput bold)
#
for F in *.fastq
do
baseName=$(basename $F .fastq)
echo "${Red}${Bold} Processing ${reset}: "${baseName}""
kraken2 --db $PWD/kraken2_database --threads 64 --output $PWD/results/"${baseName}_taxo.out" --report $PWD/results/"${baseName}_taxo.tsv" $F
echo ""
echo "${Green}${Bold} Processed and saved as${reset} "${baseName}""
done
KRAKEN2输出文件是标签。一个假设的例子:
75 250 160 S 211044 Influenza A virus
第1列:植根于该分类单元的进化枝覆盖的读数百分比
第2列:植根于该分类单元的进化枝覆盖的读数数
第3列:直接分配给此分类单元的读数数
第4列:等级代码,指示(u)nclassified,(d)omain,(k)ingdom,(p)hylum,(c)lass,(o)rder,(f)amily,(g)enus或(s)或(s)。所有其他等级都是“ - ”。
第5列:NCBI分类学ID
第6列:科学名称
Wood,de,Lu,J.,Langmead,B.,2019年。与Kraken 2. Genome Biol一起改善了元基因组分析。 20,257。https://doi.org/10.1186/s13059-019-1891-0
Wood,DE,Salzberg,SL,2014年。Kraken:使用精确比对的超快元基因组序列分类。基因组生物。 15,R46。 https://doi.org/10.1186/gb-2014-15-3-r46