Exécuter DeepVariant

DeepVariant est un pipeline d'analyse qui exploite un réseau de neurones profond pour appeler des variantes génétiques à partir de données sur le séquençage de l'ADN nouvelle génération.

Cette page explique comment exécuter DeepVariant sur Google Cloud en utilisant des exemples de données. Vous allez exécuter DeepVariant sur une seule instance Compute Engine.

Objectifs

À la fin de ce tutoriel, vous saurez comment exécuter DeepVariant sur Google Cloud.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

  • Compute Engine

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activez l'API Compute Engine

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  7. Activez l'API Compute Engine

    Activer l'API

  8. Installez Google Cloud CLI.
  9. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  10. Conseil : Vous avez besoin d'une invite de commande ? Vous pouvez utiliser Cloud Shell. Cloud Shell est un environnement de ligne de commande qui inclut déjà Google Cloud CLI. Vous n'avez donc pas besoin de l'installer.

Créer une instance Compute Engine

Créez une instance Compute Engine à l'aide de la console Google Cloud ou de gcloud CLI pour exécuter DeepVariant.

Console

  1. Dans la console Google Cloud, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Choisissez un nom pour l'instance au format PROJECT_ID-deepvariant-run, où PROJECT_ID est l'ID de votre projet Google Cloud.
  4. Choisissez une région et une zone pour l'instance. Si vous ne devez pas impérativement exécuter l'instance à un emplacement spécifique, sélectionnez us-central1 (Iowa) pour la région et us-central1-a pour la zone.
  5. Dans le menu Type de machine, sélectionnez n1-standard-64 (64 vCPU, 240 Go de mémoire).
  6. Dans le menu Plate-forme du processeur, sélectionnez Intel Skylake ou version ultérieure.
  7. Dans la section Disque de démarrage, cliquez sur Modifier pour commencer à configurer le disque de démarrage.
  8. Dans l'onglet Images publiques, choisissez Ubuntu 20.04 LTS. Dans le menu Type de disque de démarrage, sélectionnez Disque persistant standard. Dans le champ Taille (Go), saisissez 300. Cliquez sur Sélectionner.
  9. Cliquez sur Créer pour créer l'instance.

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud
  • ZONE : zone dans laquelle votre instance est déployée. Une zone est un emplacement régional approximatif dans lequel votre instance et ses ressources sont conservées. Par exemple, us-west1-a est une zone de la région us-west. Si vous avez précédemment défini une zone par défaut à l'aide de gcloud config set compute/zone, la valeur de cette option remplace celle définie par défaut.

Patientez un court instant le temps que l'instance démarre. Une fois l'instance prête, elle est répertoriée sur la page Instances de VM avec une icône d'état verte.

Se connecter à l'instance

Vous pouvez vous connecter à l'instance à l'aide de la console Google Cloud ou de gcloud CLI:

Console

  1. Dans la console Google Cloud, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de l'instance que vous avez créée.

gcloud

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

Exécuter DeepVariant

Configurez votre environnement et exécutez DeepVariant sur l'instance Compute Engine créée :

  1. Installez 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. Configurez les variables d'environnement de DeepVariant en copiant et en collant les commandes suivantes dans votre environnement local :

    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. Créez la structure de répertoire local pour les répertoires de données d'entrée et de sortie :

    mkdir -p "${OUTPUT_DIR}"
    mkdir -p "${INPUT_DIR}"
    mkdir -p "${DATA_DIR}"
    
  4. Ce tutoriel utilise un génome HG003 de couverture 30x accessible au public et mappé à l'ensemble de référence GRCh38. Pour garantir une vitesse optimale, ajoutez l'option --regions chr20 lors de l'exécution de DeepVariant. Ainsi, le pipeline ne s'exécutera que sur le chromosome 20 (chr20).

    Les exemples de données ont été créés à l'aide du séquençage Illumina, mais DeepVariant accepte également ces autres types de données d'entrée :

    • Génome complet (Illumina) (WGS)
    • Exome (Illumina) (WES)
    • Génome entier (PacBio)
    • Hybride de génome entier PacBio et Illumina (HYBRID_PACBIO_ILLUMINA)

    Exécutez gsutil cp pour copier les données de test d'entrée du bucket Cloud Storage deepvariant dans les répertoires de l'instance que vous avez créée :

    # 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 est une application en conteneur stockée dans une image Docker prédéfinie dans Container Registry. Pour sortir l'image, exécutez la commande suivante :

    sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
    
  6. Pour démarrer DeepVariant, exécutez la commande suivante :

    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
    

    Le tableau suivant décrit les options transmises à la commande :

    Drapeau Description
    model_type DeepVariant accepte plusieurs types de données d'entrée. Ce tutoriel utilise le séquençage du génome entier (WSG).
    ref Emplacement du fichier de référence FASTA.
    reads Emplacement du fichier BAM d'entrée.
    output_vcf Emplacement des fichiers VCF en sortie.
    output_gvcf Emplacement des fichiers gVCF en sortie.
    regions (Facultatif) Liste des régions chromosomiques à traiter, séparées par des espaces. Les éléments individuels peuvent être des littéraux régionaux, tels que chr20:10-20, ou des chemins d'accès à des fichiers BED/BEDPE.
    num_shards Nombre de partitions à exécuter en parallèle. Pour des résultats optimaux, définissez la valeur de cette option sur le nombre de cœurs de la machine exécutant DeepVariant.
    intermediate_results_dir Option facultative spécifiant le répertoire des résultats intermédiaires des étapes "make_examples" et "call_variants". Une fois la commande terminée, les fichiers sont enregistrés dans votre répertoire local dans les formats suivants :
    dry_run Option facultative. Si la valeur est définie sur "true", les commandes sont imprimées au lieu d'être exécutées.
    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. Une fois l'exécution de DeepVariant terminée, les fichiers suivants apparaissent dans le répertoire deepvariant-run/output :

    • 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

    Exécutez la commande suivante pour répertorier les fichiers dans le répertoire de sortie, et vérifiez que les fichiers de sortie sont bien présents :

    ls $OUTPUT_DIR
    

Estimations de la durée d'exécution

Le tableau suivant indique les durées approximatives d'exécutions de DeepVariant à l'aide d'un échantillon de génome entier de couverture 30x dans un fichier BAM. Ces estimations n'incluent pas le temps nécessaire pour configurer l'instance et télécharger les données d'exemple depuis Cloud Storage.

Reportez-vous aux tarifs de Compute Engine pour connaître le tarif horaire. Pensez à utiliser des Spot VMs, qui reviennent nettement moins cher que les VM standards.

Type de machine Durée d'exécution en heures
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

Effectuer un nettoyage

Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes