Kraken2は、メタゲノム研究で広く使用されているツールです。メタゲノムシーケンスを種、属、家族などの分類学的ランクに分類します。
Kraken2は、K-MERとこのK-MERを含むすべてのゲノムで構成されるデータベースを構築します。メタゲノムシーケンスはk-mersに分解され、各k-merはkraken2で構築されたk-merデータベースに対して照会され、メタゲノムシーケンスを分類します。データベースにk-merが一致していないメタゲノムシーケンスは、分類されていないとラベル付けされています(Wood et al。、2019; Wood and Salzberg、2014)。
通常、HPCプロバイダーは、ユーザーがHPCにソフトウェアをインストールすることを許可していません。特異性コンテナは、ソフトウェアを物理的に設置するための優れた代替手段であり、「sudo」特権を必要としません。使用済みのコンテナとそのバージョンの記録を保持すると、ワークフローの再現性が促進されます。一方、NextFlowは、コンテナの使用を許可するバイオインフォマティクスワークフローマネージャーです。
ただし、SingularityコンテナとNextFlowを使用してHPCでKraken2(または任意のジョブ)を実行するには、次のように3つのスクリプトのセットが必要です。
ジョブスクリプト:nextflow(.nf)で書かれたジョブスクリプトが実際のジョブを行う
構成スクリプト:コンテナのリンクとコンピューティングリソースの割り当てを提供する構成スクリプト。デフォルトでは、このスクリプトの名前は「nextflow.config」です。別の名前の場合、次のジョブスケジューラスクリプトの「NextFlow run」コマンドで指定する必要があります。
ジョブスケジューラスクリプト:ジョブスケジューラ「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事前に構築されたデータベースをダウンロードします
上記の事前に構築されたデータベースWebサイトにアクセスしてください
コレクションテーブルのhttps url列に移動します
対応するコレクションのtar.gzファイルを右クリックします
リンクアドレスをコピーします
次のコマンドを実行します
wget link_address
次のように、タールジップデータベースを抽出します。
tar -zxvf downloaded_database
これで、kraken2スクリプトの2つのデータベースをkrakenするときにこのディレクトリを参照する必要があります
Kraken2を実行する場合、データベースはコマンドが実行されるのと同じコンピューターにある必要があります(たとえば、ZeusまたはMagnus at Pawsey)。できれば、同じディレクトリで
データベースが同じディレクトリにある場合でも、データベースのフルパスを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」ディレクトリに「results」ディレクトリを作成して、結果を収集します
次のようにスクリプトを実行します。
./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)peciesを示すランクコード。他のすべてのランクは単に「 - 」です。
列5:NCBI分類ID
列6:科学名
Wood、de、Lu、J.、Langmead、B.、2019年。Kraken2。GenomeBiol。 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