Kraken2 é uma ferramenta amplamente usada em estudos metagenômicos. Ele classifica seqüências metagenômicas em fileiras taxonômicas, como espécies, gêneros, família etc.
O Kraken2 constrói um banco de dados que consiste em um K-Mer e todos os genomas que contêm esse K-Mer. As seqüências metagenômicas são divididas em K-Mers, e cada K-Mer é consultado contra o banco de dados K-MER construído em Kraken2 para classificar as seqüências metagenômicas. As sequências metagenômicas que não possuem K-Mer correspondentes no banco de dados são rotuladas como não classificadas (Wood et al., 2019; Wood e Salzberg, 2014).
Geralmente, os provedores de HPC não permitem que seus usuários instalem softwares no HPC. Os recipientes de singularidade são uma ótima alternativa para a instalação fisicamente de softwares e até não requer privilégio 'sudo'. Manter o registro dos recipientes usados e suas versões facilita a reprodutibilidade do fluxo de trabalho. Por outro lado, o NextFlow é um gerenciador de fluxo de trabalho bioinformático, permitindo o uso de contêineres.
No entanto, a execução de Kraken2 (ou qualquer trabalho) no HPC usando o contêiner de singularidade e o NextFlow requer um conjunto de três scripts da seguinte maneira:
Script de emprego: um script de trabalho escrito no NextFlow (.nf) para fazer o trabalho real
Script de configuração: um script de configuração para fornecer o link do contêiner e as alocações de recursos de computação. Por padrão, o nome deste script é 'nextflow.config'. Se for nomeado de maneira diferente, precisará ser especificado no comando 'Nextflow Run' no script de agendamento de trabalho a seguir da seguinte
Script do agendador de empregos: um script bash para agendar o trabalho através do agendador de trabalho 'Slurm'
Os scripts definidos para executar o Kraken2 no HPC fornecidos pelo Pawsey Supercomputer Center (https://pawsey.org.au/) são apresentados abaixo.
//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
"""
}
O banco de dados acima pode ser baixado e construído a partir do zero, seguindo o manual Kraken2 (https://github.com/derrickwood/kraken2)
Ou, os bancos de dados pré-construídos disponíveis podem ser baixados e usados (https://benlangmead.github.io/aws-indexes/k2)
Crie e 'CD' em um diretório em seu computador Linux para baixar os bancos de dados pré-construídos Kraken2 em
Vá para o site de bancos de dados pré-criados acima
Vá para a coluna URL HTTPS da tabela de coleta
Clique com o botão direito do mouse no arquivo tar.gz da coleção correspondente
Copie o endereço do link
Execute o seguinte comando
wget link_address
Extraia o banco de dados com fechamento de alcatrão da seguinte forma:
tar -zxvf downloaded_database
Agora, você precisa consultar este diretório como Kraken 2 Database no script Kraken2
Ao executar o Kraken2, o banco de dados precisa estar no mesmo computador em que o comando será executado (por exemplo, em Zeus ou Magnus em Pawsey). De preferência, no mesmo diretório
O caminho completo do banco de dados precisa ser dado no comando Kraken2, mesmo que o banco de dados esteja no mesmo diretório
São necessários pelo menos 100 GB de espaço em disco livre e 50 GB de RAM. Kraken2 carrega o banco de dados na RAM local e o usa a partir daí. Falta de disco ou espaço de memória suficiente resultará em um erro "Erro lendo a tabela de hash"
"Erro ao ler a tabela de hash" pode resultar de arquivos de alguma forma corrompidos no banco de dados. Isso pode acontecer durante a transferência do banco de dados descompactado entre os computadores. Este problema pode ser resolvido re-extraindo o arquivo zippeado do banco de dados Kraken2 baixado
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
Instale o Kraken2
Adicione o caminho Kraken2 à variável ambiental do caminho
Faça o download do banco de dados Kraken2 apropriado. Para baixar o banco de dados, consulte as notas acima
Faça um diretório para análise Kraken2
Mantenha as leituras de seqüenciamento, o banco de dados e o script a seguir no diretório 'Kraken2'
Faça um diretório de 'resultados' com o diretório 'Kraken2' para coletar os resultados
Execute o script da seguinte forma:
./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
O arquivo de saída do Kraken2 é delimitado. Um exemplo hipotético:
75 250 160 S 211044 Influenza A virus
Coluna 1: Porcentagem de leituras cobertas pelo clado enraizado neste táxon
Coluna 2: Número de leituras cobertas pelo clado enraizado neste táxon
Coluna 3: Número de leituras atribuídas diretamente a este táxon
Coluna 4: um código de classificação, indicando (u) Nclassified, (d) main, (k) ingdom, (p) hylum, (c) moça, (o) rder, (f) amily, (g) enus ou (s) pecies. Todas as outras fileiras são simplesmente "-".
Coluna 5: ID de taxonomia do NCBI
Coluna 6: o nome científico
Wood, De, Lu, J., Langmead, B., 2019. Análise metagenômica aprimorada com Kraken 2. Genome Biol. 20, 257. https://doi.org/10.1186/s13059-019-1891-0
Wood, DE, Salzberg, SL, 2014. Kraken: Classificação de sequência metagenômica ultra -rápida usando alinhamentos exatos. Genoma Biol. 15, R46. https://doi.org/10.1186/GB-2014-15-3-R46