DeepVariant ausführen

DeepVariant ist eine Analyse-Pipeline, die in einem neuronalen Deep-Learning-Netzwerk genetische Varianten von DNA-Sequenzierungsdaten der nächsten Generation aufruft.

In dieser Anleitung wird die Ausführung von DeepVariant auf Google Cloud anhand von Beispieldaten erläutert. Sie führen DeepVariant auf einer einzelnen Compute Engine-Instanz aus.

Lernziele

Nach Abschluss dieser Anleitung können Sie DeepVariant in Google Cloud ausführen.

Kosten

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

  • Compute Engine

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. 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

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

  4. Compute Engine API aktivieren.

    Aktivieren Sie die API

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

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

  7. Compute Engine API aktivieren.

    Aktivieren Sie die API

  8. Installieren Sie die Google Cloud CLI.
  9. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  10. Tipp: Benötigen Sie eine Eingabeaufforderung? Sie können die Cloud Shell verwenden. Die Cloud Shell ist eine Befehlszeilenumgebung, die bereits die Google Cloud CLI enthält. Sie müssen sie also nicht installieren.

Compute Engine-Instanz erstellen

Erstellen Sie eine Compute Engine-Instanz mit der Google Cloud Console oder der gcloud CLI, um DeepVariant auszuführen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Die Seite VM-Instanzen aufrufen

  2. Klicken Sie auf Instanz erstellen.
  3. Wählen Sie einen Namen für die Instanz im Format PROJECT_ID-deepvariant-run aus, wobei PROJECT_ID die ID für Ihr Google Cloud-Projekt ist.
  4. Wählen Sie für die Instanz eine Region und eine Zone aus. Wenn Sie keinen bestimmten Grund haben, die Instanz an einem bestimmten Speicherort auszuführen, wählen Sie us-central1 (Iowa) für die Region und us-central1-a für die Zone aus.
  5. Wählen Sie im Menü Maschinentyp die Option n1-standard-64 (64 vCPUs, 240 GB Arbeitsspeicher) aus.
  6. Wählen Sie im Menü CPU-Plattform die Option Intel Skylake oder höher aus.
  7. Klicken Sie im Abschnitt Bootlaufwerk auf Ändern, um mit der Konfiguration des Bootlaufwerks zu beginnen.
  8. Wählen Sie auf dem Tab Öffentliche Images die Option Ubuntu 20.04 LTS aus. Wählen Sie im Menü Bootlaufwerktyp die Option Nichtflüchtiger Standardspeicher aus. Geben Sie im Feld Größe (GB) den Wert 300 ein. Klicken Sie auf Auswählen.
  9. Klicken Sie auf Erstellen, um die Instanz zu erstellen.

gcloud

gcloud compute instances create \
    PROJECT_ID-deepvariant-run \
    --project PROJECT_ID \
    --zone ZONE \
    --scopes "cloud-platform" \
    --image-project ubuntu-os-cloud \
    --image-family ubuntu-2004-lts \
    --machine-type n1-standard-64 \
    --min-cpu-platform "Intel Skylake" \
    --boot-disk-size=300GB

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • ZONE: die Zone, in der die Instanz bereitgestellt wird. Eine Zone ist ein ungefährer regionaler Standort, an dem sich die Instanz und ihre Ressourcen befinden. Beispielsweise ist us-west1-a eine Zone in der Region us-west. Wenn Sie zuvor mit gcloud config set compute/zone eine Standardzone festgelegt haben, überschreibt dieser Wert dieses Flag.

Warten Sie, bis die Instanz gestartet ist. Anschließend wird sie auf der Seite der VM-Instanzen mit einem grünen Statussymbol angezeigt.

Verbindung zur Instanz herstellen

Stellen Sie eine Verbindung zur Instanz über die Google Cloud Console oder die gcloud CLI her:

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Die Seite VM-Instanzen aufrufen

  2. Klicken Sie in der Liste der VM-Instanzen in der Zeile der von Ihnen erstellten Instanz auf SSH.

gcloud

gcloud compute ssh PROJECT_ID-deepvariant-run --zone ZONE

DeepVariant ausführen

Konfigurieren Sie Ihre Umgebung und führen Sie DeepVariant auf der von Ihnen erstellten Compute Engine-Instanz aus:

  1. Installieren Sie Docker Community Edition (CE):

    sudo apt-get -qq -y install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    sudo apt-get -qq -y update
    sudo apt-get -qq -y install docker-ce
    
  2. Konfigurieren Sie die DeepVariant-Umgebungsvariablen. Kopieren Sie dazu die folgenden Befehle und fügen Sie sie in Ihre lokale Umgebung ein:

    BIN_VERSION="1.2.0"
    BASE="${HOME}/deepvariant-run"
    INPUT_DIR="${BASE}/input"
    REF="GRCh38_no_alt_analysis_set.fasta"
    BAM="HG003.novaseq.pcr-free.35x.dedup.grch38_no_alt.chr20.bam"
    OUTPUT_DIR="${BASE}/output"
    DATA_DIR="${INPUT_DIR}/data"
    OUTPUT_VCF="HG003.output.vcf.gz"
    OUTPUT_GVCF="HG003.output.g.vcf.gz"
    
  3. Erstellen Sie die lokale Verzeichnisstruktur für das Eingabedatenverzeichnis und das Ausgabeverzeichnis:

    mkdir -p "${OUTPUT_DIR}"
    mkdir -p "${INPUT_DIR}"
    mkdir -p "${DATA_DIR}"
    
  4. In dieser Anleitung wird ein öffentlich verfügbares HG003-Genom mit 30-facher Abdeckung verwendet, das der GRCh38-Referenz zugeordnet ist. Wenn Sie die Laufzeit verkürzen möchten, fügen Sie beim Starten von DeepVariant das Flag --regions chr20 hinzu. Somit wird DeepVariant nur für Chromosom 20 (chr20) ausgeführt.

    Die Beispieldaten wurden mit Illumina-Sequenzierung erstellt. In DeepVariant werden aber auch die anderen Arten von Eingabedaten unterstützt:

    • Ganzes Genom (Ilumina) (WGS)
    • Exom (Illumina) (WES)
    • Ganzes Genom (PacBio)
    • Ganzes Genom PacBio und Illumina-Hybrid (HYBRID_PACBIO_ILLUMINA)

    Führen Sie gsutil cp aus, um die Eingabetestdaten aus dem Cloud Storage-Bucket deepvariant in die Verzeichnisse auf der von Ihnen erstellten Instanz zu kopieren:

    # Input BAM and BAI files:
    gsutil cp gs://deepvariant/case-study-testdata/"${BAM}" "${DATA_DIR}"
    gsutil cp gs://deepvariant/case-study-testdata/"${BAM}".bai "${DATA_DIR}"
    
    # GRCh38 reference FASTA file:
    FTPDIR=ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids
    curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz | gunzip > "${DATA_DIR}/${REF}"
    curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.fai > "${DATA_DIR}/${REF}".fai
    
  5. DeepVariant ist eine containerisierte Anwendung, die in einem vorkonfigurierten Docker-Image in Container Registry bereitgestellt wird. Führen Sie den folgenden Befehl aus, um das Image abzurufen:

    sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
    
  6. Mit dem folgenden Befehl starten Sie DeepVariant:

    sudo docker run \
        -v "${DATA_DIR}":"/input" \
        -v "${OUTPUT_DIR}:/output" \
        gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"  \
        /opt/deepvariant/bin/run_deepvariant \
        --model_type=WGS \
        --ref="/input/${REF}" \
        --reads="/input/${BAM}" \
        --output_vcf=/output/${OUTPUT_VCF} \
        --output_gvcf=/output/${OUTPUT_GVCF} \
        --regions chr20 \
        --num_shards=$(nproc) \
        --intermediate_results_dir /output/intermediate_results_dir
    

    In der folgenden Tabelle werden die Flags beschrieben, die an den Befehl übergeben werden:

    Fahne Beschreibung
    model_type DeepVariant unterstützt verschiedene Arten von Eingabedaten. In dieser Anleitung wird der WSG-Algorithmus (Whole Genome Sequencing) verwendet.
    ref Der Speicherort der FASTA-Referenzdatei.
    reads Der Speicherort der BAM-Eingabedatei.
    output_vcf Der Speicherort der VCF-Ausgabedateien.
    output_gvcf Der Speicherort der gVCF-Ausgabedateien.
    regions (Optional) Eine durch Leerzeichen getrennte Liste mit den zu verarbeitenden Chromosomenregionen. Einzelne Elemente können Regionsliterale sein, z. B. chr20:10-20 oder Pfade zu BED/BEDPE-Dateien.
    num_shards Die Anzahl von Shards, die parallel ausgeführt werden. Die besten Ergebnisse erzielen Sie, wenn Sie den Wert dieses Flags auf die Anzahl der Kerne auf der Maschine setzen, auf der DeepVariant ausgeführt wird.
    intermediate_results_dir Optionales Flag, um das Verzeichnis für die Zwischenergebnisse der Phasen make_examples und call_variants anzugeben. Nachdem der Befehl ausgeführt wurde, werden die Dateien in Ihrem lokalen Verzeichnis in den folgenden Formaten gespeichert:
    dry_run Optionales Flag. Wenn "true" festgelegt ist, werden die Befehle ausgegeben, anstatt ausgeführt zu werden.
    call_variants_output.tfrecord.gz
    gvcf.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    make_examples.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    
  7. Nachdem DeepVariant abgeschlossen ist, werden die folgenden Dateien in das Verzeichnis deepvariant-run/output ausgegeben:

    • HG003.output.g.vcf.gz
    • HG003.output.g.vcf.gz.tbi
    • HG003.output.vcf.gz
    • HG003.output.vcf.gz.tbi
    • HG003.output.visual_report.html

    Führen Sie den folgenden Befehl aus, um die Dateien im Ausgabeverzeichnis aufzulisten, und sehen Sie nach, ob die Ausgabedateien angezeigt werden:

    ls $OUTPUT_DIR
    

Laufzeitschätzungen

Die folgende Tabelle zeigt die ungefähre Laufzeit bei der Ausführung von DeepVariant mit einer 30x-Stichprobe des ganzen Genoms in einer BAM-Datei. Bei diesen Schätzungen wird nicht die Zeit berücksichtigt, die zum Einrichten der Instanz und Herunterladen von Beispieldaten aus Cloud Storage erforderlich ist.

Weitere Informationen zu den Preisen pro Stunde finden Sie unter Compute Engine-Preise. Prüfen Sie die Verwendung von Spot-VMs, die wesentlich günstiger sind als reguläre VMs.

Maschinentyp Laufzeit in Stunden
n1-standard-8 24.63
n1-standard-16 13.30
n1-standard-32 7.77
n1-standard-64 5.64
n1-standard-96 4.38

Bereinigen

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

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

So löschen Sie das Projekt:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte