All chapters
Read Trimming
intermediateTrimming Decision Flow
Read Trimming Workflow
📄Raw FASTQ
🔍FastQC Check
✂️fastp Trim
✅FastQC Again
📄Clean FASTQ
Raw FASTQ: Before QC
FastQC Check: Check adapters & Q30
fastp Trim: --detect_adapter_for_pe
FastQC Again: Verify improvement
Clean FASTQ: Ready for alignment
Why Trim?
- Adapter sequences introduced during library prep contaminate reads if insert < read length
- Low-quality bases at 3' end increase misalignment and false variant calls
- Poly-G tails (NovaSeq two-colour chemistry) at read ends confuse aligners
- Over-trimming is as harmful as under-trimming - removes real sequence
- Recommended: trim adapters always; quality trimming only if Q30 rate <80%
fastp (Recommended)
fastp is 2–3× faster than Trimmomatic, auto-detects adapters, and generates built-in QC reports. The standard tool in modern pipelines including ATGC Flow.
code
# Basic paired-end trimming fastp \ -i R1.fastq.gz -I R2.fastq.gz \ -o clean_R1.fastq.gz -O clean_R2.fastq.gz \ --detect_adapter_for_pe \ --thread 8 \ -j fastp.json -h fastp.html # With quality filtering (clinical) fastp \ -i R1.fastq.gz -I R2.fastq.gz \ -o clean_R1.fastq.gz -O clean_R2.fastq.gz \ --detect_adapter_for_pe \ --qualified_quality_phred 20 \ --unqualified_percent_limit 40 \ --length_required 36 \ --correction \ --thread 8 \ -j fastp.json -h fastp.html
Trimmomatic
code
trimmomatic PE -threads 8 \ R1.fastq.gz R2.fastq.gz \ R1_paired.fastq.gz R1_unpaired.fastq.gz \ R2_paired.fastq.gz R2_unpaired.fastq.gz \ ILLUMINACLIP:TruSeq3-PE.fa:2:30:10:2:True \ LEADING:3 \ TRAILING:3 \ SLIDINGWINDOW:4:20 \ MINLEN:36 # Parameter explanation: # ILLUMINACLIP: adapter_file:seed_mismatches:palindrome_threshold:simple_threshold # LEADING/TRAILING: remove bases below Q3 from ends # SLIDINGWINDOW:4:20 - scan 4-base window, cut when avg <Q20 # MINLEN:36 - discard reads shorter than 36 bp
Trimming Best Practices
- Always run FastQC before AND after trimming to confirm improvement
- Keep R1/R2 in sync - unpaired reads are discarded in paired-end alignment
- For WES: use Agilent/Illumina/Twist-specific adapter sequences
- Do NOT quality-trim if reads are already Q30+ - unnecessary information loss
- Poly-G trimming: add --trim_poly_g for NovaSeq data (2-colour chemistry)
- fastp --correction: corrects mismatches in overlapping paired-end reads
- Target: >95% reads passing with >90% bases ≥Q30 after trimming