Ejecuta Sentieon DNAseq

En esta página, se explica cómo ejecutar Sentieon DNAseq como una canalización de Google Cloud (GCP). La canalización coincide con los resultados de las prácticas recomendadas de GATK, versión 3.7: alineación, clasificación, eliminación de duplicados, recalibración del nivel de calidad de las bases (BQSR) y llamada de variantes. Los formatos de entrada incluyen archivos fastq o 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 prácticos de Sentieon DNAseq

Costos

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

  • Compute Engine
  • Cloud Storage

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. 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. Accede a tu Cuenta de Google.

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

  3. En la página Selector de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  4. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  5. Habilita las API de Cloud Life Sciences, Compute Engine, and Cloud Storage.

    Habilita las API

  6. Instala e inicializa el SDK de Cloud.
  7. Instala y actualiza los componentes de gcloud.
    gcloud components update &&
    gcloud components install beta
  8. Instala Git para descargar los archivos necesarios.

    Descargar Git

  9. Según la configuración predeterminada, Compute Engine tiene cuotas de recursos para evitar el uso involuntario. Puedes aumentar las cuotas para iniciar más máquinas virtuales de forma simultánea y así incrementar la capacidad de procesamiento y reducir el tiempo de respuesta.

    Para obtener los mejores resultados en este instructivo, es recomendable que solicites una cuota adicional superior a la predeterminada de tu proyecto. En la siguiente lista, se proporcionan recomendaciones para los aumentos de cuota, así como 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, instálalo con pip:

    pip install virtualenv
    
  2. Crea 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

Descarga los archivos de ejemplo y configura el directorio actual:

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

Comprende el formato de entrada

La canalización utiliza como entrada los parámetros que se especifican en un archivo JSON.

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"
  "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 depósito 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 El ID de tu proyecto de Google Cloud.
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 reemplaza las variables BUCKET y PROJECT_ID con los recursos relevantes de 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",
      "EMAIL": "EMAIL_ADDRESS"
    }
    
  2. 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 existan en el depósito de Cloud Storage antes de iniciar la canalización.

    python runner/sentieon_runner.py 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 ejecutará un genoma humano 30 veces a un costo de aproximadamente $1.25 y tardará alrededor de 2 horas. Un exoma humano completo costará aproximadamente $0.35 y tardará 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:

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

También acepta archivos BAM separados por comas como entrada mediante el uso de la clave JSON BAM. Las lecturas en los archivos BAM no se alinearán con el genoma de referencia. En cambio, comenzarán en la etapa de anulación de duplicación de datos de la canalización.

"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 de la configuración recomendada están optimizados para muestras del genoma humano completo secuenciadas con una cobertura promedio de 30 veces. 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.

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

"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 la documentación del Broad Institute.

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; para ello, configura la clave JSON DEDUP:

"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

Las actualizaciones futuras seguirán funcionando con la API de Cloud Life Sciences.

Limpieza

Una vez que hayas terminado 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.

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

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