LinearMafDisplay
Auto-generated config schema for the current JBrowse release — see the config guide for concepts. Provided by the maf plugin. View source.
Example usage
Set through the track's displayDefaults, which is what makes a track open
in this state rather than requiring every viewer to set it from the menu. A
whole-genome alignment with many species is the case worth tuning: a shorter
rowHeight fits more rows on screen, and the conservation band is what most
readers scan first.
{
type: 'MafTrack',
trackId: 'multiz_example',
name: 'Multiz alignment',
assemblyNames: ['hg38'],
adapter: {
type: 'BigMafAdapter',
bigBedLocation: { uri: 'https://example.com/multiz.bb' },
samples: ['hg38', 'panTro6', 'rheMac10', 'mm39'],
},
displayDefaults: {
rowHeight: 12,
showConservation: true,
conservationHeight: 40,
showRowLabels: true,
},
}
See the Config slots section below for all available configuration fields.
the display for a MafTrack: one row per aligned species, with a
conservation summary above them. The conservation band, per-row identity,
color-by-source-chromosome, and inversion overlays are all derived from the
alignment itself and toggled from the track menu, so the slots here are
show/hide defaults and band sizes.
Related links
- Adapter: BgzipMafAdapter
- Adapter: BgzipTaffyAdapter
- Adapter: BigMafAdapter
- Adapter: MafTabixAdapter
- State model: runtime API
- Base config: BaseLinearDisplay
- Guide: Custom track and display types
- Guide: Defaults for all tracks
- Guide: Tracks
Config slots
These slots go on a display entry: "displays": [{ "type": "LinearMafDisplay", ... }], or in the track's displayDefaults when this is its default display. Slot types (fileLocation, frozen, ...) are explained in the config slot types reference. Slots a base configuration contributes are listed here too, so this table is the whole surface.
| Slot | Description |
|---|---|
fetchSizeLimitnumber = 5_000_000 | No MAF adapter declares a fetchSizeLimit, so this display's value is the whole budget the byte gate measures against — and MAF has no second axis behind it, since densityTooLarge is canvas's override and false here. It inherited the base 1 Mb until 2026-08-14, which nobody chose: MAF_LARGE_BLOCKS.md § "Fetch dominates at 470-way" measures a 40 kb buffered window (a 20 kb view) at 5.3 MB uncompressed for 100 rows, and real MAF-BED compresses 2.9–4.0x, so an hg38 100-way — an ordinary multiz, well inside the row count the same doc measures at 38–55fps — came to ~1.3–1.8 MB and bannered a gene-scale view it renders fine.5 Mb for the same reason LinearBasicDisplay uses it: the index estimate is block-granular, so a tighter gate banners a view that isn't large. A 470-way is ~6–8 MB over that window and so still asks above the force-load floor — which is where asking helps, since that is the zoom range summaryAdapter covers and the same doc's answer for that row count is the summary tier rather than a raised budget. Below the floor SUB_FLOOR_BYTE_BUDGET_FACTOR lets it through, deliberately: at a locus the user navigated to, a 470-way is the same category as any other deep data, and comparable in size to the ultradeep BAM the tier was sized against.advanced |
heightmaybeNumber = undefined | Override the base height slot as a maybeNumber: unset means fit rows to their content height, an explicit value is a drag-resized track height. See the model's fitTargetHeight getter. |
rowProportionnumber = DEFAULTS.rowProportion | fraction of the row height each glyph fills |
showAllLettersboolean = DEFAULTS.showAllLetters | draw every base letter instead of only mismatches |
mismatchRenderingboolean = DEFAULTS.mismatchRendering | color bases by mismatch to the reference |
showAsUpperCaseboolean = DEFAULTS.showAsUpperCase | uppercase all base letters |
showLegendmaybeBoolean = true promotable | Show the color key for the active row rendering — the codon-change categories, the source-chromosome ranks, the identity ramp, and the CDS frame swatches. In bases mode the cells are the reference's own base colors and there is nothing to key, so nothing draws whatever this says. |
showCoverageboolean = DEFAULTS.showCoverage | show the coverage band |
showAlignmentsboolean = DEFAULTS.showAlignments | Show the per-sample alignment rows. When off, only the coverage band renders (independent of showCoverage). |
coverageHeightnumber = DEFAULTS.coverageHeight | height of the coverage band in px |
showConservationboolean = DEFAULTS.showConservation | Show the conservation band (per-bp percent identity to the reference). Independent of showCoverage/showAlignments. |
conservationHeightnumber = DEFAULTS.conservationHeight | height of the conservation band in px |
conservationModestringEnum = DEFAULTS.conservationMode | Conservation band resolution: base (per-bp percent identity) or codon (per-codon amino-acid identity; needs an annotationAdapter). |
rowIdentityModestringEnum (none, heatmap, xyplot) = DEFAULTS.rowIdentityMode | Per-row identity rendering shown once zoomed out past base level: heatmap shades the row band, xyplot draws a per-species identity wiggle, none keeps the base coloring at every zoom. |
rowIdentityAutoZoomboolean = DEFAULTS.rowIdentityAutoZoom | When true (the default) the rowIdentityMode plot draws only while zoomed out, and zooming in to base level swaps it back for the base/SNP coloring — where individual bases are legible, the letters say more than a per-pixel mean of them. This is UCSC wigMaf behavior. When false the plot is pinned on at every zoom and the bases are never shown.The slot name is the mechanism ("auto by zoom"); what a user picks is which of the two renderings they get zoomed in, which is how the menu row is worded. |
showAnnotationsboolean = DEFAULTS.showAnnotations | Show the per-species CDS reading-frame overlay from the configured annotationAdapter (UCSC mafFrames). No effect without one. |
showTranslationboolean = DEFAULTS.showTranslation | Translate each species in the reference reading frame and draw the amino acid on each codon in place of nucleotides (UCSC wigMaf "show translation"). Needs an annotationAdapter. |
colorByChromosomeboolean = DEFAULTS.colorByChromosome | Color each species' blocks by their source chromosome instead of the per-base SNP coloring, surfacing translocations/rearrangements. |
showReferenceRowboolean = DEFAULTS.showReferenceRow | Draw the reference species as a row of its own. It is one row among the others today, and under mismatch coloring — the default — every cell in it matches by definition, so it is a solid match-colored bar carrying no information. UCSC omits it. The row the worker named as the reference ( refSampleId) is the one dropped, not the top row and not the view's assembly name, which is a different string whenever the MAF names its reference differently.It hides the row everywhere the row set reaches, as a subtree filter does: the reference is left out of the FASTA "View subsequences" downloads and out of the per-species navigation menus too. What it does not touch is what the other rows are scored against — the mismatch coloring, the coverage band and the conservation band all still read the reference sequence, which the worker sends whether or not a row draws it. |
showInversionsboolean = DEFAULTS.showInversions | Overlay a strand-flip (inversion) indicator: inverted blocks get a diagonal hatch. |
rowHeightnumber = 0 | per-row height in px, scrolling the rows that do not fit; 0 (the default) fits the rows to the display height instead, dividing it between them |
showTreeboolean = true | show the species tree sidebar |
showBranchLengthboolean = true | position tree nodes by branch length (dendrogram) rather than evenly by topology (cladogram) |
showRowLabelsboolean = true | draw the species name over the left of each row |
| Inherited from BaseLinearDisplay | 3 slots |
mouseoverstring = | text to display when the cursor hovers over a feature callback args: feature |
jexlFiltersstringArray = [] | config jexlFilters are deferred evaluated so they are prepended with jexl at runtime rather than being stored with jexl in the config |
forceLoadboolean = false | Declarative equivalent of the "Force load" button on the "too much data" banner: when true the display always renders, however large the region or dense the features. Off by default (the gate guards against huge downloads). Set it on a view no one can interact with — an embedded / notebook view, or a screenshot — where the region is known and you want it drawn without a click. advanced |