Kraken2 est un outil largement utilisé dans les études métagénomiques. Il classe les séquences métagénomiques en rangs taxonomiques tels que les espèces, le genre, la famille, etc.
Kraken2 construit une base de données composée d'un K-Mer et de tous les génomes qui contiennent ce K-Mer. Les séquences métagénomiques sont décomposées en K-Mers, et chaque K-Mer est interrogé dans la base de données K-Mer Kraken2 pour classer les séquences métagénomiques. Les séquences métagénomiques qui n'ont pas de K-Mer correspondant dans la base de données sont étiquetées comme non classifiées (Wood et al., 2019; Wood et Salzberg, 2014).
Généralement, les fournisseurs de HPC ne permettent pas à leurs utilisateurs d'installer des logiciels sur le HPC. Les conteneurs de singularité sont une excellente alternative à l'installation physique des logiciels, et ne nécessite même pas de privilège «sudo». Garder les enregistrements des conteneurs utilisés et leurs versions facilitent la reproductibilité du flux de travail. D'un autre côté, NextFlow est un gestionnaire de workflow Bioinformatics permettant l'utilisation de conteneurs.
Cependant, l'exécution de Kraken2 (ou de n'importe quel travail) sur HPC à l'aide de Singularity Container et NextFlow nécessite un ensemble de trois scripts comme suit:
Script de travail: un script de travail écrit dans NextFlow (.nf) pour faire le travail réel
Script de configuration: un script de configuration pour fournir le lien du conteneur et les allocations de ressources informatiques du conteneur. Par défaut, le nom de ce script est 'nextflow.config'. S'il est nommé différemment, il doit être spécifié dans la commande 'NextFlow Run' dans le script de planificateur de travail suivant comme suit: "NextFlow -C xxxxxx.config run"
Script de planificateur de travail: un script bash pour planifier le travail via le planificateur de travail 'slurm'
Les scripts définis pour exécuter Kraken2 sur HPC fournis par le Pawsey Supercomputer Center (https://pawsey.org.au/) sont présentés ci-dessous.
//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
"""
}
La base de données ci-dessus peut être téléchargée et construite à partir de zéro suivant le manuel Kraken2 (https://github.com/derrickwood/kraken2)
Ou, les bases de données pré-construites disponibles peuvent être téléchargées et utilisées (https://benlangmead.github.io/aws-indexes/k2)
Créer et «CD» dans un répertoire de votre ordinateur Linux pour télécharger les bases de données pré-construites Kraken2 dans
Accédez au site Web de bases de données prédéfinies ci-dessus
Accédez à la colonne HTTPS URL de la table de collection
Faites un clic droit sur le fichier tar.gz de la collection correspondante
Copier l'adresse du lien
Exécutez la commande suivante
wget link_address
Extraire la base de données zippée TAR comme suit:
tar -zxvf downloaded_database
Maintenant, vous devez référer ce répertoire sous la base de données Kraken 2 dans le script Kraken2
Lors de l'exécution de Kraken2, la base de données doit être dans le même ordinateur où la commande sera exécutée (par exemple, dans Zeus ou Magnus à Pawsey). De préférence, dans le même répertoire
Le chemin complet de la base de données doit être donné dans la commande kraken2 même si la base de données est dans le même répertoire
Au moins 100 Go d'espace disque libre et 50 Go de RAM sont nécessaires. Kraken2 charge la base de données dans la RAM locale et l'utilise à partir de là. L'absence de disque ou d'espace mémoire suffisant entraînera une erreur "Erreur de lecture du tableau de hachage"
"Erreur de lecture du tableau de hachage" peut provenir de fichiers corrompus en quelque sorte dans la base de données. Cela peut se produire lors du transfert de la base de données dézippé entre les ordinateurs. Ce problème peut être résolu en réexécutant le fichier zippé de la base de données Kraken2 téléchargée
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
Installer kraken2
Ajouter le chemin Kraken2 à la variable environnementale de chemin
Téléchargez la base de données Kraken2 appropriée. Pour télécharger la base de données, voir les notes ci-dessus
Faire un répertoire pour l'analyse Kraken2
Gardez les lectures de séquençage, la base de données et le script suivant dans le répertoire «Kraken2»
Faites un répertoire «Résultats» dans le répertoire «Kraken2» pour collecter les résultats
Exécutez le script comme suit:
./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
Le fichier de sortie Kraken2 est délimité par l'onglet. Un exemple hypothétique:
75 250 160 S 211044 Influenza A virus
Colonne 1: pourcentage de lectures couvertes par le clade enraciné à ce taxon
Colonne 2: Nombre de lectures couvertes par le clade enraciné à ce taxon
Colonne 3: Nombre de lectures attribuées directement à ce taxon
Colonne 4: un code de rang, indiquant (u) nclassifié, (d) omain, (k) ingdom, (p) hylum, (c) lass, (o) rder, (f) AMILY, (g) enus, ou (s) ECCES. Tous les autres rangs sont simplement «-».
Colonne 5: ID de taxonomie NCBI
Colonne 6: le nom scientifique
Wood, DE, Lu, J., Langmead, B., 2019. Amélioration de l'analyse métagénomique avec Kraken 2. Genome Biol. 20, 257. Https://doi.org/10.1186/s13059-019-1891-0
Wood, DE, Salzberg, SL, 2014. Kraken: Classification des séquences métagénomiques ultra-détruites en utilisant des alignements exacts. Genome Biol. 15, R46. https://doi.org/10.1186/GB-2014-15-3-R46