Ejecuta Sentieon® DNASeq®

En esta página, se explica cómo ejecutar Sentieon® DNASeq® como una canalización de Google Cloud para el análisis genómico secundario. La canalización coincide con los siguientes resultados de las prácticas recomendadas de Genome Analysis Toolkit (GATK), versión 3.7:

  • Alineación
  • Ordenamiento
  • Eliminación de duplicados
  • Recalibración del nivel de calidad de las bases (BQSR)
  • Llamada de variantes

Entre los formatos de entrada, se incluyen los siguientes:

  • Archivos fastq
  • Archivos BAM alineados y ordenados

Objetivos

Después de completar el instructivo, sabrás cómo realizar las siguientes actividades:

  • Ejecutar una canalización en Google Cloud con Sentieon® DNAseq®
  • Escribir archivos de configuración para distintos casos de uso de Sentieon® DNAseq®

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • Compute Engine
  • Cloud Storage

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Instala Python 2.7 o superior. Para obtener más información sobre cómo configurar tu entorno de desarrollo de Python, incluida la instalación de pip en tu sistema, consulta la Guía de configuración del entorno de desarrollo de Python.
  2. 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.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  9. Install the Google Cloud CLI.
  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  12. Instala Git para descargar los archivos necesarios.

    Descargar Git

  13. Con la configuración predeterminada, Compute Engine tiene cuotas de recursos para evitar el uso involuntario. Mediante el aumento de las cuotas, puedes iniciar más máquinas virtuales de forma simultánea, lo que aumenta la capacidad de procesamiento y reduce el tiempo de respuesta.

    Para obtener los mejores resultados en este instructivo, debes solicitar una cuota adicional superior a la predeterminada de tu proyecto. En la siguiente lista, se proporcionan recomendaciones para los aumentos de cuota, junto con las cuotas mínimas necesarias para ejecutar el instructivo. Realiza tus solicitudes de cuota en la región us-central1:

    • CPU: 64
    • Estándar de disco persistente (GB): 375

    Puedes dejar vacíos los otros campos de la solicitud de cuota para mantener las cuotas actuales.

Licencia de evaluación de Sentieon®

Cuando usas esta canalización, Sentieon® te otorga automáticamente una licencia de evaluación gratuita de dos semanas que te permite utilizar su software con Google Cloud. Para recibir la licencia, ingresa tu dirección de correo electrónico en el campo EMAIL durante la configuración de la canalización. Consulta Comprende el formato de entrada para obtener información sobre cómo configurar este campo.

Si deseas seguir usando Sentieon® luego del vencimiento de la licencia de evaluación, comunícate con support@sentieon.com.

Instalar los requisitos previos y configura el entorno local

  1. Si no tienes virtualenv, ejecuta el siguiente comando para instalarlo con pip:

    pip install virtualenv
  2. Ejecuta el siguiente comando para crear un entorno aislado de Python y, luego, instala las dependencias:

    virtualenv env
    source env/bin/activate
    pip install --upgrade \
        pyyaml \
        google-api-python-client \
        google-auth \
        google-cloud-storage \
        google-auth-httplib2

Descarga la secuencia de comandos de la canalización

Ejecuta el siguiente comando para descargar los archivos de ejemplo y configurar su directorio actual:

git clone https://github.com/sentieon/sentieon-google-genomics.git
cd sentieon-google-genomics

Comprende el formato de entrada

La canalización utiliza los parámetros especificados en un archivo JSON como su entrada.

En el repositorio que descargaste, hay un archivo examples/example.json con el siguiente contenido:

{
  "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"
}

En la siguiente tabla, se describen las claves JSON del archivo:

Clave JSON Descripción
FQ1 El primer par de lecturas en el archivo de entrada fastq.
FQ2 El segundo par de lecturas en el archivo de entrada fastq.
BAM El archivo de entrada BAM, si corresponde.
REF El genoma de referencia. Si se los establece, se supone que los archivos de índice fastq/BAM existen.
OUTPUT_BUCKET El bucket y el directorio que se usan para almacenar la salida de datos de la canalización.
ZONES Una lista separada por comas de zonas de Google Cloud que se usarán para el nodo trabajador.
PROJECT_ID Tu ID del proyecto de Google Cloud.
REQUESTER_PROJECT Un proyecto para facturar cuando se transfieren datos de los buckets de pagos del solicitante
EMAIL Tu dirección de correo electrónico

Ejecuta la canalización

  1. En el directorio sentieon-google-genomics, edita el archivo examples/example.json y sustituye las variables BUCKET, REQUESTER_PROJECT, EMAIL y PROJECT_ID con los recursos correspondientes para tu proyecto de Google Cloud:

    {
      "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. Establece la variable PROJECT_ID en tu entorno:

    export PROJECT_ID=PROJECT_ID

  3. Utiliza el siguiente comando para ejecutar la canalización DNAseq® en un conjunto de datos de prueba pequeño identificado mediante las entradas del archivo de configuración. Según la configuración predeterminada, la secuencia de comandos verifica que los archivos de entrada existen en el bucket de Cloud Storage antes de iniciar la canalización.

    python runner/sentieon_runner.py --requester_project $PROJECT_ID examples/example.json

Si especificaste varios intentos interrumpibles, la canalización se reiniciará cada vez que se interrumpa una instancia. Una vez que finaliza la canalización, se envía un mensaje a la consola que indica si la canalización se realizó correctamente o no.

Para la mayoría de las situaciones, puedes optimizar el tiempo de respuesta y el costo con el uso de la siguiente configuración. La configuración ejecuta un genoma humano 30 veces a un costo de aproximadamente $1.25 y tarda alrededor de 2 horas. Un exoma humano completo cuesta alrededor de $0.35 y tarda alrededor de 45 minutos. Ambas estimaciones se basan en el hecho de que las instancias de la canalización no se van a interrumpir.

{
  "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"
}

Opciones adicionales

Puedes personalizar una canalización con el uso de las siguientes opciones.

Opciones de archivo de entrada

La canalización admite como entrada varios archivos fastq separados por comas, como se muestra en la siguiente configuración:

"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",

La canalización acepta archivos BAM separados por comas como entrada mediante el uso de la clave JSON BAM. Las lecturas en los archivos BAM no están alineadas con el genoma de referencia. En cambio, comienzan en la etapa de anulación de duplicación de datos de la canalización. En el siguiente ejemplo, se muestra una configuración que usa dos archivos BAM como entrada:

"BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"

Configuración de datos del exoma completo o de conjuntos de datos grandes

Los ajustes en la configuración recomendada se optimizan para las muestran del genoma humano completo secuenciadas a una cobertura promedio de 30 veces superior. Para los archivos que son mucho más pequeños o más grandes que los conjuntos de datos estándares del genoma completo, puedes aumentar o disminuir los recursos disponibles para la instancia. Para obtener los mejores resultados con los conjuntos de datos grandes, utiliza la siguiente configuración:

{
  "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"
}

En la siguiente tabla, se proporciona una descripción de la configuración utilizada:

Clave JSON Descripción
DISK_SIZE Espacio SSD disponible para el nodo trabajador.
MACHINE_TYPE El tipo de máquina virtual de Compute Engine que se usará. La configuración predeterminada es n1-standard-1.
CPU_PLATFORM La plataforma de CPU que se debe solicitar. Debe ser un nombre de plataforma de CPU de Compute Engine válido (como "Intel Skylake").

Instancias interrumpibles

Puedes utilizar instancias interrumpibles en la canalización; para ello, configura la clave JSON PREEMPTIBLE_TRIES.

Según la configuración predeterminada, el ejecutor intenta ejecutar la canalización con una instancia estándar si se agotan los intentos interrumpibles o si la clave JSON NONPREEMPTIBLE_TRY se configura en 0. Para desactivar este comportamiento, configura la clave NONPREEMPTIBLE_TRY en false, como se muestra en la siguiente configuración:

"PREEMPTIBLE_TRIES": 2,
"NONPREEMPTIBLE_TRY": false

En la siguiente tabla se proporciona una descripción de la configuración utilizada:

Clave JSON Descripción
PREEMPTIBLE_TRIES La cantidad de veces para intentar la canalización cuando se utilizan instancias interrumpibles.
NONPREEMPTIBLE_TRY Determina si se intenta ejecutar la canalización con una instancia estándar después de que se agotan los intentos interrumpibles.

Grupos de lectura

Los grupos de lectura se agregan cuando los archivos fastq están alineados con un genoma de referencia mediante Sentieon® BWA. Puedes proporcionar varios grupos de lectura separados por comas. La cantidad de grupos de lectura debe coincidir con el número de archivos de entrada fastq. El grupo de lectura predeterminado es @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA. Para cambiar el grupo de lectura, establece la clave READGROUP en el archivo de entrada JSON, como se muestra en la siguiente configuración:

"READGROUP": "@RG\\tID:my-rgid-1\\tSM:my-sm\\tPL:ILLUMINA,@RG\\tID:my-rgid-2\\tSM:my-sm\\tPL:ILLUMINA"

En la siguiente tabla, se proporciona una descripción de la configuración usada:

Clave JSON Descripción
READGROUP Un grupo de lectura que contiene metadatos de muestra.

Para obtener más información sobre los grupos de lectura, consulta Grupos de lectura.

Cómo transmitir archivos de entrada desde Cloud Storage

Puedes transmitir los archivos fastq de entrada desde Cloud Storage, lo que puede reducir el tiempo de ejecución total de la canalización. Para transmitir archivos fastq de entrada desde Cloud Storage, establece la clave JSON STREAM_INPUT en True:

"STREAM_INPUT": "True"

En la siguiente tabla, se proporciona una descripción de la configuración usada:

Clave JSON Descripción
STREAM_INPUT Determina si se deben transmitir los archivos de entrada fastq directamente desde Cloud Storage.

Marca de duplicado

Según la configuración predeterminada, la canalización quita las lecturas duplicadas de los archivos BAM. Puedes cambiar este comportamiento si configuras la clave JSON DEDUP, como se muestra en la siguiente configuración:

"DEDUP": "markdup"

En la siguiente tabla, se proporciona una descripción de la configuración usada:

Clave JSON Descripción
DEDUP Comportamiento de marcado de duplicaciones.
Valores válidos:
  • La configuración predeterminada quita las lecturas que se marcan como duplicadas.
  • markdup marca las duplicaciones, pero no las quita.
  • nodup omite el marcado de duplicaciones.

Recalibración del nivel de calidad de las bases (BQSR) y sitios conocidos

La recalibración del nivel de calidad de las bases requiere sitios conocidos de variación genética. El comportamiento predeterminado es omitir esta etapa de la canalización. Sin embargo, puedes habilitar la BSQR si proporcionas sitios conocidos con la clave JSON BQSR_SITES. Si haces esto, puede usarse un archivo DBSNP para anotar las variantes de salida durante la llamada de variantes.

"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"

En la siguiente tabla, se proporciona una descripción de la configuración utilizada:

Clave JSON Descripción
BSQR_SITES Activa BSQR y utiliza una lista separada por comas de los archivos suministrados como sitios conocidos.
DBSNP Se utiliza un archivo dbSNP durante la llamada de variantes.

Intervalos

Para algunas aplicaciones, como la secuenciación orientada o de exoma completo, es posible que solo te interese una parte del genoma. En esos casos, proporcionar un archivo de intervalos objetivo puede acelerar el procesamiento y reducir las llamadas de variantes de baja calidad que no cumplen los requisitos. Puedes utilizar intervalos con las claves JSON INTERVAL_FILE y, además, INTERVAL.

"INTERVAL_FILE": "gs://my-bucket/capture-targets.bed",
"INTERVAL": "9:80331190-80646365"

En la siguiente tabla, se proporciona una descripción de la configuración utilizada:

Clave JSON Descripción
INTERVAL_FILE Un intervalo que contiene intervalos genómicos para procesar.
INTERVAL Una string que contiene un intervalo genómico para procesar.

Opciones de salida

Según la configuración predeterminada, la canalización produce un archivo BAM procesado previamente, métricas de control de calidad y llamadas de variantes. Puedes inhabilitar cualquiera de estas salidas mediante las claves JSON NO_BAM_OUTPUT, NO_METRICS y NO_HAPLOTYPER. Si no se suministran los argumentos NO_HAPLOTYPER o NULL, puedes utilizar la clave JSON GVCF_OUTPUT para producir llamadas de variantes en formato gVCF en lugar de VCF.

"NO_BAM_OUTPUT": "true",
"NO_METRICS": "true",
"NO_HAPLOTYPER": "true",
"GVCF_OUTPUT": "true",

En la siguiente tabla, se proporciona una descripción de la configuración utilizada:

Clave JSON Descripción
NO_BAM_OUTPUT Determina si se debe generar un archivo BAM procesado previamente.
NO_METRICS Determina si se deben generar las métricas del archivo.
NO_HAPLOTYPER Determina si se deben generar las llamadas de variantes.
GVCF_OUTPUT Determina si se deben generar las llamadas de variantes en formato gVCF.

Versiones de Sentieon® DNAseq

Puedes usar cualquier versión reciente del paquete de software de Sentieon® DNAseq® con la API de Cloud Life Sciences si especificas la clave JSON SENTIEON_VERSION, como en este ejemplo:

"SENTIEON_VERSION": "201808.08"

Las siguientes versiones son válidas:

  • 201711.01
  • 201711.02
  • 201711.03
  • 201711.04
  • 201711.05
  • 201808
  • 201808.01
  • 201808.03
  • 201808.05
  • 201808.06
  • 201808.07
  • 201808.08

Limpia

Después de terminar el instructivo, 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.

Borra 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 la consola de Google Cloud, 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?

  • Si tienes preguntas sobre la canalización o tienes algún problema, envía un correo electrónico a support@sentieon.com.