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.
Hinweise
- 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.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta - Installieren Sie Git, um die erforderlichen Dateien herunterzuladen.
-
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
Wenn Sie virtualenv nicht haben, führen Sie den folgenden Befehl aus, um es mit pip zu installieren:
pip install virtualenv
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
Bearbeiten Sie im Verzeichnis
sentieon-google-genomics
die Dateiexamples/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" }
Legen Sie in Ihrer Umgebung die Variable PROJECT_ID fest:
export PROJECT_ID=PROJECT_ID
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.
Empfohlene Konfiguration
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:
|
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:
- Rufen Sie in der Google Cloud Console die Seite „Projekte“ auf.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf Delete project (Projekt löschen) .
- 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.