Jobs durch Ausführen von Nextflow-Pipelines in Batch orchestrieren


In dieser Anleitung wird erläutert, wie Sie eine Nextflow-Pipeline in Batch ausführen. Im Einzelnen wird in diesem Tutorial Folgendes ausgeführt: Beispiel einer rnaseq-nf-Pipeline für Biowissenschaften von Nextflow, quantifiziert genomische Merkmale aus kurzen Lesedaten mithilfe von RNA-Seq.

Diese Anleitung richtet sich an Nutzer von Batch, die Nextflow mit Batch verwenden möchten.

Nextflow ist Open-Source-Software zur Orchestrierung von Workflows für die Bioinformatik.

Lernziele

In dieser Anleitung lernen Sie Folgendes:

  • Installieren Sie Nextflow in Cloud Shell.
  • Cloud Storage-Bucket erstellen
  • Nextflow-Pipeline konfigurieren.
  • Beispielpipeline mit Nextflow in Batch ausführen
  • Sehen Sie sich die Ausgaben der Pipeline an.
  • Führen Sie eine der folgenden Aktionen aus, um eine Bereinigung zu vermeiden, um zusätzliche Gebühren zu vermeiden:
    • Ein Projekt löschen
    • Einzelne Ressourcen löschen

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

  • Batch
  • Cloud Storage

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Die in dieser Anleitung erstellten Ressourcen kosten in der Regel weniger als einen Dollar. Wenn Sie alle Schritte – einschließlich der Bereinigung – in einem rechtzeitig informiert sind.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:

    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. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. Achten Sie darauf, dass Ihr Projekt ein VPC-Netzwerk (Virtual Private Cloud) mit einer gültigen Netzwerkkonfiguration für dieses Tutorial hat.

    In dieser Anleitung wird davon ausgegangen, dass Sie das default-Netzwerk verwenden. Standardmäßig verwenden Google Cloud-Ressourcen das Netzwerk default. über das der für diese Anleitung erforderliche Netzwerkzugriff bereitgestellt wird.

  13. Stellen Sie sicher, dass Ihr Projekt mindestens ein Dienstkonto mit dem Berechtigungen, die zum Ausführen des Batch-Jobs in diesem .

    Für Jobs wird standardmäßig das Compute Engine-Standarddienstkonto verwendet, dem automatisch die IAM-Rolle „Bearbeiter“ (roles/editor) zugewiesen wird. Es hat bereits alle Berechtigungen, die für dieses Tutorial erforderlich sind.

    Um sicherzustellen, dass das Dienstkonto des Auftrags die erforderlichen Berechtigungen, damit der Batch-Dienst-Agent Ressourcen für Batchjobs erstellen und darauf zugreifen kann, Bitten Sie Ihren Administrator, dem Dienstkonto des Auftrags die Berechtigung folgenden IAM-Rollen:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Ihr Administrator kann dem Dienstkonto des Jobs möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.

  14. Sie benötigen die für diese Anleitung erforderlichen Berechtigungen.

    Um die Berechtigungen zu erhalten, die Sie für diese Anleitung benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:

  15. Installieren Sie Nextflow:

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

    Die Ausgabe sollte in etwa so aussehen:

    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
    

Cloud Storage-Bucket erstellen

Cloud Storage-Bucket zum Speichern temporärer Aufgaben und Ausgaben erstellen aus der Nextflow-Pipeline beziehen, können Sie die Google Cloud Console oder die Befehlszeile verwenden.

Console

So erstellen Sie einen Cloud Storage-Bucket mit der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Buckets auf.

    Buckets aufrufen

  2. Klicken Sie auf Erstellen.

  3. Geben Sie auf der Seite Bucket erstellen Folgendes ein: einen global eindeutigen Namen für den Bucket.

  4. Klicken Sie auf Erstellen.

  5. Klicken Sie im Fenster Öffentlicher Zugriff wird verhindert auf Bestätigen.

gcloud

Verwenden Sie den Befehl gcloud storage buckets create, um mithilfe der Google Cloud CLI einen Cloud Storage-Bucket zu erstellen.

gcloud storage buckets create gs://BUCKET_NAME

Ersetzen Sie BUCKET_NAME durch einen global eindeutiger Name für den Bucket.

Wenn die Anfrage erfolgreich ist, sollte die Ausgabe in etwa so aussehen: Folgendes:

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

Nextflow konfigurieren

So konfigurieren Sie die Nextflow-Pipeline für die Ausführung unter Batch:

  1. Klonen Sie das Beispiel-Pipeline-Repository:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Wechseln Sie zum Ordner rnaseq-nf:

    cd rnaseq-nf
    
  3. Öffnen Sie die Datei nextflow.config.

    nano nextflow.config
    

    Die Datei sollte den folgenden Abschnitt gcb enthalten:

    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. Führen Sie im Abschnitt gcb die folgenden Schritte aus:

    1. Ersetzen Sie BUCKET_NAME durch den Namen des Cloud Storage-Bucket, den Sie in den vorherigen Schritten erstellt haben.

    2. Ersetzen Sie WORK_DIRECTORY durch den Namen einer neuen Ordner, in dem die Pipeline Logs und Ausgaben speichern kann.

      Geben Sie beispielsweise workDir ein.

    3. Ersetzen Sie REGION durch die Region, die verwendet werden soll.

      Geben Sie beispielsweise us-central1 ein.

    4. Fügen Sie nach dem Feld google.region die folgenden Felder hinzu:

      1. Fügen Sie das Feld google.project hinzu:

        google.project = 'PROJECT_ID'
        

        Ersetzen Sie PROJECT_ID durch die Projekt-ID des aktuellen Google Cloud-Projekts.

      2. Wenn Sie nicht das Compute Engine-Standarddienstkonto als Dienstkonto des Jobs verwenden, fügen Sie das Feld google.batch.serviceAccountEmail hinzu:

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        Ersetzen Sie SERVICE_ACCOUNT_EMAIL durch die E-Mail-Adresse. die Adresse des Dienstkontos des Auftrags, das Sie hierfür vorbereitet haben, .

  5. So speichern Sie Ihre Änderungen:

    1. Drücken Sie Control+S.

    2. Geben Sie Y ein.

    3. Drücken Sie Enter.

Pipeline ausführen

Führen Sie die Nextflow-Beispielpipeline mit der Befehlszeile aus:

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

Die Pipeline führt ein kleines Dataset mit den Einstellungen aus, die Sie in der vorherigen Schritten. Dieser Vorgang kann bis zu 10 Minuten dauern.

Nach Abschluss der Ausführung der Pipeline sollte die Ausgabe in etwa so aussehen:

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

Ausgaben der Pipeline ansehen

Nach Abschluss der Ausführung der Pipeline werden Ausgabedateien, Protokolle, Fehler oder temporäre Dateien in der Datei results/qc_report.html im Ordner WORK_DIRECTORY Ihres Cloud Storage-Buckets gespeichert.

Sie können die Ausgabedateien der Pipeline im Ordner WORK_DIRECTORY Ihres Cloud Storage-Buckets mit der Google Cloud Console oder der Befehlszeile prüfen.

Console

So prüfen Sie die Ausgabedateien der Pipeline in der Google Cloud Console: diese Schritte:

  1. Rufen Sie in der Google Cloud Console die Seite Buckets auf.

    Buckets aufrufen

  2. Klicken Sie in der Spalte Name auf den Namen des Buckets, den Sie im vorherigen Schritten.

  3. Öffnen Sie auf der Seite Bucket-Details den Ordner WORK_DIRECTORY.

Für jede einzelne Aufgabe, die der Workflow ausführt, gibt es einen Ordner. Jeder Ordner enthält die ausgeführten Befehle, Ausgabedateien und temporären Dateien, die von der Pipeline erstellt wurden.

gcloud

Verwenden Sie den Befehl gcloud storage ls, um die Ausgabedateien der Pipeline mit der gcloud CLI zu prüfen.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

Ersetzen Sie Folgendes:

  • BUCKET_NAME: der Name des Buckets, den Sie in den vorherigen Schritten erstellt haben.

  • WORK_DIRECTORY: das Verzeichnis, das Sie in der Datei nextflow.config angegeben haben.

In der Ausgabe wird für jede einzelne Aufgabe, die von der Pipeline ausgeführt wird, ein Ordner aufgelistet. Jeder Ordner enthält die ausgeführten Befehle, Ausgabedateien und temporäre Dateien, die von der Pipeline erstellt wurden.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten, indem Sie das aktuelle Projekt löschen.

Verwenden Sie zum Löschen des aktuellen Projekts die Google Cloud Console oder den gcloud CLI verwenden können.

Console

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Wenn Sie das aktuelle Projekt weiter verwenden möchten, löschen Sie das einzelne Projekt Ressourcen, die in dieser Anleitung verwendet werden.

Bucket löschen

Wenn Sie den in dieser Anleitung verwendeten Bucket nicht mehr benötigen, löschen Sie ihn.

Löschen Sie die Ausgabedateien im Bucket.

Nach Abschluss der Ausführung der Pipeline werden Ausgabedateien im Ordner WORK_DIRECTORY Ihres Cloud Storage-Buckets erstellt und gespeichert.

Wenn Sie die Cloud Storage-Kosten für das aktuelle Google Cloud-Konto senken möchten, können Sie den Ordner mit den Ausgabedateien der Pipeline über die Google Cloud Console oder die Befehlszeile löschen.

Console

Um den Ordner WORK_DIRECTORY und alle mithilfe der Methode Google Cloud Console führen Sie die folgenden Schritte aus:

  1. Rufen Sie in der Google Cloud Console die Seite Buckets auf.

    Buckets aufrufen

  2. Klicken Sie in der Spalte Name auf den Namen des Buckets, den Sie im vorherigen Schritten.

  3. Wählen Sie auf der Seite Bucket-Details die Zeile mit den WORK_DIRECTORY und gehen Sie dann so vor:

    1. Klicken Sie auf Löschen.

    2. Geben Sie zur Bestätigung DELETE ein und klicken Sie auf Löschen.

gcloud

Wenn Sie den Ordner WORK_DIRECTORY und alle Ausgabedateien mit der gcloud CLI aus Ihrem Cloud Storage-Bucket löschen möchten, verwenden Sie den Befehl gcloud storage rm mit dem Flag --recursive.

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

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name des Buckets, den Sie in den vorherigen Schritten angegeben haben.

  • WORK_DIRECTORY: Das Verzeichnis, in dem die in den vorherigen Schritten angegebenen Pipeline-Ausgabedateien gespeichert werden sollen.

Nächste Schritte