Sentieon DNAseq ausführen

Auf dieser Seite wird erläutert, wie Sentieon DNAseq als Pipeline in Google Cloud ausgeführt wird. Mit der Pipeline erzielen Sie die gleichen Ergebnisse wie mit den GATK Best Practices, Version 3.7: Ausrichtung, Sortierung, Duplikatentfernung, BQSR (Base Quality Score Recalibration) und Variantenaufruf. Als Eingabeformate kommen FASTQ-Dateien oder ausgerichtete und sortierte BAM-Dateien infrage. Hinweis: Ein Großteil der in diesem Dokument verlinkten Seiten steht nur auf Englisch zur Verfügung.

Lernziele

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 dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

  • Compute Engine
  • Cloud Storage

Der Preisrechner kann eine Kostenschätzung anhand Ihrer voraussichtlichen Nutzung generieren. Neuen Cloud Platform-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. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  3. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  4. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  5. Cloud Life Sciences, Compute Engine, and Cloud Storage APIs aktivieren.

    Aktivieren Sie die APIs

  6. Installieren und initialisieren Sie das Cloud SDK.
  7. Aktualisieren und installieren Sie gcloud-Komponenten:
    gcloud components update &&
    gcloud components install beta
  8. Installieren Sie Git, um die erforderlichen Dateien herunterzuladen.

    Git herunterladen

  9. 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. Installieren Sie mithilfe von "pip" virtualenv, falls noch nicht geschehen:

    pip install virtualenv
    
  2. Erstellen Sie eine isolierte Python-Umgebung und installieren Sie Abhängigkeiten:

    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

Laden Sie die Beispieldateien herunter und legen Sie das aktuelle Verzeichnis fest:

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 "Sender bezahlt"-Buckets abgerechnet wird.
EMAIL Ihre E-Mail-Adresse

Pipeline ausführen

  1. Bearbeiten Sie im Verzeichnis sentieon-google-genomics die Datei examples/example.json und ersetzen Sie die Variablen BUCKET, REQUESTER_PROJECT, EMAIL und PROJECT_ID durch den relevanten Ressourcen aus Ihrem Google Cloud-Projekt hinzugefügt haben.

    {
      "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 die Variable PROJECT_ID in Ihrer Umgebung 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 ihrer 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:

"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 wird auch die Eingabe von durch Kommas getrennten BAM-Dateien unterstützt. Die Lesevorgänge in den BAM-Dateien sind nicht am Referenzgenom ausgerichtet. Sie beginnen in der Phase der Datendeduplizierung.

"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, indem Sie den Schlüssel NONPREEMPTIBLE_TRY auf false setzen.

"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. Mit dem Schlüssel READGROUP in der JSON-Eingabedatei können Sie eine andere Lesegruppe festlegen:

"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 in der Dokumentation des Broad Institute.

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, indem Sie den JSON-Schlüssel DEDUP festlegen:

"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, indem Sie den JSON-Schlüssel SENTIEON_VERSION so angeben:

"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

Zukünftige Updates funktionieren weiterhin in der Cloud Life Sciences API.

Bereinigen

Nach Abschluss der Anleitung können Sie die von Ihnen in Google Cloud erstellten Ressourcen bereinigen, 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 vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  1. Rufen Sie in der 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.