Cómo ejecutar una canalización de Sentieon DNAseq

En esta página, se explica cómo ejecutar Sentieon DNAseq como canalización de Google Cloud Platform (GCP). La canalización coincide con los resultados de las Recomendaciones 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 actividades que se describen a continuación:

  • Ejecutar una canalización en GCP con Sentieon DNAseq
  • Escribir archivos de configuración para casos prácticos diferentes de Sentieon DNAseq

Costos

En este instructivo se usan componentes facturables en GCP, que incluyen los que se indican a continuación:

  • 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 podrían ser aptos para una prueba gratuita.

Antes de comenzar

  1. Instala Python 2.7 y versiones posteriores. Para obtener más información sobre cómo configurar el entorno de desarrollo de Python como, por ejemplo, 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. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

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

    Descubre cómo puedes habilitar la facturación

  5. Habilita las Cloud Genomics, Compute Engine y Cloud Storage API necesarias.

    Habilita las API

  6. Realiza la instalación y la inicialización del SDK de Cloud.
  7. Actualiza y, luego, instala los componentes de gcloud:
    gcloud components update &&
    gcloud components install Alfa
  8. Instala Git para descargar los archivos necesarios.

    Descargar Git

  9. 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, 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 otros campos de solicitud de cuota para mantener las cuotas actuales.

Obtén una licencia de evaluación

Envía un correo electrónico a support@sentieon.com con el ID de tu proyecto de GCP para solicitar una licencia de evaluación de GCP. Puedes encontrar el ID y el número de tu proyecto en el Panel de Google Cloud Platform Console.

Cómo instalar los requisitos previos y configurar 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 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"
}

En la siguiente tabla se describen las claves JSON en el 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 utilizados para almacenar la salida de datos de la canalización.
ZONES Una lista separada por comas de las zonas de GCP a utilizar para el nodo de trabajador.
PROJECT_ID Tu ID del proyecto de GCP.

Ejecuta la canalización

  1. En el directorio sentieon-google-genomics, edita el archivo examples/example.json; para ello, sustituye las variables BUCKET y PROJECT_ID por las variables correspondientes para tu proyecto de GCP:

    {
      "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"
    }
    
  2. Ejecuta el siguiente comando para ejecutar la canalización DNAseq en un conjunto de datos de prueba pequeño que las entradas identifican en el archivo de configuración. Según la configuración predeterminada, la secuencia de comandos verifica que los archivos de entrada existen 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"
}

Opciones adicionales

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

Opciones de archivo de entrada

La canalización admite varios archivos fastq separados por comas como entrada:

"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 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",
  "DISK_SIZE": 600,
  "MIN_CPU": 64,
  "MIN_RAM_GB": 100
}

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.
MIN_CPU Cantidad mínima de núcleos de CPU.
MIN_RAM_GB Memoria RAM mínima (en GB).

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. Puedes desactivar este comportamiento; para ello, 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 se alinean con un genoma de referencia mediante el uso de Sentieon BWA. Puedes suministrar 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, configura 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 utilizada:

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 de entrada fastq desde Cloud Storage, lo que puede reducir el tiempo de ejecución total de la canalización. Para transmitir los archivos de entrada fastq desde Cloud Storage, configura la clave JSON STREAM_INPUT en True:

"STREAM_INPUT": "True"

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

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

Clave JSON Descripción
DEDUP Comportamiento de la marca de duplicado.
Valores válidos:
  • La configuración predeterminada quita las lecturas marcadas como duplicadas.
  • markdup marca los duplicados, pero no los quita.
  • nodup omite la marca de duplicado.

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, para habilitar BSQR puedes proporcionar sitios conocidos con la clave JSON BQSR_SITES. Si es así, un archivo DBSNP puede utilizarse 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, el suministro de un archivo de intervalos objetivo puede acelerar el procesamiento y reducir las llamadas de variantes fuera del objetivo de baja calidad. 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, métricas de control de calidad y llamadas de variantes. Puedes inhabilitar cualquiera de estas salidas con el uso de las claves JSON NO_BAM_OUTPUT, NO_METRICS y NO_HAPLOTYPER. Si no se suministra el argumento NO_HAPLOTYPER o NULL, puedes utilizar la clave JSON GVCF_OUTPUT para producir llamadas de variantes en formato gVCF en lugar de formato 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.

Limpieza

Sigue estos pasos para evitar que se generen cargos en tu cuenta de Google Cloud Platform por los recursos que se usaron en este instructivo:

Una vez que hayas terminado el instructivo Cómo ejecutar una canalización de Sentieon DNAseq, puedes limpiar los recursos que creaste en Google Cloud Platform para que no se facturen en el futuro. En las siguientes secciones se describe cómo borrar o desactivar estos recursos.

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 GCP Console, ve a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el proyecto que quieres borrar y haz clic en Borrar proyecto. Después de seleccionar la casilla de verificación 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.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...