Kraken2 ist ein weit verbreitetes Werkzeug in metagenomischen Studien. Es klassifiziert metagenomische Sequenzen in taxonomische Ränge wie Arten, Gattung, Familie usw.
Kraken2 erstellt eine Datenbank, die aus einem K-Mer und allen Genomen besteht, die diesen K-Mer enthalten. Die metagenomischen Sequenzen werden in K-Mer unterteilt, und jeder K-Mer wird gegen die Kraken2-K-Mer-Datenbank abgefragt, um die metagenomischen Sequenzen zu klassifizieren. Metagenomische Sequenzen, die in der Datenbank keinen übereinstimmenden K-Mer haben, werden als nicht klassifiziert bezeichnet (Wood et al., 2019; Wood und Salzberg, 2014).
Im Allgemeinen erlauben die HPC -Anbieter ihren Benutzern nicht, Software auf dem HPC zu installieren. Singularity Container sind eine großartige Alternative zur physischen Installation von Software und erfordert sogar kein "sudo" -Pivileg. Durch die Aufzeichnung der gebrauchten Behälter und ihrer Versionen erleichtert die Reproduzierbarkeit des Workflows. Andererseits ist NextFlow ein Bioinformatik -Workflow -Manager, der die Verwendung von Containern ermöglicht.
Die Ausführung von Kraken2 (oder einem Job) auf HPC unter Verwendung von Singularity Container und NextFlow erfordert jedoch eine Reihe von drei Skripten wie folgt:
Jobskript: Ein in NextFlow (.nf) geschriebenes Job -Skript, um den tatsächlichen Job zu erledigen
Konfigurationsskript: Ein Konfigurationsskript, das mit dem Link- und Computerressourcenzuweisungen des Containers bereitgestellt werden soll. Standardmäßig lautet der Name dieses Skripts "NextFlow.config". Wenn es anders genannt wird, muss es im Befehl 'NextFlow Run' im folgenden Job -Scheduler -Skript angegeben werden: "NextFlow -c xxxxxx.config Run"
Job Scheduler -Skript: Ein Bash -Skript, um den Job über den Job Scheduler 'Slurm' zu planen
Die Skripte, die für das Ausführen von Kraken2 auf HPC gesetzt werden, das vom Pawsey Supercomputer Center (https://pawsey.org.au/) bereitgestellt wird, ist unten dargestellt.
//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
"""
}
Die obige Datenbank kann nach dem Handbuch von Kraken2 heruntergeladen und erstellt werden (https://github.com/derrickwood/kraken2)
Oder die verfügbaren vorgefertigten Datenbanken können heruntergeladen und verwendet werden (https://benlangmead.github.io/aws-indexes/k2)
Erstellen und "CD" in ein Verzeichnis in Ihrem Linux-Computer, um die vorgefertigten Datenbanken in Kraken2 herunterzuladen
Gehen Sie zur oben genannten Website vorgefertigten Datenbanken
Gehen Sie zur HTTPS -URL -Spalte der Sammlungstabelle
Klicken Sie mit der rechten Maustaste auf die Datei tar.gz der entsprechenden Sammlung
Linkadresse kopieren
Führen Sie den folgenden Befehl aus
wget link_address
Extrahieren Sie die TAR Reißverschlussdatenbank wie folgt:
tar -zxvf downloaded_database
Jetzt müssen Sie dieses Verzeichnis als Kraken 2 -Datenbank im Skript kraken2 verweisen
Beim Ausführen von Kraken2 muss sich die Datenbank im selben Computer befinden, auf dem der Befehl ausgeführt wird (z. B. in Zeus oder Magnus bei Pawsey). Vorzugsweise im selben Verzeichnis
Der vollständige Pfad der Datenbank muss im Befehl kraken2 angegeben werden, auch wenn sich die Datenbank im selben Verzeichnis befindet
Es sind mindestens 100 GB freie Festplattenraum und 50 GB RAM erforderlich. Kraken2 lädt die Datenbank im lokalen RAM und verwendet sie von dort aus. Der Mangel an ausreichender Festplatte oder Speicherplatz führt zu einem Fehler "Fehler beim Lesen der Hash -Tabelle".
"Fehler beim Lesen der Hash -Tabelle" kann von irgendwie beschädigten Dateien in der Datenbank erfolgen. Dies kann bei der Übertragung der unzippierten Datenbank über Computer passieren. Dieses Problem kann behoben werden
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
Installieren Sie Kraken2
Fügen Sie den Kraken2 -Pfad zur Pfadumgebungsvariable hinzu
Laden Sie die entsprechende Kraken2 -Datenbank herunter. Um die Datenbank herunterzuladen, finden Sie in den oben genannten Notizen
Machen Sie ein Verzeichnis für die Kraken2 -Analyse
Halten Sie die Sequenzierung, die Datenbank und das folgende Skript im Verzeichnis 'Kraken2'
Machen Sie ein "Ergebnisse" -Verzeichnis mit im Verzeichnis "kraken2", um die Ergebnisse zu sammeln
Führen Sie das Skript wie folgt aus:
./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
Die Kraken2 -Ausgabedatei wird die Registerkarte abgrenzt. Ein hypothetisches Beispiel:
75 250 160 S 211044 Influenza A virus
Spalte 1: Prozentsatz der Lesevorgänge, die von der in diesem Taxon verwurzelten Klade abgedeckt werden
Spalte 2: Anzahl der Reads, die von der in diesem Taxon verwurzelten Klade abgedeckt werden
Spalte 3: Anzahl der direkt zugewiesenen Lesevorgänge, die diesem Taxon zugeordnet sind
Spalte 4: Ein Rangcode, der (u) nClassifized, (d) Omain, (k) Ingdom, (p) hylum, (c) Lass, (o) rder, (f) amily, (g) enus, oder (s) -Crei aufzeigt. Alle anderen Ränge sind einfach „-“.
Spalte 5: NCBI -Taxonomie -ID
Spalte 6: Der wissenschaftliche Name
Wood, DE, Lu, J., Langmead, B., 2019. Verbesserte metagenomische Analyse mit Kraken 2. Genom Biol. 20, 257. https://doi.org/10.1186/s13059-019-1891-0
Wood, DE, Salzberg, SL, 2014. Kraken: Ultrafaste metagenomische Sequenzklassifizierung mit genauen Ausrichtungen. Genom Biol. 15, R46. https://doi.org/10.1186/gb-2014-15-3-r46