Bioconductor: instalación y filosofía
Qué es Bioconductor
Bioconductor es un repositorio de paquetes de R paralelo a CRAN, especializado en bioinformática y biología computacional. Más de 2.000 paquetes para todo lo que toca biología molecular: secuenciación (RNA-seq, ChIP-seq, ATAC-seq, single-cell), microarrays, proteómica, anotación genómica, datos clínicos, imagen, citometría.
No es un “CRAN para biólogos”, es una infraestructura propia con principios distintos:
- Clases S4 compartidas (
SummarizedExperiment,GRanges,Biostrings). - Releases sincronizados: todos los paquetes con la misma versión de R en cada ciclo.
- Revisión más exigente: los paquetes pasan un proceso de vetting más estricto que CRAN.
- Documentación con vignettes narrativas, casi siempre.
Es lo que separa “scripts artesanales” de “análisis estándar reproducible”. Aprenderlo merece la pena.
CRAN vs Bioconductor
| CRAN | Bioconductor | |
|---|---|---|
| Foco | General | Biología computacional |
| Instalación | install.packages() |
BiocManager::install() |
| Release | Cada paquete a su ritmo | Sincronizado (Bioc 3.18, 3.19…) |
| Compatibilidad | Best-effort | Garantizada dentro del release |
La consecuencia práctica: no mezcles versiones. Un Bioc 3.18 no es compatible con paquetes de 3.19 sin más. Si fijas un release, todo lo demás encaja.
Instalación
Paso 1: instalar BiocManager (una vez)
install.packages("BiocManager")BiocManager es el gestor oficial. No uses install.packages() para paquetes de Bioc, falla o instala una versión vieja desde CRAN si coincide nombre.
Paso 2: instalar paquetes
BiocManager::install(c("DESeq2", "SummarizedExperiment", "airway"))La primera vez te preguntará si quieres actualizar dependencias (Update all/some/none?). Acepta a (all) si estás empezando.
Paso 3: verificar coherencia
BiocManager::valid()
# TRUE si todo está alineado, o un informe si hay desajustesvalid() te dice si tu instalación está consistente. Cuando da problemas (out-of-date, too new), aplica lo que sugiere, normalmente un par de install() específicos.
El ciclo de release
Bioconductor saca dos releases al año, en abril y octubre. Cada release usa una versión específica de R:
| Bioc | R |
|---|---|
| 3.18 | R 4.3 |
| 3.19 | R 4.4 |
| 3.20 | R 4.4 |
| 3.21 | R 4.5 |
Si actualizas R a una nueva versión mayor, tienes que reinstalar todos los paquetes Bioc del release correspondiente. Es lo más friccional al actualizar R y la razón principal por la que mucha gente fija versión durante un análisis.
Comprobar tu release actual:
BiocManager::version()
# [1] '3.20'Mantener versiones para reproducibilidad
Bioconductor cambia entre releases. Una pipeline que funciona en Bioc 3.18 puede dar resultados distintos en 3.20 (mejoras en los modelos, cambios de defaults, nuevas funciones). Para análisis serios:
- Anota el release usado en el documento Quarto / informe.
sessionInfo()al final del análisis, siempre. Captura versiones exactas.- Para reproducibilidad fuerte,
renvo Docker con la imagen oficialbioconductor/bioconductor_docker:RELEASE_3_20. Lo veremos al final de la ruta.
Estructura de un paquete típico
Los paquetes Bioconductor siguen una estructura más rica que los de CRAN. Lo que vas a ver al cargar uno:
library(DESeq2)
# Loading required package: SummarizedExperiment
# Loading required package: GenomicRanges
# Loading required package: IRanges
# ...Cargar DESeq2 arrastra una pirámide de dependencias. Es normal y deseado: Bioconductor reutiliza clases (SummarizedExperiment viene del paquete del mismo nombre). El “warm-up” inicial es ruidoso pero solo ocurre una vez por sesión.
Cada paquete trae:
browseVignettes("DESeq2"): guías narrativas con casos completos.?DESeq: ayudas de función al estilo R.?DESeqDataSet: ayudas de clases S4.
Las vignettes son el material de referencia primario. Si tienes una duda concreta sobre cómo usar un paquete, antes que Google está la vignette. Suelen ser excelentes.
Paquetes que vamos a usar en la ruta
Los principales:
BiocManager::install(c(
"DESeq2", # análisis diferencial
"SummarizedExperiment", # contenedor
"tximeta", # importar counts de Salmon
"airway", # dataset de ejemplo
"vsn", # variance stabilization
"pheatmap", # heatmaps con clustering
"EnhancedVolcano", # volcano publicable
"AnnotationDbi", # anotación de IDs
"org.Hs.eg.db", # anotación humana
"clusterProfiler" # enriquecimiento funcional
))Esta instalación tarda, son muchas dependencias compiladas. Hazla al principio, antes de empezar el siguiente tutorial.
Trampas habituales
install.packages("DESeq2"). Falla con mensaje confuso. Usa siempreBiocManager::install().- Mezcla de releases. Tener parte de Bioc 3.18 y parte 3.19 da errores crípticos (clases que “no encajan”).
BiocManager::valid()lo detecta. - No actualizar dependencias. Cuando aparece
Update all/some/none?, respondern(none) deja el sistema inconsistente. Aceptaasi no tienes motivo concreto para fijar versiones. - Olvidar
sessionInfo()en informes. Sin él, no se puede reproducir un análisis dentro de 6 meses. Es de las primeras cosas que se aprenden, y de las primeras que se olvidan.
En la siguiente entrega
Ya tienes el ecosistema instalado. Antes de tocar DESeq2, conviene entender de dónde salen los counts, el camino desde un archivo FASTQ hasta la matriz que carga R. Conceptual, sin código, pero esencial para no operar a ciegas. Lo siguiente.