Sentieon® DNASeq® ausführen

Auf dieser Seite wird erklärt, wie Sie Sentieon® DNASeq® als Google Cloud-Pipeline für sekundäre Genomanalysen ausführen. Die Pipeline entspricht den folgenden Ergebnissen aus den Best Practices des Genome Analysis Toolkit (GATK) Version 3.7:

  • Ausrichtung
  • Sortieren
  • Entfernen von Duplikaten
  • Rekalibrierung der Qualitätskennzahlen der Basisaufrufe (Base Quality Score Recalibration, BQSR)
  • Variantenaufrufe

Folgende Eingabeformate sind möglich:

  • FASTQ-Dateien
  • Ausgerichtete und sortierte BAM-Dateien

Ziele

Nach Abschluss dieser Anleitung beherrschen Sie Folgendes:

  • Mit Sentieon® DNASeq® eine Pipeline in Google Cloud ausführen
  • Konfigurationsdateien für verschiedene Sentieon® DNASeq®-Anwendungsfälle schreiben

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.

Hinweis

  1. Installieren Sie Python 2.7 oder höher. Weitere Informationen zur Einrichtung der Python-Entwicklungsumgebung, z. B. zur Installation von "pip" auf Ihrem System, finden Sie im Einrichtungshandbuch für die Python-Entwicklungsumgebung.
  2. 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.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

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

    Enable the APIs

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

    Go to project selector

  7. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

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

    Enable the APIs

  9. Install the Google Cloud CLI.
  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  12. Installieren Sie Git, um die erforderlichen Dateien herunterzuladen.

    Git herunterladen

  13. In Compute Engine sind standardmäßig Ressourcenkontingente festgelegt, um eine versehentliche Nutzung zu verhindern. Wenn Sie die Kontingente erhöhen, können Sie mehr virtuelle Maschinen gleichzeitig starten, sodass Ihnen ein höherer Durchsatz und eine kürzere Bearbeitungszeit zugutekommen.

    Damit in dieser Anleitung die besten Ergebnisse erzielt werden, sollten Sie zusätzliche Kontingente anfordern, die über die Standardwerte Ihres Projekts hinausgehen. Empfehlungen für Kontingenterhöhungen können Sie der folgenden Liste entnehmen. Dort werden auch die zum Ausführen dieser Anleitung minimal erforderlichen Kontingente angegeben. Fordern Sie Ihre Kontingente in der Region us-central1 an:

    • CPUs: 64
    • Nichtflüchtiger Standardspeicher (GB): 375

    Sie können die anderen Felder für die Kontingentanforderung leer lassen, um die jeweiligen Kontingentwerte beizubehalten.

Sentieon®-Bewertungslizenz

Wenn Sie diese Pipeline verwenden, gewährt Sentieon® Ihnen automatisch eine kostenlose zweiwöchige Evaluierungslizenz für seine Software zur Verwendung in Google Cloud. Geben Sie bei der Konfiguration der Pipeline Ihre E-Mail-Adresse in das Feld EMAIL ein, um die Lizenz zu erhalten. Weitere Informationen zum Festlegen dieses Felds finden Sie unter Informationen zum Eingabeformat.

Wenn Sie Sentieon® auch nach Ablauf der Evaluierungslizenz verwenden möchten, schreiben Sie eine E-Mail an support@sentieon.com.

Lokale Umgebung einrichten und erforderliche Komponenten installieren

  1. Wenn Sie virtualenv nicht haben, führen Sie den folgenden Befehl aus, um es mit pip zu installieren:

    pip install virtualenv
  2. Führen Sie den folgenden Befehl aus, um eine isolierte Python-Umgebung zu erstellen und Abhängigkeiten zu installieren:

    virtualenv env
    source env/bin/activate
    pip install --upgrade \
        pyyaml \
        google-api-python-client \
        google-auth \
        google-cloud-storage \
        google-auth-httplib2

Pipeline-Skript herunterladen

Führen Sie den folgenden Befehl aus, um die Beispieldateien herunterzuladen und Ihr aktuelles Verzeichnis festzulegen:

git clone https://github.com/sentieon/sentieon-google-genomics.git
cd sentieon-google-genomics

Informationen zum Eingabeformat

Für die Pipeline werden in einer JSON-Datei angegebene Parameter als Eingabe verwendet.

Im heruntergeladenen Repository befindet sich eine examples/example.json-Datei mit folgendem Inhalt:

{
  "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
  "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
  "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
  "OUTPUT_BUCKET": "gs://BUCKET",
  "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
  "PROJECT_ID": "PROJECT_ID"
  "REQUESTER_PROJECT": "PROJECT_ID",
  "EMAIL": "YOUR_EMAIL_HERE"
}

In der folgenden Tabelle werden die JSON-Schlüssel in der Datei beschrieben:

JSON-Schlüssel Beschreibung
FQ1 Das erste Paar von Lesevorgängen in der FASTQ-Eingabedatei.
FQ2 Das zweite Paar von Lesevorgängen in der FASTQ-Eingabedatei.
BAM Die BAM-Eingabedatei, falls vorhanden.
REF Das Referenzgenom. Falls festgelegt, wird angenommen, dass die FASTQ-/BAM-Indexdateien vorhanden sind.
OUTPUT_BUCKET Der Bucket und das Verzeichnis zum Speichern der von der Pipeline ausgegebenen Daten.
ZONES Eine durch Kommas getrennte Liste von Google Cloud-Zonen, die für den Worker-Knoten verwendet werden sollen.
PROJECT_ID Ihre Google Cloud-Projekt-ID.
REQUESTER_PROJECT Ein Projekt, das bei der Übertragung von Daten aus den Buckets "Anforderer bezahlt" in Rechnung gestellt wird.
EMAIL Ihre E-Mail-Adresse

Pipeline ausführen

  1. Bearbeiten Sie im Verzeichnis sentieon-google-genomics die Datei examples/example.json. Ersetzen Sie dabei die Variablen BUCKET, REQUESTER_PROJECT, EMAIL und PROJECT_ID durch die relevanten Ressourcen aus dem Google Cloud-Projekt:

    {
      "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
      "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
      "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
      "OUTPUT_BUCKET": "gs://BUCKET",
      "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
      "PROJECT_ID": "PROJECT_ID",
      "REQUESTER_PROJECT": "PROJECT_ID",
      "EMAIL": "EMAIL_ADDRESS"
    }
  2. Legen Sie in Ihrer Umgebung die Variable PROJECT_ID fest:

    export PROJECT_ID=PROJECT_ID

  3. Führen Sie die DNASeq®-Pipeline mit dem folgenden Befehl für ein kleines Test-Dataset aus, das durch die Eingaben in der Konfigurationsdatei identifiziert wird. Vor dem Starten der Pipeline prüft das Skript standardmäßig, ob die Eingabedateien im Cloud Storage-Bucket vorhanden sind:

    python runner/sentieon_runner.py --requester_project $PROJECT_ID examples/example.json

Wenn Sie mehrere Versuche auf Abruf angegeben haben, wird die Pipeline bei jeder vorzeitigen Beendigung der zugehörigen Instanzen neu gestartet. Nach Abschluss der Pipeline wird eine Nachricht an die Konsole ausgegeben, in der angegeben ist, ob die Pipeline erfolgreich ausgeführt wurde oder fehlgeschlagen ist.

In den meisten Situationen empfiehlt sich die folgende Konfiguration für optimale Bearbeitungszeiten und Kosten. Mit dieser Konfiguration dauert die Ausführung eines 30x-Humangenoms etwa zwei Stunden und kostet ca. 1,25 $. Die Ausführung eines gesamten Humanexoms dauert ca. 45 Minuten und kostet rund 0,35 $. Bei beiden Schätzungen wird von einer unterbrechungsfreien Ausführung der Instanzen ausgegangen.

{
  "FQ1": "gs://my-bucket/sample1_1.fastq.gz",
  "FQ2": "gs://my-bucket/sample1_2.fastq.gz",
  "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
  "OUTPUT_BUCKET": "gs://BUCKET",
  "BQSR_SITES": "gs://sentieon-test/pipeline_test/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/1000G_phase1.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz",
  "DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz",
  "PREEMPTIBLE_TRIES": "2",
  "NONPREEMPTIBLE_TRY": true,
  "STREAM_INPUT": "True",
  "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
  "PROJECT_ID": "PROJECT_ID",
  "EMAIL": "EMAIL_ADDRESS"
}

Zusätzliche Optionen

Pipelines können mit den folgenden zusätzlichen Optionen angepasst werden.

Eingabedatei-Optionen

Die Pipeline unterstützt mehrere durch Kommas getrennte FASTQ-Dateien als Eingabe, wie die folgende Konfiguration zeigt:

"FQ1": "gs://my-bucket/s1_prep1_1.fastq.gz,gs://my-bucket/s1_prep2_1.fastq.gz",
"FQ2": "gs://my-bucket/s1_prep1_2.fastq.gz,gs://my-bucket/s1_prep2_2.fastq.gz",

Mit dem JSON-Schlüssel BAM unterstützt die Pipeline die Eingabe von durch Kommas getrennten BAM-Dateien. Die Lesevorgänge in den BAM-Dateien sind nicht am Referenzgenom ausgerichtet. Sie beginnen in der Phase der Datendeduplizierung. Das folgende Beispiel zeigt eine Konfiguration mit zwei BAM-Dateien als Eingabe:

"BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"

Gesamtexom-Daten oder große Datasets konfigurieren

Die Einstellungen der empfohlenen Konfiguration sind für Proben von Gesamtgenomen optimiert, die mit einer durchschnittlich 30-fachen Abdeckung sequenziert wurden. Wenn Ihre Dateien wesentlich kleiner oder größer als die üblichen Gesamtgenom-Datasets sind, können Sie der Instanz weniger oder mehr Ressourcen zur Verfügung stellen. Mit den folgenden Einstellungen erzielen Sie die besten Ergebnisse bei großen Datasets:

{
  "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz",
  "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz",
  "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa",
  "OUTPUT_BUCKET": "gs://BUCKET",
  "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f",
  "PROJECT_ID": "PROJECT_ID",
  "EMAIL": "EMAIL_ADDRESS",
  "DISK_SIZE": 600,
  "MACHINE_TYPE": "n1-highcpu-64",
  "CPU_PLATFORM": "Intel Broadwell"
}

In der folgenden Tabelle werden die verwendeten Einstellungen beschrieben:

JSON-Schlüssel Beschreibung
DISK_SIZE Für den Worker-Knoten verfügbarer SSD-Speicherplatz.
MACHINE_TYPE Der Typ der virtuellen Maschine in Compute Engine, der verwendet werden soll. Die Standardeinstellung ist n1-standard-1.
CPU_PLATFORM Die abzufragende CPU-Plattform. Muss ein gültiger Compute Engine-CPU-Plattformname sein (z. B. "Intel Skylake").

Instanzen auf Abruf

Sie können in Ihrer Pipeline Instanzen auf Abruf verwenden. Legen Sie dafür den JSON-Schlüssel PREEMPTIBLE_TRIES fest.

Wenn alle Versuche auf Abruf ausgeschöpft sind oder der JSON-Schlüssel NONPREEMPTIBLE_TRY auf 0 gesetzt ist, versucht der Runner standardmäßig, die Pipeline mit einer Standardinstanz auszuführen. Sie können dieses Verhalten deaktivieren. Setzen Sie dazu den Schlüssel NONPREEMPTIBLE_TRY auf false, wie in der folgenden Konfiguration gezeigt:

"PREEMPTIBLE_TRIES": 2,
"NONPREEMPTIBLE_TRY": false

In der folgenden Tabelle werden die verwendeten Einstellungen beschrieben:

JSON-Schlüssel Beschreibung
PREEMPTIBLE_TRIES Anzahl der Versuche, die Pipeline mit Instanzen auf Abruf auszuführen.
NONPREEMPTIBLE_TRY Wenn alle Versuche auf Abruf ausgeschöpft sind, wird versucht, die Pipeline mit einer Standardinstanz auszuführen.

Lesegruppen

Lesegruppen werden hinzugefügt, wenn FASTQ-Dateien mit Sentieon® BWA an einem Referenzgenom ausgerichtet werden. Sie können mehrere kommagetrennte Lesegruppen angeben. Die Anzahl der Lesegruppen muss mit der Anzahl der FASTQ-Eingabedateien übereinstimmen. Die Standardlesegruppe ist @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA. Sie können mit dem Schlüssel READGROUP in der JSON-Eingabedatei eine andere Lesegruppe festlegen, wie in der folgenden Konfiguration gezeigt:

"READGROUP": "@RG\\tID:my-rgid-1\\tSM:my-sm\\tPL:ILLUMINA,@RG\\tID:my-rgid-2\\tSM:my-sm\\tPL:ILLUMINA"

In der folgenden Tabelle wird die verwendete Einstellung beschrieben:

JSON-Schlüssel Beschreibung
READGROUP Lesegruppe, die Beispielmetadaten enthält.

Weitere Informationen zu Lesegruppen finden Sie unter Lesegruppen.

Eingaben aus Cloud Storage streamen

Sie können FASTQ-Eingabedateien direkt aus Cloud Storage streamen, wodurch sich die Gesamtlaufzeit der Pipeline reduziert. Setzen Sie dazu den JSON-Schlüssel STREAM_INPUT auf True:

"STREAM_INPUT": "True"

In der folgenden Tabelle wird die verwendete Einstellung beschrieben:

JSON-Schlüssel Beschreibung
STREAM_INPUT Legt fest, ob FASTQ-Eingabedateien direkt aus Cloud Storage gestreamt werden.

Duplikate markieren

Standardmäßig werden in der Pipeline doppelte Lesevorgänge aus BAM-Dateien entfernt. Sie können dieses Verhalten ändern. Legen Sie dazu den JSON-Schlüssel DEDUP fest, wie in der folgenden Konfiguration gezeigt:

"DEDUP": "markdup"

In der folgenden Tabelle wird die verwendete Einstellung beschrieben:

JSON-Schlüssel Beschreibung
DEDUP Verhalten beim Markieren von Duplikaten.
Gültige Werte:
  • In der Standardkonfiguration werden Lesevorgänge entfernt, die als Duplikate markiert sind.
  • Durch markdup werden Duplikate markiert, jedoch nicht entfernt.
  • Durch nodup wird die Markierung von Duplikaten übersprungen.

Rekalibrierung der Qualitätskennzahlen der Basisaufrufe (Base Quality Score Recalibration, BQSR) und bekannte Websites

BQSR erfordert die Angabe bekannter Bereiche genetischer Variation. Diese Phase der Pipeline wird standardmäßig übersprungen. Sie können BQSR jedoch aktivieren, indem Sie bekannte Websites mit dem JSON-Schlüssel BQSR_SITES angeben. Falls angegeben, können die Ausgabevarianten während des Variantenaufrufs mithilfe einer DBSNP-Datei mit Anmerkungen versehen werden.

"BQSR_SITES": "gs://my-bucket/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://my-bucket/reference/1000G_phase1.indels.b37.vcf.gz,gs://my-bucket/reference/dbsnp_138.b37.vcf.gz",
"DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz"

In der folgenden Tabelle werden die verwendeten Einstellungen beschrieben:

JSON-Schlüssel Beschreibung
BSQR_SITES Aktiviert BQSR und verwendet eine durch Kommas getrennte Liste der bereitgestellten Dateien als bekannte Websites.
DBSNP Beim Aufruf von Varianten verwendete dbSNP-Datei.

Intervalle

Für einige Anwendungsfälle, z. B. die gezielte Sequenzierung oder die Sequenzierung gesamter Exome, ist nur ein Teil des Genoms von Interesse. In diesen Fällen kann durch das Bereitstellen einer Datei mit Zielintervallen die Verarbeitung beschleunigt werden. Sie können Intervalle mit den JSON-Schlüsseln INTERVAL_FILE und INTERVAL verwenden:

"INTERVAL_FILE": "gs://my-bucket/capture-targets.bed",
"INTERVAL": "9:80331190-80646365"

In der folgenden Tabelle werden die verwendeten Einstellungen beschrieben:

JSON-Schlüssel Beschreibung
INTERVAL_FILE Datei, die zu verarbeitende genomische Intervalle enthält.
INTERVAL String, der ein zu verarbeitendes genomisches Intervall enthält.

Ausgabeoptionen

Standardmäßig gibt die Pipeline eine vorverarbeitete BAM-Datei, Messwerte zur Qualitätskontrolle sowie Variantenaufrufe aus. Sie können jede dieser Ausgaben mit den JSON-Schlüsseln NO_BAM_OUTPUT, NO_METRICS und NO_HAPLOTYPER deaktivieren. Wenn das Argument NO_HAPLOTYPER nicht angegeben wurde oder NULL ist, können Sie mit dem JSON-Schlüssel GVCF_OUTPUT Variantenaufrufe im gVCF-Format statt im VCF-Format erstellen.

"NO_BAM_OUTPUT": "true",
"NO_METRICS": "true",
"NO_HAPLOTYPER": "true",
"GVCF_OUTPUT": "true",

In der folgenden Tabelle werden die verwendeten Einstellungen beschrieben:

JSON-Schlüssel Beschreibung
NO_BAM_OUTPUT Legt fest, ob eine vorverarbeitete BAM-Datei ausgegeben wird.
NO_METRICS Legt fest, ob Dateimesswerte ausgegeben werden.
NO_HAPLOTYPER Legt fest, ob Variantenaufrufe ausgegeben werden.
GVCF_OUTPUT Legt fest, ob Variantenaufrufe im gVCF-Format ausgegeben werden.

Sentieon® DNASeq®-Versionen

Sie können in der Cloud Life Sciences API jede neue Version des Sentieon® DNASeq®-Softwarepakets verwenden. Geben Sie dazu den JSON-Schlüssel SENTIEON_VERSION so an:

"SENTIEON_VERSION": "201808.08"

Die folgenden Versionen sind gültig:

  • 201711.01
  • 201711.02
  • 201711.03
  • 201711.04
  • 201711.05
  • 201808
  • 201808.01
  • 201808.03
  • 201808.05
  • 201808.06
  • 201808.07
  • 201808.08

Bereinigen

Nach Abschluss der Anleitung können Sie die von Ihnen in Google Cloud erstellten Ressourcen entfernen, damit Ihnen diese nicht weiter in Rechnung gestellt werden. In den folgenden Abschnitten wird beschrieben, wie Sie diese Ressourcen löschen oder deaktivieren.

Projekt löschen

Am einfachsten verhindern Sie weitere Kosten, indem Sie das für die Anleitung verwendete Projekt löschen.

So löschen Sie das Projekt:

  1. Rufen Sie in der Google Cloud Console die Seite „Projekte“ auf.

    Zur Seite "Projekte"

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf Delete project (Projekt löschen) Klicken Sie auf das Kästchen neben dem Projektnamen und dann auf "Delete project" (Projekt löschen)..
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Weitere Informationen

  • Bei Fragen zur Pipeline oder bei Problemen können Sie eine E-Mail an support@sentieon.com senden.