Ejecuta DeepVariant

DeepVariant es una canalización de análisis que utiliza una red neuronal profunda para detectar variantes genéticas a partir de datos de secuenciación de ADN de última generación.

En esta página, se explica cómo ejecutar DeepVariant en Google Cloud con una sola instancia de Compute Engine.

Hay configuraciones más complejas disponibles en el repositorio de DeepVariant en GitHub. Por ejemplo, puedes ejecutar DeepVariant con varias instancias. Estas variaciones proporcionan mejoras en la velocidad de procesamiento y reducen los costos.

La ejecución de DeepVariant consta de tres etapas:

  1. Crear ejemplos: DeepVariant procesa previamente los datos de entrada y guarda ejemplos de los datos en un formato interno de TensorFlow. Puedes ejecutar esta etapa en paralelo, lo cual significa que todos los fragmentos de entrada se procesan de forma independiente.

  2. Detectar variantes: DeepVariant ejecuta una red neuronal profunda que realiza inferencias a partir de los ejemplos y las guarda en archivos compartidos en un formato interno de TensorFlow.

  3. Hacer un procesamiento posterior de las variantes: DeepVariant convierte las variantes del formato interno de TensorFlow a archivos VCF o gVCF. Esta etapa se ejecuta en un solo subproceso.

En este instructivo, se ejecutan todas estas etapas con una sola instancia. Las primeras dos etapas (hacer ejemplos y detectar variantes) pueden beneficiarse de la paralelización en varios núcleos, pero la tercera (hacer un procesamiento posterior de las variantes) no puede hacerlo, ya que se ejecuta en un solo subproceso.

Objetivos

Después de completar el instructivo, sabrás cómo realizar la siguiente actividad:

  • Ejecutar DeepVariant en Google Cloud

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

  • Compute Engine

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Los usuarios nuevos de Cloud Platform pueden ser aptos para una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En GCP Console, en la página de selección de proyecto, selecciona o crea un proyecto de GCP.

    Ir a la página de selección de proyecto

  3. Asegúrate de tener habilitada la facturación para tu proyecto de Google Cloud Platform. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita lasCompute EngineAPI.

    Habilita lasAPI

  5. Instala e inicializa el SDK de Cloud.
  6. Sugerencia: ¿Necesitas un símbolo del sistema? Puedes usar Google Cloud Shell. Es un entorno de línea de comandos que incluye el SDK de Google Cloud, por lo que no es necesario que lo instales.

Crea una instancia de Compute Engine

Antes de ejecutar DeepVariant, debes crear una instancia de Compute Engine en la que se ejecutará. Puedes crear una instancia de máquina virtual Linux en Compute Engine con Google Cloud Console o la herramienta de línea de comandos de gcloud.

Console

  1. En Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. Elige un Nombre para la instancia en el formato PROJECT_ID-deepvariant-run, donde PROJECT_ID es el ID de tu proyecto de Google Cloud.
  4. Elige una Región y una Zona para la instancia. A menos que tengas un motivo específico para ejecutar la instancia en una ubicación determinada, selecciona us-central1 (Iowa) como Región y us-central1-a como Zona.
  5. En el menú Tipo de máquina, selecciona n1-standard-64 (64 CPU virtuales, 240 GB de memoria).
  6. En el menú Plataforma de CPU, selecciona Intel Skylake o una versión posterior.
  7. En la sección Disco de arranque, haz clic en Cambiar para configurar el disco de arranque.
  8. En la pestaña Imágenes de SO, elige Google Drawfork Ubuntu 16.04 LTS. En el menú Tipo de disco de arranque, selecciona Disco persistente estándar. En el campo Tamaño (GB), ingresa 300. Haz clic en Seleccionar.
  9. Haz clic en Crear para crear la instancia.

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-1604-lts \
    --machine-type n1-standard-64 \
    --min-cpu-platform "Intel Skylake" \
    --boot-disk-size=300GB

Donde:

  • PROJECT_ID es el ID de tu proyecto de Google Cloud.
  • ZONE es la zona en la que se implementa tu instancia. Una zona es una ubicación regional aproximada en la que residen tu instancia y sus recursos. Por ejemplo, us-west1-a es una zona en la región us-west. Si anteriormente estableciste una zona predeterminada con gcloud config set compute/zone, el valor de esta marca anulará el valor predeterminado.

La instancia tardará unos momentos en iniciarse. Cuando esté lista, aparecerá en la página de Instancias de VM con un ícono de estado verde.

Conéctate a la instancia

Puedes conectarte a la instancia con Cloud Console o la herramienta gcloud:

Console

  1. En Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. En la lista de instancias de máquinas virtuales, haz clic en SSH en la fila de la instancia que acabas de crear.

gcloud

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

Ejecuta DeepVariant

Para configurar tu entorno y ejecutar DeepVariant, completa los siguientes pasos en la instancia de Compute Engine que creaste:

  1. Para instalar la edición de comunidad de Docker (CE), ejecuta los siguientes comandos:

    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. Para configurar las variables de entorno de DeepVariant, copia y pega los siguientes comandos:

    BIN_VERSION="0.9.0"
    BASE="${HOME}/deepvariant-run"
    INPUT_DIR="${BASE}/input"
    REF="hs37d5.fa.gz"
    BAM="HG002_NIST_150bp_chr20_downsampled_30x.bam"
    OUTPUT_DIR="${BASE}/output"
    DATA_DIR="${INPUT_DIR}/data"
    OUTPUT_VCF="HG002.output.vcf.gz"
    OUTPUT_GVCF="HG002.output.g.vcf.gz"
    
  3. Crea la estructura de directorios local para el directorio de datos de entrada y el de salida:

    mkdir -p "${OUTPUT_DIR}"
    mkdir -p "${INPUT_DIR}"
    mkdir -p "${DATA_DIR}"
    
  4. En este instructivo, se usa un genoma HG002 disponible públicamente con una cobertura de 30 veces mapeado con la referencia de GRCh37. Sin embargo, para garantizar un entorno de ejecución más rápido, agregarás la marca --regions 20 cuando ejecutes DeepVariant para que esta herramienta solo se ejecute en el cromosoma 20 (chr20).

    Los datos de muestra se crearon con la secuencia de Illumina, pero DeepVariant también admite los siguientes tipos de datos de entrada:

    • Genoma completo (Illumina) (WGS)
    • Exoma (Illumina) (WES)
    • Genoma completo (PacBio)

    Con el comando gsutil cp, copia los datos de prueba de entrada del depósito de Cloud Storage deepvariant a los directorios de la instancia que creaste en el paso anterior:

    # Input BAM and BAI files:
    gsutil cp gs://deepvariant/performance-testdata/"${BAM}" "${DATA_DIR}"
    gsutil cp gs://deepvariant/performance-testdata/"${BAM}".bai "${DATA_DIR}"
    
    # GRCh37 reference FASTA file:
    gsutil cp gs://deepvariant/case-study-testdata/"${REF}"* "${DATA_DIR}"
    
  5. DeepVariant es una aplicación en contenedores montada en una imagen prediseñada de Docker en Container Registry. Para extraer la imagen, ejecuta el siguiente comando:

    sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
    
  6. Ejecuta el siguiente comando para iniciar DeepVariant. El tiempo de ejecución total del comando es de aproximadamente ocho minutos.

    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 20 \
        --num_shards=$(nproc)
    

    En la siguiente tabla, se describen las marcas que se pasan en el comando:

    Marca Descripción
    model_type DeepVariant admite varios tipos diferentes de datos de entrada. En este instructivo, se usa la Secuenciación del genoma completo (WSG).
    ref La ubicación del archivo FASTA de referencia.
    reads La ubicación del archivo BAM de entrada.
    output_vcf La ubicación de los archivos VCF de salida.
    output_gvcf La ubicación de los archivos gVCF de salida.
    regions Una lista separada por comas de las regiones cromosómicas que se deben procesar (opcional). Cada elemento puede ser un literal de región, como chr20:10-20 o rutas de acceso a archivos BED/BEDPE.
    num_shards La cantidad de fragmentos que se ejecutarán en paralelo. Para obtener mejores resultados, establece el valor de esta marca en la cantidad de núcleos de la máquina en la que se ejecuta DeepVariant.

    Si el comando comienza a ejecutarse correctamente, aparecerá un mensaje similar al siguiente:

    ***** Running the command:*****
    time seq 0 63 | parallel
    -k
    --line-buffer /opt/deepvariant/bin/make_examples
    --mode calling
    --ref "/input/hs37d5.fa.gz"
    --reads "/input/HG002_NIST_150bp_downsampled_30x.bam"
    --examples "/tmp/deepvariant_tmp_output/make_examples.tfrecord@64.gz"
    --regions "20"
    --gvcf "/tmp/deepvariant_tmp_output/gvcf.tfrecord@64.gz"
    --task {}
    
  7. Una vez que DeepVariant termina, genera los siguientes archivos en el directorio deepvariant-run/output:

    • HG002.output.g.vcf.gz
    • HG002.output.g.vcf.gz.tbi
    • HG002.output.vcf.gz
    • HG002.output.vcf.gz.tbi

    Ejecuta el siguiente comando para mostrar una lista de los archivos del directorio de salida y verifica que no falte ninguno:

    ls $OUTPUT_DIR
    

Estimaciones de costo y tiempo de ejecución

En la siguiente tabla, se muestran el tiempo de ejecución y los costos aproximados cuando se ejecuta DeepVariant con una muestra de genoma completo de 30 veces en un archivo BAM. Estas estimaciones no incluyen el tiempo necesario para configurar la instancia y descargar datos de muestra de Cloud Storage.

La tabla contiene estimaciones para las VM interrumpibles y las VM no interrumpibles. Las estimaciones de tiempo de ejecución se basan en el uso de VM no interrumpibles.

Las VM interrumpibles son hasta un 80% más económicas que las VM normales. Sin embargo, Compute Engine puede finalizar (interrumpir) estas instancias si requiere acceso a los recursos para otras tareas. Además, las VM interrumpibles no están cubiertas por ningún Acuerdo de Nivel de Servicio (ANS), así que no debes usar la marca --preemptible si necesitas un tiempo de respuesta garantizado.

Consulta las Prácticas recomendadas de Compute Engine para obtener información sobre cómo usar las VM interrumpibles de forma eficiente.

Tipo de máquina Tiempo de ejecución en horas Costo (no interrumpible) Costo (interrumpible)
n1-standard-8 19.7 $8.06 $2.16
n1-standard-16 11.3 $8.91 $2.14
n1-standard-32 7.25 $11.20 $2.54
n1-standard-64 5.65 $17.30 $3.78
n1-standard-96 4.52 $20.80 $4.48

Limpieza

Para evitar que se generen costos en tu cuenta de Google Cloud por los recursos que se usaron en este instructivo, sigue estos pasos:

Una vez que hayas terminado el instructivo sobre la ejecución de DeepVariant, puedes limpiar los recursos que creaste en Google Cloud para que no se te facturen en el futuro. En las siguientes secciones, se describe cómo borrarlos o desactivarlos.

Cómo borrar el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que utilizaste para el instructivo.

Para borrar el proyecto, haz lo siguiente:

  1. En Cloud Console, ve a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el que quieres borrar y haz clic en Borrar proyecto (Delete project. Después de seleccionar la casilla de verificación ubicada junto al nombre del proyecto, haz clic en Borrar proyecto
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Qué sigue