MAF track
A MAF track shows a multiple sequence alignment of several species (or samples) against a reference genome: one row per aligned species at its true genomic position, with a coverage summary on top. It answers "how does this region compare across many genomes at once", the kind of multiz alignment UCSC publishes (e.g. the human 470-way or the C. elegans 26-way).
JBrowse reads three formats, MAF (tabix-indexed BED), BigMaf, and bgzipped TAF (taffy), all opened as a single track. Add one with File → Open track, or load a track an administrator has configured. Data-format and configuration details (adapters, the species list or Newick guide tree) live in the MAF track configuration guide. This page covers what you can do once the track is on screen.
Zoomed out, each pixel summarizes the alignment beneath it. Zoom in and the per-species rows resolve into individual bases, with positions where a species differs from the reference drawn as colored marks. The features below come from two track-menu submenus: Row coloring picks the one way the rows are colored, and Show... holds the bands and overlays that layer on top of it.
Zooming out past the alignment
Every MAF format packs each block's species sequences together, so a zoomed-out query would download all of them — tens of megabytes for a single screen of a deep alignment. JBrowse blocks that with a "requested too much data" prompt.
A track configured with a summary file shows presence bars there instead: one bar per species per aligned region, shaded by the summary's score, with no sequence read. Hover one to name the species, the aligned block and its score, which on a deep alignment is how to tell one row from another once the labels shrink away. Zooming back in swaps the bars for the alignment itself. Neither the coverage band nor the conservation band is drawn on the summary tier, since both need the per-base alignment the tier skips reading. Pointing a track at a summary file is covered in the MAF track configuration guide.
A summary read costs the span on screen against the summary file, not against the alignment, so the tier holds at whole-chromosome scale on an alignment deep enough that the tier is the only way to see it at all. The HPRC pangenome is that case: open the whole of chr6 and its 464 haplotypes draw with no forced load, where the alignment beneath them is refused.
Conservation and per-row identity
The Show conservation (% identity) band plots, at each reference base, the fraction of aligned species whose base matches the reference, a quick read of which regions are conserved versus divergent. It is computed from the alignment itself, so no extra files are needed.
The Row coloring menu breaks the same signal out per species, so you can see which genomes diverge in a region. The rows are colored one way at a time:
- Bases (SNPs vs reference), the default, is the per-base coloring described above.
- Bases (every base colored) colors matching bases by base too, so the whole alignment reads as sequence.
- Identity heatmap shades each row on a red→grey→blue ramp (red divergent, blue conserved).
- Identity X-Y plot draws the same signal as a per-species wiggle.
In a display config each option is a value of color (mismatch, base,
identity, and the chromosome and codon options below) except the X-Y plot,
which is y: "identity", identity on each row's bar height. The two combine:
color: "identity", y: "identity" shades the bars on the heatmap's ramp.
The heatmap and the X-Y plot draw only while you are zoomed out past base level, where individual bases are no longer legible, and zooming in swaps them back for the ordinary base coloring; uncheck Show bases when zoomed in to keep the plot on at every zoom level.
The heatmap works on large alignments: with all ~470 species of the UCSC hg38 470-way shown at once, the heatmap gives a per-base conservation view across the full set of species. Fit-to-display-height mode takes every species into one display, so each row goes near-1px and the alignment reads as a texture, with the guide tree (dendrogram) down the left.
Color by source chromosome
Source chromosome, in the same Row coloring menu, replaces the per-base coloring with a structural view. Within each species row, the source chromosomes its blocks come from (in that species' own genome) are ranked by coverage: the row's main chromosome gets the primary color, and blocks from a different source chromosome take a contrasting accent. A row that stays one color is collinear; a row that changes color along its length is drawing blocks from more than one source chromosome, an immediate flag for a translocation or rearrangement. Ranking per row keeps this readable, and a compact legend in the top-right names the scheme (main / 2nd / 3rd source). Like conservation, it is derived from the alignment with no extra data to fetch.
Inversions (strand flips)
Show inversions (strand flips) overlays a diagonal hatch on any block that aligns inverted relative to its own source chromosome's consensus orientation. Each block is compared to its scaffold's consensus, so an arbitrarily-oriented scaffold reads as collinear and only a genuine intra-scaffold strand flip is marked. It is an overlay, so it composes on top of the base, codon, or per-row identity rendering.
Codon (amino-acid) view
When the track has a CDS-frames file configured (a UCSC mafFrames annotation
on the display), two coding-aware options appear. Show CDS frames (off by
default, under Show...) draws a thin reading-frame-colored strip on each
species' row, marking the coding exons projected onto that species so the gene
structure reads vertically across the whole alignment. It is a strip drawn over
whatever the rows are colored by, so it composes with any Row coloring.
Codon changes (amino acids), a Row coloring option, switches the per-sample rows from per-base SNP coloring to a per-codon view: every species is translated in the reference reading frame, and each codon cell is colored by how its amino acid compares to the reference: nonsynonymous changes stand out, synonymous (silent) changes get a faint tint, a stop the reference does not share is flagged, and conserved codons, the gene's own stop among them, stay clean. The residue is drawn on each codon once you zoom in far enough to read it.
| Color | Name | Value | Description |
|---|---|---|---|
| Nonsynonymous codon | #e8930c | MAF codon view: the species' amino acid differs from the reference (nonsynonymous) | |
| Synonymous codon | #3a7bd5 | MAF codon view: the codon differs from the reference but the amino acid is unchanged (silent) | |
| Stop gained | #cc2222 | MAF codon view: a stop the reference codon is not |
On a large alignment, narrowing to a focused set of species first (see Selecting a subtree) keeps the per-codon columns legible, and the left sidebar redraws as the pruned guide tree.
Tooltips
Hovering any cell reads out the alignment at that position: the species, its base, and the location in that species' own genome, plus the alignment status of the neighboring blocks (e.g. a bridged gap and its size). Insertions, deletions, and bridged e-line gaps each get their own tooltip. When the CDS-frames file is loaded (in codon view, or with the strip on), the hover also shows the gene name; in codon view it shows the species' codon and amino acid next to the reference's and labels the change synonymous or nonsynonymous.
Getting the alignment out as FASTA
Drag a selection across the track and the menu that opens on release offers View subsequences → All rows, or Selected rows to take only the rows the drag covered. Either opens the aligned columns for that window, one sequence per species, with Download as FASTA and Copy to clipboard in its menu. That is the slice a downstream alignment viewer or tree builder wants.
Without a drag, the track menu's Launch → View subsequences (visible region) takes the whole window and every row.
The same menu offers Show only differences, which blanks every base matching the reference so substitutions are all that remain, plus Include insertions, Single line format, Color background, and Show sample names.
A drag crossing a region boundary clips to the region it began in.
Jumping to a species' own genome
The rows of a MAF carry each species' own coordinates, so a row can be opened in its own genome. That same menu's Open aligned genome at the matching region submenu lists one entry per species the selection covers, naming that species' locus in its own coordinates; clicking one opens a view there.
Only rows with aligned bases in the selection are listed, and only those whose
sample names a genome the session can open: a sample configured with an
assemblyName, or one whose
id is itself an assembly the session already holds, as the strains of a
pangenome alignment
are. If the session does not already hold a configured assembly, JBrowse fetches
just that one at click time, so a 26-way or 470-way alignment stays navigable
without every species' genome being present in the config.
The track menu's Launch submenu lists the same entries over the visible window, so reaching a species' genome needs no selection.
Comparing a species against the reference
A drag-selected span — or the visible window, from the track menu's Launch submenu — opens as a two-row linear synteny view: Linear synteny view, <ref> vs... lists the same species, and picking one opens the reference over that species' genome with the alignment drawn between them as ribbons. The ribbons come from the MAF's own columns, so every insertion and deletion in the block is where the alignment put it, and no synteny file is involved. The reference row carries the tracks this view had open, the MAF included; the species row carries its own gene track where the session has one.
Row layout and the species tree
The sidebar at the left shows the species labels, drawn as a dendrogram when the track is configured with a Newick guide tree.
- Show... → Show tree toggles the dendrogram and Show row labels the species names, and Tree branch lengths draws the tree to scale.
- Edit row arrangement... reorders, relabels and recolours rows. The
display's
rowssetting holds the arrangement, so it survives unticking the track and an undo takes it back. Itsdomainis the order: with a guide tree it rotates the tree rather than overruling it, each node putting the clade holding the earliest listed species first, so a listed species comes as early as the topology allows and brings its relatives with it —["mm10"]on((hg38,panTro4),mm10)draws mouse's branch at the top. With no guide tree the listed species simply lead. The tree draws while some rotation of it lists the species indomain's order, so a reorder that splits a clade hides it until Reset row order brings it back, and one that only turns a clade keeps it. - Row height offers squeeze-to-fit, normal, compact, and custom row heights.
Selecting a subtree
Click an internal node of the tree to filter the track to that clade, or pick a
set of species from Edit row arrangement.... The tree then redraws as the
pruned dendrogram of the kept species, so it matches the visible rows, including
for a selection that is not a single clade. Clustering → Clear subtree
filter restores all species. The focus is rows.kept. On a track whose
species come from a samples array or a Newick tree, a focus naming none of
them shows every row; on one that finds its species in the alignment blocks, it
shows only the species it names, so none where the alignment holds none of them.
Clustering rows by identity
A guide tree states how the genomes are related in general. Clustering → Cluster rows by identity... states how they differ over the window in view: each row is scored by how much of the window it both aligns and matches the reference at, where a stretch it does not reach at all scores zero, and hierarchical clustering over those scores gives the row order and the dendrogram.
A cohort alignment wants exactly this ordering. A file of one species ships no guide tree, since which haplotypes group together is a property of the locus, so its rows arrive in the order the file names them. Under an active subtree filter the run covers the visible rows only, so it resolves the structure inside the clade.
The submenu names the locus a tree was computed over, since clustering reads the
region in view. The run rotates its tree towards the current rows.domain, a
declared order or an earlier reorder, so it composes with that order instead of
replacing it. Reset row order restores the declared order, and the guide
tree with it where a rotation of the tree lists that order.
The dialog's manual tab exports the same scores as a TSV with an R script, for clustering elsewhere and pasting the order back.
See also
- MAF track configuration
- Linear synteny view
- Gene track
- User guide: Quantitative track - phyloP/phastCons conservation scores as a signal track
- MAF_LARGE_BLOCKS.md — why a MAF-tabix track with very long alignment blocks is slow, and why clipping to the visible region is the wrong fix