Nextflow ausführen


Auf dieser Seite wird erläutert, wie Sie eine Nextflow-Pipeline in Google Cloud ausführen.

Die in dieser Anleitung verwendete Pipeline ist ein Proof of Concept für eine RNA-Seq-Pipeline, mit der die Nextflow-Nutzung in Google Cloud veranschaulicht werden soll.

Ziele

Nach Abschluss dieser Anleitung beherrschen Sie Folgendes:

  • Installieren Sie Nextflow in Cloud Shell.
  • Nextflow-Pipeline konfigurieren.
  • Pipeline mit Nextflow in Google Cloud ausführen.

Kosten

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

  • Compute Engine
  • 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.

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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

Cloud Storage-Bucket erstellen

Erstellen Sie einen eindeutig benannten Bucket. Folgen Sie dazu den Benennungsrichtlinien für Buckets. Der Bucket speichert während dieser Anleitung temporäre Arbeiten und Ausgabedateien. Aus Gründen der DNS-Kompatibilität funktioniert diese Anleitung nicht mit Bucket-Namen, die einen Unterstrich (_) enthalten.

Console

  1. Rufen Sie in der Google Cloud Console die Cloud Storage-Seite Browser auf:

    Browser aufrufen

  2. Klicken Sie auf Bucket erstellen.

  3. Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein.

  4. Klicken Sie auf Erstellen.

gcloud

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Führen Sie den Befehl gcloud storage buckets create aus:

    gcloud storage buckets create gs://BUCKET_NAME
    

    Ersetzen Sie BUCKET_NAME durch den Namen, den Sie Ihrem Bucket geben möchten. Beachten Sie dabei die Benennungsanforderungen. Beispiel: my-bucket

    Wenn die Anfrage erfolgreich ist, gibt der Befehl die folgende Meldung zurück:

    Creating gs://BUCKET_NAME/...
    

Dienstkonto erstellen und Rollen hinzufügen

Führen Sie die folgenden Schritte aus, um ein Dienstkonto zu erstellen und die folgenden Rollen für die Identitäts- und Zugriffsverwaltung hinzuzufügen:

  • Cloud Life Sciences-Workflows-Ausführer
  • Dienstkontonutzer
  • Service Usage-Nutzer
  • Storage-Objekt-Administrator

Console

So erstellen Sie ein Dienstkonto mit der Google Cloud Console:

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

    Zur Seite "Dienstkonten"

  2. Klicken Sie auf Dienstkonto erstellen.

  3. Geben Sie im Feld Name des Dienstkontos den Wert nextflow-service-account ein und klicken Sie auf Erstellen.

  4. Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen aus der Drop-down-Liste Rolle auswählen hinzu:

    • Cloud Life Sciences-Workflows-Ausführer
    • Dienstkontonutzer
    • Service Usage-Nutzer
    • Storage-Objekt-Administrator
  5. Klicken Sie auf Weiter und dann auf Fertig.

  6. Suchen Sie auf der Seite Dienstkonten das von Ihnen erstellte Dienstkonto. Klicken Sie in der Zeile des Dienstkontos auf die und anschließend auf Schlüssel verwalten.

  7. Klicken Sie auf der Seite Schlüssel auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.

  8. Wählen Sie als Schlüsseltyp JSON aus und klicken Sie auf Erstellen.

    Eine JSON-Datei mit Ihrem Schlüssel wird auf Ihren Computer heruntergeladen.

gcloud

Führen Sie die folgenden Schritte mit Cloud Shell aus:

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Legen Sie die Variablen fest, die beim Erstellen des Dienstkontos verwendet werden sollen. Ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID.

    export PROJECT=PROJECT_ID
    export SERVICE_ACCOUNT_NAME=nextflow-service-account
    export SERVICE_ACCOUNT_ADDRESS=${SERVICE_ACCOUNT_NAME}@${PROJECT}.iam.gserviceaccount.com
  3. Erstellen Sie das Dienstkonto.

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  4. Das Dienstkonto muss die folgenden IAM-Rollen enthalten:

    • roles/lifesciences.workflowsRunner
    • roles/iam.serviceAccountUser
    • roles/serviceusage.serviceUsageConsumer
    • roles/storage.objectAdmin

    Weisen Sie diese Rollen durch Ausführen folgender Befehle in Cloud Shell zu:

    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/lifesciences.workflowsRunner
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/iam.serviceAccountUser
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/serviceusage.serviceUsageConsumer
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/storage.objectAdmin

Anmeldedaten für Ihre Anwendung bereitstellen

Sie können Anmeldedaten zur Authentifizierung für Ihren Anwendungscode oder Ihre Befehle angeben. Legen Sie hierfür die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den Pfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält.

Folgende Schritte zeigen, wie Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS festlegen:

Console

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Wählen Sie im Cloud Shell-Menü Mehr die Option Datei hochladen und dann die JSON-Schlüsseldatei aus, die Sie erstellt haben. Die Datei wird in das Basisverzeichnis der Cloud Shell-Instanz hochgeladen.

  3. Bestätigen Sie, dass sich die hochgeladene Datei in Ihrem aktuellen Verzeichnis befindet, und bestätigen Sie den Dateinamen. Führen Sie dafür den folgenden Befehl aus:

    ls

  4. Legen Sie die Anmeldedaten fest und ersetzen Sie dabei KEY_FILENAME.json durch den Namen Ihrer Schlüsseldatei.

    export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/KEY_FILENAME.json

gcloud

Führen Sie die folgenden Schritte mit Cloud Shell aus:

  1. Cloud Shell öffnen

    Zu Cloud Shell

  2. Wählen Sie im Cloud Shell-Menü Mehr die Option Datei hochladen und dann die JSON-Schlüsseldatei aus, die Sie erstellt haben. Die Datei wird in das Basisverzeichnis der Cloud Shell-Instanz hochgeladen.

  3. Bestätigen Sie, dass sich die hochgeladene Datei in Ihrem aktuellen Verzeichnis befindet, und bestätigen Sie den Dateinamen. Führen Sie dafür den folgenden Befehl aus:

    ls

  4. Legen Sie die Datei mit dem privaten Schlüssel auf die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS fest:

    export SERVICE_ACCOUNT_KEY=${SERVICE_ACCOUNT_NAME}-private-key.json
    gcloud iam service-accounts keys create \
      --iam-account=${SERVICE_ACCOUNT_ADDRESS} \
      --key-file-type=json ${SERVICE_ACCOUNT_KEY}
    export SERVICE_ACCOUNT_KEY_FILE=${PWD}/${SERVICE_ACCOUNT_KEY}
    export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${SERVICE_ACCOUNT_KEY}

NextFlow in Cloud Shell installieren und konfigurieren

Damit Sie keine Software auf Ihrem Computer installieren müssen, führen Sie alle Terminalbefehle in dieser Anleitung in Cloud Shell aus.

  1. Falls noch nicht geschehen, öffnen Sie Cloud Shell.

    Zu Cloud Shell

  2. Führen Sie die folgenden Befehle aus, um Nextflow zu installieren:

    export NXF_VER=21.10.0
    export NXF_MODE=google
    curl https://get.nextflow.io | bash

    Wenn die Installation erfolgreich abgeschlossen wurde, wird folgende Meldung angezeigt:

        N E X T F L O W
    version 21.10.0 build 5430
    created 01-11-2020 15:14 UTC (10:14 EDT)
    cite doi:10.1038/nbt.3820
    http://nextflow.io
    
    Nextflow installation completed. Please note:
    ‐ the executable file `nextflow` has been created in the folder: DIRECTORY
    ‐ you may complete the installation by moving it to a directory in your $PATH
    
  3. Führen Sie den folgenden Befehl aus, um das Beispiel-Pipeline-Repository zu klonen. Das Repository enthält die auszuführende Pipeline und die von der Pipeline verwendeten Beispieldaten.

    git clone https://github.com/nextflow-io/rnaseq-nf.git
  4. Zum Konfigurieren von Nextflow führen Sie folgende Schritte aus:

    1. Wechseln Sie in den Ordner rnaseq-nf.

      cd rnaseq-nf
      git checkout v2.0

    2. Bearbeiten Sie die Datei nextflow.config mit einem beliebigen Texteditor und führen Sie die folgenden Aktualisierungen in dem Abschnitt mit der Bezeichnung gls aus:

      • Fügen Sie die Zeile google.project hinzu, falls es nicht vorhanden ist.
      • Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
      • Ändern Sie bei Bedarf den Wert von google.location. Dieser muss einer der derzeit verfügbaren Cloud Life Sciences API-Standorte sein.
      • Ändern Sie bei Bedarf den Wert von google.region. Er gibt die Region an, in der die Compute Engine-VMs gestartet werden. Siehe verfügbare Compute Engine-Regionen und -Zonen.
      • Ersetzen Sie BUCKET durch den zuvor erstellten Bucket-Namen.
      • Ersetzen Sie WORK_DIR durch den Namen des Ordners, der für Protokollierung und Ausgabe verwendet werden soll. Verwenden Sie einen neuen Verzeichnisnamen, der in Ihrem Bucket noch nicht vorhanden ist.
      gls {
         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-lifesciences'
         process.container = 'nextflow/rnaseq-nf:latest'
         workDir = 'gs://BUCKET/WORK_DIR'
         google.location = 'europe-west2'
         google.region  = 'europe-west1'
         google.project = 'PROJECT_ID'
      }
    3. Wechseln Sie zurück zum vorherigen Ordner.

      cd ..

Führen Sie die Pipeline mit Nextflow aus.

Führen Sie die Pipeline mit Nextflow aus. Nachdem die Pipeline gestartet wurde, wird sie bis zum Abschluss im Hintergrund ausgeführt. Es kann bis zu zehn Minuten dauern, bis die Pipeline abgeschlossen ist.

./nextflow run rnaseq-nf/main.nf -profile gls

Wenn die Pipeline abgeschlossen ist, wird folgende Meldung angezeigt:

N E X T F L O W  ~  version 21.10.0
Launching `rnaseq-nf/main.nf` [suspicious_mestorf] - revision: ef908c0bfd
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
executor >  google-lifesciences (4)
[db/2af640] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[a6/927725] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[59/438177] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/9743b9] process > MULTIQC                       [100%] 1 of 1 ✔
Done! Open the following report in your browser --> results/multiqc_report.html
Completed at: DATE TIME
Duration    : 10m
CPU hours   : 0.2
Succeeded   : 4

Ausgabe der Nextflow-Pipeline anzeigen lassen

Nach Abschluss der Pipeline können Sie die Ausgabe und alle Logs, Fehler, ausgeführten Befehle und temporären Dateien prüfen.

Die Pipeline speichert die endgültige Ausgabedatei results/qc_report.html im Cloud Storage-Bucket, den Sie in der Datei nextflow.config angegeben haben.

Führen Sie folgende Schritte aus, um einzelne Ausgabedateien der einzelnen Aufgaben und Zwischendateien zu prüfen:

Console

  1. Öffnen Sie in der Cloud Storage-Konsole die Seite Storage-Browser:

    Zum Cloud Storage Browser

  2. Rufen Sie BUCKET auf und gehen Sie zum WORK_DIR, das in der Datei nextflow.config angegeben ist.

  3. Für jede Aufgabe, die in der Pipeline ausgeführt wurde, gibt es einen Ordner.

  4. Der Ordner enthält die ausgeführten Befehle, die Ausgabedateien und die temporären Dateien, die während des Workflows verwendet wurden.

gcloud

  1. Öffnen Sie Cloud Shell, um die Ausgabedateien in Cloud Shell anzuzeigen:

    Zu Cloud Shell

  2. Führen Sie den folgenden Befehl aus, um die Ausgaben in Ihrem Cloud Storage-Bucket aufzulisten. Aktualisieren Sie BUCKET und WORK_DIR in die in der Datei nextflow.config angegebenen Variablen.

    gcloud storage ls gs://BUCKET/WORK_DIR
  3. In der Ausgabe wird für jede ausgeführte Aufgabe ein Ordner angezeigt. Listen Sie auch den Inhalt der nachfolgenden Unterverzeichnisse auf, damit Sie alle von der Pipeline erstellten Dateien sehen können. Aktualisieren Sie TASK_FOLDER, einen der Aufgabenordner, die aus dem vorherigen Befehl aufgelistet wurden.

    gcloud storage ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER

Sie können sich die Zwischendateien ansehen, die von der Pipeline erstellt wurden, und entscheiden, welche Sie behalten möchten. Alternativ können Sie die Dateien entfernen, um die mit Cloud Storage verbundenen Kosten zu reduzieren. Informationen zum Entfernen der Dateien finden Sie unter Zwischendateien in einem Cloud Storage-Bucket entfernen.

Fehlerbehebung

  • Informationen zu Problemen beim Ausführen der Pipeline finden Sie unter Cloud Life Sciences API – Fehlerbehebung.

  • Wenn Ihre Pipeline nicht erfolgreich ausgeführt werden konnte, können Sie die Logs der jeweiligen Aufgaben überprüfen. Sehen Sie sich hierzu die Logdateien in den einzelnen Ordnern in Cloud Storage an, z. B. .command.err, .command.log, .command.out und so weiter.

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.

Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr verwenden und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.

Zwischendateien im Cloud Storage-Bucket löschen

Die Pipeline speichert während der Ausführung Zwischendateien in gs://BUCKET/WORK_DIR. Sie können die Dateien nach Abschluss des Workflows entfernen, um die Kosten für Cloud Storage zu reduzieren.

Führen Sie folgenden Befehl aus, um den im Verzeichnis verwendeten Speicherplatz anzuzeigen:

gcloud storage du gs://BUCKET/WORK_DIR --readable-sizes --summarize

Führen Sie die folgenden Schritte aus, um Dateien aus WORK_DIR zu entfernen:

Console

  1. Öffnen Sie in der Cloud Storage-Konsole die Seite Storage-Browser:

    Zum Cloud Storage Browser

  2. Rufen Sie BUCKET auf und gehen Sie zum WORK_DIR, das in der Datei nextflow.config angegeben ist.

  3. Durchsuchen Sie die Unterordner und löschen Sie alle nicht benötigten Dateien oder Verzeichnisse. Wenn Sie alle Dateien löschen möchten, löschen Sie das gesamte WORK_DIR.

gcloud

  1. Öffnen Sie Cloud Shell und führen Sie Folgendes aus:

    Zu Cloud Shell

  2. Führen Sie folgenden Befehl aus, um die Zwischendateien im Verzeichnis WORK_DIR zu entfernen:

    gcloud storage rm gs://BUCKET/WORK_DIR/**

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  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.

Nächste Schritte

Auf den folgenden Seiten finden Sie weitere Hintergrundinformationen, Dokumentationen und Unterstützung zur Verwendung von Nextflow: