Este é um guia básico para configurar algumas configurações básicas para executar pipelines Nextflow no NPAD.
Primeiro, estou assumindo que sua análise ocupará mais de 9 GB (sua cota de espaço no diretório home), então você precisará usar o disco scratch para armazenar os resultados e as imagens Singularity.
Aqui, recomendo usar o conda para instalar o Nextflow e o nf-core.
Baixe e instale o conda: https://docs.conda.io/en/latest/miniconda.html
Instale o nf-core com conda: https://nf-co.re/docs/usage/installation#bioconda-installation
Certifique-se de instalá-los no diretório scratch.
Pipelines complexos precisarão de várias imagens Singularity. Você precisará baixá-las antecipadamente para um diretório de cache. Crie um diretório no scratch:
mkdir /scratch/iddsouza/singularity_images
mkdir /scratch/iddsouza/singularity_images/cacheAdicione as seguintes variáveis ao arquivo ~/.bashrc. Além disso, chame o módulo Singularity por padrão (assim você não esquecerá de chamá-lo ao executar o pipeline):
export SINGULARITY_CACHEDIR='/home/SEU_USER/scratch/singularity_images/cache'
export NXF_SINGULARITY_CACHEDIR='/home/SEU_USER/scratch/singularity_images'
module load singularityDepois de modificar o arquivo ~/.bashrc, reinicie sua sessão com source ~/.bashrc.
Após criar os diretórios, baixe as imagens. Este é um exemplo para o pipeline scrnaseq, versão 2.4.0. Altere esta linha para o seu pipeline:
nf-core download --container-system singularity --container-cache-utilisation amend -r 2.4.0 -p 5 nf-core/scrnaseqSe este arquivo não estiver presente no diretório ~/.nextflow/, crie-o.
Este é um exemplo do meu arquivo ~/.nextflow/config:
singularity{
autoMounts = true
}
process {
executor = 'slurm'
queue = 'amd-512'
queueSize = 30
submitRateLimit = '10/1min'
clusterOptions = '--qos=preempt'
errorStrategy = 'retry'
maxRetries = 3
time = '24h'
errorStrategy = { task.exitStatus in [125,139] ? 'retry' : 'finish' }
}
Os parâmetros necessários são singularity{ autoMounts = true } e process { clusterOptions = '--qos=preempt' executor = 'slurm' }. Isso garante que o Nextflow direcione cada processo para os nós de processamento.
Organize os arquivos necessários para sua execução no scratch local. Depois disso, crie uma screen para rodar o pipeline, com screen -S analysis, por exemplo. Na screen, ative o ambiente nf-core.
Se preferir usar o Nextflow Tower, defina o token no arquivo ~/.bashrc. (https://help.tower.nf/22.2/getting-started/usage/#nextflow-with-tower)
Não se esqueça de definir o --outdir no scratch.
nextflow run nf-core/scrnaseq -profile test,singularity --outdir scratch/scrnaseq_results