Module 10: Structural Variant Calling: cuteSV, Sniffles2 & PBSV Algorithmic Tuning
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 10 of 12
0% Course Completed
1. The Taxonomy of Genomic Structural Variation
Structural variants (SVs) are genomic alterations involving at least $50\text{ base pairs}$ of DNA sequence. While single-nucleotide variants (SNVs) are more numerous, SVs account for over $75\%$ of all varying base pairs in any individual human genome.
The six fundamental SV classes include:
- Deletions (DEL): Loss of a contiguous chromosomal segment ($50\text{ bp} - 10\text{ Mb}$).
- Insertions (INS): Presence of a novel non-reference sequence or transposable element insertion (e.g. LINE-1, Alu).
- Duplications (DUP): Copy number gain, either tandemly duplicated or interspersed.
- Inversions (INV): Reversal of a chromosomal segment without net gain or loss of sequence.
- Translocations (BND): Fusion of segments between non-homologous chromosomes.
- Short Tandem Repeats (STR): Pathogenic repeat expansions of microsatellite loci.
2. Executing cuteSV on Long-Read Alignments
cuteSV uses a multi-tier clustering algorithm that analyzes soft-clipped read segments, CIGAR insertions/deletions, and supplementary alignments to achieve state-of-the-art precision and recall on ONT data:
# Call and genotype structural variants with cuteSV
mkdir -p ./sv_output/
cuteSV \
aligned_sorted.bam \
/references/GRCh38.fa \
./sv_output/hg002_cutesv.vcf \
./sv_output/work_dir/ \
--threads 16 \
--sample HG002_SAMPLE \
--min_support 5 \
--min_size 50 \
--max_size 1000000 \
--genotype \
--retain_work_dir false
# Compress and index the output VCF
bgzip -c ./sv_output/hg002_cutesv.vcf > ./sv_output/hg002_cutesv.vcf.gz
tabix -p vcf ./sv_output/hg002_cutesv.vcf.gz3. Sniffles2: Modern Population & Tandem Repeat SV Discovery
Sniffles2 provides specialized algorithms for mosaic SV detection, non-germline tumor SVs, and multi-sample cohort merging:
# Call SVs with Sniffles2 including tandem repeat profiling
sniffles \
--input aligned_sorted.bam \
--vcf ./sv_output/hg002_sniffles2.vcf.gz \
--reference /references/GRCh38.fa \
--threads 16 \
--minsupport 5 \
--minsvlen 50 \
--tandem-repeats /annotations/human_GRCh38_no_alt_analysis_set.trf.bed
⚠️
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.