All chapters

Structural Variant Analysis

advanced

Structural Variant Types

Six Main Classes of Structural Variants

❌Deletion (DEL)Segment lost; ≥50 bp; haploinsufficiency if dosage-sensitive
⏫Duplication (DUP)Extra copy; gene dosage increase; tandem or dispersed
🔄Inversion (INV)Segment flipped; disrupts genes at breakpoints
➕Insertion (INS)Extra sequence; mobile elements (LINE-1, Alu)
↔️Translocation (TRA)Segment moved to different chromosome; BCR::ABL1
🌀Complex SVMultiple rearrangements; chromothripsis in cancer

Types of Structural Variants

  • Deletion (DEL) - segment lost; heterozygous deletion causes haploinsufficiency in dosage-sensitive genes
  • Duplication (DUP) - extra copy; tandem duplication or dispersed copy; gene dosage increase
  • Inversion (INV) - flipped segment; disrupts genes at breakpoints; can alter regulatory landscape
  • Insertion (INS) - extra sequence inserted; mobile element insertions (LINE-1, Alu) common
  • Translocation (TRA) - segment moved to different chromosome; reciprocal or non-reciprocal
  • Complex SVs - two or more rearrangements together; chromothripsis, chromoplexy in cancer
  • CNV (Copy Number Variant) - ≥1 kb deletion or duplication; >10 Mb = chromosomal aneuploidy

SV Detection from Short Reads

  • Paired-end (PE): discordant read pairs (wrong insert size or orientation) → inversions, translocations
  • Split-read (SR): reads that span breakpoints, partially mapping → precise breakpoints
  • Read depth (RD): copy number changes from coverage depth → deletions and duplications
  • Ensemble approach: combine PE+SR+RD callers for best sensitivity/specificity
code
# Manta - fast, clinical-grade SV caller
configManta.py \
  --bam sample.bam \
  --referenceFasta hg38.fa \
  --exome \
  --runDir manta_output

python manta_output/runWorkflow.py -j 8
# Output: candidateSV.vcf.gz, diploidSV.vcf.gz

# DELLY - sensitive for balanced rearrangements
delly call -g hg38.fa -o delly.bcf sample.bam
delly filter -f germline -o filtered.bcf delly.bcf

# CNVkit - copy number from WES
cnvkit.py batch sample.bam \
  --normal normal.bam \
  --targets capture.bed \
  --fasta hg38.fa \
  --access access-5kb-mappable.hg38.bed \
  -p 8 -d output/

Long-read SV Calling (Superior)

code
# Sniffles2 - long-read SV caller
sniffles \
  --input sample.bam \
  --vcf sniffles.vcf \
  --reference hg38.fa \
  --threads 16 \
  --sample-id patient001

# CuteSV
cuteSV sample.bam hg38.fa cutesv.vcf work_dir/ \
  --max_cluster_bias_INS 100 \
  --diff_ratio_merging_INS 0.3 \
  --threads 16

# Long reads detect:
# - 90%+ of SVs vs ~50-70% with short reads
# - Mobile element insertions
# - Complex SVs with multiple breakpoints
# - SVs in repetitive regions (centromeres, STRs)