Analysis of 16S Metabarcoding Data
From counts to ecological insights
Introduction
About this workshop
This is the second part of the QIB Core Bioinformatics 16S metabarcoding workshop series. Where the first part covered raw read processing with DADA2, from FASTQ files to an ASV table and taxonomy assignments. This session focuses on downstream ecological analysis: what to do with those counts once you have them.
The workshop covers:
- Assembling and cleaning a
phyloseqobject from DADA2 outputs - Filtering rare ASVs and applying abundance transformations
- Alpha diversity: within-sample richness and evenness
- Beta diversity: between-sample distances, ordination, and PERMANOVA
- Composition visualisation: bar plots and heat maps at taxon level
- A brief introduction to differential abundance analysis with MaAsLin3
The dataset comes from a study of Romanian-style cucumber fermentations comparing spontaneous fermentation with inoculation by Lactiplantibacillus plantarum IBB082, sampled at four time points.
This workshop builds on the first session. You will need the cleaned DADA2 outputs (ASV count table, taxonomy table, and sample metadata) to follow the practical sections. The data files used here were generated in the 16S Metabarcoding with DADA2 workshop.
Trainers
This session is designed and delivered by QIB Core Bioinformatics: Alise Ponsero, Andrea Telatin, and Judit Talas.
Workshop structure
| Block | Topic |
|---|---|
| 1 | From DADA2 outputs to a clean phyloseq object |
| 2 | Filtering rare ASVs and abundance transformations |
| 3 | Alpha diversity |
| 4 | Beta diversity, compositionality, and PERMANOVA |
| 5 | Composition visualisation |
| 6 | Wrap-up, differential abundance, and further reading |
Software requirements
Run the provided install_dependencies.R script at least a day before the workshop to check everything installs correctly on your machine:
Rscript install_dependencies.ROr from RStudio: open the file and click Source.
The script installs the following packages:
From CRAN:
install.packages(c(
"rmarkdown", "knitr",
"dplyr", "tidyr", "tibble", "readr", "ggplot2",
"patchwork", # side-by-side ordination plots (Block 4)
"vegan" # PERMANOVA and distance matrices (Block 4)
))From Bioconductor:
BiocManager::install(c("phyloseq", "microbiome"))Optional — only needed for the differential abundance section in Block 6:
BiocManager::install("maaslin3")The script will print an installation check at the end listing each package as OK or FAILED. Resolve any failures before the session starts.
R version 4.3 or newer is recommended.
Data
The input files expected by Block 1 are those produced at the end of the DADA2 workshop:
| File | Contents |
|---|---|
metabarcoding_dada2_asvtax.csv |
ASV count table (samples × ASVs) and Taxonomy assignments |
metabarcoding_dada2_QC.csv |
Per-sample DADA2 read-tracking and |
metabarcoding_metadata_2026.tsv |
metadata |
Place these files in a Inputs/ subdirectory before starting Block 1.