SV visualization
TL;DR: Triage structural variant (SV) candidates in the SV inspector (a combined variant table and whole-genome circular overview), then drill into the alignments at each breakpoint for read-level evidence. SV calls load as variant tracks (VCF), reads as alignments tracks (BAM/CRAM). The alignments track guide covers their general features.
For the read-level signals behind these displays (how split (supplementary)
alignments, the SA tag, pair orientation, TLEN, and clipping encode SV
evidence in the SAM format), see
Structural variants and the SAM format.
For end-to-end walkthroughs, see Cancer SVs (C-GIAB) (HG008 tumor/normal PacBio HiFi + C-GIAB SV/CNV calls) and Structural variants (1000 Genomes) (a whole-gene deletion across the cohort, then a call its coverage is silent about).
SV signals in the alignments track
Four things a standard alignments track already shows carry most of the SV evidence. The alignments track guide covers what each control does; here they matter for what their patterns mean.
- Soft clipping - reads that extend past a breakpoint have their overhanging bases soft-clipped, so a cluster of them marks a breakpoint edge
- Insertion and clipping indicators - purple, blue, and red triangles above the coverage row flag insertions and clips without zooming into the pileup
- Color by pair orientation - abnormally oriented pairs produce the characteristic colors in the table below
- Color by insert size - pairs with unexpectedly large or small inserts are highlighted
Pair orientation color scheme
JBrowse uses the same color scheme as IGV. See the
IGV paired-end alignments guide
for background. Set the color scheme to Pair orientation from the track menu.
Orientation coloring assumes standard fr (Illumina) read pairs; SOLiD-style
pair orientations are not supported. The table below assumes fr:
| Color | Name | Value | Description |
|---|---|---|---|
| LR (→ ←, normal proper pair) | #d3d3d3 | Concordant | |
| RL (← →, mates point away from each other) | #0099bb | Abnormal orientation | |
| LL (→ →, both mates forward strand) | #4d9a4d | Abnormal orientation | |
| RR (← ←, both mates reverse strand) | #5555bb | Abnormal orientation | |
| Inter-chromosomal | #af4d19 | Mate maps to a different chromosome; colored distinctly rather than by orientation | |
| Mate unmapped | #000000 | The other end of the pair aligned nowhere, so orientation and insert size say nothing | |
| Split paired-end read (inverted) | #9b30b0 | A paired read's supplementary segment maps opposite-strand to its primary, so the junction is inverted — an inversion or an inverted duplication |
An inversion turns a stretch of sequence around, and every read that was inside it turns around too. A pair with one end inside and one end outside therefore has one end reversed and one not, so both point the same way — forward-forward where the pair crosses the left junction, reverse-reverse where it crosses the right one.
Each of those pairs also has one end carried to the far side of the segment, so the two span most of it and overlap each other. A green LL pair and a navy RR pair drawn across the same stretch is the pattern to look for.
The two halves of an INVdup call read out of two different things. Green LL,
navy RR and magenta split reads are the inversion — the third is one read split
into alignments that point in opposite directions, which is the same event seen
within a single molecule. They are a minority of an otherwise concordant grey
pileup, so they cluster at the breakpoints. The duplication carries no
orientation signature at all: where the second copy went is the segment the call
names in INFO.CPX_INTERVALS, and no read in the pileup states it.
Inversions in long reads
Short paired-end reads infer an inversion: neither mate spans the breakpoint, so the evidence is a cluster of same-orientation (LL/RR) or split pairs arcing across the two junctions in an otherwise concordant (grey) pileup. Long reads span the whole event, so a single read crosses both breakpoints and splits into forward and reverse-strand alignments. With View as pairs / link supplementary alignments on, those segments chain onto one row: the inverted middle paints the reverse-strand color between the forward-strand segments on either side, and the split alignments are joined by a magenta inversion arc.
Group by... → Split read (SA tag) in the track menu puts the reads carrying a supplementary alignment in their own section. In that section each read breaks into three pieces: the middle one aligns in reverse (blue) and the two either side align forward (red), and the magenta arc joins the two breakpoints. The section below it spans the locus in one piece.
The two sections together are the genotype. A read covers one haplotype, so a
locus where some reads invert and the rest run through unbroken is one inverted
copy and one uninverted — a heterozygous inversion read off the pileup rather
than from the caller's GT.
Insert size color scheme
In the pileup, set the color scheme to Insert size from the track menu. Reads are colored red (insert larger than expected), pink (smaller than expected), or light grey (normal). A separate Insert size (gradient) option shades reads continuously by the magnitude of the deviation. Reads with a mate on a different chromosome are handled separately (see the table below).
With read arcs or the read cloud enabled (via Read connections in the track menu), the Insert size option uses threshold-based coloring:
| Color | Name | Value | Description |
|---|---|---|---|
| Mate on a different chromosome | #af4d19 | Suggests an inter-chromosomal event | |
| Insert larger than expected | #ff0000 | Suggests a deletion spanning the pair | |
| Insert smaller than expected | #f582c0 | Suggests an insertion between the pair | |
| Mate unmapped | #000000 | The other end of the pair aligned nowhere, so insert size says nothing |
The "expected" range is a robust band around the typical insert size,
median ± 3·1.4826·MAD rather than mean ± 3σ: the long right tail of large
inserts (deletions, SVs) inflates the standard deviation, pushing a mean − 3σ
lower bound below zero so short inserts are never flagged.
Insert size and orientation combines both signals and is often the most informative setting for a general SV scan. The two signals are prioritized so that the strongest cue wins:
- Short insert always paints pink, even if the pair orientation is abnormal: at a short insert the signal is that an insertion is here.
- Otherwise an abnormal pair orientation wins (teal RL → tandem duplication; green LL / dark blue RR → inversion).
- A large insert with normal orientation paints red, the classic deletion signature.
SV channels
Every scheme above paints one pileup, so an event's evidence arrives mixed into the rows around it: a minority of abnormally oriented pairs among concordant grey, their arcs crossing everything else's. Track menu → Read connections → SV channels (pairs by orientation) takes the same reads apart. Each orientation class becomes its own band with its own coverage curve and its own arcs, the concordant pairs drop out of the arcs, and the pileup goes away.
The bands are the rows of the orientation table above, and the signatures below are the key to reading them. An inversion lights the two same-strand bands on the same pair of breakpoints. A tandem duplication lights the outward-pointing band. A band that stays empty under a call is a call with no read-pair evidence behind it, which is as much of a finding as a band that fills.
Clicking the row again restores an ordinary pileup. The color scheme is untouched in both directions, so a track colored by modifications or insert size still is on the way back out.
SV-type signatures
The patterns below describe what each SV type typically looks like in the alignments track. Combine several signals (clipping, orientation, coverage, arcs) before calling an SV. IGV's paired-end alignment guide is a useful companion reference.
Deletion
- Soft-clipped reads at two nearby positions mark the breakpoint edges
- A coverage drop between those positions is a classic deletion signal; heterozygous deletions typically show only a ~50% reduction rather than a complete drop
- Paired reads flanking the gap colored red (larger insert than expected) suggest a deletion spanning the pair
- With read arcs enabled, unusually long arcs point to a deletion
Insertion
- Soft-clipped reads at a single site suggest an insertion; with Show soft clipping enabled, the inserted bases become visible on each side
- When the insertion is large enough that pairs flank it, those pairs colored pink (smaller insert on reference) suggest an insertion between them
- For insertions larger than the sequenced fragment size, mates may become unmapped; long reads are needed to fully span the event
- A purple insertion indicator triangle suggests an insertion when enough reads carry one at that position (see insertion and clipping indicators for the depth-dependent threshold and for the same event across nanopore, PacBio, and Illumina reads)
Inversion
- LL (green) and RR (dark blue) read pairs at a boundary suggest an inversion: normally LR-oriented reads become same-direction across the junction
- If you're zoomed into the inverted region itself, interior reads may look concordant
- Soft-clipped reads appear at both breakpoints, sometimes with short homology sequences visible in the clipped bases
The green LL / dark blue RR signature appears in the inverted-duplication figure in the pair orientation section above.
Tandem duplication
- RL (teal) read pairs suggest a tandem duplication: reads appear to point away from each other when the duplicated segment is joined back to its origin
- Elevated coverage over the duplicated region is another supporting signal
- With read arcs enabled, arcs pointing backward (upstream) across a junction point to a tandem duplication
The teal RL signature also appears in the inverted-duplication figure in the pair orientation section above.
Translocation / inter-chromosomal fusion
- Under the pair orientation and insert size schemes, reads with mates on a different chromosome take the rust inter-chromosomal color in the pileup and on their arcs alike, rather than being classified by orientation
- A cluster of such reads at a locus marks one end of a translocation; open the breakpoint split view from the feature details to see both ends at once
Read arcs
Read arcs draw bezier curves between the ends of paired or split reads. For SVs, unusually long arcs relative to their neighbors point to a deletion spanning the pair, and inter-chromosomal connections (drawn as vertical lines at the view edge) flag translocations. Set the color scheme to insert size, orientation, or combined coloring from the track menu.
With View as pairs on, each mate pair collapses onto a single row joined by its own bezier curve, colored here by pair orientation. The abnormal same-orientation pairs of an inverted duplication then read as a coherent bundle of curves.
A read can look concordant (light-grey LR fill) yet still carry a colored connector: the read itself crosses the breakpoint, splitting into a primary and a strand-flipped supplementary alignment, and the arc joining them takes the split-read inversion color rather than the RR-pair blue. That is evidence from one read rather than a pair. Hover any connector for its classification.
Read cloud
Read cloud stratifies reads by the log-scaled distance between mates, making it easy to count how many reads span a breakpoint and read their orientation at a glance. Chains with supplementary alignments are connected by an orange line.
The Edit filters option in the track menu lets you show or hide proper pairs and singletons. The color scheme provides insert size, orientation, or combined coloring.
Inspecting individual reads
Right-click any read for Linear read vs ref and Dotplot of read vs ref, which lay one read out against every locus it touches. Both are most useful on a long read spanning a breakpoint, where the order the read visits those loci in is the structure of the rearrangement. See one read against the reference.
Reconstructing a derivative allele
A split read is an ordered, oriented list of reference intervals, which is what a derivative allele is. The alignments track menu's Launch → Reconstruct derivative allele... groups the reads in the window by the route their split alignments describe and lists each route with the number of reads that independently take it. Draw as picks which view it opens in:
- linear synteny view puts the allele along the bottom and the loci it visits along the top
- breakpoint split view stacks those loci in the order the reads cross them
Either goes into the launching view's place or into a new view below it.
What the reconstruction needs
Reconstruction reads split alignments and counts them, so what it recovers follows from what the aligner wrote and how many molecules crossed the event. The figures below come from scoring it at every junction two published somatic callsets report — COLO829 on ONT and C-GIAB's HG008-T on PacBio HiFi, 215 junctions between them, with the matched normals and random loci as controls.
- Long reads, from an aligner that emits SA tags — minimap2 and ngmlr both do. A 100 bp Illumina library over the same breakpoints ranks each junction on its own and produces no multi-junction route, because no read reaches from one junction to the next. The picker measures the reads on screen, so where a short-read library returns nothing it prints the median aligned length it found rather than sending you to a wider window.
- An event above about 10 kb, or interchromosomal. Across those two callsets, 129 of the 130 junctions above 10 kb or between chromosomes are recovered; between 1 and 10 kb it is 60% and 65%; below 1 kb, 11% and 10%. The cliff is a representation, not a limit on the event: 50 of the 58 misses are events the aligner wrote as a deletion inside one read's CIGAR rather than as a split alignment, which nothing reading SA tags can reach, and the pileup's own deletion marks are where those show. Where the cliff falls is as much the aligner's doing as the browser's, so another aligner puts it somewhere else.
- Two reads that agree. A route reaches the list once at least two of them cross the same junctions in the same order and orientation. Listing one-read routes as well buys three points of recall and twelve times as many routes at loci with no event, which is what the floor is there for — it is not a judgement that a single split read is mismapped.
- The reads actually loaded. A window over the track's byte budget renders
as
force loadwith nothing behind it; the dialog says so rather than reporting that no route is supported. Narrow the window. - Every locus you want ranked on screen. A read anchored in the window brings its whole SA chain, so the far side of a junction needs no panel of its own. Reads sitting only at that far locus contribute nothing until it is shown: over one of the HG008-T demo slices the picker offers a single route, and over both it offers seven.
The same entry on a synteny track reads contigs rather than reads — a de novo assembly aligned to the reference is the same object at a larger scale — and there one contig is enough to list a route, while every locus has to be on screen, since an alignment block names nothing the view has not fetched.
Judging what it lists
A read count ranks the routes; it does not vouch for them. Reads mismapped into a repeat produce a confident-looking route, so the output is a proposal to check against the reads rather than a call.
- The matched normal is the strongest check. At the same windows, the normal recovers none of the somatic junctions in either callset. It does propose routes elsewhere — at 40% of COLO829's control windows and 4% of HG008-T's — so a route on its own says a locus has split reads, not that it has an event.
- Look at the top two rows. Where a published junction is recovered, it ranks first in 48 of 51 (COLO829) and 96 of 106 (HG008-T), and first or second in every single case. A route further down the list is unlikely to be the one you came for.
- Read the segment sizes. A route whose segments are each about one read long is an aligner splitting a short read across the genome rather than an allele; the segment strip drawn to scale beside each row, and the sizes under it, are what separate the two.
- A row marked "part of a longer route in this list" crosses a run of another row's junctions and stops. It is consistent with the longer route rather than a rival to it.
- Dozens of routes means a repetitive window, not a complicated allele. The picker says how many it left off the list for that reason.
Complex rearrangements and derivative alleles works through both shapes it produces, a two-segment fold-back and a four-segment allele across three chromosomes.
Where split-read reconstruction comes from
Reading a split alignment as an ordered list of reference intervals is the signature long-read SV callers extract before they cluster anything (Sedlazeck et al. 2018), and ordering and orienting those intervals into a derivative chromosome is what long-read rearrangement pipelines do with them (Cretu Stancu et al. 2017, Mitsuhashi et al. 2020). Callers that work from junctions instead reach the same object by chaining breakends under copy-number constraints, which is LINX (Shale et al. 2022).
The browser does the visualization half of that lineage. Ribbon (Nattestad et al. 2021) draws one read's split alignment against every locus it touches; this groups those chains and counts them. It does not genotype, filter or emit a call, and where two routes disagree it lists both with their counts rather than choosing.
Validation datasets
Each row below is a regression fixture holding every read in that window that takes part in a multi-segment chain, verbatim from the published file, so what the fixture asserts is what the picker shows.
| Records | Chemistry | What the fixture pins |
|---|---|---|
| COLO829 tumor, chr3 | ONT | The der(3) allele as one four-segment route at 28 reads, and beside it at 2 reads the route that skips its chr12 insert |
| COLO829BL normal, same window | ONT | No route, which is what makes the tumor's somatic |
| COLO829 tumor, chr9 | ONT | A fold-back, kept apart from a second allele whose junction sits 28 bp away |
| COLO829 tumor, hg19 | Illumina 100 bp | The three published junctions ranked top, and no path: no read reaches from one junction to the next |
| HG008-T | PacBio HiFi | A chromoplexy breakend as the top route at 65 reads, its two ends on the breakends the benchmark publishes |
| HG008-N, same window | PacBio HiFi | No split reads at all |
| 1000 Genomes HG02030 | Illumina 150 bp | Confidently ranked routes at a germline locus with no event, separable from a real allele by segment span |
| K562 | PacBio Iso-Seq | One row per splice acceptor from a single DNA breakpoint, which is why this is documented for genomic reads |
The COLO829 junctions are those of the multi-platform truth set (Valle-Inclán et al. 2022); the HG008-T ones are the C-GIAB draft benchmark's, whose T2T tumor assembly puts both loci on one contig with the orientation flip the reads describe (Wagner et al. 2026).
Recall by event size
Recall depends on event size, because the reconstruction reads split alignments and an aligner represents a short deletion inside one read's CIGAR instead of splitting it. Below, COLO829 against its ONT calls and HG008-T against the C-GIAB benchmark, run over every junction rather than at chosen loci:
| Event size | COLO829, ONT | HG008-T, PacBio HiFi |
|---|---|---|
| < 1 kb | 1 / 9 | 4 / 40 |
| 1 - 10 kb | 6 / 10 | 17 / 26 |
| 10 - 100 kb | 16 / 16 | 17 / 18 |
| > 100 kb | 17 / 17 | 54 / 54 |
| interchromosomal | 11 / 11 | 14 / 14 |
Where the junction is recovered it is the first or second route listed in every case in both datasets, and its two ends land a median of 1 to 2 bp from the called breakend. No somatic junction is recovered at the same windows in each matched normal.
So the tool is for events large enough that the aligner splits the read across them, which is what the segment sizes beside each row let you check. Routes do appear at loci with no event.
Breakpoint split view
The breakpoint split view opens two synchronized panels side-by-side, each centered on one breakpoint locus. Splines connect supporting reads across both panels, and the variant call is drawn as a colored line with feet indicating directionality.
The header bar accepts location searches directly in either panel.
Launching the breakpoint split view
- From the SV inspector - click a feature in the circular overview or the triangle dropdown on any table row. See the SV inspector guide.
- From variant feature details - click a BND or TRA variant in a variant track; the feature details panel has a button to open the split view, automatically loading any open alignment tracks.
- From alignment feature details - click any read with a supplementary alignment; the feature details panel includes an option to open the split view centered on that read and its supplementary partner.
- From the circular genome view - click a chord's feature details and use the "Open breakpoints in split view" link in its Breakends section.
The view also supports multi-hop events where a single read has multiple supplementary alignments, connecting more than two breakpoints simultaneously.
Hovering a spline shades the reads it joins, so a junction names the alignments that carry it. The shading follows the whole chain — every segment of the read, in every panel it visits — and every other spline of the same read thickens alongside it. Untick Show... → Allow clicking alignment squiggles to turn the overlay back into a static picture.
Following a chain of breakends
A BND record names one partner, so the record a launch starts from is two loci however many the rearrangement has. Launching from a variant track's own right-click menu offers Follow further breakends at each end, which reaches the rest from the callset: at each end of the chain it looks for another junction leaving from within a kilobase of the same place, and takes it when there is exactly one, adding a panel per hop up to four.
It reads two junctions that leave one locus as one molecule, which the caller does not assert, so it stops where that would be a guess: two open continuations at a locus stop the walk, since the records cannot say which molecule carries which, and so does a continuation leading back to a locus already on screen. To work from the reads themselves, use Reconstruct derivative allele, which ranks whole routes by how many molecules independently take each.
The option appears only for a launch that can read the callset, and only for the stacked shape. Two launches can: a variant track's right-click menu, and a click on a chord in the SV inspector or a circular view, where the chord was drawn from that same file.
Phasing heterozygous SVs
For heterozygous SVs, confirming that supporting reads come from a single
haplotype is strong evidence for the call. If your BAM/CRAM has been haplotagged
(e.g., with WhatsHap or HiPhase), reads carry an HP tag identifying the
haplotype; the phased trio tutorial covers
working with phased haplotypes end-to-end.
Sort, color, or group by
the HP tag from the track menu. Sorting and coloring cluster each haplotype's
reads together; grouping goes further and gives each haplotype its own pileup
section, which makes a one-sided SV unmistakable. Reads with no HP tag collect
in their own section, so unphased support is visible.
Working with large SVs
Loading a very large region can trigger an error when the window would require fetching more data than JBrowse allows in a single request. For large or inter-chromosomal SVs:
- Use a BigWig coverage track (or a multi-quantitative track for tumor vs normal comparison) instead of a full alignments track when surveying the region. It loads at any scale and makes copy-number changes immediately visible
- Load the SV call set as a variant track for a compact overview of all calls; clicking a feature navigates directly to it
- Open the breakpoint split view to inspect the breakpoint loci themselves. Each panel shows only a local window around one end of the SV, so the inter-breakpoint distance doesn't matter
- Use the SV inspector for whole-genome triage before drilling into individual calls
Whole-genome assembly comparison
When a de novo assembly of the sample is available (for example, a phased tumor assembly from PacBio HiFi or ONT data), aligning it back to the reference with a tool like minimap2 and loading the resulting PAF as a synteny track gives a chromosome-scale view of rearrangements. Complex events like chromosomal fusions appear as off-diagonal blocks in the dotplot view, and clicking and dragging over a region in the dotplot can launch a base-level linear synteny view with the same alignment.
This is particularly effective on cancer samples, whose derived genome often differs structurally from the reference. The C-GIAB tutorial walks through this workflow end-to-end with the HG008 phased tumor assembly.
Summary
| Display / setting | How to enable | Best for |
|---|---|---|
| Pileup (default) | Default lower panel | Base-level detail, individual reads |
| Color by pair orientation | Color scheme in track menu | Abnormal orientation patterns (RL/LL/RR) |
| Color by insert size | Color scheme in track menu | Insert size anomalies (pileup) |
| Read arcs | Read connections in track menu | Overview of long-range connections |
| Read cloud | Read connections in track menu | Counting discordant pairs, orientation per read |
| Linear read vs ref | Right-click on any read | Complex alignment of a single long read |
| Reconstruct derivative allele | Launch in the track menu | The route several long reads agree on |
| Breakpoint split view | Feature details or SV inspector | Side-by-side inspection of both breakpoint loci |
| Sort/color by HP tag | Sort/color by tag in track menu | Confirming heterozygous SVs on one haplotype |
| Dotplot view | Launch from the Add menu | Chromosome-scale rearrangements (de novo assembly) |
| Linear synteny view | Add menu or dotplot selection | Base-level alignment between two genomes |
Limitations
- Read-level displays require zooming in: the pileup, read arcs, and read cloud modes only render when the view is zoomed in enough to load individual reads; very large SVs can't be spanned in a single pileup view
- Paired-end evidence is fragment-size limited: for insertions larger than the sequenced fragment, paired-end evidence disappears; long reads are required to fully resolve the inserted sequence
- Repetitive regions: SVs in segmental duplications or repeats produce noisy, ambiguous signals; soft-clipped reads and orientation anomalies are common artifacts in these regions
- Short-read orientation coloring assumes
fr(Illumina) read pairs; SOLiD-style orientations are not supported
See also
- Alignments track
- SV inspector
- Circular genome view
- Variant track
- Alignments track configuration
- Gallery: structural variant examples
References
- Cretu Stancu et al. (2017). Mapping and phasing of structural variation in patient genomes using nanopore sequencing
- Mitsuhashi et al. (2020). A pipeline for complete characterization of complex germline rearrangements from long DNA reads
- Nattestad et al. (2018). Complex rearrangements and oncogene amplifications revealed by long-read DNA and RNA sequencing of a breast cancer cell line
- Nattestad et al. (2021). Ribbon: intuitive visualization for complex genomic variation
- Sedlazeck et al. (2018). Accurate detection of complex structural variations using single-molecule sequencing
- Shale et al. (2022). Unscrambling cancer genomes via integrated analysis of structural variation and copy number
- Valle-Inclán et al. (2022). A multi-platform reference for somatic structural variation detection
- Wagner et al. (2026). A complete human pancreatic cancer genome