Module 7: Alignment Post-Processing & Quality Assessment with Samtools & Qualimap
Tested Stacks:
GATK 4.6.1
Samtools 1.21
Nextflow 24.10
Seurat v5.1
Python 3.12
Prerequisites: Basic Linux CLI & Sequencing Formats
Module 07 • Alignment QA
Track 18 • Practical Transcriptomics
Hands-On Code Included
Module 7: Alignment Post-Processing & Quality Assessment with Samtools & Qualimap
Converting SAM to coordinate-sorted BAM with samtools, indexing, flagstat alignment rate validation, and comprehensive Qualimap RNA-seq diagnostics: 5'-to-3' gene body coverage bias, genomic origin, and saturation curves.
7. Alignment Quality Assessment with Samtools & Qualimap
High-quality RNA-seq alignments typically exhibit $\ge 80\text{–}90\%$ overall alignment rates. Qualimap RNA-seq verifies critical technical metrics:
- 5' to 3' Gene Body Coverage: Checks for degradation. Strong 3' bias indicates RNA degradation during poly(A) capture; 5' bias indicates incomplete reverse transcription.
- Genomic Origin Distribution: Healthy libraries show $\ge 70\text{–}85\%$ exonic reads. High intronic percentages (>20%) indicate pre-mRNA or genomic DNA contamination; high intergenic reads indicate unannotated transcripts or DNA carryover.
# Quick alignment summary statistics with samtools
samtools flagstat 04_alignment/Sample1.sorted.bam > 04_alignment/Sample1_flagstat.txt
# Comprehensive RNA-seq QC analysis with Qualimap
qualimap rnaseq \
-bam 04_alignment/Sample1.sorted.bam \
-gtf ref/Homo_sapiens.GRCh38.110.gtf \
-outdir 04_alignment/qualimap_Sample1/ \
-p strand-specific-reverse \
--java-mem-size=8G
⚠️
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.