Kraken2 es una herramienta ampliamente utilizada en estudios metagenómicos. Clasifica secuencias metagenómicas en rangos taxonómicos como especies, género, familia, etc.
Kraken2 construye una base de datos que consiste en un K-Mer y todos los genomas que contienen este K-Mer. Las secuencias metagenómicas se dividen en K-Mers, y cada K-Mer se consulta contra la base de datos K-Mer construida por Kraken2 para clasificar las secuencias metagenómicas. Las secuencias metagenómicas que no tienen K-Mer coincidente en la base de datos están etiquetadas como no clasificadas (Wood et al., 2019; Wood y Salzberg, 2014).
En general, los proveedores de HPC no permiten que sus usuarios instalen software en el HPC. Los contenedores de singularidad son una gran alternativa para instalar físicamente los softwares, e incluso no requieren privilegios 'sudo'. Mantener el registro de los contenedores usados y sus versiones facilita la reproducibilidad del flujo de trabajo. Por otro lado, NextFlow es un gerente de flujo de trabajo bioinformático que permite el uso de contenedores.
Sin embargo, ejecutar Kraken2 (o cualquier trabajo) en HPC utilizando Singularity Container y NextFlow requiere un conjunto de tres scripts de la siguiente manera:
Script de trabajo: un script de trabajo escrito en NextFlow (.nf) para hacer el trabajo real
Script de configuración: un script de configuración para proporcionar el enlace del contenedor y las asignaciones de recursos informáticos. Por defecto, el nombre de este script es 'nextflow.config'. Si se nombra de manera diferente, entonces debe especificarse en el comando 'NextFlow Run' 'en el siguiente script de programador de trabajo de la siguiente manera: "NextFlow -C xxxxxx.config ejecut"
Script de programador de trabajo: un script bash para programar el trabajo a través del planificador de trabajo 'Slurm'
Los scripts establecidos para ejecutar Kraken2 en HPC proporcionados por el Centro de Supercomputador de Pawsey (https://pawsey.org.au/) se presenta a continuación.
//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 datos anterior se puede descargar y construir desde cero siguiendo el manual de Kraken2 (https://github.com/derrickwood/kraken2)
O bien, se pueden descargar y utilizar las bases de datos preconstruidas disponibles (https://benlangmead.github.io/aws-indexes/k2)
Crear y 'CD' en un directorio en su computadora Linux para descargar las bases de datos previas a la construcción de Kraken2 en
Vaya al sitio web de bases de datos preconstruidas anteriores
Vaya a la columna de URL HTTPS de la tabla de recolección
Haga clic derecho en el archivo tar.gz de la colección correspondiente
Dirección de enlace de copia
Ejecutar el siguiente comando
wget link_address
Extraiga la base de datos con cremallera de alquitrán de la siguiente manera:
tar -zxvf downloaded_database
Ahora, debe remitir este directorio a medida que Kraken 2 base de datos en el script Kraken2
Al ejecutar Kraken2, la base de datos debe estar en la misma computadora donde se ejecutará el comando (por ejemplo, en Zeus o Magnus en Pawsey). Preferiblemente, en el mismo directorio
La ruta completa de la base de datos debe administrarse en el comando kraken2 incluso si la base de datos está en el mismo directorio
Se requieren al menos 100 GB de espacio de disco libre y 50 GB de RAM. Kraken2 carga la base de datos en la RAM local y úsela desde allí. La falta de disco suficiente o espacio de memoria dará como resultado un error "Error al leer la tabla hash"
"Error al leer la tabla hash" puede provenir de los archivos corruptos de alguna manera en la base de datos. Esto podría suceder durante la transferencia de la base de datos descomprimida a través de las computadoras. Este problema se puede resolver reexpresando el archivo con zonas con zrajo de la base de datos Kraken2 descargada
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
Instalar kraken2
Agregue la ruta Kraken2 a la variable ambiental de ruta
Descargue la base de datos Kraken2 apropiada. Para descargar la base de datos, consulte las notas anteriores
Haga un directorio para el análisis Kraken2
Mantenga las lecturas de secuenciación, la base de datos y el siguiente script en el directorio 'Kraken2'
Hacer un directorio de 'resultados' con el directorio 'Kraken2' para recopilar los resultados
Ejecute el script de la siguiente manera:
./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
El archivo de salida de Kraken2 está delimitado por las pestañas. Un ejemplo hipotético:
75 250 160 S 211044 Influenza A virus
Columna 1: Porcentaje de lecturas cubiertas por el clado enraizado en este taxón
Columna 2: Número de lecturas cubiertas por el clado enraizado en este taxón
Columna 3: Número de lecturas asignadas directamente a este taxón
Columna 4: un código de rango, que indica (u) nclassified, (d) omain, (k) ingdom, (p) hylum, (c) lass, (o) rder, (f) amily, (g) enus, o (s) pecies. Todos los demás rangos son simplemente "-".
Columna 5: ID de taxonomía de NCBI
Columna 6: El nombre científico
Wood, DE, Lu, J., Langmead, B., 2019. Análisis metagenómico mejorado con Kraken 2. Genome Biol. 20, 257. Https://doi.org/10.1186/s13059-019-1891-0
Wood, DE, Salzberg, SL, 2014. Kraken: clasificación de secuencia metagenómica ultrarrápida utilizando alineaciones exactas. Genoma biol. 15, R46. https://doi.org/10.1186/gb-2014-15-3-r46