@jbrowse/plugin-wiggle 1.7.10 → 2.0.1
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/dist/BigWigAdapter/BigWigAdapter.js +176 -284
- package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -0
- package/dist/BigWigAdapter/configSchema.js +12 -21
- package/dist/BigWigAdapter/configSchema.js.map +1 -0
- package/dist/BigWigAdapter/index.js +8 -14
- package/dist/BigWigAdapter/index.js.map +1 -0
- package/dist/DensityRenderer/index.d.ts +1 -1
- package/dist/DensityRenderer/index.js +152 -133
- package/dist/DensityRenderer/index.js.map +1 -0
- package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +1 -1
- package/dist/LinePlotRenderer/LinePlotRenderer.js +182 -168
- package/dist/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
- package/dist/LinePlotRenderer/index.js +19 -33
- package/dist/LinePlotRenderer/index.js.map +1 -0
- package/dist/LinearWiggleDisplay/components/SetColorDialog.js +95 -105
- package/dist/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
- package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +86 -107
- package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
- package/dist/LinearWiggleDisplay/components/Tooltip.js +147 -152
- package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +44 -50
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
- package/dist/LinearWiggleDisplay/components/YScaleBar.js +24 -31
- package/dist/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
- package/dist/LinearWiggleDisplay/index.js +13 -42
- package/dist/LinearWiggleDisplay/index.js.map +1 -0
- package/dist/LinearWiggleDisplay/models/configSchema.js +65 -69
- package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -0
- package/dist/LinearWiggleDisplay/models/model.d.ts +16 -14
- package/dist/LinearWiggleDisplay/models/model.js +585 -696
- package/dist/LinearWiggleDisplay/models/model.js.map +1 -0
- package/dist/WiggleBaseRenderer.d.ts +3 -3
- package/dist/WiggleBaseRenderer.js +119 -129
- package/dist/WiggleBaseRenderer.js.map +1 -0
- package/dist/WiggleRPC/rpcMethods.js +182 -288
- package/dist/WiggleRPC/rpcMethods.js.map +1 -0
- package/dist/WiggleRendering.js +107 -102
- package/dist/WiggleRendering.js.map +1 -0
- package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +1 -1
- package/dist/XYPlotRenderer/XYPlotRenderer.js +250 -194
- package/dist/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
- package/dist/XYPlotRenderer/index.js +30 -33
- package/dist/XYPlotRenderer/index.js.map +1 -0
- package/dist/configSchema.js +47 -74
- package/dist/configSchema.js.map +1 -0
- package/dist/index.d.ts +118 -67
- package/dist/index.js +167 -242
- package/dist/index.js.map +1 -0
- package/dist/util.js +112 -143
- package/dist/util.js.map +1 -0
- package/esm/BigWigAdapter/BigWigAdapter.d.ts +24 -0
- package/esm/BigWigAdapter/BigWigAdapter.js +62 -0
- package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -0
- package/{dist/LinePlotRenderer → esm/BigWigAdapter}/configSchema.d.ts +0 -0
- package/esm/BigWigAdapter/configSchema.js +11 -0
- package/esm/BigWigAdapter/configSchema.js.map +1 -0
- package/esm/BigWigAdapter/index.d.ts +1 -0
- package/esm/BigWigAdapter/index.js +2 -0
- package/esm/BigWigAdapter/index.js.map +1 -0
- package/esm/DensityRenderer/index.d.ts +6 -0
- package/esm/DensityRenderer/index.js +39 -0
- package/esm/DensityRenderer/index.js.map +1 -0
- package/esm/LinePlotRenderer/LinePlotRenderer.d.ts +4 -0
- package/esm/LinePlotRenderer/LinePlotRenderer.js +71 -0
- package/esm/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
- package/esm/LinePlotRenderer/index.d.ts +3 -0
- package/esm/LinePlotRenderer/index.js +12 -0
- package/esm/LinePlotRenderer/index.js.map +1 -0
- package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
- package/esm/LinearWiggleDisplay/components/SetColorDialog.js +55 -0
- package/esm/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
- package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
- package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
- package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
- package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +24 -0
- package/esm/LinearWiggleDisplay/components/Tooltip.js +107 -0
- package/esm/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +8 -0
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js +29 -0
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
- package/esm/LinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
- package/esm/LinearWiggleDisplay/components/YScaleBar.js +9 -0
- package/esm/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
- package/esm/LinearWiggleDisplay/index.d.ts +3 -0
- package/esm/LinearWiggleDisplay/index.js +4 -0
- package/esm/LinearWiggleDisplay/index.js.map +1 -0
- package/esm/LinearWiggleDisplay/models/configSchema.d.ts +2 -0
- package/esm/LinearWiggleDisplay/models/configSchema.js +64 -0
- package/esm/LinearWiggleDisplay/models/configSchema.js.map +1 -0
- package/esm/LinearWiggleDisplay/models/model.d.ts +290 -0
- package/esm/LinearWiggleDisplay/models/model.js +495 -0
- package/esm/LinearWiggleDisplay/models/model.js.map +1 -0
- package/esm/WiggleBaseRenderer.d.ts +55 -0
- package/esm/WiggleBaseRenderer.js +34 -0
- package/esm/WiggleBaseRenderer.js.map +1 -0
- package/esm/WiggleRPC/rpcMethods.d.ts +31 -0
- package/esm/WiggleRPC/rpcMethods.js +70 -0
- package/esm/WiggleRPC/rpcMethods.js.map +1 -0
- package/esm/WiggleRendering.d.ts +16 -0
- package/esm/WiggleRendering.js +40 -0
- package/esm/WiggleRendering.js.map +1 -0
- package/esm/XYPlotRenderer/XYPlotRenderer.d.ts +4 -0
- package/esm/XYPlotRenderer/XYPlotRenderer.js +109 -0
- package/esm/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
- package/esm/XYPlotRenderer/index.d.ts +3 -0
- package/esm/XYPlotRenderer/index.js +23 -0
- package/esm/XYPlotRenderer/index.js.map +1 -0
- package/esm/configSchema.d.ts +2 -0
- package/esm/configSchema.js +46 -0
- package/esm/configSchema.js.map +1 -0
- package/esm/index.d.ts +917 -0
- package/esm/index.js +115 -0
- package/esm/index.js.map +1 -0
- package/esm/util.d.ts +41 -0
- package/esm/util.js +123 -0
- package/esm/util.js.map +1 -0
- package/package.json +23 -15
- package/src/DensityRenderer/DensityRenderer.test.js +5 -0
- package/src/DensityRenderer/index.ts +1 -1
- package/src/LinePlotRenderer/LinePlotRenderer.js +1 -1
- package/src/LinePlotRenderer/index.js +7 -1
- package/src/LinearWiggleDisplay/components/SetColorDialog.tsx +10 -13
- package/src/LinearWiggleDisplay/components/SetMinMaxDialog.tsx +13 -11
- package/src/LinearWiggleDisplay/components/Tooltip.tsx +4 -3
- package/src/LinearWiggleDisplay/components/WiggleDisplayComponent.tsx +9 -4
- package/src/LinearWiggleDisplay/models/model.tsx +56 -65
- package/src/WiggleBaseRenderer.tsx +3 -3
- package/src/XYPlotRenderer/XYPlotRenderer.test.js +5 -0
- package/src/XYPlotRenderer/XYPlotRenderer.ts +87 -40
- package/src/XYPlotRenderer/index.ts +19 -2
- package/src/configSchema.ts +0 -23
- package/dist/BigWigAdapter/BigWigAdapter.test.js +0 -157
- package/dist/DensityRenderer/DensityRenderer.test.js +0 -84
- package/dist/LinePlotRenderer/configSchema.js +0 -70
- package/dist/WiggleRendering.test.js +0 -52
- package/dist/XYPlotRenderer/XYPlotRenderer.test.js +0 -83
- package/dist/declare.d.js +0 -1
- package/dist/index.test.js +0 -24
- package/dist/util.test.js +0 -66
- package/src/LinePlotRenderer/configSchema.js +0 -68
package/esm/index.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
|
|
2
|
+
import TrackType from '@jbrowse/core/pluggableElementTypes/TrackType';
|
|
3
|
+
import Plugin from '@jbrowse/core/Plugin';
|
|
4
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
5
|
+
import { createBaseTrackConfig, createBaseTrackModel, } from '@jbrowse/core/pluggableElementTypes/models';
|
|
6
|
+
import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType';
|
|
7
|
+
import WiggleBaseRenderer from './WiggleBaseRenderer';
|
|
8
|
+
import WiggleRendering from './WiggleRendering';
|
|
9
|
+
import { configSchema as bigWigAdapterConfigSchema } from './BigWigAdapter';
|
|
10
|
+
import DensityRenderer, { configSchema as densityRendererConfigSchema, ReactComponent as DensityRendererReactComponent, } from './DensityRenderer';
|
|
11
|
+
import * as utils from './util';
|
|
12
|
+
import { configSchemaFactory as linearWiggleDisplayConfigSchemaFactory, modelFactory as linearWiggleDisplayModelFactory, ReactComponent as LinearWiggleDisplayReactComponent, YSCALEBAR_LABEL_OFFSET, } from './LinearWiggleDisplay';
|
|
13
|
+
import XYPlotRenderer, { configSchema as xyPlotRendererConfigSchema, ReactComponent as XYPlotRendererReactComponent, } from './XYPlotRenderer';
|
|
14
|
+
import LinePlotRenderer, { configSchema as linePlotRendererConfigSchema, ReactComponent as LinePlotRendererReactComponent, } from './LinePlotRenderer';
|
|
15
|
+
import { WiggleGetGlobalStats, WiggleGetMultiRegionStats, } from './WiggleRPC/rpcMethods';
|
|
16
|
+
import { getFileName, } from '@jbrowse/core/util/tracks';
|
|
17
|
+
export default class WigglePlugin extends Plugin {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.name = 'WigglePlugin';
|
|
21
|
+
this.exports = {
|
|
22
|
+
LinearWiggleDisplayReactComponent,
|
|
23
|
+
XYPlotRendererReactComponent,
|
|
24
|
+
XYPlotRenderer,
|
|
25
|
+
xyPlotRendererConfigSchema,
|
|
26
|
+
utils,
|
|
27
|
+
WiggleBaseRenderer,
|
|
28
|
+
linearWiggleDisplayModelFactory,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
install(pluginManager) {
|
|
32
|
+
pluginManager.addTrackType(() => {
|
|
33
|
+
const configSchema = ConfigurationSchema('QuantitativeTrack', {}, { baseConfiguration: createBaseTrackConfig(pluginManager) });
|
|
34
|
+
return new TrackType({
|
|
35
|
+
name: 'QuantitativeTrack',
|
|
36
|
+
configSchema,
|
|
37
|
+
stateModel: createBaseTrackModel(pluginManager, 'QuantitativeTrack', configSchema),
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
pluginManager.addDisplayType(() => {
|
|
41
|
+
const configSchema = linearWiggleDisplayConfigSchemaFactory(pluginManager);
|
|
42
|
+
return new DisplayType({
|
|
43
|
+
name: 'LinearWiggleDisplay',
|
|
44
|
+
configSchema,
|
|
45
|
+
stateModel: linearWiggleDisplayModelFactory(pluginManager, configSchema),
|
|
46
|
+
trackType: 'QuantitativeTrack',
|
|
47
|
+
viewType: 'LinearGenomeView',
|
|
48
|
+
ReactComponent: LinearWiggleDisplayReactComponent,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
52
|
+
name: 'BigWigAdapter',
|
|
53
|
+
configSchema: bigWigAdapterConfigSchema,
|
|
54
|
+
adapterCapabilities: [
|
|
55
|
+
'hasResolution',
|
|
56
|
+
'hasLocalStats',
|
|
57
|
+
'hasGlobalStats',
|
|
58
|
+
],
|
|
59
|
+
getAdapterClass: () => import('./BigWigAdapter/BigWigAdapter').then(r => r.default),
|
|
60
|
+
}));
|
|
61
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
62
|
+
return (file, index, adapterHint) => {
|
|
63
|
+
const regexGuess = /\.(bw|bigwig)$/i;
|
|
64
|
+
const adapterName = 'BigWigAdapter';
|
|
65
|
+
const fileName = getFileName(file);
|
|
66
|
+
const obj = {
|
|
67
|
+
type: adapterName,
|
|
68
|
+
bigWigLocation: file,
|
|
69
|
+
};
|
|
70
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
71
|
+
return obj;
|
|
72
|
+
}
|
|
73
|
+
else if (adapterHint === adapterName) {
|
|
74
|
+
return obj;
|
|
75
|
+
}
|
|
76
|
+
return adapterGuesser(file, index, adapterHint);
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
|
|
80
|
+
return (adapterName) => {
|
|
81
|
+
if (adapterName === 'BigWigAdapter') {
|
|
82
|
+
return 'QuantitativeTrack';
|
|
83
|
+
}
|
|
84
|
+
return trackTypeGuesser(adapterName);
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
pluginManager.addRendererType(() => new DensityRenderer({
|
|
88
|
+
name: 'DensityRenderer',
|
|
89
|
+
ReactComponent: DensityRendererReactComponent,
|
|
90
|
+
configSchema: densityRendererConfigSchema,
|
|
91
|
+
pluginManager,
|
|
92
|
+
}));
|
|
93
|
+
pluginManager.addRendererType(() => new LinePlotRenderer({
|
|
94
|
+
name: 'LinePlotRenderer',
|
|
95
|
+
ReactComponent: LinePlotRendererReactComponent,
|
|
96
|
+
configSchema: linePlotRendererConfigSchema,
|
|
97
|
+
pluginManager,
|
|
98
|
+
}));
|
|
99
|
+
pluginManager.addRendererType(() => new XYPlotRenderer({
|
|
100
|
+
name: 'XYPlotRenderer',
|
|
101
|
+
ReactComponent: XYPlotRendererReactComponent,
|
|
102
|
+
configSchema: xyPlotRendererConfigSchema,
|
|
103
|
+
pluginManager,
|
|
104
|
+
}));
|
|
105
|
+
pluginManager.addRpcMethod(() => new WiggleGetGlobalStats(pluginManager));
|
|
106
|
+
pluginManager.addRpcMethod(() => new WiggleGetMultiRegionStats(pluginManager));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export * from './util';
|
|
110
|
+
export { WiggleRendering };
|
|
111
|
+
export { WiggleBaseRenderer };
|
|
112
|
+
export { LinearWiggleDisplayReactComponent, linearWiggleDisplayModelFactory };
|
|
113
|
+
export { Tooltip } from './LinearWiggleDisplay/components/Tooltip';
|
|
114
|
+
export { YSCALEBAR_LABEL_OFFSET };
|
|
115
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/esm/util.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface ScaleOpts {
|
|
2
|
+
domain: number[];
|
|
3
|
+
range: number[];
|
|
4
|
+
scaleType: string;
|
|
5
|
+
pivotValue?: number;
|
|
6
|
+
inverted: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* produces a d3-scale from arguments. applies a "nice domain" adjustment
|
|
10
|
+
*
|
|
11
|
+
* @param object - containing attributes
|
|
12
|
+
* - domain [min,max]
|
|
13
|
+
* - range [min,max]
|
|
14
|
+
* - bounds [min,max]
|
|
15
|
+
* - scaleType (linear or log)
|
|
16
|
+
* - pivotValue (number)
|
|
17
|
+
* - inverted (boolean)
|
|
18
|
+
*/
|
|
19
|
+
export declare function getScale({ domain, range, scaleType, pivotValue, inverted, }: ScaleOpts): import("d3-scale").ScaleLinear<number, number> | import("d3-scale").ScaleQuantize<number>;
|
|
20
|
+
/**
|
|
21
|
+
* gets the origin for drawing the graph. for linear this is 0, for log this is arbitrarily set to log(1)==0
|
|
22
|
+
*
|
|
23
|
+
* @param scaleType -
|
|
24
|
+
*/
|
|
25
|
+
export declare function getOrigin(scaleType: string): 1 | 0;
|
|
26
|
+
/**
|
|
27
|
+
* produces a "nice" domain that actually rounds down to 0 for the min
|
|
28
|
+
* or 0 to the max depending on if all values are positive or negative
|
|
29
|
+
*
|
|
30
|
+
* @param object - containing attributes
|
|
31
|
+
* - domain [min,max]
|
|
32
|
+
* - bounds [min,max]
|
|
33
|
+
* - mean
|
|
34
|
+
* - stddev
|
|
35
|
+
* - scaleType (linear or log)
|
|
36
|
+
*/
|
|
37
|
+
export declare function getNiceDomain({ scaleType, domain, bounds, }: {
|
|
38
|
+
scaleType: string;
|
|
39
|
+
domain: number[];
|
|
40
|
+
bounds: number[];
|
|
41
|
+
}): [number, number];
|
package/esm/util.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { scaleLinear, scaleLog, scaleQuantize } from 'd3-scale';
|
|
2
|
+
/**
|
|
3
|
+
* produces a d3-scale from arguments. applies a "nice domain" adjustment
|
|
4
|
+
*
|
|
5
|
+
* @param object - containing attributes
|
|
6
|
+
* - domain [min,max]
|
|
7
|
+
* - range [min,max]
|
|
8
|
+
* - bounds [min,max]
|
|
9
|
+
* - scaleType (linear or log)
|
|
10
|
+
* - pivotValue (number)
|
|
11
|
+
* - inverted (boolean)
|
|
12
|
+
*/
|
|
13
|
+
export function getScale({ domain = [], range = [], scaleType, pivotValue, inverted, }) {
|
|
14
|
+
let scale;
|
|
15
|
+
const [min, max] = domain;
|
|
16
|
+
if (min === undefined || max === undefined) {
|
|
17
|
+
throw new Error('invalid domain');
|
|
18
|
+
}
|
|
19
|
+
if (scaleType === 'linear') {
|
|
20
|
+
scale = scaleLinear();
|
|
21
|
+
}
|
|
22
|
+
else if (scaleType === 'log') {
|
|
23
|
+
scale = scaleLog();
|
|
24
|
+
scale.base(2);
|
|
25
|
+
}
|
|
26
|
+
else if (scaleType === 'quantize') {
|
|
27
|
+
scale = scaleQuantize();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new Error('undefined scaleType');
|
|
31
|
+
}
|
|
32
|
+
scale.domain(pivotValue !== undefined ? [min, pivotValue, max] : [min, max]);
|
|
33
|
+
scale.nice();
|
|
34
|
+
const [rangeMin, rangeMax] = range;
|
|
35
|
+
if (rangeMin === undefined || rangeMax === undefined) {
|
|
36
|
+
throw new Error('invalid range');
|
|
37
|
+
}
|
|
38
|
+
scale.range(inverted ? range.slice().reverse() : range);
|
|
39
|
+
return scale;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* gets the origin for drawing the graph. for linear this is 0, for log this is arbitrarily set to log(1)==0
|
|
43
|
+
*
|
|
44
|
+
* @param scaleType -
|
|
45
|
+
*/
|
|
46
|
+
export function getOrigin(scaleType /* , pivot, stats */) {
|
|
47
|
+
// if (pivot) {
|
|
48
|
+
// if (pivot === 'mean') {
|
|
49
|
+
// return stats.scoreMean || 0
|
|
50
|
+
// }
|
|
51
|
+
// if (pivot === 'zero') {
|
|
52
|
+
// return 0
|
|
53
|
+
// }
|
|
54
|
+
// return parseFloat()
|
|
55
|
+
// }
|
|
56
|
+
// if (scaleType === 'z_score') {
|
|
57
|
+
// return stats.scoreMean || 0
|
|
58
|
+
// }
|
|
59
|
+
if (scaleType === 'log') {
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* produces a "nice" domain that actually rounds down to 0 for the min
|
|
66
|
+
* or 0 to the max depending on if all values are positive or negative
|
|
67
|
+
*
|
|
68
|
+
* @param object - containing attributes
|
|
69
|
+
* - domain [min,max]
|
|
70
|
+
* - bounds [min,max]
|
|
71
|
+
* - mean
|
|
72
|
+
* - stddev
|
|
73
|
+
* - scaleType (linear or log)
|
|
74
|
+
*/
|
|
75
|
+
export function getNiceDomain({ scaleType, domain, bounds, }) {
|
|
76
|
+
const [minScore, maxScore] = bounds;
|
|
77
|
+
let [min, max] = domain;
|
|
78
|
+
if (scaleType === 'linear') {
|
|
79
|
+
if (max < 0) {
|
|
80
|
+
max = 0;
|
|
81
|
+
}
|
|
82
|
+
if (min > 0) {
|
|
83
|
+
min = 0;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (scaleType === 'log') {
|
|
87
|
+
// if the min is 0, assume that it's just something
|
|
88
|
+
// with no read coverage and that we should ignore it in calculations
|
|
89
|
+
// if it's greater than 1 pin to 1 for the full range also
|
|
90
|
+
// otherwise, we may see bigwigs with fractional values
|
|
91
|
+
if (min === 0 || min > 1) {
|
|
92
|
+
min = 1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (min === undefined || max === undefined) {
|
|
96
|
+
throw new Error('invalid domain supplied to stats function');
|
|
97
|
+
}
|
|
98
|
+
if (minScore !== undefined && minScore !== Number.MIN_VALUE) {
|
|
99
|
+
min = minScore;
|
|
100
|
+
}
|
|
101
|
+
if (maxScore !== undefined && maxScore !== Number.MAX_VALUE) {
|
|
102
|
+
max = maxScore;
|
|
103
|
+
}
|
|
104
|
+
const getScaleType = (type) => {
|
|
105
|
+
if (type === 'linear') {
|
|
106
|
+
return scaleLinear();
|
|
107
|
+
}
|
|
108
|
+
if (type === 'log') {
|
|
109
|
+
const scale = scaleLog();
|
|
110
|
+
scale.base(2);
|
|
111
|
+
return scale;
|
|
112
|
+
}
|
|
113
|
+
if (type === 'quantize') {
|
|
114
|
+
return scaleQuantize();
|
|
115
|
+
}
|
|
116
|
+
throw new Error(`undefined scaleType ${type}`);
|
|
117
|
+
};
|
|
118
|
+
const scale = getScaleType(scaleType);
|
|
119
|
+
scale.domain([min, max]);
|
|
120
|
+
scale.nice();
|
|
121
|
+
return scale.domain();
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=util.js.map
|
package/esm/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-wiggle",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "JBrowse 2 wiggle adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -20,42 +20,50 @@
|
|
|
20
20
|
"main": "dist/index.js",
|
|
21
21
|
"files": [
|
|
22
22
|
"dist",
|
|
23
|
-
"src"
|
|
23
|
+
"src",
|
|
24
|
+
"esm"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
26
|
-
"build": "
|
|
27
|
-
"postbuild": "tsc --build tsconfig.build.json",
|
|
27
|
+
"build": "npm-run-all build:*",
|
|
28
28
|
"test": "cd ../..; jest plugins/wiggle",
|
|
29
29
|
"prepublishOnly": "yarn test",
|
|
30
30
|
"prepack": "yarn build; yarn useDist",
|
|
31
31
|
"postpack": "yarn useSrc",
|
|
32
32
|
"useDist": "node ../../scripts/useDist.js",
|
|
33
|
-
"useSrc": "node ../../scripts/useSrc.js"
|
|
33
|
+
"useSrc": "node ../../scripts/useSrc.js",
|
|
34
|
+
"prebuild": "npm run clean",
|
|
35
|
+
"build:esm": "tsc --build tsconfig.build.esm.json",
|
|
36
|
+
"build:es5": "tsc --build tsconfig.build.es5.json",
|
|
37
|
+
"clean": "rimraf dist esm *.tsbuildinfo"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {
|
|
36
40
|
"@babel/runtime": "^7.17.9",
|
|
37
41
|
"@gmod/bbi": "^1.0.35",
|
|
38
|
-
"@
|
|
42
|
+
"@mui/icons-material": "^5.0.2",
|
|
39
43
|
"@popperjs/core": "^2.11.0",
|
|
40
44
|
"color": "^3.1.1",
|
|
41
|
-
"d3-scale": "^3.2
|
|
45
|
+
"d3-scale": "^3.0.2",
|
|
42
46
|
"react-color": "^2.19.3",
|
|
43
47
|
"react-d3-axis-mod": "^0.1.3",
|
|
44
48
|
"react-popper": "^2.0.0"
|
|
45
49
|
},
|
|
46
50
|
"peerDependencies": {
|
|
47
|
-
"@jbrowse/core": "^
|
|
48
|
-
"@jbrowse/plugin-linear-genome-view": "^
|
|
49
|
-
"@material
|
|
50
|
-
"mobx": "^
|
|
51
|
-
"mobx-react": "^
|
|
52
|
-
"mobx-state-tree": "
|
|
51
|
+
"@jbrowse/core": "^2.0.0",
|
|
52
|
+
"@jbrowse/plugin-linear-genome-view": "^2.0.0",
|
|
53
|
+
"@mui/material": "^5.0.0",
|
|
54
|
+
"mobx": "^6.0.0",
|
|
55
|
+
"mobx-react": "^7.0.0",
|
|
56
|
+
"mobx-state-tree": "^5.0.0",
|
|
53
57
|
"prop-types": "^15.0.0",
|
|
54
58
|
"react": ">=16.8.0",
|
|
55
|
-
"rxjs": "^6.0.0"
|
|
59
|
+
"rxjs": "^6.0.0",
|
|
60
|
+
"tss-react": "^3.0.0"
|
|
56
61
|
},
|
|
57
62
|
"publishConfig": {
|
|
58
63
|
"access": "public"
|
|
59
64
|
},
|
|
60
|
-
"
|
|
65
|
+
"distModule": "esm/index.js",
|
|
66
|
+
"srcModule": "src/index.ts",
|
|
67
|
+
"module": "esm/index.js",
|
|
68
|
+
"gitHead": "ed935bf5612af3818abdc8ef52d100d5d81d33a2"
|
|
61
69
|
}
|
|
@@ -2,6 +2,11 @@ import SimpleFeature from '@jbrowse/core/util/simpleFeature'
|
|
|
2
2
|
import { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils'
|
|
3
3
|
import DensityRenderer, { configSchema, ReactComponent } from '.'
|
|
4
4
|
|
|
5
|
+
import { Image, createCanvas } from 'canvas'
|
|
6
|
+
|
|
7
|
+
global.nodeImage = Image
|
|
8
|
+
global.nodeCreateCanvas = createCanvas
|
|
9
|
+
|
|
5
10
|
const pluginManager = {}
|
|
6
11
|
const renderer = new DensityRenderer({
|
|
7
12
|
name: 'DensityRenderer',
|
|
@@ -14,7 +14,7 @@ import WiggleBaseRenderer, {
|
|
|
14
14
|
export { default as ReactComponent } from '../WiggleRendering'
|
|
15
15
|
|
|
16
16
|
export default class DensityRenderer extends WiggleBaseRenderer {
|
|
17
|
-
draw(
|
|
17
|
+
async draw(
|
|
18
18
|
ctx: CanvasRenderingContext2D,
|
|
19
19
|
props: RenderArgsDeserializedWithFeatures,
|
|
20
20
|
) {
|
|
@@ -5,7 +5,7 @@ import WiggleBaseRenderer from '../WiggleBaseRenderer'
|
|
|
5
5
|
import { YSCALEBAR_LABEL_OFFSET } from '../LinearWiggleDisplay/models/model'
|
|
6
6
|
|
|
7
7
|
export default class LinePlotRenderer extends WiggleBaseRenderer {
|
|
8
|
-
draw(ctx, props) {
|
|
8
|
+
async draw(ctx, props) {
|
|
9
9
|
const {
|
|
10
10
|
features,
|
|
11
11
|
regions,
|
|
@@ -6,6 +6,12 @@ export { default } from './LinePlotRenderer'
|
|
|
6
6
|
|
|
7
7
|
export const configSchema = ConfigurationSchema(
|
|
8
8
|
'LinePlotRenderer',
|
|
9
|
-
{
|
|
9
|
+
{
|
|
10
|
+
displayCrossHatches: {
|
|
11
|
+
type: 'boolean',
|
|
12
|
+
description: 'choose to draw cross hatches (sideways lines)',
|
|
13
|
+
defaultValue: false,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
10
16
|
{ baseConfiguration: ConfigSchema, explicitlyTyped: true },
|
|
11
17
|
)
|
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
DialogContent,
|
|
6
6
|
DialogActions,
|
|
7
7
|
DialogTitle,
|
|
8
|
-
IconButton,
|
|
9
|
-
Typography,
|
|
10
8
|
FormControlLabel,
|
|
9
|
+
IconButton,
|
|
11
10
|
Radio,
|
|
12
|
-
|
|
13
|
-
} from '@material
|
|
14
|
-
import
|
|
11
|
+
Typography,
|
|
12
|
+
} from '@mui/material'
|
|
13
|
+
import { makeStyles } from 'tss-react/mui'
|
|
14
|
+
import CloseIcon from '@mui/icons-material/Close'
|
|
15
15
|
import { CompactPicker, Color, RGBColor } from 'react-color'
|
|
16
16
|
|
|
17
|
-
const useStyles = makeStyles(theme => ({
|
|
17
|
+
const useStyles = makeStyles()(theme => ({
|
|
18
18
|
closeButton: {
|
|
19
19
|
position: 'absolute',
|
|
20
20
|
right: theme.spacing(1),
|
|
@@ -45,7 +45,7 @@ export default function SetColorDialog({
|
|
|
45
45
|
}
|
|
46
46
|
handleClose: () => void
|
|
47
47
|
}) {
|
|
48
|
-
const classes = useStyles()
|
|
48
|
+
const { classes } = useStyles()
|
|
49
49
|
const [posneg, setPosNeg] = useState(false)
|
|
50
50
|
|
|
51
51
|
return (
|
|
@@ -85,6 +85,7 @@ export default function SetColorDialog({
|
|
|
85
85
|
}}
|
|
86
86
|
/>
|
|
87
87
|
<Typography>Negative color</Typography>
|
|
88
|
+
|
|
88
89
|
<CompactPicker
|
|
89
90
|
onChange={event => {
|
|
90
91
|
model.setNegColor(serialize(event.rgb))
|
|
@@ -96,9 +97,7 @@ export default function SetColorDialog({
|
|
|
96
97
|
<>
|
|
97
98
|
<Typography>Overall color</Typography>
|
|
98
99
|
<CompactPicker
|
|
99
|
-
onChange={event =>
|
|
100
|
-
model.setColor(serialize(event.rgb))
|
|
101
|
-
}}
|
|
100
|
+
onChange={event => model.setColor(serialize(event.rgb))}
|
|
102
101
|
/>
|
|
103
102
|
</>
|
|
104
103
|
)}
|
|
@@ -120,9 +119,7 @@ export default function SetColorDialog({
|
|
|
120
119
|
variant="contained"
|
|
121
120
|
color="primary"
|
|
122
121
|
type="submit"
|
|
123
|
-
onClick={() =>
|
|
124
|
-
handleClose()
|
|
125
|
-
}}
|
|
122
|
+
onClick={() => handleClose()}
|
|
126
123
|
>
|
|
127
124
|
Submit
|
|
128
125
|
</Button>
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import React, { useState } from 'react'
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import {
|
|
3
|
+
Button,
|
|
4
|
+
Dialog,
|
|
5
|
+
DialogContent,
|
|
6
|
+
DialogTitle,
|
|
7
|
+
IconButton,
|
|
8
|
+
TextField,
|
|
9
|
+
Typography,
|
|
10
|
+
} from '@mui/material'
|
|
11
|
+
import { makeStyles } from 'tss-react/mui'
|
|
12
|
+
import CloseIcon from '@mui/icons-material/Close'
|
|
11
13
|
|
|
12
|
-
const useStyles = makeStyles(theme => ({
|
|
14
|
+
const useStyles = makeStyles()(theme => ({
|
|
13
15
|
root: {},
|
|
14
16
|
closeButton: {
|
|
15
17
|
position: 'absolute',
|
|
@@ -29,7 +31,7 @@ export default function SetMinMaxDlg(props: {
|
|
|
29
31
|
}
|
|
30
32
|
handleClose: () => void
|
|
31
33
|
}) {
|
|
32
|
-
const classes = useStyles()
|
|
34
|
+
const { classes } = useStyles()
|
|
33
35
|
const { model, handleClose } = props
|
|
34
36
|
const { minScore, maxScore, scaleType } = model
|
|
35
37
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useMemo, useState } from 'react'
|
|
2
2
|
import { observer } from 'mobx-react'
|
|
3
|
-
import {
|
|
3
|
+
import { alpha, Portal } from '@mui/material'
|
|
4
|
+
import { makeStyles } from 'tss-react/mui'
|
|
4
5
|
import { Feature } from '@jbrowse/core/util/simpleFeature'
|
|
5
6
|
|
|
6
7
|
// locals
|
|
@@ -18,7 +19,7 @@ function round(value: number) {
|
|
|
18
19
|
|
|
19
20
|
const en = (n: number) => n.toLocaleString('en-US')
|
|
20
21
|
|
|
21
|
-
const useStyles = makeStyles(theme => ({
|
|
22
|
+
const useStyles = makeStyles()(theme => ({
|
|
22
23
|
// these styles come from
|
|
23
24
|
// https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js
|
|
24
25
|
tooltip: {
|
|
@@ -99,7 +100,7 @@ const Tooltip = observer(
|
|
|
99
100
|
const { featureUnderMouse } = model
|
|
100
101
|
const [width, setWidth] = useState(0)
|
|
101
102
|
const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null)
|
|
102
|
-
const classes = useStyles()
|
|
103
|
+
const { classes } = useStyles()
|
|
103
104
|
|
|
104
105
|
// must be memoized a la https://github.com/popperjs/react-popper/issues/391
|
|
105
106
|
const virtElement = useMemo(
|
|
@@ -5,20 +5,25 @@ import {
|
|
|
5
5
|
getContainingTrack,
|
|
6
6
|
} from '@jbrowse/core/util'
|
|
7
7
|
import { getConf } from '@jbrowse/core/configuration'
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
BaseLinearDisplayComponent,
|
|
10
|
+
LinearGenomeViewModel,
|
|
11
|
+
} from '@jbrowse/plugin-linear-genome-view'
|
|
9
12
|
import { observer } from 'mobx-react'
|
|
10
13
|
import { WiggleDisplayModel } from '../models/model'
|
|
11
14
|
import YScaleBar from './YScaleBar'
|
|
12
15
|
|
|
16
|
+
type LGV = LinearGenomeViewModel
|
|
17
|
+
|
|
13
18
|
const LinearWiggleDisplay = observer((props: { model: WiggleDisplayModel }) => {
|
|
14
19
|
const { model } = props
|
|
15
20
|
const { stats, height, needsScalebar } = model
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
const
|
|
22
|
+
const { trackLabels } = getContainingView(model) as LGV
|
|
23
|
+
const track = getContainingTrack(model)
|
|
19
24
|
const left =
|
|
20
25
|
trackLabels === 'overlapping'
|
|
21
|
-
? measureText(getConf(
|
|
26
|
+
? measureText(getConf(track, 'name'), 12.8) + 100
|
|
22
27
|
: 50
|
|
23
28
|
return (
|
|
24
29
|
<div>
|