Chapter 12: MAG Quality Assessment (CheckM) & Taxonomic Placement (GTDB-Tk)
Tested Stacks:
GATK 4.6.1
Samtools 1.21
Nextflow 24.10
Seurat v5.1
Python 3.12
Prerequisites: Basic Linux CLI & Sequencing Formats
📚 Chapter 12 of 13
0% Course Completed
Chapter 12: MAG Quality Assessment (CheckM) & Taxonomic Placement (GTDB-Tk)
A MAG may be a fragmented partial genome or a chimeric mixture of contigs from two distinct organisms. Before biological inference or public database submission, MAGs must be evaluated against strict quality benchmarks established by the Genomic Standards Consortium (MIMAG standards).
MIMAG Quality Tiers (Bowers et al.)
- High-Quality Draft MAG: >90% Completeness, <5% Contamination, presence of 5S, 16S, 23S rRNA genes and at least 18 tRNAs.
- Medium-Quality Draft MAG: ≥50% Completeness, <10% Contamination.
- Low-Quality Draft MAG: <50% Completeness or >10% Contamination (Must be discarded).
1. Assessing Completeness & Contamination with CheckM2
CheckM2 uses machine learning gradient-boosted decision trees to assess lineage-specific single-copy marker gene redundancy without taxonomic assignment priors.
# Run CheckM2 quality prediction across all generated bins
checkm2 predict \\
--input ./bins/ \\
--output-directory ./checkm2_out/ \\
--threads 16 \\
-x fa2. Phylogenomic Taxonomy with GTDB-Tk
GTDB-Tk places MAGs into the Genome Taxonomy Database reference tree using 120 bacterial or 53 archaeal marker proteins, providing standardized evolutionary taxonomy.
# Classify high-quality MAGs with GTDB-Tk
gtdbtk classify_wf \\
--genome_dir ./high_quality_bins/ \\
--out_dir ./gtdbtk_out/ \\
--cpus 16 \\
--extension fa
⚠️
Common Pitfalls & Troubleshooting Checklist
- Java Heap Exhaustion (GATK / Picard): If processes terminate with
java.lang.OutOfMemoryError, set your environment variable explicitly:export _JAVA_OPTIONS="-Xmx16g -Djava.io.tmpdir=/tmp". - Index Timestamp Mismatch: If tools complain that a BAM index is missing or out of date, regenerate with
samtools index -@ 4 sample.bam. - Conda Channel Conflicts: Avoid ABI incompatibilities between bioconda and conda-forge by setting strict priority:
conda config --set channel_priority strict. - Chromosome Naming Contamination: Always verify whether reference FASTA headers use
chr1or1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.