@jbrowse/wiggle-core 5.0.0-beta.1 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -107
- package/esm/AutoscaleGroupDialog.d.ts +7 -0
- package/esm/AutoscaleGroupDialog.js +26 -0
- package/esm/ScoreAxisMixin.d.ts +134 -0
- package/esm/ScoreAxisMixin.js +213 -0
- package/esm/ScoreFieldConfigMixin.d.ts +72 -0
- package/esm/ScoreFieldConfigMixin.js +25 -0
- package/esm/ScorePlotChrome.d.ts +45 -0
- package/esm/ScorePlotChrome.js +47 -0
- package/esm/ScorePlotSvgFrame.d.ts +27 -0
- package/esm/ScorePlotSvgFrame.js +23 -0
- package/esm/ScoreScaleMixin.d.ts +113 -50
- package/esm/ScoreScaleMixin.js +148 -70
- package/esm/SetMinMaxDialog.d.ts +3 -2
- package/esm/SetMinMaxDialog.js +20 -6
- package/esm/SetScoreRulesDialog.d.ts +14 -0
- package/esm/SetScoreRulesDialog.js +45 -0
- package/esm/WiggleScoreConfigMixin.d.ts +89 -0
- package/esm/WiggleScoreConfigMixin.js +54 -0
- package/esm/autoscale.d.ts +54 -14
- package/esm/autoscale.js +105 -180
- package/esm/autoscaleGroup.d.ts +30 -0
- package/esm/autoscaleGroup.js +97 -0
- package/esm/chrome.d.ts +5 -0
- package/esm/chrome.js +7 -0
- package/esm/computeYTicks.d.ts +1 -1
- package/esm/computeYTicks.js +4 -3
- package/esm/constants.d.ts +1 -2
- package/esm/constants.js +1 -10
- package/esm/dataTypes.d.ts +4 -6
- package/esm/displayModel.d.ts +1 -2
- package/esm/gapBreak.d.ts +2 -3
- package/esm/gapBreak.js +2 -3
- package/esm/index.d.ts +24 -25
- package/esm/index.js +20 -18
- package/esm/normalize.d.ts +1 -26
- package/esm/normalize.js +1 -86
- package/esm/pointMarker.d.ts +7 -2
- package/esm/pointMarker.js +14 -18
- package/esm/pointSizeMenu.d.ts +30 -11
- package/esm/pointSizeMenu.js +42 -19
- package/esm/renderingBackendTypes.d.ts +13 -4
- package/esm/renderingBackendTypes.js +4 -1
- package/esm/rowLabelOffset.d.ts +8 -0
- package/esm/rowLabelOffset.js +16 -0
- package/esm/scale.d.ts +12 -8
- package/esm/scale.js +27 -14
- package/esm/scoreFieldConfigSchemaFields.d.ts +10 -0
- package/esm/scoreFieldConfigSchemaFields.js +8 -0
- package/esm/scoreMenuItems.d.ts +35 -16
- package/esm/scoreMenuItems.js +95 -62
- package/esm/scoreRuleMarks.d.ts +14 -39
- package/esm/scoreRuleMarks.js +12 -45
- package/esm/transferables.js +4 -9
- package/esm/valueScaleConfigSchema.d.ts +253 -0
- package/esm/valueScaleConfigSchema.js +270 -0
- package/esm/visibleStatsDomain.d.ts +20 -8
- package/esm/visibleStatsDomain.js +32 -27
- package/esm/wiggleRenderModes.generated.d.ts +1 -2
- package/esm/wiggleRenderModes.generated.js +1 -2
- package/package.json +14 -9
- package/esm/CrossHatches.d.ts +0 -11
- package/esm/CrossHatches.js +0 -32
- package/esm/ScoreRules.d.ts +0 -11
- package/esm/ScoreRules.js +0 -37
- package/esm/YScaleBar.d.ts +0 -6
- package/esm/YScaleBar.js +0 -46
- package/esm/YScaleBarOverlay.d.ts +0 -6
- package/esm/YScaleBarOverlay.js +0 -24
- package/esm/scoreAxisConfigSchemaFields.d.ts +0 -44
- package/esm/scoreAxisConfigSchemaFields.js +0 -54
- package/esm/yScaleTicks.d.ts +0 -59
- package/esm/yScaleTicks.js +0 -59
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ScoreFieldConfigModel } from './scoreFieldConfigSchemaFields.ts';
|
|
2
|
+
export interface ScoreFieldConfigHost {
|
|
3
|
+
configuration: ScoreFieldConfigModel;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* #stateModel ScoreFieldConfigMixin
|
|
7
|
+
* #category display
|
|
8
|
+
*
|
|
9
|
+
* `WiggleScoreConfigMixin` plus `scoreField`, for a display that plots one
|
|
10
|
+
* configured feature field and so declares `scoreFieldConfigSchemaFields`:
|
|
11
|
+
* the wiggle display. `LinearMarkDisplay` names a field per mark and composes
|
|
12
|
+
* the base instead.
|
|
13
|
+
*/
|
|
14
|
+
export declare function ScoreFieldConfigMixin(): import("@jbrowse/mobx-state-tree").IModelType<Omit<{}, never>, {
|
|
15
|
+
readonly scaleType: string;
|
|
16
|
+
readonly scaleZero: boolean;
|
|
17
|
+
readonly manualMinScore: number | undefined;
|
|
18
|
+
readonly manualMaxScore: number | undefined;
|
|
19
|
+
readonly defaultScoreDomain: [number | undefined, number | undefined];
|
|
20
|
+
readonly valueScales: import("@jbrowse/display-ui").ValueScale[];
|
|
21
|
+
readonly autoscaleGroup: string | undefined;
|
|
22
|
+
readonly autoscaleRange: [number, number] | undefined;
|
|
23
|
+
} & {
|
|
24
|
+
readonly axisReachesZero: boolean;
|
|
25
|
+
} & {
|
|
26
|
+
readonly autoscaledDomain: [number, number] | undefined;
|
|
27
|
+
readonly minScoreBound: number | undefined;
|
|
28
|
+
readonly maxScoreBound: number | undefined;
|
|
29
|
+
readonly hasManualScoreBounds: boolean;
|
|
30
|
+
readonly axes: import("@jbrowse/display-ui").YAxis[];
|
|
31
|
+
} & {
|
|
32
|
+
unclippedQuantile: number | undefined;
|
|
33
|
+
} & {
|
|
34
|
+
readonly scaleType: string;
|
|
35
|
+
readonly scaleZero: boolean;
|
|
36
|
+
readonly domainQuantile: number;
|
|
37
|
+
readonly clipQuantile: number;
|
|
38
|
+
readonly symlogConstant: number;
|
|
39
|
+
readonly manualMinScore: number | undefined;
|
|
40
|
+
readonly manualMaxScore: number | undefined;
|
|
41
|
+
readonly valueScaleNotices: string[];
|
|
42
|
+
readonly autoscaleGroup: string | undefined;
|
|
43
|
+
readonly scaleTitle: string;
|
|
44
|
+
readonly grid: boolean;
|
|
45
|
+
readonly minimalTicks: boolean;
|
|
46
|
+
readonly scoreRulesDrawn: boolean;
|
|
47
|
+
readonly scoreRules: import("@jbrowse/display-ui").ValueScaleRule[];
|
|
48
|
+
} & {
|
|
49
|
+
setScaleType(scaleType: string): void;
|
|
50
|
+
setScaleZero(zero: boolean): void;
|
|
51
|
+
setDomainQuantile(quantile: number): void;
|
|
52
|
+
setMinScore(val?: number): void;
|
|
53
|
+
setMaxScore(val?: number): void;
|
|
54
|
+
setAutoscaleGroup(group?: string): void;
|
|
55
|
+
setGrid(grid: boolean): void;
|
|
56
|
+
setScoreRules(rules: (number | import("@jbrowse/display-ui").ValueScaleRule)[]): void;
|
|
57
|
+
} & {
|
|
58
|
+
readonly size: number;
|
|
59
|
+
readonly isDensityMode: boolean;
|
|
60
|
+
} & {
|
|
61
|
+
readonly axisReachesZero: boolean;
|
|
62
|
+
} & {
|
|
63
|
+
setSize(val?: number): void;
|
|
64
|
+
} & {
|
|
65
|
+
/**
|
|
66
|
+
* #getter
|
|
67
|
+
* The feature field the worker plots on the score axis, `score` by
|
|
68
|
+
* default. A fetch input: every composing display carries it in its
|
|
69
|
+
* `rpcProps()`, since the field is read where the features are.
|
|
70
|
+
*/
|
|
71
|
+
readonly scoreField: string;
|
|
72
|
+
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getConf } from '@jbrowse/core/configuration';
|
|
2
|
+
import { WiggleScoreConfigMixin } from './WiggleScoreConfigMixin.js';
|
|
3
|
+
const confNode = (self) => self;
|
|
4
|
+
/**
|
|
5
|
+
* #stateModel ScoreFieldConfigMixin
|
|
6
|
+
* #category display
|
|
7
|
+
*
|
|
8
|
+
* `WiggleScoreConfigMixin` plus `scoreField`, for a display that plots one
|
|
9
|
+
* configured feature field and so declares `scoreFieldConfigSchemaFields`:
|
|
10
|
+
* the wiggle display. `LinearMarkDisplay` names a field per mark and composes
|
|
11
|
+
* the base instead.
|
|
12
|
+
*/
|
|
13
|
+
export function ScoreFieldConfigMixin() {
|
|
14
|
+
return WiggleScoreConfigMixin().views(self => ({
|
|
15
|
+
/**
|
|
16
|
+
* #getter
|
|
17
|
+
* The feature field the worker plots on the score axis, `score` by
|
|
18
|
+
* default. A fetch input: every composing display carries it in its
|
|
19
|
+
* `rpcProps()`, since the field is read where the features are.
|
|
20
|
+
*/
|
|
21
|
+
get scoreField() {
|
|
22
|
+
return getConf(confNode(self), 'scoreField');
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ContextMenuAnchor, MenuItem, MouseState } from '@jbrowse/core/ui';
|
|
2
|
+
import type { ChromeModel } from '@jbrowse/display-kit/DisplayChrome';
|
|
3
|
+
import type { Mark } from '@jbrowse/render-core/marks';
|
|
4
|
+
import type { PerRegionRenderingBackend } from '@jbrowse/render-core/perRegionRenderingBackend';
|
|
5
|
+
import type { FrameDimensions } from '@jbrowse/render-core/renderingBackendBase';
|
|
6
|
+
import type { RenderLifecycleModel } from '@jbrowse/render-core/useRenderingBackend';
|
|
7
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
interface PlotBox {
|
|
9
|
+
yTop: number;
|
|
10
|
+
plotHeight: number;
|
|
11
|
+
}
|
|
12
|
+
interface ContextMenuView {
|
|
13
|
+
contextMenuInfo?: ContextMenuAnchor;
|
|
14
|
+
contextMenuItems: () => MenuItem[];
|
|
15
|
+
closeContextMenu: () => void;
|
|
16
|
+
}
|
|
17
|
+
export interface ScorePlotContextMenuHost<Hit> extends ContextMenuView {
|
|
18
|
+
openContextMenu: (info: ContextMenuAnchor & {
|
|
19
|
+
hit: Hit;
|
|
20
|
+
}) => void;
|
|
21
|
+
clearHoveredFeature: () => void;
|
|
22
|
+
}
|
|
23
|
+
export type ScorePlotChromeModel<Hit, TRegion, TState extends FrameDimensions> = ChromeModel & RenderLifecycleModel<PerRegionRenderingBackend<TRegion, TState>> & {
|
|
24
|
+
canvasWidthPx: number;
|
|
25
|
+
setHoveredFeature: (hit?: Hit) => void;
|
|
26
|
+
selectFeature: (hit: Hit) => void;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The on-screen chrome of a display drawing a mark list on a score axis: the
|
|
30
|
+
* canvas in the axis plot box, hover and click resolved through `findHit`, the
|
|
31
|
+
* pointer-following `tooltip`, and the right-click menu where `contextMenu`
|
|
32
|
+
* names the model that owns it. `findHit` takes y from the plot's own top.
|
|
33
|
+
*/
|
|
34
|
+
export declare const ScorePlotChrome: <Hit, TRegion, TState extends FrameDimensions>({ model, marks, testid, plotGeometry, findHit, tooltip, overlay, indicators, contextMenu, }: {
|
|
35
|
+
model: ScorePlotChromeModel<Hit, TRegion, TState>;
|
|
36
|
+
marks: readonly Mark<TRegion, TState>[];
|
|
37
|
+
testid: string;
|
|
38
|
+
plotGeometry?: PlotBox;
|
|
39
|
+
findHit: (x: number, y: number) => Hit | undefined;
|
|
40
|
+
tooltip: (mouseState: MouseState | undefined) => ReactNode;
|
|
41
|
+
overlay?: (plotGeometry: PlotBox) => ReactNode;
|
|
42
|
+
indicators?: () => ReactNode;
|
|
43
|
+
contextMenu?: ScorePlotContextMenuHost<Hit>;
|
|
44
|
+
}) => import("react").JSX.Element;
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { eventPoint } from '@jbrowse/core/util/eventPoint';
|
|
4
|
+
import BottomRightIndicators from '@jbrowse/display-kit/BottomRightIndicators';
|
|
5
|
+
import DisplayChrome from '@jbrowse/display-kit/DisplayChrome';
|
|
6
|
+
import { DisplayContextMenu, openContextMenuFromEvent, } from '@jbrowse/display-kit/DisplayContextMenu';
|
|
7
|
+
import { PointerLayer, axisPlotBox } from '@jbrowse/display-ui';
|
|
8
|
+
import { createMarkBackend } from '@jbrowse/render-core/marks/backend';
|
|
9
|
+
import { observer } from 'mobx-react';
|
|
10
|
+
/**
|
|
11
|
+
* The on-screen chrome of a display drawing a mark list on a score axis: the
|
|
12
|
+
* canvas in the axis plot box, hover and click resolved through `findHit`, the
|
|
13
|
+
* pointer-following `tooltip`, and the right-click menu where `contextMenu`
|
|
14
|
+
* names the model that owns it. `findHit` takes y from the plot's own top.
|
|
15
|
+
*/
|
|
16
|
+
export const ScorePlotChrome = observer(function ScorePlotChrome({ model, marks, testid, plotGeometry, findHit, tooltip, overlay, indicators, contextMenu, }) {
|
|
17
|
+
const { height, canvasWidthPx: width } = model;
|
|
18
|
+
const box = plotGeometry ?? axisPlotBox(height);
|
|
19
|
+
const factory = useMemo(() => (canvas) => createMarkBackend(canvas, marks), [marks]);
|
|
20
|
+
const hitAt = (x, y) => findHit(x, y - box.yTop);
|
|
21
|
+
return (_jsx(DisplayChrome, { model: model, factory: factory, testid: testid, style: { width, whiteSpace: 'nowrap', textAlign: 'left' }, onPointerPosition: state => {
|
|
22
|
+
model.setHoveredFeature(state ? hitAt(state.x, state.y) : undefined);
|
|
23
|
+
}, onClick: event => {
|
|
24
|
+
const { x, y } = eventPoint(event);
|
|
25
|
+
const hit = hitAt(x, y);
|
|
26
|
+
if (hit) {
|
|
27
|
+
model.selectFeature(hit);
|
|
28
|
+
}
|
|
29
|
+
}, onContextMenu: contextMenu
|
|
30
|
+
? event => {
|
|
31
|
+
const { x, y } = eventPoint(event);
|
|
32
|
+
const hit = hitAt(x, y);
|
|
33
|
+
openContextMenuFromEvent(contextMenu, event, hit
|
|
34
|
+
? { clientX: event.clientX, clientY: event.clientY, hit }
|
|
35
|
+
: undefined);
|
|
36
|
+
}
|
|
37
|
+
: undefined, children: ({ canvasRef, mouseTracker }) => (_jsx(ScorePlotBody, { canvasRef: canvasRef, mouseTracker: mouseTracker, width: width, plotGeometry: box, tooltip: tooltip, overlay: overlay, indicators: indicators, contextMenu: contextMenu })) }));
|
|
38
|
+
});
|
|
39
|
+
const ScorePlotBody = observer(function ScorePlotBody({ canvasRef, mouseTracker, width, plotGeometry, tooltip, overlay, indicators, contextMenu, }) {
|
|
40
|
+
return (_jsxs(_Fragment, { children: [_jsx("canvas", { ref: canvasRef, style: {
|
|
41
|
+
width,
|
|
42
|
+
height: plotGeometry.plotHeight,
|
|
43
|
+
position: 'absolute',
|
|
44
|
+
left: 0,
|
|
45
|
+
top: plotGeometry.yTop,
|
|
46
|
+
} }), overlay?.(plotGeometry), _jsx(PointerLayer, { mouseTracker: mouseTracker, children: tooltip }), indicators ? (_jsx(BottomRightIndicators, { children: indicators() })) : null, contextMenu ? _jsx(DisplayContextMenu, { model: contextMenu }) : null] }));
|
|
47
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SvgExportable } from '@jbrowse/core/svg/svgReady';
|
|
2
|
+
import type { LgvSvgBodyProps } from '@jbrowse/display-kit/renderDisplaySvg';
|
|
3
|
+
import type { Mark, MarkFrame } from '@jbrowse/render-core/marks';
|
|
4
|
+
import type React from 'react';
|
|
5
|
+
export interface ScorePlotSvgModel extends SvgExportable {
|
|
6
|
+
id: string;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The SVG-export body of a display with a score axis, mounted through
|
|
11
|
+
* `renderDisplaySvg`, which draws the axis and cross-hatches. Paints `marks`
|
|
12
|
+
* over `regions` inside the plot box, at the export's width and the box's
|
|
13
|
+
* height — the two fields of `renderState` the on-screen canvas sizes
|
|
14
|
+
* differently. `plotGeometry` defaults to the single-plot box `ScorePlotChrome`
|
|
15
|
+
* draws in; multi-wiggle stacks its rows over the full height instead.
|
|
16
|
+
* `children` draw over the plot, in the same untranslated space as the axis.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ScorePlotSvgFrame<TRegion, TState extends MarkFrame>({ height, canvasWidth, renderBlocks, opts, plotGeometry, marks, regions, renderState, children, }: LgvSvgBodyProps<ScorePlotSvgModel> & {
|
|
19
|
+
plotGeometry?: {
|
|
20
|
+
yTop: number;
|
|
21
|
+
plotHeight: number;
|
|
22
|
+
};
|
|
23
|
+
marks: readonly Mark<TRegion, TState>[];
|
|
24
|
+
regions: ReadonlyMap<number, TRegion>;
|
|
25
|
+
renderState: TState;
|
|
26
|
+
children?: React.ReactNode;
|
|
27
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PaintLayer } from '@jbrowse/core/util/paintLayer';
|
|
3
|
+
import { axisPlotBox } from '@jbrowse/display-ui';
|
|
4
|
+
import { paintMarkBlocks } from '@jbrowse/render-core/marks';
|
|
5
|
+
/**
|
|
6
|
+
* The SVG-export body of a display with a score axis, mounted through
|
|
7
|
+
* `renderDisplaySvg`, which draws the axis and cross-hatches. Paints `marks`
|
|
8
|
+
* over `regions` inside the plot box, at the export's width and the box's
|
|
9
|
+
* height — the two fields of `renderState` the on-screen canvas sizes
|
|
10
|
+
* differently. `plotGeometry` defaults to the single-plot box `ScorePlotChrome`
|
|
11
|
+
* draws in; multi-wiggle stacks its rows over the full height instead.
|
|
12
|
+
* `children` draw over the plot, in the same untranslated space as the axis.
|
|
13
|
+
*/
|
|
14
|
+
export function ScorePlotSvgFrame({ height, canvasWidth, renderBlocks, opts, plotGeometry = axisPlotBox(height), marks, regions, renderState, children, }) {
|
|
15
|
+
const { yTop, plotHeight } = plotGeometry;
|
|
16
|
+
return (_jsxs(_Fragment, { children: [_jsx("g", { transform: `translate(0,${yTop})`, children: _jsx(PaintLayer, { width: canvasWidth, height: plotHeight, opts: opts, paint: ctx => {
|
|
17
|
+
paintMarkBlocks(ctx, marks, regions, renderBlocks, {
|
|
18
|
+
...renderState,
|
|
19
|
+
canvasWidth,
|
|
20
|
+
canvasHeight: plotHeight,
|
|
21
|
+
});
|
|
22
|
+
} }) }), children] }));
|
|
23
|
+
}
|
package/esm/ScoreScaleMixin.d.ts
CHANGED
|
@@ -1,90 +1,135 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { scalesSchema } from './valueScaleConfigSchema.ts';
|
|
2
|
+
import type { ConfigModelForFields } from '@jbrowse/core/configuration';
|
|
3
|
+
import type { ValueScaleRule } from '@jbrowse/display-ui';
|
|
2
4
|
/**
|
|
3
|
-
* The whole of what `ScoreScaleMixin` needs a composing display to be
|
|
5
|
+
* The whole of what `ScoreScaleMixin` needs a composing display to be: a
|
|
6
|
+
* `scales` object holding the `y` the value-scale factory built. Exported
|
|
4
7
|
* because it is the mixin's contract and `ScoreScaleMixin.test.ts` pins it:
|
|
5
8
|
* widen it and the `@ts-expect-error`s there go unused.
|
|
6
9
|
*/
|
|
7
10
|
export interface ScoreScaleHost {
|
|
8
|
-
configuration:
|
|
11
|
+
configuration: ConfigModelForFields<{
|
|
12
|
+
scales: ReturnType<typeof scalesSchema>;
|
|
13
|
+
}>;
|
|
9
14
|
}
|
|
10
15
|
/**
|
|
11
16
|
* #stateModel ScoreScaleMixin
|
|
12
17
|
* #category display
|
|
13
|
-
* #crossCuttingMixin
|
|
18
|
+
* #crossCuttingMixin Value scale, written in `scales.y`. `valueScaleSchema` / `scalesSchema`. Brings `ScoreAxisMixin` plus `scaleType` / `scaleZero` / `domainQuantile` / `clipQuantile` / `symlogConstant` / `manual*` and their setters, i.e. the whole `ScoreScaleModel` interface the shared score menu and `SetMinMaxDialog` consume
|
|
14
19
|
*
|
|
15
|
-
* The
|
|
16
|
-
*
|
|
17
|
-
* {@link
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* score display cannot satisfy it *partially*.
|
|
20
|
+
* The value scale of every quantitative display: wiggle, the alignments
|
|
21
|
+
* coverage band and the mark display, Manhattan among them, each declare
|
|
22
|
+
* `scales.y` through {@link valueScaleSchema} and compose this. It backs
|
|
23
|
+
* {@link ScoreAxisMixin}'s three overridable members off that object and adds
|
|
24
|
+
* the setters that write it, so composing this is how a display satisfies
|
|
25
|
+
* {@link ScoreScaleModel} in `scoreMenuItems.ts` — the interface the shared
|
|
26
|
+
* Score menu, the scale and autoscale submenus and `SetMinMaxDialog` consume.
|
|
23
27
|
*
|
|
24
|
-
* Deliberately just the
|
|
25
|
-
* autoscale *computation* stay in `WiggleScoreConfigMixin` /
|
|
26
|
-
* — the alignments coverage band shares this
|
|
27
|
-
*
|
|
28
|
-
* `minScore`/`maxScore` are the **raw** slot values with their
|
|
29
|
-
* `Number.MIN_VALUE`/`Number.MAX_VALUE` "unset" sentinels intact, because that
|
|
30
|
-
* is what the dialog round-trips; `minScoreBound`/`maxScoreBound` are the
|
|
31
|
-
* resolved bounds, where `undefined` means "autoscale this end". Every consumer
|
|
32
|
-
* that computes a domain reads the `*Bound` pair.
|
|
28
|
+
* Deliberately just the scale and the guides it owns. Colors, `resolution`
|
|
29
|
+
* and the autoscale *computation* stay in `WiggleScoreConfigMixin` /
|
|
30
|
+
* `WiggleCommonMixin` — the alignments coverage band shares this scale but
|
|
31
|
+
* none of the rest.
|
|
33
32
|
*/
|
|
34
33
|
export declare function ScoreScaleMixin(): import("@jbrowse/mobx-state-tree").IModelType<{}, {
|
|
34
|
+
readonly scaleType: string;
|
|
35
|
+
readonly scaleZero: boolean;
|
|
36
|
+
readonly manualMinScore: number | undefined;
|
|
37
|
+
readonly manualMaxScore: number | undefined;
|
|
38
|
+
readonly defaultScoreDomain: [number | undefined, number | undefined];
|
|
39
|
+
readonly valueScales: import("@jbrowse/display-ui").ValueScale[];
|
|
40
|
+
readonly autoscaleGroup: string | undefined;
|
|
41
|
+
readonly autoscaleRange: [number, number] | undefined;
|
|
42
|
+
} & {
|
|
43
|
+
readonly axisReachesZero: boolean;
|
|
44
|
+
} & {
|
|
45
|
+
readonly autoscaledDomain: [number, number] | undefined;
|
|
46
|
+
readonly minScoreBound: number | undefined;
|
|
47
|
+
readonly maxScoreBound: number | undefined;
|
|
48
|
+
readonly hasManualScoreBounds: boolean;
|
|
49
|
+
readonly axes: import("@jbrowse/display-ui").YAxis[];
|
|
50
|
+
} & {
|
|
51
|
+
unclippedQuantile: number | undefined;
|
|
52
|
+
} & {
|
|
35
53
|
/**
|
|
36
54
|
* #getter
|
|
37
55
|
*/
|
|
38
56
|
readonly scaleType: string;
|
|
39
57
|
/**
|
|
40
58
|
* #getter
|
|
59
|
+
* `scales.y.zero`: whether an autoscaled linear or symlog axis reaches
|
|
60
|
+
* 0.
|
|
41
61
|
*/
|
|
42
|
-
readonly
|
|
62
|
+
readonly scaleZero: boolean;
|
|
43
63
|
/**
|
|
44
64
|
* #getter
|
|
65
|
+
* `scales.y.domainQuantile`: what an unpinned end follows, 1 the
|
|
66
|
+
* extremes and below it that quantile of each sign.
|
|
45
67
|
*/
|
|
46
|
-
readonly
|
|
68
|
+
readonly domainQuantile: number;
|
|
47
69
|
/**
|
|
48
70
|
* #getter
|
|
49
|
-
*
|
|
71
|
+
* The quantile "Clip outliers" clips at: the one an untick this session
|
|
72
|
+
* wrote over, else the scale's own default where that is below 1, else
|
|
73
|
+
* 0.99.
|
|
50
74
|
*/
|
|
51
|
-
readonly
|
|
75
|
+
readonly clipQuantile: number;
|
|
52
76
|
/**
|
|
53
77
|
* #getter
|
|
54
|
-
* Raw slot
|
|
78
|
+
* Raw slot; `0` means "derive from the domain". Resolve it with
|
|
79
|
+
* `resolveSymlogConstant` once the domain is known.
|
|
55
80
|
*/
|
|
56
|
-
readonly
|
|
81
|
+
readonly symlogConstant: number;
|
|
57
82
|
/**
|
|
58
83
|
* #getter
|
|
59
|
-
*
|
|
60
|
-
* config leaves its bound unset. `[undefined, undefined]` — the default —
|
|
61
|
-
* means autoscale both ends, which is right for a track whose scores have
|
|
62
|
-
* no absolute meaning (a bigwig's units are its own).
|
|
63
|
-
*
|
|
64
|
-
* A display whose scores are bounded *by construction* overrides it, so
|
|
65
|
-
* the axis stops being a function of what happens to be on screen: GC
|
|
66
|
-
* content is a fraction, so 0 and 1 are its real limits and mean the same
|
|
67
|
-
* thing at every locus. Autoscaled, the same GC value drew at different
|
|
68
|
-
* heights depending on where the user had panned, and the track could not
|
|
69
|
-
* be read across loci.
|
|
70
|
-
*
|
|
71
|
-
* A hook rather than a config default because the answer can depend on
|
|
72
|
-
* display state — GC's does, on `gcMode` — and rather than each display
|
|
73
|
-
* re-resolving the sentinels below, which is the one thing that must not
|
|
74
|
-
* be duplicated: config bounds still win, precisely because they are
|
|
75
|
-
* checked before this is consulted.
|
|
84
|
+
* The lower bound the config pins, `undefined` where it pins none.
|
|
76
85
|
*/
|
|
77
|
-
readonly
|
|
86
|
+
readonly manualMinScore: number | undefined;
|
|
78
87
|
/**
|
|
79
88
|
* #getter
|
|
80
|
-
*
|
|
89
|
+
* The upper bound the config pins, `undefined` where it pins none.
|
|
81
90
|
*/
|
|
82
|
-
readonly
|
|
91
|
+
readonly manualMaxScore: number | undefined;
|
|
83
92
|
/**
|
|
84
93
|
* #getter
|
|
85
|
-
*
|
|
94
|
+
* What `scales.y`'s ends say together that the axis cannot draw as
|
|
95
|
+
* written, as corner-notice lines, by the rule a colour ramp's ends
|
|
96
|
+
* answer to. The mark display reports them through its rule list.
|
|
86
97
|
*/
|
|
87
|
-
readonly
|
|
98
|
+
readonly valueScaleNotices: string[];
|
|
99
|
+
/**
|
|
100
|
+
* #getter
|
|
101
|
+
* `scales.y.autoscaleGroup`, `undefined` while it names none.
|
|
102
|
+
*/
|
|
103
|
+
readonly autoscaleGroup: string | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* #getter
|
|
106
|
+
* `scales.y.title`, `''` while unset
|
|
107
|
+
*/
|
|
108
|
+
readonly scaleTitle: string;
|
|
109
|
+
/**
|
|
110
|
+
* #getter
|
|
111
|
+
* `scales.y.grid`
|
|
112
|
+
*/
|
|
113
|
+
readonly grid: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* #getter
|
|
116
|
+
* `scales.y.minimalTicks`
|
|
117
|
+
*/
|
|
118
|
+
readonly minimalTicks: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* #getter
|
|
121
|
+
* Whether this display draws `scales.y.rules`, which is whether the
|
|
122
|
+
* score menu offers the reference lines: a scale it places y through
|
|
123
|
+
* rules a band for them to cross, which a density plot's colour-mapped
|
|
124
|
+
* rows and a colour ramp do not.
|
|
125
|
+
*/
|
|
126
|
+
readonly scoreRulesDrawn: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* #getter
|
|
129
|
+
* `scales.y.rules`, read off the live nodes: a snapshot strips a slot at
|
|
130
|
+
* its default, and a rule at 0 is one.
|
|
131
|
+
*/
|
|
132
|
+
readonly scoreRules: ValueScaleRule[];
|
|
88
133
|
} & {
|
|
89
134
|
/**
|
|
90
135
|
* #action
|
|
@@ -93,7 +138,11 @@ export declare function ScoreScaleMixin(): import("@jbrowse/mobx-state-tree").IM
|
|
|
93
138
|
/**
|
|
94
139
|
* #action
|
|
95
140
|
*/
|
|
96
|
-
|
|
141
|
+
setScaleZero(zero: boolean): void;
|
|
142
|
+
/**
|
|
143
|
+
* #action
|
|
144
|
+
*/
|
|
145
|
+
setDomainQuantile(quantile: number): void;
|
|
97
146
|
/**
|
|
98
147
|
* #action
|
|
99
148
|
*/
|
|
@@ -102,4 +151,18 @@ export declare function ScoreScaleMixin(): import("@jbrowse/mobx-state-tree").IM
|
|
|
102
151
|
* #action
|
|
103
152
|
*/
|
|
104
153
|
setMaxScore(val?: number): void;
|
|
154
|
+
/**
|
|
155
|
+
* #action
|
|
156
|
+
*/
|
|
157
|
+
setAutoscaleGroup(group?: string): void;
|
|
158
|
+
/**
|
|
159
|
+
* #action
|
|
160
|
+
*/
|
|
161
|
+
setGrid(grid: boolean): void;
|
|
162
|
+
/**
|
|
163
|
+
* #action
|
|
164
|
+
* Replaces `scales.y.rules` whole, each entry in a form the config
|
|
165
|
+
* takes: a number, or `{ value, color, label }`.
|
|
166
|
+
*/
|
|
167
|
+
setScoreRules(rules: (number | ValueScaleRule)[]): void;
|
|
105
168
|
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|