Skip to content

Denoising with DADA2

DADA2 performs quality filtering, denoising, paired-read merging, and chimera removal to produce Amplicon Sequence Variants (ASVs). Unlike OTUs, ASVs represent exact biological sequences with single-nucleotide resolution.

QIIME 2 2026.1

This page targets the QIIME 2 2026.1 amplicon distribution. The qiime dada2 denoise-paired action accepts a --p-pooling-method parameter (default independent, set to pseudo if you want shared error-model information across samples to recover rare features), and supports --p-allow-one-off for higher chimera-removal sensitivity. We use the defaults below; flip those parameters if your dataset has many low-abundance taxa you suspect are being dropped.

Truncation Lengths

The --p-trunc-len-f and --p-trunc-len-r parameters trim forward and reverse reads to a fixed length. Choose these values based on where quality scores drop in your demux summarize visualizations. Here we use 150 bp for both.

Denoise Run 2

qiime dada2 denoise-paired \
--i-demultiplexed-seqs demux_run2.qza \
--p-trunc-len-f \
--p-trunc-len-r \
--p-pooling-method independent \
--p-n-threads 6 \
--o-table table_run2.qza \
--o-representative-sequences seqs_run2.qza \
--o-denoising-stats dada2_stats_run2.qza
Open demux_run2.qzv in QIIME2 View. Look at the per-position quality score plots for forward and reverse reads. Choose the position where median quality drops below Q30 as your truncation length. For this dataset both read directions remain above Q30 through position 150.
--p-trunc-len-f, Forward read truncation length (integer bp). Reads shorter than this are discarded; longer reads are trimmed to this length.

--p-trunc-len-r, Reverse read truncation length (integer bp). Forward and reverse reads must overlap after truncation for merging to succeed, truncating too short prevents overlap.

Review the denoising statistics for run 2:

qiime metadata tabulate \
  --m-input-file dada2_stats_run2.qza \
  --o-visualization dada2_stats_run2.qzv

Interpreting Denoising Stats

The stats table shows how many reads passed each step (filtering, denoising, merging, chimera removal). A typical run retains 60–80% of input reads. If you are losing many reads at the merging step, your truncation lengths may be too short to allow forward and reverse reads to overlap.

Check off each item as you review the stats for both runs:

Denoising Statistics Review

Denoise Run 3

qiime dada2 denoise-paired \
--i-demultiplexed-seqs demux_run3.qza \
--p-trunc-len-f \
--p-trunc-len-r \
--p-pooling-method independent \
--p-n-threads 6 \
--o-table table_run3.qza \
--o-representative-sequences seqs_run3.qza \
--o-denoising-stats dada2_stats_run3.qza
Open demux_run3.qzv in QIIME2 View. The truncation lengths may differ from run 2 if the quality profiles differ, but for this workshop both runs use 150 bp.
--p-trunc-len-f, Forward read truncation length (integer bp).

--p-trunc-len-r, Reverse read truncation length (integer bp). Must be long enough that forward and reverse reads still overlap after truncation.

Review the denoising statistics for run 3:

qiime metadata tabulate \
  --m-input-file dada2_stats_run3.qza \
  --o-visualization dada2_stats_run3.qzv

Merge Feature Tables

Combine the ASV tables from both runs into a single table:

qiime feature-table merge \
  --i-tables table_run2.qza \
  --i-tables table_run3.qza \
  --o-merged-table table.qza

Summarize the merged table:

qiime feature-table summarize \
  --i-table table.qza \
  --o-visualization table.qzv \
  --m-sample-metadata-file metadata_q2_workshop.txt

Merge Representative Sequences

Combine the representative ASV sequences from both runs:

qiime feature-table merge-seqs \
  --i-data seqs_run2.qza \
  --i-data seqs_run3.qza \
  --o-merged-data seqs.qza

Summarize the merged sequences:

qiime feature-table tabulate-seqs \
  --i-data seqs.qza \
  --o-visualization seqs.qzv

Outputs

File Type Description
table_run2.qza / table_run3.qza Artifact Per-run ASV feature tables
seqs_run2.qza / seqs_run3.qza Artifact Per-run representative sequences
dada2_stats_run2.qzv / dada2_stats_run3.qzv Visualization Denoising statistics
table.qza Artifact Merged feature table (both runs)
table.qzv Visualization Summary of merged feature table
seqs.qza Artifact Merged representative sequences
seqs.qzv Visualization Summary of merged sequences

End of Day 1, Directory Structure

At the end of Day 1 your working directory should look like this:

qiime2_tutorial/ ├── metadata_q2_workshop.txt ├── manifest_run2.txt ├── manifest_run3.txt ├── reads_run2/ ├── reads_run3/ ├── demux_run2.qza ├── demux_run2.qzv ├── demux_run3.qza ├── demux_run3.qzv ├── dada2_stats_run2.qza ├── dada2_stats_run2.qzv ├── dada2_stats_run3.qza ├── dada2_stats_run3.qzv ├── table_run2.qza ├── table_run3.qza ├── seqs_run2.qza ├── seqs_run3.qza ├── table.qza ├── table.qzv ├── seqs.qza └── seqs.qzv

Next: Taxonomic Classification