Introducción


DADA2 es un pipeline bioinformático creado por Callahan et al., 2016. Consiste es una serie de pasos que filtran las secuencias crudas obtenidas con la secuenciación de Illumina. El último paso es obtener la taxonomía de las secuencias que han sido filtradas para estudiar la comunidad microbiana.

DADA2 tiene dos características principales que lo distinguen de otros pipelines comúnmente utilizados. Por un lado, procede a la modelización del error de secuenciación que se supone permite distinguir las secuencias mutantes de las erróneas. Por otro lado, a diferencia de otros pipelines como QIIME o Mothur, DADA2 no agrupa el 97% de las secuencias similares en unidades taxonómicas operativas (Operational Taxonomy Units, OTU). Sus variantes de secuencia de ampliación (Amplicon Sequence Variants, ASVs) no se agrupan si las secuencias no son 100% idénticas. Véase la figura anterior.

Construido originalmente para secuencias del gen marcador 16S (Bacterias), lo utilizaremos con secuencias del gen marcador ITS (Hongos) procedentes de la secuenciación Illumina MiSEQ 2x300 bp paired-end. Para acelerar la ejecución de cada paso, submuestreamos aleatoriamente un conjunto de datos para conservar sólo 1000 secuencias por muestra. Por último, Redde Caesari quae sunt Caesaris : este tutorial se ha inspirado en gran medida en el original tutorial DADA2.

En general, antes de iniciar este pipeline, debemos tomar algunas precauciones:

  1. Las muestras deben ser demultiplexadas: divididas en archivos fastq individuales por muestra.
    1. Si las secuencias están emparejadas, las secuencias directa e inversa deben estar en archivos fastq distintos pero deben contener lecturas en orden coincidente.
  2. Los nucleótidos que no forman parte del amplicón (cebadores y adaptadores) deben ser eliminados. También se pueden eliminar en el paso de filtrado.
  3. La mayoría de las funciones tienen una opción de multihilo que permite un tiempo de cálculo más rápido al acceder a múltiples procesadores. Sólo hay que especificar multithread = TRUE para activarla. Atención, esta opción no funciona bajo Windows.

Esta figura tomada de Hugerth y Andersson, 2017 ilustra la diferencia teórica entre OTUs y ASV. Cada color representa un clado. Las estrellas amarillas indican mutaciones, las rojas indican errores de amplificación o secuenciación. El tamaño del espacio entre las secuencias indica su agrupación.


(A) OTUs agrupadas con un 100% de identidad
La más mínima variación en las secuencias provoca la creación de un nuevo grupo. Las secuencias mutantes y erróneas se tratan de la misma manera.
(B) OTUs agrupadas con un 97% de identidad
Una agrupación más amplia permite descartar las secuencias erróneas, aunque las secuencias mutantes también se agruparán en el grupo de consenso.
(C) ASVs
En teoría, el aprendizaje de la tasa de error permite agrupar las secuencias erróneas con las secuencias de consenso. Sin embargo, las secuencias mutantes se consideran por derecho propio.


¡Comencemos!


Primero cargaremos la biblioteca DADA2. Debería tener la última versión: packageVersion('dada2').
A continuación, crearemos una variable path que indique la ruta de acceso a los objetos que necesitaremos.

library(dada2); packageVersion("dada2")
## Loading required package: Rcpp
## [1] '1.18.0'
path <- "data/ITS_sub/"

Comprobemos qué hay al final del camino…