Setup Bioconductor para microbioma
El stack que necesitas
El análisis 16S moderno en R/Bioconductor reposa sobre seis paquetes clave + dos bases de datos. Conviene tenerlos instalados antes de empezar para no parar el flujo a media tarea.
| Paquete | Para qué | Fuente |
|---|---|---|
dada2 |
Procesado de reads, ASVs, asignación taxonómica básica | Bioconductor |
phyloseq |
Contenedor multi-tabla del microbioma | Bioconductor |
microbiome |
Análisis ecológico (diversidad, transformaciones) | Bioconductor |
microViz |
Visualización moderna sobre phyloseq | CRAN + GitHub |
ANCOMBC |
Análisis diferencial composicional | Bioconductor |
MaAsLin2 |
Modelo mixto para microbioma + metadata clínica | Bioconductor |
Y dos bases de datos:
| Recurso | Para qué | Fuente |
|---|---|---|
| SILVA 138 | Asignación taxonómica de ASVs | zenodo.org/record/4587955 |
| GTDB r214 (opcional) | Taxonomía alternativa, especialmente para shotgun | data.gtdb.ecogenomic.org |
Instalación
Paso 1: BiocManager (una vez por R)
Si ya hiciste la ruta de RNA-seq con Bioconductor, BiocManager está instalado. Si no:
install.packages("BiocManager")
BiocManager::install(version = "3.20") # o la última stableVerifica la release de Bioconductor coherente con tu versión de R:
BiocManager::version()
# [1] '3.20'Paso 2: paquetes de microbioma desde Bioconductor
BiocManager::install(c(
"dada2", # ASVs y taxonomía básica
"phyloseq", # contenedor central
"microbiome", # ecología (diversidad, transformaciones)
"ANCOMBC", # análisis diferencial composicional
"Maaslin2", # modelos lineales con covariables
"decontam", # filtrar contaminación de kits
"Biostrings", # manejo de secuencias
"ShortRead", # FASTQ IO
"phangorn" # árboles filogenéticos
))Esta instalación tarda, dada2 y phyloseq arrastran dependencias compiladas. Hazla al principio, no a mitad del análisis.
Paso 3: microViz (GitHub)
microViz es CRAN/GitHub, no Bioconductor:
install.packages("microViz",
repos = c(davidbarnett = "https://david-barnett.r-universe.dev",
getOption("repos")))Si no quieres añadir el repo de R-universe, alternativa:
# install.packages("remotes")
remotes::install_github("david-barnett/microViz")Paso 4: utilidades de soporte
Para el flujo completo conviene tener también:
install.packages(c(
"tidyverse", # ya lo tienes
"ggpubr", # boxplots con tests
"vegan", # diversidad ecológica clásica
"DT", # tablas interactivas en informe
"knitr", # ya viene con R/Quarto
"patchwork" # composición de plots
))Bases de datos SILVA
DADA2 incluye su propia función de asignación taxonómica (assignTaxonomy), pero necesita una base de referencia formateada para DADA2. La de SILVA 138 es el estándar.
Descarga directa (~ 220 MB):
# URL oficial Zenodo
url_silva <- "https://zenodo.org/record/4587955/files/silva_nr99_v138.1_wSpecies_train_set.fa.gz"
dir.create("ref", showWarnings = FALSE)
download.file(url_silva, "ref/silva_nr99_v138.1_wSpecies_train_set.fa.gz", mode = "wb")Para asignación a nivel de especie (más precisa, opcional):
url_silva_sp <- "https://zenodo.org/record/4587955/files/silva_species_assignment_v138.1.fa.gz"
download.file(url_silva_sp, "ref/silva_species_assignment_v138.1.fa.gz", mode = "wb")Estas dos descargas las haces una vez. Guarda en una carpeta ref/ del proyecto y reutilizable entre análisis.
Verificación rápida
Después de instalar, comprobar que todo carga:
library(dada2)
library(phyloseq)
library(microbiome)
library(ANCOMBC)
library(Maaslin2)
# Sanity check de versiones
packageVersion("dada2") # >= 1.30
packageVersion("phyloseq") # >= 1.46
packageVersion("ANCOMBC") # >= 2.4Si todos cargan sin error, el setup está listo.
Estructura recomendada del proyecto
Antes de empezar el análisis, organiza el proyecto así:
mi-analisis-microbioma/
├── mi-analisis-microbioma.Rproj
├── data/
│ ├── fastq/ ← reads originales (no se versionan)
│ │ ├── SampleA_R1.fastq.gz
│ │ ├── SampleA_R2.fastq.gz
│ │ └── ...
│ └── metadata.csv ← una fila por muestra
├── ref/ ← bases SILVA, GTDB
│ └── silva_nr99_v138.1_*.fa.gz
├── R/ ← funciones reutilizables
│ └── funciones.R
├── analysis/
│ ├── 01_dada2.qmd ← procesado
│ ├── 02_phyloseq.qmd ← construcción del objeto
│ ├── 03_diversidad.qmd ← análisis exploratorio
│ └── 04_diferencial.qmd ← análisis estadístico
└── output/ ← outputs (no se versionan)
├── figuras/
└── tablas/
Patrón modular: cada paso del análisis en su propio .qmd. Después se combinan en un informe final.
renv para reproducibilidad
Microbioma es un campo donde las versiones de paquetes importan: ASVs idénticos pueden recibir taxonomía distinta entre versiones de SILVA, y los algoritmos de ANCOM evolucionan. Usa renv.
install.packages("renv")
renv::init()
renv::snapshot() # captura las versiones actualesEsto crea renv.lock con las versiones exactas. Cualquiera que clone tu proyecto y haga renv::restore() tendrá el mismo entorno.
Si quieres ir aún más allá, Docker con la imagen bioconductor/bioconductor_docker:RELEASE_3_20 congela también el OS y librerías de sistema. Para análisis clínico auditable o paper reproducible al 100 %, es el camino. Lo cubrimos en la ruta de Quarto y reproducibilidad.
El primer test: ¿corre el tutorial canónico de DADA2?
Antes de pasar al siguiente bloque, asegúrate de poder correr el tutorial oficial de DADA2:
library(dada2)
# Descarga el dataset de ejemplo (datos del tutorial canónico)
# https://benjjneb.github.io/dada2/tutorial.html
miseq_path <- "ref/MiSeq_SOP"
# Si no lo tienes, descárgalo:
url <- "https://mothur.s3.us-east-2.amazonaws.com/wiki/miseqsopdata.zip"
download.file(url, "MiSeqSOPData.zip", mode = "wb")
unzip("MiSeqSOPData.zip", exdir = "ref/")Si esto descarga sin errores y list.files(miseq_path, pattern = "_R1") devuelve archivos, estás listo.
Recursos útiles
Tres recursos que conviene tener marcados:
- Documentación oficial DADA2: benjjneb.github.io/dada2. El tutorial canónico es referencia.
- Documentación phyloseq: joey711.github.io/phyloseq. Vignettes muy claras.
- Microbiome statistics with R/Bioc (book): microbiome.github.io/tutorials. Tutoriales avanzados del paquete
microbiome.
Trampas habituales
install.packages("dada2"): DADA2 está en Bioconductor, no en CRAN. UsaBiocManager::install(). El error es claro pero confunde a quien viene de tutoriales viejos.- Mezcla de versiones Bioc: tener
dada2de Bioc 3.18 conphyloseqde Bioc 3.20 da errores crípticos.BiocManager::valid()lo detecta. - SILVA versión equivocada: las bases de SILVA tienen formato específico para DADA2. Descargar directamente de silva.de no funciona con
assignTaxonomy(). Usa el Zenodo de DADA2. - Olvidar el archivo de especies:
silva_nr99_*da hasta género. Para especie necesitas tambiénsilva_species_assignment_*. Es opcional pero recomendable. - Querer reproducibilidad sin
renv: las versiones cambian rápido en microbioma. Sinrenv.lock, en 6 meses no reproduces tus propios resultados.
En la siguiente entrega
Tienes el ecosistema instalado y el proyecto estructurado. La siguiente entrega entra al pipeline DADA2: QC y filtrado de reads amplicón, cómo se leen los perfiles de calidad, qué decisiones de truncado tomar y cómo deja filterAndTrim() los reads listos para denoising. Lo siguiente.