Kraken2

Description

Kraken2 is a taxonomic classification system for DNA sequences, using k-mers and a database to assign reads to taxa. It is widely used in metagenomics to identify organisms present in samples.

Available Versions

  • kraken2/2.1.3 (default)

Serial Job Submission

submit_kraken2.sh
#!/bin/bash
#SBATCH -J kraken2
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 12:00:00
#SBATCH --mem=32G

export INPUT="reads.fastq"
export OUTPUT="kraken_output.txt kraken_report.txt"

module load kraken2/2.1.3

job-nanny kraken2 --db /path/to/kraken2_database \
                  --threads 1 \
                  --output kraken_output.txt \
                  --report kraken_report.txt \
                  reads.fastq

OpenMP Job Submission

submit_kraken2_omp.sh
#!/bin/bash
#SBATCH -J kraken2_omp
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 06:00:00
#SBATCH --mem=64G

export INPUT="reads.fastq"
export OUTPUT="kraken_output.txt kraken_report.txt"

module load kraken2/2.1.3

job-nanny kraken2 --db /path/to/kraken2_database \
                  --threads $SLURM_CPUS_PER_TASK \
                  --output kraken_output.txt \
                  --report kraken_report.txt \
                  reads.fastq

Paired-end Classification

submit_kraken2_paired.sh
#!/bin/bash
#SBATCH -J kraken2_paired
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 12:00:00
#SBATCH --mem=64G

export INPUT="reads_1.fastq reads_2.fastq"
export OUTPUT="kraken_output.txt kraken_report.txt"

module load kraken2/2.1.3

job-nanny kraken2 --db /path/to/kraken2_database \
                  --threads $SLURM_CPUS_PER_TASK \
                  --paired \
                  --output kraken_output.txt \
                  --report kraken_report.txt \
                  reads_1.fastq reads_2.fastq

Database Building

submit_kraken2_build.sh
#!/bin/bash
#SBATCH -J kraken2_build
#SBATCH -N 1
#SBATCH -c 28
#SBATCH -t 72:00:00
#SBATCH --mem=256G

export INPUT="library/"
export OUTPUT="custom_db/"

module load kraken2/2.1.3

job-nanny kraken2-build --download-taxonomy --db custom_db
job-nanny kraken2-build --download-library bacteria --db custom_db
job-nanny kraken2-build --download-library viral --db custom_db
job-nanny kraken2-build --build --db custom_db --threads $SLURM_CPUS_PER_TASK

Pre-built Databases

# Available databases (usually in /opt/gridunesp/databases/kraken2/)
ls /opt/gridunesp/databases/kraken2/

# Database examples:
# - standard: bacteria, archaea, viruses, human
# - minikraken2: reduced version for testing
# - pluspf: bacteria, archaea, viruses, plasmids, fungi

Job Array for Multiple Samples

submit_kraken2_array.sh
#!/bin/bash
#SBATCH -J kraken2_array
#SBATCH --array=1-20
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 12:00:00
#SBATCH --mem=64G

SAMPLES=(
    "sample_01" "sample_02" "sample_03" "sample_04" "sample_05"
    "sample_06" "sample_07" "sample_08" "sample_09" "sample_10"
    "sample_11" "sample_12" "sample_13" "sample_14" "sample_15"
    "sample_16" "sample_17" "sample_18" "sample_19" "sample_20"
)

SAMPLE=${SAMPLES[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="${SAMPLE}_R1.fastq ${SAMPLE}_R2.fastq"
export OUTPUT="${SAMPLE}_kraken/"

module load kraken2/2.1.3

mkdir -p ${SAMPLE}_kraken
cd ${SAMPLE}_kraken

job-nanny kraken2 --db /opt/gridunesp/databases/kraken2/standard \
                  --threads $SLURM_CPUS_PER_TASK \
                  --paired \
                  --output ${SAMPLE}_kraken.out \
                  --report ${SAMPLE}_report.txt \
                  ../${SAMPLE}_R1.fastq ../${SAMPLE}_R2.fastq

Post-processing

process_kraken_output.sh
#!/bin/bash
#SBATCH -J process_kraken
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=8G

export INPUT="kraken_output.txt"
export OUTPUT="filtered/"

module load kraken2/2.1.3

mkdir -p filtered

# Extract reads classified at species level
awk '$1 == "C" && $4 == "S" {print $2}' kraken_output.txt > classified_reads.txt

# Extract reads from a specific taxonomy (e.g., Escherichia coli - 562)
grep -w "562" kraken_output.txt > ecoli_reads.txt

# Generate detailed report with krakentools (if available)
# kreport2mpa.py -r kraken_report.txt -o mpa_report.txt

Visual Analysis with Krona

submit_krona.sh
#!/bin/bash
#SBATCH -J krona
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=4G

export INPUT="kraken_report.txt"
export OUTPUT="krona.html"

module load kraken2/2.1.3

# Convert to Krona format
cat kraken_report.txt | cut -f2-3 | tail -n +2 > kraken.krona

# Generate Krona plot (requires KronaTools installed)
# ktImportText kraken.krona -o krona.html

References

See also