Circular genome view
The circular genome view lays out an entire assembly as a ring and draws long-range structural variants as chords across the interior, one arc per event connecting its two breakpoints. An arc with its two ends in different chromosome segments is an inter-chromosomal event, which no single linear window can hold. Any track that draws in the linear genome view — a bigWig, a feature density, an alignment coverage — draws on the circle as a ring inside the ideogram, so a Circos-style figure is the same tracks opened on this view.
Opening a circular genome view
- Launch Circular view from the Add menu in the main menu bar
- In the import form's Manual mode, select an assembly and click Launch. The ring appears with one segment per chromosome
- Add a variant track from the view's track selector; SV chords render automatically as a Chord variant display
The view reads standard VCF/VCF.gz variant tracks. Chords are drawn from
long-range records (SVTYPE=BND breakends and translocations). Single-locus
deletions and duplications load but don't produce an informative chord.
Rings
A track whose display draws in the linear genome view draws on the circle as a
ring: open it from the view's track selector, or name it in the view's tracks.
Each track's menu is under Tracks in the view menu, since a ring has no
label to hang it off, and Show legend in the same menu names each ring,
chord and ribbon track beside the color or density ramp it draws in (a view's
legend: { show: true } opens with it). A quantitative ring draws its score
axis radially in the gap before the first chromosome. Rings stack inward from
the ideogram in the order the tracks were opened, each as tall as the display's
height, and the chords and ribbons draw inside the innermost ring. Every setting
the display has on a linear view — a wiggle's plot type and color, a mark
display's marks — applies on the ring, and hovering or clicking a ring is the
same hover and click as on the linear track: the tooltip and the feature details
are the display's own.
A ring is the display's linear rendering wrapped around the circle: the display draws a strip as long as the circumference, and the view resamples it so each base sits at its arc. Inner rings are drawn from the same strip and so resolve a little coarser than the outer ones.
const ringView = {
type: 'CircularView',
assembly: 'volvox',
tracks: ['volvox_microarray'],
}A multi-source quantitative track with its sources on rows gives each source a
band inside one ring, so a sample pair or a small cohort is one nested set
rather than a ring each. The bands are drawn against the display's single score
domain, and a stack of rows has no axis, so name that domain where the bands are
meant to be read against each other. Naming the sources is the color's job here:
the row labels are part of the display's chrome and a ring samples only its
canvas, so give each subtrack a color in the adapter.
A variant or synteny track keeps its chords and ribbons; a track that has both a
linear and a circular display takes the circular one unless the entry names the
other, as { trackId, displaySnapshot: { type: 'LinearMarkDisplay' } } does for
a density ring over a variant track. An alignments track draws its coverage and
pileup as a ring; for a coverage ring alone, open the track as a
mark display with a coverage transform. A
mirrored arc's ring is mirrored with it, so a ring bin stays under the stretch
of ideogram it belongs to.
Synteny ribbons
A SyntenyTrack draws each alignment as a ribbon between the span it covers on
one side and the span its mate covers on the other, so a block's extent is on
the figure and an inversion reads as a twist. A track aligning two genomes needs
both of them on the circle, set with assembly: ['hg38', 'mm39'] — each
assembly lays its chromosomes out in turn. The import form opens one the way the
dotplot's does: Quick start picks a synteny track and opens its two genomes,
and Manual takes Add a second assembly and a track for the pair, with a
chromosome box per genome.
A two-genome circle runs both arcs the same way round, so a genome left in its
contig order puts every matching pair of chromosomes at opposite ends of a
diameter and sends every ribbon through the middle. The circle reorders as it
opens, and Re-order chromosomes in the view's menu does it on demand. The
reorder puts the second genome's chromosomes in the order of the first's, by how
many aligned bases each pair shares, and the circle lays that genome out
mirrored so the ribbons come out as a band of parallel arcs.
autoDiagonalize: false on the view keeps each genome in its contig order. It
is the same pass the linear synteny view and the dotplot run, over the same
alignment file, and it is offered on a two-genome circle with a synteny track
and nowhere else.
A synteny circle, of one genome or two, opens with each ribbon in the ideogram
color of the first genome's chromosome it leaves. Color by... in the view's
menu offers what the linear synteny view's palette offers: either genome's
chromosome, strand, identity or another measurement, a column the track
declares, or one color per track when several overlay. Opacity, Identity
fade, Min length and Min identity sit beside it, and as view settings
they go in a session as encoding.color, encoding.opacity and filter; the
identity fade is encoding: { opacity: { field: 'identity' } }.
An alignment narrower than a pixel draws at the share of the pixel it covers, as
in the linear synteny view, so a circle of tens of thousands of short alignments
shows where they pile up. render: { antialias: false } on the view draws every
ribbon at full opacity.
Hovering a ribbon or a chord highlights it and names it in a tooltip; clicking opens its details. Ribbons and chords draw on the GPU, so a circle holding tens of thousands of them still turns and zooms without a pause.
Karyotype changes on other pairs
Each circle below opens from a separate demo config. The human and chimpanzee
one reads the hosted UCSC liftOver chain, built by
scripts/build_circular_synteny.sh with QUERY=panTro6. The other two start
from nothing but two FASTA files: scripts/build_circular_synteny_fasta.sh
aligns them with minimap2 and indexes the result with jbrowse make-pif. The
circles show the human chr2 fusion and the chimp pericentric inversions (Yunis
and Prakash 1982), the rearrangements between two Yersinia pestis strains (Deng
et al. 2002) and the Brassica rapa triplication (Wang et al. 2011).
Citations:
- Yunis and Prakash (1982). The origin of man: a chromosomal pictorial legacy
- Deng et al. (2002). Genome sequence of Yersinia pestis KIM
- Wang et al. (2011). The genome of the mesopolyploid crop species Brassica rapa
Interacting with chords
- Hover a chord to highlight it and see the variant it represents
- Click a chord to open that variant's feature details
- From the feature-detail panel's Breakends section, use Open in breakpoint split view to open a breakpoint split view centered on the event's two breakpoints
To triage many variants at once, use the SV inspector, which pairs this same circular overview with a filterable variant table and cross-filters the two together.
See also
- Tutorial: Cancer SVs (C-GIAB)
- Tutorial: Synteny on a circle (human and mouse)
- Tutorial: A map of the human mitochondrial genome
- User guide: SV inspector view
- User guide: Structural variant visualization
- Reference: ChordVariantDisplay config schema
- Reference: ChordSyntenyDisplay config schema
- Reference: LinearMarkDisplay config schema, for a density or coverage ring