# LinearWiggleDisplay

Auto-generated from the @jbrowse/mobx-state-tree model in the source — see the [developer guide](https://jbrowse.org/jb2/docs/developer_guide/) for concepts. Provided by the `wiggle` plugin. [View source](https://github.com/GMOD/jbrowse-components/blob/main/plugins/wiggle/src/LinearWiggleDisplay/model.ts).

## Example usage

A complete `QuantitativeTrack` config to paste into `tracks`:

```js
{
  type: 'QuantitativeTrack',
  trackId: 'coverage',
  name: 'Coverage',
  assemblyNames: ['hg38'],
  adapter: { type: 'BigWigAdapter', uri: 'https://example.com/coverage.bw' },
  displays: [
    {
      type: 'LinearWiggleDisplay',
      displayId: 'coverage-LinearWiggleDisplay',
      height: 100,
    },
  ],
}
```

The two row-ordering triggers are display *properties*, not config slots, so
they go on the display node in a session — `defaultSession` here, and the
same shape a `session=spec-` link carries. Written on the track config's own
`displays` entry they would be dropped as unknown slots.

`runClustering` is a transient declarative launch spec, the same idea as
`LinearGenomeView`'s `init`: it runs the real "Cluster columns" RPC once
automatically (no dialog) as soon as subtrack data is available, then clears
itself so a saved session never re-triggers it. `sortRowsBy` is the other
one, and the declarative form of the right-click "Sort rows by score here" —
where clustering orders rows by the whole region in view, this ranks them by
the score each carries at one base, so a cohort can open already ranked at a
candidate locus with the surrounding context still on screen. Use one or the
other; whichever applies last owns the row order.

```js
defaultSession: {
  name: 'Copy number at CCL3L1',
  views: [
    {
      type: 'LinearGenomeView',
      assembly: 'hg38',
      loc: 'chr17:36,080,000-36,270,000',
      tracks: [
        {
          trackId: 'pur_copynumber_1000g',
          type: 'LinearWiggleDisplay',
          sortRowsBy: { refName: 'chr17', pos: 36180000 },
        },
      ],
    },
  ],
}
```

The quantitative display: one plot per rendering, drawn over one source or
over many. `rows: 'source'` gives each source a row of its own, with the
clustering sidebar, row labels and separators beside them, and holds the
arrangement a reader gives them; unset, every source shares one plot box.

The configuration slots for this model are documented on its [config schema page](../../config/linearwiggledisplay).

Each section ends with the members a composed model contributes, linked to the page that documents them.

## Properties

| Member | Description |
| --- | --- |
| **type**<br><code>type: types.literal('LinearWiggleDisplay')</code> |  |
| **configuration**<br><code>configuration: ConfigurationReference(configSchema)</code> |  |

4 inherited properties from 2 models:

From [BaseDisplay](../basedisplay): [`id`](../basedisplay#property-id)

From [TreeSidebarMixin](../treesidebarmixin): [`runClustering`](../treesidebarmixin#property-runclustering), [`clusterRegion`](../treesidebarmixin#property-clusterregion), [`sortRowsBy`](../treesidebarmixin#property-sortrowsby)


## Volatiles

29 inherited volatiles from 11 models:

From [BaseDisplay](../basedisplay): [`error`](../basedisplay#volatile-error), [`statusMessage`](../basedisplay#volatile-statusmessage), [`statusProgress`](../basedisplay#volatile-statusprogress)

From [TrackHeightMixin](../trackheightmixin): [`scrollTop`](../trackheightmixin#volatile-scrolltop), [`hostHeight`](../trackheightmixin#volatile-hostheight)

From [MultiRegionDisplayMixin](../multiregiondisplaymixin): [`loadedRegions`](../multiregiondisplaymixin#volatile-loadedregions)

From [RegionTooLargeMixin](../regiontoolargemixin): [`forceLoadTrack`](../regiontoolargemixin#volatile-forceloadtrack), [`byteEstimate`](../regiontoolargemixin#volatile-byteestimate), [`gateMeasuredViewportKey`](../regiontoolargemixin#volatile-gatemeasuredviewportkey)

From [RenderLifecycleMixin](../renderlifecyclemixin): [`canvasDrawn`](../renderlifecyclemixin#volatile-canvasdrawn), [`paintCount`](../renderlifecyclemixin#volatile-paintcount), [`currentRenderingBackend`](../renderlifecyclemixin#volatile-currentrenderingbackend), [`renderTick`](../renderlifecyclemixin#volatile-rendertick), [`autorunsInstalled`](../renderlifecyclemixin#volatile-autorunsinstalled), [`renderError`](../renderlifecyclemixin#volatile-rendererror), [`offScreen`](../renderlifecyclemixin#volatile-offscreen)

From [FetchMixin](../fetchmixin): [`activeSignal`](../fetchmixin#volatile-activesignal), [`fetchGeneration`](../fetchmixin#volatile-fetchgeneration), [`reloadCounter`](../fetchmixin#volatile-reloadcounter), [`statusWindow`](../fetchmixin#volatile-statuswindow), [`fetchCanceled`](../fetchmixin#volatile-fetchcanceled), [`fetchRotation`](../fetchmixin#volatile-fetchrotation)

From [ScoreScaleMixin](../scorescalemixin): [`unclippedQuantile`](../scorescalemixin#volatile-unclippedquantile)

From [StoredHoverMixin](../storedhovermixin): [`storedHoveredFeature`](../storedhovermixin#volatile-storedhoveredfeature)

From [LegendMixin](../legendmixin): [`dismissedLegendSections`](../legendmixin#volatile-dismissedlegendsections)

From [TreeSidebarMixin](../treesidebarmixin): [`hoveredTreeNode`](../treesidebarmixin#volatile-hoveredtreenode), [`treeCanvas`](../treesidebarmixin#volatile-treecanvas), [`mouseoverCanvas`](../treesidebarmixin#volatile-mouseovercanvas)

From [ContextMenuMixin](../contextmenumixin): [`contextMenuInfo`](../contextmenumixin#volatile-contextmenuinfo)


## Getters

| Member | Description |
| --- | --- |
| **isDensityMode**<br><code>boolean</code> |  |
| **colorSetting**<br><code>ColorSetting</code> | The `color` object as written, `value` undefined while nothing names a color and the layout decides (`effectiveColor`). |
| **rows**<br><code>RowsSetting &#124; undefined</code> | The `rows` object's field and order, or undefined while every source shares one plot. `source` is the only field the config admits here. |
| **isRowLayout**<br><code>boolean</code> | Whether each source takes a row of its own, which is the whole of what `rows` decides here: the tree sidebar, the row labels, the separators, the clustering menu and the row-order sort all hang off it. |
| **isOverlay**<br><code>boolean</code> | Every source in one plot box. The complement of the row layout, named for what is drawn rather than for the setting that is off. |
| **discoveredRows**<br><code>Source[]</code> | `TreeSidebarMixin`'s hook: the adapter's sources, discovered from the loaded regions in adapter order. |
| **sharesPanel**<br><code>boolean</code> | `TreeSidebarMixin`'s hook: whether several plots share one box, where only color tells the sources apart. A lone plot has nothing to be told apart from and is the pos/neg picture a quantitative track has always drawn. |
| **rowNoun**<br><code>string</code> | `TreeSidebarMixin`'s hook: the row color key over a shared panel lists subtracks. |
| **effectiveColor**<br><code>ColorSetting</code> | The color actually painted: what the config says, else the pos/neg pair about the `origin`. |
| **colorEncoding**<br><code>string &#124; FieldColorEncoding &#124; undefined</code> | `effectiveColor` as it paints, through the one resolver every display's color object goes through. |
| **wiggleColor**<br><code>ResolvedWiggleColor</code> | `colorEncoding` as the encoder and both backends take it. |
| **markColoring**<br><code>{ gradientPaints: boolean; rowColorPaintsMarks: boolean; markColor: MarkColorSource; }</code> | How the plot spends color (`wiggleMarkColoring`): whether the score gradient paints, whether row colors do, and which of a source's colors its marks take. |
| **scoreGradientPaints**<br><code>boolean</code> | Whether color is spent on the score: density always, where the white fade counts, and bars or points under a declared `linear` color. Lines part in two colors even then. |
| **notices**<br><code>string[]</code> | What `colorSetting`'s and `scales.y`'s slots say together that they cannot draw as written, and a gradient a line cannot paint, for the corner notice. |
| **legendColor**<br><code>string</code> | The one color the circular view's key names this track by (`CircularLegendSource`), which a ring of this display answers where it draws no ramp. The positive side, which is the whole plot wherever nothing parts. |
| **rowColorPaintsMarks**<br><code>boolean</code> | `TreeSidebarMixin`'s hook: a subtrack's color paints its plot while nothing else colors it: no score gradient, and no declared `color`. |
| **markSources**<br><code>{ name: string; color?: string &#124; undefined; }[]</code> | Each source and the color its marks paint in (`markColorOf`), which the encoder and the tooltip read. Where the palette deals the shared panel and some row took a color, a row left without one paints `UNCOLORED_ROW` grey rather than the plot color, which reads as one of the dealt. |
| **scoreRuleValues**<br><code>number[]</code> | Overrides WiggleCommonMixin's empty base, so the axis reaches a rule of `scales.y.rules` even where the visible data does not.<br><br>Empty in density, where no rule is drawn: the domain is spent on the color ramp there, so widening it stretches the ramp over a range nothing on screen reaches. |
| **numSources**<br><code>number</code> |  |
| **autoscaleSourceNames**<br><code>Set&lt;string&gt;</code> |  |
| **effectiveRowHeight**<br><code>number</code> | Resolved per-row height. This display is always fit-to-display-height — there is no pinned-height setting and so no `rowHeight` sentinel to resolve — but it carries the same name every row display exposes its resolved height under (see agent-docs/reference/ROW_HEIGHT_AND_FIT), which is also what tree-sidebar's `TreeDrawingModel` reads. |
| **rowsHeight**<br><code>number</code> | The height under `rowsTopOffset` the rows, or the one plot, fill. |
| **numRows**<br><code>number</code> | Rows actually drawn: overlay collapses every source onto one shared plot. Read by the render state and by everything that repeats itself per row (scalebars, cross hatches), so they can't disagree about how many rows exist. |
| **plotGeometry**<br><code>{ yTop: number; plotHeight: number; numRows: number; tickHeight: number; }</code> | One row takes the scalebar-label gutter at top and bottom, so its end labels are never clipped; a stack of rows gives that up, because the axis is drawn per row and maximum density is the point. `ticks`, the render height, the on-screen canvas and the SVG clip all read this, so a tick stays on the data it labels. |
| **scoreRampApplies**<br><code>boolean</code> | `scoreRampApplies` over the colors the marks paint in |
| **scoreRampReplacesAxis**<br><code>boolean</code> | A density row has no y scale, so under the one ramp the ramp is the key and carries the domain; bars and points keep their axis beside it. |
| **scoreColorScale**<br><code>RampScale &#124; undefined</code> | The score ramp as a color scale, or undefined when there is no single ramp to describe or no domain yet. `LegendMixin`'s `colorScales` lists it, so the on-screen key and the export draw one bar. The bar is drawn from the resolved color — the same cached LUT bytes both renderers color through — so a declared ramp's key is what the track paints. |
| **renderState**<br><code>WiggleGPURenderState</code> |  |
| **drawsRowLabels**<br><code>boolean</code> | Overlay draws every source on one row, so it names none. |
| **sidebarPanel**<br><code>SvgSidebarProps</code> | The dendrogram and row labels at the display's left, which the axis sits past on screen and the export parks left of the figure. |
| **valueScales**<br><code>ValueScale[]</code> | The one scale every row shares, ruling a band per row stacked down the track, past the dendrogram where one is shown. Density rows each in their own color map the scale to color rather than to y, so they rule no band and the chrome captions the domain instead; under the one ramp the ramp is the key and carries the domain itself. |
| **showRowSeparators**<br><code>boolean</code> |  |
| **thresholdColorScale**<br><code>ColorScale &#124; undefined</code> | The key a threshold with declared cuts draws: one row per interval, labelled by the span it covers. A threshold cutting at the `origin` draws none, because the axis already shows where the origin is and a `< 0` / `≥ 0` key on every bigWig says nothing a reader did not ask for. Density draws none either: there the ramp is the key. |
| **prefersOffset**<br><code>boolean</code> | Offset the track label above the plot so the left y-axis stays pinned to the content edge instead of dodging right of the label, and so a stack of rows is not hidden behind it. One density plot draws no left axis (just a top score legend), so there let the label overlap. |
| **colorScales**<br><code>ColorScale[]</code> | `LegendMixin`'s hook: the score ramp or threshold key, then the row color key, except in a shared panel painting the score gradient, where no row color shows. |
| **drawsTree**<br><code>boolean</code> | `TreeSidebarMixin`'s hook: off in overlay, which collapses every source onto one row, so a tree spreading its leaves over the full height would align to nothing. A subtree filter set in a row mode still applies and is still clearable from the track menu and WiggleHint. |
| **svgSidebar**<br><code>SvgSidebarProps</code> |  |

165 inherited getters from 13 models:

From [BaseDisplay](../basedisplay): [`parentTrack`](../basedisplay#getter-parenttrack), [`RenderingComponent`](../basedisplay#getter-renderingcomponent), [`DisplayBlurb`](../basedisplay#getter-displayblurb), [`adapterConfig`](../basedisplay#getter-adapterconfig), [`isMinimized`](../basedisplay#getter-isminimized), [`hoveredFeature`](../basedisplay#getter-hoveredfeature), [`featureNoun`](../basedisplay#getter-featurenoun), [`featureWidgetType`](../basedisplay#getter-featurewidgettype), [`plotKeys`](../basedisplay#getter-plotkeys), [`plot`](../basedisplay#getter-plot), [`schemaNotices`](../basedisplay#getter-schemanotices), [`plotExamples`](../basedisplay#getter-plotexamples), [`configDocsUrl`](../basedisplay#getter-configdocsurl)

From [TrackHeightMixin](../trackheightmixin): [`configuredHeight`](../trackheightmixin#getter-configuredheight), [`allottedHeight`](../trackheightmixin#getter-allottedheight), [`height`](../trackheightmixin#getter-height), [`resizing`](../trackheightmixin#getter-resizing), [`scrollContentHeight`](../trackheightmixin#getter-scrollcontentheight), [`scrollViewportHeight`](../trackheightmixin#getter-scrollviewportheight), [`scrollableHeight`](../trackheightmixin#getter-scrollableheight)

From [MultiRegionDisplayMixin](../multiregiondisplaymixin): [`host`](../multiregiondisplaymixin#getter-host), [`canvasWidthPx`](../multiregiondisplaymixin#getter-canvaswidthpx), [`settledSubPixelBinBp`](../multiregiondisplaymixin#getter-settledsubpixelbinbp), [`canRender`](../multiregiondisplaymixin#getter-canrender), [`rendersCanvas`](../multiregiondisplaymixin#getter-renderscanvas), [`trackVisibleRegions`](../multiregiondisplaymixin#getter-trackvisibleregions), [`viewportWithinLoadedData`](../multiregiondisplaymixin#getter-viewportwithinloadeddata), [`viewportEmpty`](../multiregiondisplaymixin#getter-viewportempty), [`fetchSuspended`](../multiregiondisplaymixin#getter-fetchsuspended), [`layoutReady`](../multiregiondisplaymixin#getter-layoutready), [`dataSuperseded`](../multiregiondisplaymixin#getter-datasuperseded), [`renderBlocks`](../multiregiondisplaymixin#getter-renderblocks), [`fetchInputs`](../multiregiondisplaymixin#getter-fetchinputs), [`regionPayloads`](../multiregiondisplaymixin#getter-regionpayloads), [`hasRegionData`](../multiregiondisplaymixin#getter-hasregiondata), [`staleSettingsDrawn`](../multiregiondisplaymixin#getter-stalesettingsdrawn), [`dataCurrent`](../multiregiondisplaymixin#getter-datacurrent), [`loadedAssembly`](../multiregiondisplaymixin#getter-loadedassembly), [`phaseViewportCurrent`](../multiregiondisplaymixin#getter-phaseviewportcurrent), [`svgReady`](../multiregiondisplaymixin#getter-svgready), [`paintInert`](../multiregiondisplaymixin#getter-paintinert), [`paintSuperseded`](../multiregiondisplaymixin#getter-paintsuperseded), [`displayPhase`](../multiregiondisplaymixin#getter-displayphase)

From [RegionTooLargeMixin](../regiontoolargemixin): [`gateEnabled`](../regiontoolargemixin#getter-gateenabled), [`byteGateAdapterConfig`](../regiontoolargemixin#getter-bytegateadapterconfig), [`configuredFetchSizeLimit`](../regiontoolargemixin#getter-configuredfetchsizelimit), [`densityTooLarge`](../regiontoolargemixin#getter-densitytoolarge), [`byteGateAdapterPath`](../regiontoolargemixin#getter-bytegateadapterpath), [`adapterFetchSizeLimit`](../regiontoolargemixin#getter-adapterfetchsizelimit), [`configForceLoad`](../regiontoolargemixin#getter-configforceload), [`gateViewportSpanBp`](../regiontoolargemixin#getter-gateviewportspanbp), [`gateViewport`](../regiontoolargemixin#getter-gateviewport), [`aboveForceLoadFloor`](../regiontoolargemixin#getter-aboveforceloadfloor), [`gateExempt`](../regiontoolargemixin#getter-gateexempt), [`estimatedFetchBytes`](../regiontoolargemixin#getter-estimatedfetchbytes), [`gateMeasurementStale`](../regiontoolargemixin#getter-gatemeasurementstale), [`gateByteLimit`](../regiontoolargemixin#getter-gatebytelimit), [`gateActive`](../regiontoolargemixin#getter-gateactive), [`densityGateActive`](../regiontoolargemixin#getter-densitygateactive), [`tooLargeStatus`](../regiontoolargemixin#getter-toolargestatus), [`regionTooLarge`](../regiontoolargemixin#getter-regiontoolarge), [`regionTooLargeReason`](../regiontoolargemixin#getter-regiontoolargereason), [`zoomCanReleaseGate`](../regiontoolargemixin#getter-zoomcanreleasegate), [`gateSkipsMeasuredViewport`](../regiontoolargemixin#getter-gateskipsmeasuredviewport)

From [RenderLifecycleMixin](../renderlifecyclemixin): [`painted`](../renderlifecyclemixin#getter-painted)

From [FetchMixin](../fetchmixin): [`isLoading`](../fetchmixin#getter-isloading), [`isLoadingOrCanceled`](../fetchmixin#getter-isloadingorcanceled), [`fetchInert`](../fetchmixin#getter-fetchinert), [`awaitingPrerequisite`](../fetchmixin#getter-awaitingprerequisite), [`awaitingDependentData`](../fetchmixin#getter-awaitingdependentdata), [`settingsFetchInputs`](../fetchmixin#getter-settingsfetchinputs)

From [WiggleCommonMixin](../wigglecommonmixin): [`resolution`](../wigglecommonmixin#getter-resolution), [`rpcDataMap`](../wigglecommonmixin#getter-rpcdatamap), [`origin`](../wigglecommonmixin#getter-origin), [`lineWidth`](../wigglecommonmixin#getter-linewidth), [`size`](../wigglecommonmixin#getter-size), [`maxGapMultiple`](../wigglecommonmixin#getter-maxgapmultiple), [`aggregate`](../wigglecommonmixin#getter-aggregate), [`extent`](../wigglecommonmixin#getter-extent), [`renderingType`](../wigglecommonmixin#getter-renderingtype), [`hasResolution`](../wigglecommonmixin#getter-hasresolution), [`effectiveExtent`](../wigglecommonmixin#getter-effectiveextent), [`tooltipShowsMinMax`](../wigglecommonmixin#getter-tooltipshowsminmax), [`autoscaleRange`](../wigglecommonmixin#getter-autoscalerange), [`domain`](../wigglecommonmixin#getter-domain), [`defaultScoreDomain`](../wigglecommonmixin#getter-defaultscoredomain)

From [YFieldConfigMixin](../yfieldconfigmixin): [`yField`](../yfieldconfigmixin#getter-yfield)

From [WiggleScoreConfigMixin](../wigglescoreconfigmixin): [`axisReachesZero`](../wigglescoreconfigmixin#getter-axisreacheszero)

From [ScoreScaleMixin](../scorescalemixin): [`scaleType`](../scorescalemixin#getter-scaletype), [`scaleZero`](../scorescalemixin#getter-scalezero), [`domainQuantile`](../scorescalemixin#getter-domainquantile), [`clipQuantile`](../scorescalemixin#getter-clipquantile), [`symlogConstant`](../scorescalemixin#getter-symlogconstant), [`manualMinScore`](../scorescalemixin#getter-manualminscore), [`manualMaxScore`](../scorescalemixin#getter-manualmaxscore), [`valueScaleNotices`](../scorescalemixin#getter-valuescalenotices), [`autoscaleGroup`](../scorescalemixin#getter-autoscalegroup), [`scaleTitle`](../scorescalemixin#getter-scaletitle), [`grid`](../scorescalemixin#getter-grid), [`minimalTicks`](../scorescalemixin#getter-minimalticks), [`scoreRulesDrawn`](../scorescalemixin#getter-scorerulesdrawn), [`scoreRules`](../scorescalemixin#getter-scorerules)

From [ScoreAxisMixin](../scoreaxismixin): [`autoscaledDomain`](../scoreaxismixin#getter-autoscaleddomain), [`minScoreBound`](../scoreaxismixin#getter-minscorebound), [`maxScoreBound`](../scoreaxismixin#getter-maxscorebound), [`hasManualScoreBounds`](../scoreaxismixin#getter-hasmanualscorebounds), [`axes`](../scoreaxismixin#getter-axes)

From [LegendMixin](../legendmixin): [`showLegend`](../legendmixin#getter-showlegend), [`legendTop`](../legendmixin#getter-legendtop), [`legendRight`](../legendmixin#getter-legendright), [`legendSpec`](../legendmixin#getter-legendspec), [`hasLegendKey`](../legendmixin#getter-haslegendkey)

From [TreeSidebarMixin](../treesidebarmixin): [`showTree`](../treesidebarmixin#getter-showtree), [`showBranchLength`](../treesidebarmixin#getter-showbranchlength), [`showRowLabels`](../treesidebarmixin#getter-showrowlabels), [`treeAreaWidth`](../treesidebarmixin#getter-treeareawidth), [`rowDomain`](../treesidebarmixin#getter-rowdomain), [`rowLabels`](../treesidebarmixin#getter-rowlabels), [`rowTreeProvenance`](../treesidebarmixin#getter-rowtreeprovenance), [`rowFocus`](../treesidebarmixin#getter-rowfocus), [`rowColorSetting`](../treesidebarmixin#getter-rowcolorsetting), [`baseRowColor`](../treesidebarmixin#getter-baserowcolor), [`baseRowDomain`](../treesidebarmixin#getter-baserowdomain), [`guideTreeNewick`](../treesidebarmixin#getter-guidetreenewick), [`rowAlias`](../treesidebarmixin#getter-rowalias), [`unlistedRowsSort`](../treesidebarmixin#getter-unlistedrowssort), [`rowBanding`](../treesidebarmixin#getter-rowbanding), [`rowsHeaderHeight`](../treesidebarmixin#getter-rowsheaderheight), [`rowFocusLineHeight`](../treesidebarmixin#getter-rowfocuslineheight), [`rowsTopOffset`](../treesidebarmixin#getter-rowstopoffset), [`guideTree`](../treesidebarmixin#getter-guidetree), [`guideTreeHonoursDomain`](../treesidebarmixin#getter-guidetreehonoursdomain), [`rowTree`](../treesidebarmixin#getter-rowtree), [`rowOrder`](../treesidebarmixin#getter-roworder), [`expandedRows`](../treesidebarmixin#getter-expandedrows), [`internalRowFields`](../treesidebarmixin#getter-internalrowfields), [`rowColorFields`](../treesidebarmixin#getter-rowcolorfields), [`rowBandingNotices`](../treesidebarmixin#getter-rowbandingnotices), [`rowPaletteDeals`](../treesidebarmixin#getter-rowpalettedeals), [`rowColorDealRows`](../treesidebarmixin#getter-rowcolordealrows), [`rowStylingIsCustom`](../treesidebarmixin#getter-rowstylingiscustom), [`rowColorChoice`](../treesidebarmixin#getter-rowcolorchoice), [`rowColorAttribute`](../treesidebarmixin#getter-rowcolorattribute), [`dealtRowColors`](../treesidebarmixin#getter-dealtrowcolors), [`rowColorAttributesOffered`](../treesidebarmixin#getter-rowcolorattributesoffered), [`resolvedRowColors`](../treesidebarmixin#getter-resolvedrowcolors), [`rowArrangementIsCustom`](../treesidebarmixin#getter-rowarrangementiscustom), [`editableSources`](../treesidebarmixin#getter-editablesources), [`rowColorKeyInputs`](../treesidebarmixin#getter-rowcolorkeyinputs), [`rowColorScales`](../treesidebarmixin#getter-rowcolorscales), [`clusterableSources`](../treesidebarmixin#getter-clusterablesources), [`parsedTree`](../treesidebarmixin#getter-parsedtree), [`root`](../treesidebarmixin#getter-root), [`bandedRows`](../treesidebarmixin#getter-bandedrows), [`bandedSources`](../treesidebarmixin#getter-bandedsources), [`rowBands`](../treesidebarmixin#getter-rowbands), [`sources`](../treesidebarmixin#getter-sources), [`autoClusterReady`](../treesidebarmixin#getter-autoclusterready), [`treeRoot`](../treesidebarmixin#getter-treeroot), [`rowsContentHeight`](../treesidebarmixin#getter-rowscontentheight), [`hierarchy`](../treesidebarmixin#getter-hierarchy), [`spatialIndex`](../treesidebarmixin#getter-spatialindex), [`clusterPartition`](../treesidebarmixin#getter-clusterpartition), [`treelessBandCount`](../treesidebarmixin#getter-treelessbandcount), [`treeHasBranchLengths`](../treesidebarmixin#getter-treehasbranchlengths)


## Methods

| Member | Description |
| --- | --- |
| **sharedRpcProps**<br><code>() =&gt; { resolution: number; yField: string; }</code> | The fetch cache keys, spread into the display's own `rpcProps()`. The color settings are not among them: every mode partitions by sign on the main thread, so moving the pivot re-encodes and refetches nothing.<br><br>Named apart from `rpcProps` rather than overridden through it: MST *intersects* what each `.views()` layer returns, so two same-named methods resolve to the first one at the type level however the runtime member behaves. |
| **sharedGpuProps**<br><code>() =&gt; { wiggleColor: ResolvedWiggleColor; origin: number; aggregate: string; effectiveExtent: string; renderingType: string; maxGapMultiple: number; }</code> | The encoder inputs — everything but the row list and the row layout. Spread into the display's `gpuProps()`; see `sharedRpcProps` for why it isn't an override. |
| **rpcProps**<br><code>() =&gt; { resolution: number; yField: string; }</code> | Neither `aggregate` nor `extent` is a fetch key: both pick among arrays the fetch already ships, so a change re-encodes and refetches nothing (WIGGLE_DISPLAY.md, "`aggregate`, `extent`"). |
| **gpuProps**<br><code>() =&gt; { sources: { name: string; color?: string &#124; undefined; }[]; rowLayout: boolean; perSource: boolean; wiggleColor: ResolvedWiggleColor; origin: number; aggregate: string; effectiveExtent: string; renderingType: string; maxGapMultiple: number; }</code> | The row list is this display's own: the encoder places each payload source by its position here, so a filter or a reorder re-uploads bytes already in hand.<br><br>The color rides here and not in `rpcProps`: the worker ships one set of score arrays and the main thread colors each instance by its side of the cut, so a new color re-encodes and refetches nothing. |
| **trackMenuItems**<br><code>() =&gt; MenuItem[]</code> |  |
| **contextMenuItems**<br><code>() =&gt; MenuItem[]</code> | Right-click menu, built from the column the click landed on. The position is captured here rather than read inside the onClick, because `closeContextMenu` runs first when an item is clicked. |

17 inherited methods from 5 models:

From [BaseDisplay](../basedisplay): [`renderingProps`](../basedisplay#method-renderingprops), [`liftPlot`](../basedisplay#method-liftplot), [`plotProblems`](../basedisplay#method-plotproblems), [`plotWrites`](../basedisplay#method-plotwrites)

From [MultiRegionDisplayMixin](../multiregiondisplaymixin): [`regionHasData`](../multiregiondisplaymixin#method-regionhasdata), [`isCacheValid`](../multiregiondisplaymixin#method-iscachevalid)

From [RegionTooLargeMixin](../regiontoolargemixin): [`resolvedByteLimit`](../regiontoolargemixin#method-resolvedbytelimit), [`gateFetchState`](../regiontoolargemixin#method-gatefetchstate)

From [LegendMixin](../legendmixin): [`svgLegendWidth`](../legendmixin#method-svglegendwidth), [`colorScalesIn`](../legendmixin#method-colorscalesin), [`legendSpecIn`](../legendmixin#method-legendspecin)

From [TreeSidebarMixin](../treesidebarmixin): [`expandRows`](../treesidebarmixin#method-expandrows), [`svgSidebarWidth`](../treesidebarmixin#method-svgsidebarwidth), [`rowBand`](../treesidebarmixin#method-rowband), [`dealtRowColorsFor`](../treesidebarmixin#method-dealtrowcolorsfor), [`rowColorFor`](../treesidebarmixin#method-rowcolorfor), [`rowOrderWillDropTree`](../treesidebarmixin#method-roworderwilldroptree)


## Actions

| Member | Description |
| --- | --- |
| **startRenderingBackend**<br><code>(backend: WiggleRenderingBackend) =&gt; void</code> |  |
| **setShowRowSeparators**<br><code>(arg: boolean) =&gt; void</code> |  |
| **setRowLayout**<br><code>(on: boolean) =&gt; void</code> | The layout half of a Plot type leaf — `Multi-row` or `Overlapping`, each holding the five plot names. Writes the field alone, so the arrangement survives a trip through the shared plot and comes back with the rows. |
| **setPlot**<br><code>({ mark, interpolate, rowLayout, }: { mark: "bar" &#124; "line" &#124; "point" &#124; "span"; interpolate?: "linear" &#124; "step" &#124; undefined; rowLayout: boolean; }) =&gt; void</code> | A Plot type leaf whole, so the regions encode once and never as the new plot in the old layout. |
| **openPlotDialog**<br><code>(seed?: Plot &#124; undefined) =&gt; void</code> | The arrangement dialog's "Edit plot..." button: the color object and the rows beside it as text, the escape for a ramp, several cut points or a typed row order, none of which the dialog's own controls offer. |
| **sortRowsByScoreAt**<br><code>(refName: string, pos: number) =&gt; boolean</code> | Rank the rows by each source's score at one genomic base. Reads the region data already in hand — no refetch, no RPC — and writes the order through `rows.domain`, the same channel clustering and the arrangement dialog write, so "Reset row order" undoes all three.<br><br>Named by coordinate rather than by loaded-region index because both entry points are: the right-click hit resolves to one, and a session's `sortRowsBy` carries one across a reload. Resolving that region and refusing the two cases where a sort would only cost a `rows.domain` write are `sortRowsAtColumn`'s, shared with the multi-row feature display's twin, and so is the returned "did it sort" the declarative entry point reads to decide whether to keep its trigger for a later fetch. |
| **fetchNeeded**<br><code>(needed: IndexedRegion[]) =&gt; Promise&lt;void&gt;</code> |  |
| **renderSvg**<br><code>(opts?: ExportSvgDisplayOptions &#124; undefined) =&gt; Promise&lt;ReactElement&lt;unknown, string &#124; JSXElementConstructor&lt;any&gt;&gt; &#124; Iterable&lt;ReactNode&gt; &#124; AwaitedReactNode&gt;</code> |  |

78 inherited actions from 12 models:

From [BaseDisplay](../basedisplay): [`setStatusMessage`](../basedisplay#action-setstatusmessage), [`setError`](../basedisplay#action-seterror), [`clearHoveredFeature`](../basedisplay#action-clearhoveredfeature), [`reload`](../basedisplay#action-reload), [`applyDisplaySettings`](../basedisplay#action-applydisplaysettings), [`applyPlot`](../basedisplay#action-applyplot)

From [TrackHeightMixin](../trackheightmixin): [`setScrollTop`](../trackheightmixin#action-setscrolltop), [`setHostHeight`](../trackheightmixin#action-sethostheight), [`setHeight`](../trackheightmixin#action-setheight), [`resizeHeight`](../trackheightmixin#action-resizeheight), [`expandToContentHeight`](../trackheightmixin#action-expandtocontentheight)

From [MultiRegionDisplayMixin](../multiregiondisplaymixin): [`setLoadedRegion`](../multiregiondisplaymixin#action-setloadedregion), [`evictRegionStore`](../multiregiondisplaymixin#action-evictregionstore), [`dropLoadedRegion`](../multiregiondisplaymixin#action-droploadedregion), [`clearDisplaySpecificData`](../multiregiondisplaymixin#action-cleardisplayspecificdata), [`clearSettingsBakedData`](../multiregiondisplaymixin#action-clearsettingsbakeddata), [`clearAllRpcData`](../multiregiondisplaymixin#action-clearallrpcdata), [`invalidateSettings`](../multiregiondisplaymixin#action-invalidatesettings), [`fetchRegions`](../multiregiondisplaymixin#action-fetchregions), [`afterAttach`](../multiregiondisplaymixin#action-afterattach)

From [RegionTooLargeMixin](../regiontoolargemixin): [`clearByteEstimate`](../regiontoolargemixin#action-clearbyteestimate), [`clearGateMeasurements`](../regiontoolargemixin#action-cleargatemeasurements), [`setForceLoadTrack`](../regiontoolargemixin#action-setforceloadtrack), [`commitFetchBytes`](../regiontoolargemixin#action-commitfetchbytes), [`forceLoad`](../regiontoolargemixin#action-forceload)

From [RenderLifecycleMixin](../renderlifecyclemixin): [`markCanvasDrawn`](../renderlifecyclemixin#action-markcanvasdrawn), [`resetCanvasDrawn`](../renderlifecyclemixin#action-resetcanvasdrawn), [`stopRenderingBackend`](../renderlifecyclemixin#action-stoprenderingbackend), [`renderNow`](../renderlifecyclemixin#action-rendernow), [`setOffScreen`](../renderlifecyclemixin#action-setoffscreen), [`setRenderError`](../renderlifecyclemixin#action-setrendererror), [`attachRenderingBackend`](../renderlifecyclemixin#action-attachrenderingbackend)

From [FetchMixin](../fetchmixin): [`stopActiveFetch`](../fetchmixin#action-stopactivefetch), [`openStatusStream`](../fetchmixin#action-openstatusstream), [`cancelFetch`](../fetchmixin#action-cancelfetch), [`cancelFetchByUser`](../fetchmixin#action-cancelfetchbyuser), [`beforeDestroy`](../fetchmixin#action-beforedestroy), [`beginFetch`](../fetchmixin#action-beginfetch), [`endFetch`](../fetchmixin#action-endfetch), [`runFetch`](../fetchmixin#action-runfetch)

From [WiggleCommonMixin](../wigglecommonmixin): [`setRpcData`](../wigglecommonmixin#action-setrpcdata), [`selectFeature`](../wigglecommonmixin#action-selectfeature), [`setResolution`](../wigglecommonmixin#action-setresolution), [`setOrigin`](../wigglecommonmixin#action-setorigin), [`setMark`](../wigglecommonmixin#action-setmark), [`setAggregate`](../wigglecommonmixin#action-setaggregate), [`setExtent`](../wigglecommonmixin#action-setextent), [`setSize`](../wigglecommonmixin#action-setsize)

From [ScoreScaleMixin](../scorescalemixin): [`setScaleType`](../scorescalemixin#action-setscaletype), [`setScaleZero`](../scorescalemixin#action-setscalezero), [`setDomainQuantile`](../scorescalemixin#action-setdomainquantile), [`setMinScore`](../scorescalemixin#action-setminscore), [`setMaxScore`](../scorescalemixin#action-setmaxscore), [`setAutoscaleGroup`](../scorescalemixin#action-setautoscalegroup), [`setGrid`](../scorescalemixin#action-setgrid), [`setScoreRules`](../scorescalemixin#action-setscorerules)

From [StoredHoverMixin](../storedhovermixin): [`setHoveredFeature`](../storedhovermixin#action-sethoveredfeature)

From [LegendMixin](../legendmixin): [`setShowLegend`](../legendmixin#action-setshowlegend), [`dismissLegendSection`](../legendmixin#action-dismisslegendsection)

From [TreeSidebarMixin](../treesidebarmixin): [`setShowTree`](../treesidebarmixin#action-setshowtree), [`setShowBranchLength`](../treesidebarmixin#action-setshowbranchlength), [`setShowRowLabels`](../treesidebarmixin#action-setshowrowlabels), [`setTreeAreaWidth`](../treesidebarmixin#action-settreeareawidth), [`setRunClustering`](../treesidebarmixin#action-setrunclustering), [`setClusterRegion`](../treesidebarmixin#action-setclusterregion), [`setSortRowsBy`](../treesidebarmixin#action-setsortrowsby), [`setHoveredTreeNode`](../treesidebarmixin#action-sethoveredtreenode), [`setTreeCanvasRef`](../treesidebarmixin#action-settreecanvasref), [`setMouseoverCanvasRef`](../treesidebarmixin#action-setmouseovercanvasref), [`setRowOrder`](../treesidebarmixin#action-setroworder), [`setRowLabels`](../treesidebarmixin#action-setrowlabels), [`setRowFocus`](../treesidebarmixin#action-setrowfocus), [`applyRowEdits`](../treesidebarmixin#action-applyrowedits), [`resetRowArrangement`](../treesidebarmixin#action-resetrowarrangement), [`setRowColorChoice`](../treesidebarmixin#action-setrowcolorchoice), [`focusLegendEntry`](../treesidebarmixin#action-focuslegendentry)

From [ContextMenuMixin](../contextmenumixin): [`openContextMenu`](../contextmenumixin#action-opencontextmenu), [`closeContextMenu`](../contextmenumixin#action-closecontextmenu)


