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