Orquestre tarefas executando pipelines do Nextflow no Batch

Este tutorial explica como executar um pipeline Nextflow no Batch. Especificamente, este tutorial executa o pipeline de ciências da vida de exemplo rnaseq-nf do Nextflow, que quantifica as caraterísticas genómicas a partir de dados de leitura curta através do RNA-Seq.

Este tutorial destina-se a utilizadores do Batch que querem usar o Nextflow com o Batch.

O Nextflow é um software de código aberto para orquestrar fluxos de trabalho de bioinformática.

Crie um contentor do Cloud Storage

Para criar um contentor do Cloud Storage para armazenar ficheiros de trabalho e saída temporários do pipeline Nextflow, use a Google Cloud consola ou a linha de comandos.

Consola

Para criar um contentor do Cloud Storage através da Google Cloud consola, siga estes passos:

  1. Na Google Cloud consola, aceda à página Recipientes.

    Aceda a Recipientes

  2. Clique em Criar.

  3. Na página Criar um contentor, introduza um nome exclusivo a nível global para o seu contentor.

  4. Clique em Criar.

  5. Na janela O acesso público vai ser impedido, clique em Confirmar.

gcloud

Para criar um contentor do Cloud Storage através da CLI do Google Cloud, use o comando gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Substitua BUCKET_NAME por um nome globalmente exclusivo para o seu contentor.

Se o pedido for bem-sucedido, o resultado deve ser semelhante ao seguinte:

Creating gs://BUCKET_NAME/...
   ```

Configure o Nextflow

Para configurar o pipeline do Nextflow para ser executado no Batch, siga estes passos na linha de comandos:

  1. Clone o repositório de tubagens de exemplo:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Aceda à pasta rnaseq-nf:

    cd rnaseq-nf
    
  3. Abra o ficheiro nextflow.config:

    nano nextflow.config
    

    O ficheiro deve conter a seguinte secção gcb:

    gcb {
      params.transcriptome = 'gs://rnaseq-nf/data/ggal/transcript.fa'
      params.reads = 'gs://rnaseq-nf/data/ggal/gut_{1,2}.fq'
      params.multiqc = 'gs://rnaseq-nf/multiqc'
      process.executor = 'google-batch'
      process.container = 'quay.io/nextflow/rnaseq-nf:v1.1'
      workDir = 'gs://BUCKET_NAME/WORK_DIRECTORY'
      google.region  = 'REGION'
    }
    
  4. Na secção gcb, faça o seguinte:

    1. Substitua BUCKET_NAME pelo nome do contentor do Cloud Storage que criou nos passos anteriores.

    2. Substitua WORK_DIRECTORY pelo nome de uma nova pasta que o pipeline pode usar para armazenar registos e resultados.

      Por exemplo, introduza workDir.

    3. Substitua REGION pela região a usar.

      Por exemplo, introduza us-central1.

    4. Após o campo google.region, adicione os seguintes campos:

      1. Adicione o campo google.project:

        google.project = 'PROJECT_ID'
        

        Substitua PROJECT_ID pelo ID do projeto do projeto Google Cloud atual.

      2. Se não estiver a usar a conta de serviço predefinida do Compute Engine como conta de serviço da tarefa, adicione o campo google.batch.serviceAccountEmail:

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        Substitua SERVICE_ACCOUNT_EMAIL pelo endereço de email da conta de serviço da tarefa que preparou para este tutorial.

  5. Para guardar as edições, faça o seguinte:

    1. Prima Control+S.

    2. Introduza Y.

    3. Prima Enter.

Execute o pipeline

Execute o pipeline de exemplo do Nextflow através da linha de comandos:

../nextflow run nextflow-io/rnaseq-nf -profile gcb

O pipeline executa um pequeno conjunto de dados com as definições que forneceu nos passos anteriores. Esta operação pode demorar até 10 minutos a ser concluída.

Depois de a pipeline terminar a execução, o resultado deve ser semelhante ao seguinte:

N E X T F L O W  ~  version 23.04.1
Launching `https://github.com/nextflow-io/rnaseq-nf` [crazy_curry] DSL2 - revision: 88b8ef803a [master]
 R N A S E Q - N F   P I P E L I N E
 ===================================
 transcriptome: gs://rnaseq-nf/data/ggal/transcript.fa
 reads        : gs://rnaseq-nf/data/ggal/gut_{1,2}.fq
 outdir       : results

Uploading local `bin` scripts folder to gs://example-bucket/workdir/tmp/53/2847f2b832456a88a8e4cd44eec00a/bin
executor >  google-batch (4)
[67/71b856] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[0c/2c79c6] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[a9/571723] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/1f0dd4] process > MULTIQC                       [100%] 1 of 1 ✔

Done! Open the following report in your browser --> results/multiqc_report.html

Completed at: 20-Apr-2023 15:44:55
Duration    : 10m 13s
CPU hours   : (a few seconds)
Succeeded   : 4

Veja as saídas do pipeline

Após a conclusão da execução do pipeline, este armazena ficheiros de saída, registos, erros ou ficheiros temporários no ficheiro results/qc_report.html na pasta WORK_DIRECTORY do seu contentor do Cloud Storage.

Para verificar os ficheiros de saída do pipeline na pasta WORK_DIRECTORY do seu contentor do Cloud Storage, pode usar a consola Google Cloud ou a linha de comandos.

Consola

Para verificar os ficheiros de saída do pipeline através da Google Cloud consola, siga estes passos:

  1. Na Google Cloud consola, aceda à página Recipientes.

    Aceda a Recipientes

  2. Na coluna Nome, clique no nome do contentor que criou nos passos anteriores.

  3. Na página Detalhes do contentor, abra a pasta WORK_DIRECTORY.

Existe uma pasta para cada tarefa separada que o fluxo de trabalho executa. Cada pasta contém os comandos executados, os ficheiros de saída e os ficheiros temporários criados pelo pipeline.

gcloud

Para verificar os ficheiros de saída do pipeline através da CLI gcloud, use o comando gcloud storage ls.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

Substitua o seguinte:

  • BUCKET_NAME: o nome do contentor que criou nos passos anteriores.

  • WORK_DIRECTORY: o diretório que especificou no ficheiro nextflow.config.

A saída apresenta uma pasta para cada tarefa separada que o pipeline executa. Cada pasta contém os comandos executados, os ficheiros de saída e os ficheiros temporários criados pelo pipeline.