Orchestrez des jobs en exécutant des pipelines Nextflow sur Batch


Ce tutoriel explique comment exécuter un pipeline Nextflow sur Batch. Plus précisément, ce tutoriel exécute un exemple de pipeline de sciences de la vie qui quantifie les caractéristiques génomiques à partir de données lues courtes à l'aide de RNA-Seq.

Ce tutoriel est destiné aux utilisateurs de Batch qui souhaitent utiliser Nextflow avec Batch.

Nextflow est un logiciel Open Source permettant d'orchestrer des workflows de bio-informatique.

Objectifs

Ce tutoriel vous permettra d'effectuer les opérations suivantes:

  • Installer Nextflow dans Cloud Shell
  • Créer un bucket Cloud Storage
  • Configurer un pipeline Nextflow
  • Exécuter un exemple de pipeline à l'aide de Nextflow sur Batch
  • Affichez les sorties du pipeline.
  • Effectuez un nettoyage pour éviter que des frais supplémentaires ne vous soient facturés en procédant de l'une des façons suivantes :
    • supprimer un projet ;
    • Supprimer des ressources individuelles

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

  • Lot
  • Cloud Storage

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Les ressources créées dans ce tutoriel coûtent généralement moins d'un dollar, en supposant que vous effectuiez toutes les étapes, y compris le nettoyage, dans les délais impartis.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Installez Google Cloud CLI.
  3. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  4. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activer les API Batch, Cloud Storage, Compute Engine, and Logging :

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Installez Google Cloud CLI.
  8. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  9. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  10. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  11. Activer les API Batch, Cloud Storage, Compute Engine, and Logging :

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. Assurez-vous que votre projet comporte au moins un compte de service disposant des autorisations requises pour ce tutoriel.

    Chaque tâche nécessite un compte de service permettant à l'agent de service Batch de créer les ressources requises pour exécuter la tâche et d'y accéder. Pour ce tutoriel, le compte de service de la tâche est le compte de service Compute Engine par défaut.

    Pour vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour permettre à l'agent de service Batch de créer des ressources pour les jobs Batch et d'y accéder, demandez à votre administrateur d'accorder au compte de service Compute Engine par défaut les rôles IAM suivants:

    Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

    Votre administrateur peut également accorder les autorisations requises au compte de service Compute Engine par défaut via des rôles personnalisés ou d'autres rôles prédéfinis.

  13. Assurez-vous de disposer des autorisations nécessaires pour ce tutoriel.

    Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous attribuer les rôles IAM suivants:

  14. Installez Nextflow:

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

    La sortie devrait ressembler à ce qui suit :

    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
    

Créer un bucket Cloud Storage

Pour créer un bucket Cloud Storage afin de stocker des tâches temporaires et des fichiers de sortie du pipeline Nextflow, utilisez la console Google Cloud ou la ligne de commande.

Console

Pour créer un bucket Cloud Storage à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Buckets.

    Accéder à la page "Buckets"

  2. Cliquez sur Créer.

  3. Sur la page Créer un bucket, saisissez un nom unique pour votre bucket.

  4. Cliquez sur Créer.

  5. Dans la fenêtre L'accès public sera bloqué, cliquez sur Confirmer.

Ligne de commande

gcloud

Pour créer un bucket Cloud Storage à l'aide de Google Cloud CLI, utilisez la commande gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Remplacez BUCKET_NAME par un nom unique pour votre bucket.

Si la requête aboutit, le résultat doit ressembler à ce qui suit:

Creating gs://BUCKET_NAME/...

gsutil

Pour créer un bucket Cloud Storage à l'aide de l'outil gsutil, utilisez la commande gsutil mb.

gsutil mb gs://BUCKET_NAME

Remplacez BUCKET_NAME par un nom unique pour votre bucket.

Si la requête aboutit, le résultat doit ressembler à ce qui suit:

Creating gs://BUCKET_NAME/...

Configurer Nextflow

Pour configurer le pipeline Nextflow afin qu'il s'exécute sur Batch, procédez comme suit dans la ligne de commande:

  1. Clonez l'exemple de dépôt de pipeline:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Accédez au dossier rnaseq-nf :

    cd rnaseq-nf
    
  3. Ouvrez le fichier nextflow.config :

    nano nextflow.config
    

    Le fichier doit contenir la section suivante:

    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. Dans la section gcb, procédez comme suit:

    1. Remplacez BUCKET_NAME par le nom du bucket Cloud Storage que vous avez créé aux étapes précédentes.

    2. Remplacez WORK_DIRECTORY par le nom d'un nouveau dossier que le pipeline peut utiliser pour stocker les journaux et les résultats.

      Par exemple, saisissez workDir.

    3. Après le champ google.region, ajoutez la ligne google.project = 'PROJECT_ID'PROJECT_ID correspond à l'ID du projet Google Cloud actuel.

  5. Pour enregistrer vos modifications, procédez comme suit:

    1. Appuyez sur la touche Control+S.

    2. Saisissez Y.

    3. Appuyez sur la touche Enter.

Exécuter le pipeline

Exécutez l'exemple de pipeline Nextflow à l'aide de la ligne de commande:

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

Le pipeline exécute un petit ensemble de données en utilisant les paramètres que vous avez fournis aux étapes précédentes. Cette opération peut prendre jusqu'à 10 minutes.

Une fois l'exécution du pipeline terminée, le résultat doit ressembler à ce qui suit:

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

Afficher les sorties du pipeline

Une fois l'exécution du pipeline terminée, le pipeline stocke les fichiers de sortie, les journaux, les erreurs ou les fichiers temporaires dans le fichier results/qc_report.html du dossier WORK_DIRECTORY de votre bucket Cloud Storage.

Pour vérifier les fichiers de sortie du pipeline dans le dossier WORK_DIRECTORY de votre bucket Cloud Storage, vous pouvez utiliser la console Google Cloud ou la ligne de commande.

Console

Pour vérifier les fichiers de sortie du pipeline à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Buckets.

    Accéder à la page "Buckets"

  2. Dans la colonne Nom, cliquez sur le nom du bucket que vous avez créé aux étapes précédentes.

  3. Sur la page Informations sur le bucket, ouvrez le dossier WORK_DIRECTORY.

Il existe un dossier pour chaque tâche distincte exécutée par le workflow. Chaque dossier contient les commandes exécutées, les fichiers de sortie et les fichiers temporaires créés par le pipeline.

Ligne de commande

gcloud

Pour vérifier les fichiers de sortie du pipeline à l'aide de la gcloud CLI, exécutez la commande gcloud storage ls.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

Remplacez les éléments suivants :

  • BUCKET_NAME: nom du bucket que vous avez créé aux étapes précédentes.

  • WORK_DIRECTORY: répertoire que vous avez spécifié dans le fichier nextflow.config.

Le résultat affiche un dossier pour chaque tâche distincte exécutée par le pipeline. Chaque dossier contient les commandes exécutées, les fichiers de sortie et les fichiers temporaires créés par le pipeline.

gsutil

Pour vérifier les fichiers de sortie du pipeline à l'aide de l'outil gsutil, exécutez la commande gsutil ls.

gsutil ls gs://BUCKET_NAME/WORK_DIRECTORY

Remplacez les éléments suivants :

  • BUCKET_NAME: nom du bucket que vous avez créé aux étapes précédentes.

  • WORK_DIRECTORY: répertoire que vous avez spécifié dans le fichier nextflow.config.

Le résultat affiche un dossier pour chaque tâche distincte exécutée par le pipeline. Chaque dossier contient les commandes exécutées, les fichiers de sortie et les fichiers temporaires créés par le pipeline.

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

Le moyen le plus simple d'éviter la facturation consiste à supprimer le projet en cours.

Pour supprimer le projet en cours, utilisez la console Google Cloud ou la gcloud CLI.

Console

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

gcloud

    Supprimez un projet Google Cloud :

    gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

Si vous souhaitez continuer à utiliser le projet actuel, supprimez les différentes ressources utilisées dans ce tutoriel.

Supprimer le bucket

Si vous n'avez plus besoin du bucket que vous avez utilisé dans ce tutoriel, supprimez-le.

Supprimer les fichiers de sortie du bucket

Une fois l'exécution du pipeline terminée, il crée et stocke les fichiers de sortie dans le dossier WORK_DIRECTORY de votre bucket Cloud Storage.

Pour réduire les frais Cloud Storage facturés sur le compte Google Cloud actuel, vous pouvez supprimer le dossier contenant les fichiers de sortie du pipeline à l'aide de la console Google Cloud ou de la ligne de commande.

Console

Pour supprimer le dossier WORK_DIRECTORY et tous les fichiers de sortie de votre bucket Cloud Storage à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Buckets.

    Accéder à la page "Buckets"

  2. Dans la colonne Nom, cliquez sur le nom du bucket que vous avez créé aux étapes précédentes.

  3. Sur la page Informations sur le bucket, sélectionnez la ligne contenant le dossier WORK_DIRECTORY, puis procédez comme suit:

    1. Cliquez sur Supprimer.

    2. Pour confirmer, saisissez DELETE, puis cliquez sur Supprimer.

Ligne de commande

gcloud

Pour supprimer le dossier WORK_DIRECTORY et tous les fichiers de sortie de votre bucket Cloud Storage à l'aide de gcloud CLI, exécutez la commande gcloud storage rm avec l'option --recursive.

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

Remplacez les éléments suivants :

  • BUCKET_NAME: nom du bucket que vous avez spécifié aux étapes précédentes.

  • WORK_DIRECTORY: répertoire dans lequel stocker les fichiers de sortie du pipeline que vous avez spécifiés aux étapes précédentes.

gsutil

Pour supprimer le dossier WORK_DIRECTORY et tous les fichiers de sortie de votre bucket Cloud Storage à l'aide de l'outil gsutil, exécutez la commande gsutil rm avec les options -m et -r.

gsutil -m rm -r gs://BUCKET_NAME/WORK_DIRECTORY

Remplacez les éléments suivants :

  • BUCKET_NAME: nom du bucket que vous avez spécifié aux étapes précédentes.

  • WORK_DIRECTORY: répertoire dans lequel stocker les fichiers de sortie du pipeline que vous avez spécifiés aux étapes précédentes.

Étapes suivantes