Anexo, QIIME2: alternativa Python/CLI para amplicón
Por qué este anexo
La ruta usa R/Bioconductor (DADA2 nativo + phyloseq + ANCOM-BC). Pero el pipeline más extendido en literatura de microbioma sigue siendo QIIME2, especialmente en laboratorios que arrancaron en metagenómica antes de 2020.
Si vas a leer papers, colaborar con otros laboratorios o reproducir análisis publicados, necesitas reconocer QIIME2. Si vas a procesar tus propios datos en R, no lo necesitas, pero hay casos en los que QIIME2 es la opción más práctica.
Este anexo cubre lo justo para que:
- Entiendas qué es y cuándo se elige.
- Puedas leer el
methodsde un paper que usa QIIME2 sin perderte. - Importes resultados QIIME2 a phyloseq si te llegan ya procesados.
No es un tutorial completo de QIIME2, para eso, el QIIME2 docs oficial es excelente. Aquí está el mapa.
Qué es QIIME2
QIIME2 (Quantitative Insights Into Microbial Ecology 2) es una plataforma Python + CLI para análisis de microbioma. Sucesor de QIIME 1 (paper original Caporaso et al. 2010). Mantenido por la comunidad académica + Caporaso Lab (Northern Arizona University).
Características clave:
- Plugin-based: cada paso del análisis (importar, denoise, taxonomy, diversidad) es un plugin separado.
- Artefactos versionados (
.qza): formato propio que encapsula datos + provenance. - Visualizations (
.qzv): outputs HTML interactivos que se ven en view.qiime2.org. - Provenance automática: todo
.qzalleva embebido el grafo completo de pasos que lo produjeron.
Cuándo QIIME2 vs R/Bioconductor
| Situación | QIIME2 | R/Bioconductor |
|---|---|---|
| Pipeline reproducible en un servidor sin R | ✓ | |
| Análisis exploratorio interactivo | ✓ | |
| Visualizaciones avanzadas (PCoA 3D, EMPeror) | ✓ | |
| Modelos estadísticos custom (modelos mixtos, GLM) | ✓ | |
| Integración con metadata clínica compleja | ✓ | |
| Reanalizar paper que usó QIIME2 | ✓ | |
| Publicar análisis en informe Quarto | ✓ | |
| Pipeline empaquetado en Snakemake/Nextflow | ✓ | También |
Resumen práctico:
- Procesamiento batch + provenance automática + visualizaciones interactivas: QIIME2.
- Análisis flexible, modelos estadísticos custom, integración con metadata: R/Bioconductor.
Mucha gente combina los dos: QIIME2 para procesamiento, R/phyloseq para análisis. Lo veremos abajo.
Instalación rápida
QIIME2 se instala con Conda (no pip):
# Linux/macOS
conda env create -n qiime2-amplicon-2024.10 \
--file https://data.qiime2.org/distro/amplicon/qiime2-amplicon-2024.10-py310-linux-conda.yml
conda activate qiime2-amplicon-2024.10
qiime --versionEn Windows: WSL2 o Docker. QIIME2 no corre nativo en Windows.
El pipeline canónico
El flujo típico para 16S amplicón paired-end:
import → demux → DADA2 → classify → core-metrics → ANCOM
(.fastq.gz) (.qza) (.qza) (.qza) (.qza/.qzv) (.qzv)
Cada paso es un plugin con su qiime ... subcommand.
1. Import: FASTQ → artefacto
qiime tools import \
--type 'SampleData[PairedEndSequencesWithQuality]' \
--input-path manifest.csv \
--input-format PairedEndFastqManifestPhred33V2 \
--output-path reads.qzamanifest.csv es una tabla con: sample-id, forward-absolute-filepath, reverse-absolute-filepath. QIIME2 empaqueta los FASTQ en un único .qza.
2. Demultiplexing visual
qiime demux summarize \
--i-data reads.qza \
--o-visualization reads.qzvGenera un HTML con plots de calidad por posición (equivalente al plotQualityProfile de DADA2 en R). Se abre en view.qiime2.org.
3. Denoising con DADA2 plugin
QIIME2 tiene DADA2 como plugin:
qiime dada2 denoise-paired \
--i-demultiplexed-seqs reads.qza \
--p-trunc-len-f 240 \
--p-trunc-len-r 200 \
--p-trim-left-f 0 \
--p-trim-left-r 0 \
--o-representative-sequences rep-seqs.qza \
--o-table table.qza \
--o-denoising-stats denoising-stats.qza \
--p-n-threads 8Es el mismo DADA2 que usaste en R, solo encapsulado en QIIME2. Mismos parámetros, mismo algoritmo. Los resultados deben ser idénticos.
4. Asignación taxonómica
# Descargar classifier SILVA pre-entrenado
wget https://data.qiime2.org/2024.10/common/silva-138-99-nb-classifier.qza
qiime feature-classifier classify-sklearn \
--i-classifier silva-138-99-nb-classifier.qza \
--i-reads rep-seqs.qza \
--o-classification taxonomy.qzaEquivalente al assignTaxonomy() de DADA2 R, pero con clasificador Naive Bayes pre-entrenado de SILVA. La descarga del classifier es grande (~ 1 GB).
5. Core diversity metrics
QIIME2 calcula todas las métricas de diversidad de un golpe:
qiime diversity core-metrics-phylogenetic \
--i-phylogeny tree.qza \
--i-table table.qza \
--p-sampling-depth 8000 \
--m-metadata-file metadata.tsv \
--output-dir diversity-resultsGenera 8-10 artefactos: matrices de distancia (Bray, Jaccard, UniFrac), ordenaciones PCoA, vectores alfa diversidad, todos visualizables vía qzv.
6. Análisis diferencial con ANCOM (clásico)
qiime composition ancom \
--i-table table.qza \
--m-metadata-file metadata.tsv \
--m-metadata-column condition \
--o-visualization ancom-condition.qzvQIIME2 implementa el ANCOM clásico (no ANCOM-BC todavía como first-class plugin, aunque ANCOM-BC se puede correr externamente).
El .qza por dentro
Si descomprimes un .qza con unzip:
abc123-def456-789xyz/
├── data/
│ └── (los datos reales: .biom, .fasta, .tsv...)
└── provenance/
├── action/
│ └── action.yaml ← qué plugin lo creó y con qué parámetros
├── citations.bib
└── (paso anterior...)
Es un ZIP con metadata embebida. Esto es lo que se llama “provenance”: cada .qza lleva su historia. Útil para reproducibilidad y auditoría.
De QIIME2 a R: qiime2R
Si te llegan artefactos .qza (común al reanalizar papers que usaron QIIME2), puedes importarlos a phyloseq con qiime2R:
# install
# devtools::install_github("jbisanz/qiime2R")
library(qiime2R)
ps <- qza_to_phyloseq(
features = "table.qza",
taxonomy = "taxonomy.qza",
tree = "rooted-tree.qza",
metadata = "metadata.tsv"
)
ps
# phyloseq-class experiment-level object
# otu_table() OTU Table: [ 1247 taxa and 66 samples ]
# sample_data() Sample Data: [ 66 samples by 8 sample variables ]
# tax_table() Taxonomy Table: [ 1247 taxa by 7 taxonomic ranks ]
# phy_tree() Phylogenetic Tree: [ 1247 tips and 1245 internal nodes ]Una sola función carga los cuatro slots de phyloseq desde los .qza correspondientes. Es lo más eficiente para reanalizar trabajo procesado en QIIME2.
El flujo híbrido
El patrón híbrido moderno:
QIIME2 (servidor) R/phyloseq (laptop)
─────────────────────────── ───────────────────────────
FASTQ → import → DADA2 ← qiime2R::qza_to_phyloseq()
→ classify (SILVA) → análisis exploratorio
→ tree → diversidad alfa/beta
→ exportar .qza → ANCOM-BC + MaAsLin2
→ informe Quarto
QIIME2 hace el procesamiento pesado (denoise, taxonomía, árbol). R hace análisis exploratorio + estadística + informe. Lo mejor de ambos mundos.
Cuándo elegir QIIME2 sobre el flujo R
Casos donde QIIME2 es honestamente la mejor opción:
- Pipeline reproducible en servidor sin R: QIIME2 + Snakemake corre en cualquier Linux.
- Visualizaciones interactivas para colaboradores no técnicos: los
.qzvse abren en navegador sin instalar nada. - Reanálisis exacto de un paper QIIME2: usa la misma versión que ellos para garantizar reproducibilidad bit-perfect.
- Provenance automática para análisis regulado: cada
.qzalleva auditoría completa embebida.
Casos donde QIIME2 NO es la mejor opción:
- Modelos estadísticos custom: GLM con interacciones, modelos mixtos, bayesiano, R gana.
- Informe Quarto reproducible: R nativo encaja mejor en el flujo Rmori.
- Análisis exploratorio rápido: la CLI de QIIME2 es verbosa para iterar.
- Aprender qué hace cada paso: en R ves la matriz, los conteos, el modelo. En QIIME2 todo está encapsulado en
.qza.
Recursos
- Tutorial oficial QIIME2 “Moving Pictures”: docs.qiime2.org/2024.10/tutorials/moving-pictures/. Dataset clásico de microbioma humano, paso a paso.
- Tutorial Atacama Soils: alternativa con suelo, también canónico.
- qiime2R: github.com/jbisanz/qiime2R, el puente a R.
- QIIME2 forum: forum.qiime2.org, comunidad muy activa.
Trampas habituales
- Mezclar versiones de QIIME2: cada release (2024.10, 2025.4…) puede romper compatibilidad de
.qza. Documenta la versión exacta usada. - Esperar resultados idénticos R-DADA2 vs QIIME2-DADA2: deberían ser equivalentes pero el plugin QIIME2 puede usar versiones DADA2 distintas. Diferencias del 1-3 % en ASV-counts son normales.
- Querer ejecutar QIIME2 nativo en Windows: no funciona. WSL2 o Docker.
- Trabajar sin
.qzv: los visualizadores de QIIME2 son uno de sus mayores activos. Genéralos siempre. - Olvidar que
qiime2Rexists: mucha gente reescribe el pipeline en R desde FASTQ cuando ya tienen.qzaprocesados. Importa directamente.
Cierre del anexo
Ya tienes el mapa de QIIME2:
- Cuándo elegirlo sobre R.
- Su workflow canónico.
- Cómo importar
.qzaa phyloseq conqiime2R. - Cuándo elegir el flujo híbrido.
Con esto cierras realmente la ruta de Metagenómica. Has visto el ecosistema R/Bioconductor moderno + la alternativa Python/CLI dominante. Tienes la base para entender cualquier paper de microbioma actual y para procesar tus propios datos con criterio.
Si llegas a querer ir más allá, análisis multi-cohorte, batch effects con sva/RUV, modelos longitudinales mixtos, integración multi-ómica, el libro asociado profundiza en esos territorios. Mientras tanto, los doce tutoriales + este anexo son material suficiente para casos reales.