Orchestrare i job eseguendo le pipeline Nextflow su Batch

Questo tutorial spiega come eseguire una pipeline Nextflow su Batch. Nello specifico, questo tutorial esegue la pipeline di esempio rnaseq-nf per le scienze biologiche di Nextflow, che quantifica le caratteristiche genomiche dai dati di lettura brevi utilizzando RNA-Seq.

Questo tutorial è destinato agli utenti di Batch che vogliono utilizzare Nextflow con Batch.

Nextflow è un software open source per l'orchestrazione di flussi di lavoro bioinformatici.

Crea un bucket Cloud Storage

Per creare un bucket Cloud Storage in cui archiviare i file di lavoro temporanei e di output della pipeline Nextflow, utilizza la console Google Cloud o la riga di comando.

Console

Per creare un bucket Cloud Storage utilizzando la console Google Cloud , segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Bucket.

    Vai a Bucket

  2. Fai clic su Crea.

  3. Nella pagina Crea un bucket, inserisci un nome univoco globale per il bucket.

  4. Fai clic su Crea.

  5. Nella finestra L'accesso pubblico verrà vietato, fai clic su Conferma.

gcloud

Per creare un bucket Cloud Storage utilizzando Google Cloud CLI, utilizza il comando gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Sostituisci BUCKET_NAME con un nome globalmente univoco per il bucket.

Se la richiesta ha esito positivo, l'output dovrebbe essere simile al seguente:

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

Configura Nextflow

Per configurare la pipeline Nextflow in modo che venga eseguita su Batch, segui questi passaggi nella riga di comando:

  1. Clona il repository della pipeline di esempio:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Vai alla cartella rnaseq-nf:

    cd rnaseq-nf
    
  3. Apri il file nextflow.config:

    nano nextflow.config
    

    Il file deve contenere la seguente sezione 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. Nella sezione gcb, segui questi passaggi:

    1. Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage creato nei passaggi precedenti.

    2. Sostituisci WORK_DIRECTORY con il nome di una nuova cartella che la pipeline può utilizzare per archiviare log e output.

      Ad esempio, inserisci workDir.

    3. Sostituisci REGION con la regione da utilizzare.

      Ad esempio, inserisci us-central1.

    4. Dopo il campo google.region, aggiungi i seguenti campi:

      1. Aggiungi il campo google.project:

        google.project = 'PROJECT_ID'
        

        Sostituisci PROJECT_ID con l'ID progetto del progetto Google Cloud corrente.

      2. Se non utilizzi il account di servizio predefinito di Compute Engine comeaccount di serviziot del job, aggiungi il campo google.batch.serviceAccountEmail:

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email delaccount di serviziot del job che hai preparato per questo tutorial.

  5. Per salvare le modifiche:

    1. Premi Control+S.

    2. Inserisci Y.

    3. Premi Enter.

esegui la pipeline.

Esegui la pipeline Nextflow di esempio utilizzando la riga di comando:

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

La pipeline esegue un piccolo set di dati utilizzando le impostazioni fornite nei passaggi precedenti. Il completamento di questa operazione potrebbe richiedere fino a 10 minuti.

Al termine dell'esecuzione della pipeline, l'output dovrebbe essere simile al seguente:

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

Visualizza gli output della pipeline

Al termine dell'esecuzione, la pipeline archivia i file di output, i log, gli errori o i file temporanei nel file results/qc_report.html all'interno della cartella WORK_DIRECTORY del bucket Cloud Storage.

Per controllare i file di output della pipeline nella cartella WORK_DIRECTORY del bucket Cloud Storage, puoi utilizzare la console Google Cloud o la riga di comando.

Console

Per controllare i file di output della pipeline utilizzando la console Google Cloud , segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Bucket.

    Vai a Bucket

  2. Nella colonna Nome, fai clic sul nome del bucket creato nei passaggi precedenti.

  3. Nella pagina Dettagli bucket, apri la cartella WORK_DIRECTORY.

Esiste una cartella per ogni attività separata eseguita dal flusso di lavoro. Ogni cartella contiene i comandi eseguiti, i file di output e i file temporanei creati dalla pipeline.

gcloud

Per controllare i file di output della pipeline utilizzando gcloud CLI, utilizza il comando gcloud storage ls.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket creato nei passaggi precedenti.

  • WORK_DIRECTORY: la directory specificata nel file nextflow.config.

L'output elenca una cartella per ogni attività separata eseguita dalla pipeline. Ogni cartella contiene i comandi eseguiti, i file di output e i file temporanei creati dalla pipeline.