Orchestrare i job eseguendo pipeline Nextflow in modalità batch


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

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

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

Obiettivi

Completando questo tutorial, imparerai a:

  • Installa Nextflow in Cloud Shell.
  • Creare un bucket Cloud Storage.
  • Configurare una pipeline Nextflow.
  • Esegui una pipeline di esempio utilizzando Nextflow su batch.
  • Visualizza gli output della pipeline.
  • Eseguire la pulizia per evitare che ti vengano addebitati costi aggiuntivi in uno dei seguenti modi:
    • Eliminare un progetto.
    • Eliminare singole risorse.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

  • Batch
  • Cloud Storage

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Le risorse create in questo tutorial di solito costano meno di un dollaro, supponendo che completi tutti i passaggi, inclusa la pulizia, in un tempestivamente.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Abilita le API Batch, Cloud Storage, Compute Engine, and Logging.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  11. Abilita le API Batch, Cloud Storage, Compute Engine, and Logging.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. Assicurati che il tuo progetto ne abbia almeno uno account di servizio con le autorizzazioni necessarie per questo tutorial.

    Ogni job richiede un account di servizio che consenta Agente di servizio batch per creare e accedere alle risorse necessaria per eseguire il job. Per questo tutorial, l'account di servizio del job è la Account di servizio predefinito Compute Engine.

    Per assicurarti che l'account di servizio predefinito di Compute Engine abbia gli elementi necessari, autorizzazioni per consentire all'agente di servizio Batch di creare e accedere alle risorse per i job batch, chiedi all'amministratore di concedere all'account di servizio predefinito Compute Engine seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

    L'amministratore potrebbe anche essere in grado di fornire l'account di servizio predefinito di Compute Engine le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

  13. Assicurati di disporre delle autorizzazioni necessarie per questo tutorial.

    Per ottenere le autorizzazioni necessarie per completare questo tutorial: chiedi all'amministratore di concederti seguenti ruoli IAM:

  14. Installa Nextflow:

    curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
    

    L'output dovrebbe essere simile al seguente:

    N E X T F L O W
    version 23.04.1 build 5866
    created 15-04-2023 06:51 UTC
    cite doi:10.1038/nbt.3820
    http://nextflow.io
    
    Nextflow installation completed. Please note:
    - the executable file `nextflow` has been created in the folder: ...
    - you may complete the installation by moving it to a directory in your $PATH
    

Crea un bucket Cloud Storage

Creare un bucket Cloud Storage in cui archiviare il lavoro e l'output temporanei della pipeline Nextflow, usa 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 valore nome univoco a livello globale per il tuo 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 la Comando gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Sostituisci BUCKET_NAME con un nome univoco a livello globale per il tuo bucket.

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

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 {
      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  = 'us-central1'
    }
    ...
    
  4. Nella sezione gcb, segui questi passaggi:

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

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

      Ad esempio, inserisci workDir.

    3. Dopo il campo google.region, aggiungi il parametro Linea google.project = 'PROJECT_ID' in cui PROJECT_ID è l'ID progetto della progetto Google Cloud.

  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 che hai fornito nel passaggi precedenti. Questa operazione potrebbe richiedere fino a 10 minuti.

Al termine della pipeline, l'output dovrebbe essere simile al seguenti:

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 file temporanei nel file results/qc_report.html all'interno WORK_DIRECTORY cartella di Cloud Storage di sincronizzare la directory di una VM con un bucket.

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

Console

Per verificare 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 che hai creato nella passaggi precedenti.

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

Esiste una cartella per ogni attività separata eseguita dal flusso di lavoro. Ogni cartella contiene i comandi che sono stati 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 che creato nei passaggi precedenti.

  • WORK_DIRECTORY: la directory specificata in il 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 i file temporanei creati dalla pipeline.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto corrente.

Per eliminare il progetto corrente, utilizza la console Google Cloud oppure con gcloud CLI.

Console

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

gcloud

    Elimina un progetto Google Cloud:

    gcloud projects delete PROJECT_ID

Elimina singole risorse

Se vuoi continuare a utilizzare il progetto attuale, elimina il singolo utilizzate in questo tutorial.

Elimina il bucket

Se non hai più bisogno del bucket che hai utilizzato in questo tutorial, eliminare il bucket.

Elimina i file di output nel bucket

Al termine dell'esecuzione, la pipeline crea e archivia i file di output WORK_DIRECTORY cartella di Cloud Storage di sincronizzare la directory di una VM con un bucket.

Per ridurre gli addebiti di Cloud Storage al valore attuale Google Cloud, puoi eliminare la cartella contenente utilizzando la console Google Cloud o la riga di comando.

Console

Per eliminare la cartella WORK_DIRECTORY e tutti i di output, dal bucket Cloud Storage utilizzando nella 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 che hai creato nella passaggi precedenti.

  3. Nella pagina Dettagli bucket, seleziona la riga contenente i WORK_DIRECTORY, quindi segui questi passaggi:

    1. Fai clic su Elimina.

    2. Per confermare, inserisci DELETE e fai clic su Elimina.

gcloud

Per eliminare la cartella WORK_DIRECTORY e tutti i di output, dal bucket Cloud Storage utilizzando gcloud CLI, utilizza gcloud storage rm con Flag --recursive.

gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
      --recursive

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del bucket che specificato nei passaggi precedenti.

  • WORK_DIRECTORY: la directory in cui archiviare dei file di output della pipeline che hai specificato nei passaggi precedenti.

Passaggi successivi