# LinearHicDisplay

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 `hic` plugin. [View source](https://github.com/GMOD/jbrowse-components/blob/main/plugins/hic/src/LinearHicDisplay/model.ts).

## Example usage

A `HicTrack` whose display pins the color scale's top, so two tracks set
alike share one scale, and runs one binsize coarser than the zoom picks:

```js
{
  type: 'HicTrack',
  trackId: 'hic',
  name: 'Hi-C',
  assemblyNames: ['hg38'],
  adapter: { type: 'HicAdapter', uri: 'https://example.com/contacts.hic' },
  displays: [
    {
      type: 'LinearHicDisplay',
      displayId: 'hic-LinearHicDisplay',
      color: { scale: 'log', domainMax: 500 },
      resolutionBias: 1,
    },
  ],
}
```

The Hi-C contact matrix as a triangle over the view.

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

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('LinearHicDisplay')</code> |  |
| **configuration**<br><code>configuration: ConfigurationReference(configSchema)</code> |  |

1 inherited property from one model:

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


## Volatiles

| Member | Description |
| --- | --- |
| **fileInfo**<br><code>AdapterRead&lt;HicFileInfo&gt; &#124; undefined</code> | The file's normalizations and binsizes, stamped with the adapter config they answer. |

24 inherited volatiles from 8 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 [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 [KeyedFetchMixin](../keyedfetchmixin): [`loadedFetchKey`](../keyedfetchmixin#volatile-loadedfetchkey)

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 [LegendMixin](../legendmixin): [`dismissedLegendSections`](../legendmixin#volatile-dismissedlegendsections)

From [TriangleMatrixMixin](../trianglematrixmixin): [`rpcData`](../trianglematrixmixin#volatile-rpcdata)


## Getters

| Member | Description |
| --- | --- |
| **availableNormalizations**<br><code>string[] &#124; undefined</code> |  |
| **availableResolutions**<br><code>number[] &#124; undefined</code> | Smallest first, so a negative `resolutionBias` is always finer. |
| **resolutionBias**<br><code>number</code> |  |
| **colorEncoding**<br><code>HicColorEncoding</code> | The `color` object as it paints, through the shared reader and `count`'s preset: a linear or log ramp whose `reverse`, where unset, follows whether the scheme runs dark at its low end. The `scheme` and `domainQuantile` slots have defaults, so both are always set. |
| **notices**<br><code>string[]</code> | What the corner notice lists. |
| **colorScaleType**<br><code>"linear" &#124; "log"</code> |  |
| **colorScheme**<br><code>"blues" &#124; "blueyellowred" &#124; "cividis" &#124; "fall" &#124; "inferno" &#124; "juicebox" &#124; "magma" &#124; "purpleorange" &#124; "redblue" &#124; "redgreyblue" &#124; "reds" &#124; "viridis"</code> |  |
| **colorReverse**<br><code>boolean</code> | `color.reverse`, or where unset whether the scheme runs dark at its low end. |
| **colorRamp**<br><code>Uint8Array&lt;ArrayBufferLike&gt;</code> | The ramp's 256 entries: the GPU's texture, the Canvas2D fill and the legend read this one table. It reads `colorScheme` and `colorReverse` rather than the encoding, so a domain edit re-uploads no texture. |
| **colorQuantile**<br><code>number</code> | `color.domainQuantile`: the quantile of the loaded counts an unset `domainMax` follows, their maximum at 1. |
| **colorFollowsPercentile**<br><code>boolean</code> | Whether an unset `color.domainMax` saturates at `colorQuantile` rather than the counts' maximum. |
| **saturationQuantile**<br><code>number</code> | The quantile "Emphasize faint contacts" saturates at: `colorQuantile` while it clips, else the one ticking it writes. The worker computes this one whichever is drawn, so the toggle refetches nothing. |
| **showResolutionControls**<br><code>boolean</code> |  |
| **selectedNormalization**<br><code>string</code> |  |
| **hasResolutions**<br><code>boolean</code> | Whether the binsize list has arrived; every resolution control gates on it. |
| **activeNormalization**<br><code>string</code> | The normalization to request: the selection where the file has it, else the next best it does. A getter, so a file lacking the selection never marks the track edited. |
| **colorDomain**<br><code>[number, number]</code> | The domain the counts are colored over, as every ramp spans one: a pinned end holds, and an open one follows the loaded counts from 0, the top at their `colorQuantile` below 1, else their maximum. |
| **awaitingPrerequisite**<br><code>boolean</code> | Retry is two-stage: the contact fetch declines until the header it needs lands, and the header's arrival wakes it. `infoFetchFailure.test.ts` pins it. |
| **showResolutionBox**<br><code>boolean</code> | Whether the resolution box is up; the chrome starts the key below it. |
| **legendTop**<br><code>number</code> |  |
| **appliedNormalization**<br><code>string</code> | The normalization the loaded matrix carries, which falls back per binsize (KR at 5 kb, nothing at 2.5 Mb is typical). The menu ticks this. Fetch-derived, so it stays out of `rpcProps()`. |
| **scaleType**<br><code>ScaleTypeCode</code> |  |
| **autoResolutionIdx**<br><code>number</code> | The binsize index auto mode picks: the largest at most 2 bp/px, about half a bin per pixel, else the finest. |
| **colorScales**<br><code>ColorScale[]</code> | The count ramp, once there is a domain to span. The ends are where the ramp paints them, and a top below the largest loaded count reads `≥`. |
| **effectiveResolutionIdx**<br><code>number</code> | The index in effect after `resolutionBias`, clamped so a bias set at another zoom cannot index out of range. |
| **valueLabel**<br><code>string</code> | What the tooltip calls a bin's value. |
| **effectiveResolution**<br><code>number &#124; undefined</code> |  |
| **canStepResolutionFiner**<br><code>boolean</code> |  |
| **canStepResolutionCoarser**<br><code>boolean</code> |  |
| **renderState**<br><code>HicRenderState</code> |  |
| **viewSignature**<br><code>string &#124; undefined</code> | The static blocks plus the binsize, so a pan inside them redraws and only a block entering or a binsize step refetches. Undefined until the header lands. |

74 inherited getters from 9 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 [GlobalFetchMixin](../globalfetchmixin): [`host`](../globalfetchmixin#getter-host), [`staticBlockSignature`](../globalfetchmixin#getter-staticblocksignature), [`dynamicBlockSignature`](../globalfetchmixin#getter-dynamicblocksignature), [`viewportEmpty`](../globalfetchmixin#getter-viewportempty), [`canRender`](../globalfetchmixin#getter-canrender), [`rendersCanvas`](../globalfetchmixin#getter-renderscanvas), [`paintInert`](../globalfetchmixin#getter-paintinert), [`svgReady`](../globalfetchmixin#getter-svgready), [`displayPhase`](../globalfetchmixin#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): [`paintSuperseded`](../renderlifecyclemixin#getter-paintsuperseded), [`painted`](../renderlifecyclemixin#getter-painted)

From [KeyedFetchMixin](../keyedfetchmixin): [`dataSuperseded`](../keyedfetchmixin#getter-datasuperseded), [`currentFetchKey`](../keyedfetchmixin#getter-currentfetchkey), [`dataCurrent`](../keyedfetchmixin#getter-datacurrent)

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

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

From [TriangleMatrixMixin](../trianglematrixmixin): [`squashToHeight`](../trianglematrixmixin#getter-squashtoheight), [`matrixTop`](../trianglematrixmixin#getter-matrixtop), [`canvasWidth`](../trianglematrixmixin#getter-canvaswidth), [`viewTransform`](../trianglematrixmixin#getter-viewtransform), [`matrixRegions`](../trianglematrixmixin#getter-matrixregions), [`matrixHeight`](../trianglematrixmixin#getter-matrixheight), [`matrixBlocks`](../trianglematrixmixin#getter-matrixblocks), [`yScalar`](../trianglematrixmixin#getter-yscalar), [`triangleTransform`](../trianglematrixmixin#getter-triangletransform), [`triangleFrame`](../trianglematrixmixin#getter-triangleframe)


## Methods

| Member | Description |
| --- | --- |
| **rpcProps**<br><code>() =&gt; { normalization: string; quantile: number; }</code> | The settings that refetch. The binsize is zoom-derived, so it travels as its own argument. |
| **hitTest**<br><code>(mouseX: number, mouseY: number) =&gt; HicContactItem &#124; undefined</code> | The contact under a display-px point, through the inverse of the transform the matrix was drawn with. |
| **trackMenuItems**<br><code>() =&gt; MenuItem[]</code> |  |
| **renderSvg**<br><code>(opts: ExportSvgDisplayOptions) =&gt; Promise&lt;ReactNode&gt;</code> |  |

11 inherited methods from 4 models:

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

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 [TriangleMatrixMixin](../trianglematrixmixin): [`cellToScreen`](../trianglematrixmixin#method-celltoscreen), [`screenToCell`](../trianglematrixmixin#method-screentocell)


## Actions

| Member | Description |
| --- | --- |
| **startRenderingBackend**<br><code>(backend: HicRenderingBackend) =&gt; void</code> |  |
| **setLogScale**<br><code>(log: boolean) =&gt; void</code> | The Log scale toggle: `color.scale` log, or unset for `count`'s linear preset. |
| **setColorFollowsPercentile**<br><code>(f: boolean) =&gt; void</code> |  |
| **setShowResolutionControls**<br><code>(f: boolean) =&gt; void</code> |  |
| **setColorScheme**<br><code>(scheme: "blues" &#124; "blueyellowred" &#124; "cividis" &#124; "fall" &#124; "inferno" &#124; "juicebox" &#124; "magma" &#124; "purpleorange" &#124; "redblue" &#124; "redgreyblue" &#124; "reds" &#124; "viridis") =&gt; void</code> | The scheme, with `reverse` back to unset so it follows the scheme. |
| **setActiveNormalization**<br><code>(f: string) =&gt; void</code> |  |
| **setFileInfo**<br><code>(read: AdapterRead&lt;HicFileInfo&gt;) =&gt; void</code> |  |
| **resetResolutionBias**<br><code>() =&gt; void</code> |  |
| **setResolutionIdx**<br><code>(idx: number) =&gt; void</code> | Lock to `availableResolutions[idx]`, clamped, stored as an offset from the auto pick so the choice keeps its meaning across zoom. |
| **setResolution**<br><code>(binSize: number) =&gt; void</code> | Lock to a binsize the file offers; any other is ignored. |
| **stepResolution**<br><code>(delta: number) =&gt; void</code> |  |

36 inherited actions from 8 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 [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 [KeyedFetchMixin](../keyedfetchmixin): [`commitFetchResult`](../keyedfetchmixin#action-commitfetchresult)

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 [LegendMixin](../legendmixin): [`setShowLegend`](../legendmixin#action-setshowlegend), [`dismissLegendSection`](../legendmixin#action-dismisslegendsection)

From [TriangleMatrixMixin](../trianglematrixmixin): [`setRpcData`](../trianglematrixmixin#action-setrpcdata), [`setSquashToHeight`](../trianglematrixmixin#action-setsquashtoheight)


