@jbrowse/plugin-wiggle 1.6.8 → 1.7.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.d.ts +24 -24
- package/dist/BigWigAdapter/BigWigAdapter.js +288 -0
- package/dist/BigWigAdapter/BigWigAdapter.test.js +157 -0
- package/dist/BigWigAdapter/configSchema.d.ts +2 -2
- package/dist/BigWigAdapter/configSchema.js +22 -0
- package/dist/BigWigAdapter/index.d.ts +1 -1
- package/dist/BigWigAdapter/index.js +15 -0
- package/dist/DensityRenderer/DensityRenderer.test.js +84 -0
- package/dist/DensityRenderer/index.d.ts +6 -6
- package/dist/DensityRenderer/index.js +137 -0
- package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +4 -9
- package/dist/LinePlotRenderer/LinePlotRenderer.js +171 -0
- package/dist/LinePlotRenderer/configSchema.d.ts +2 -2
- package/dist/LinePlotRenderer/configSchema.js +70 -0
- package/dist/LinePlotRenderer/index.d.ts +3 -3
- package/dist/LinePlotRenderer/index.js +34 -0
- package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +10 -10
- package/dist/LinearWiggleDisplay/components/SetColorDialog.js +111 -0
- package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -11
- package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +112 -0
- package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +24 -24
- package/dist/LinearWiggleDisplay/components/Tooltip.js +167 -0
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +8 -8
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +52 -0
- package/dist/LinearWiggleDisplay/components/YScaleBar.d.ts +7 -7
- package/dist/LinearWiggleDisplay/components/YScaleBar.js +33 -0
- package/dist/LinearWiggleDisplay/index.d.ts +3 -3
- package/dist/LinearWiggleDisplay/index.js +43 -0
- package/dist/LinearWiggleDisplay/models/configSchema.d.ts +2 -2
- package/dist/LinearWiggleDisplay/models/configSchema.js +71 -0
- package/dist/LinearWiggleDisplay/models/model.d.ts +288 -288
- package/dist/LinearWiggleDisplay/models/model.js +706 -0
- package/dist/WiggleBaseRenderer.d.ts +44 -42
- package/dist/WiggleBaseRenderer.js +131 -0
- package/dist/WiggleRPC/rpcMethods.d.ts +31 -31
- package/dist/WiggleRPC/rpcMethods.js +295 -0
- package/dist/WiggleRendering.d.ts +16 -16
- package/dist/WiggleRendering.js +109 -0
- package/dist/WiggleRendering.test.js +52 -0
- package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +4 -4
- package/dist/XYPlotRenderer/XYPlotRenderer.js +199 -0
- package/dist/XYPlotRenderer/XYPlotRenderer.test.js +83 -0
- package/dist/XYPlotRenderer/index.d.ts +3 -3
- package/dist/XYPlotRenderer/index.js +34 -0
- package/dist/configSchema.d.ts +2 -2
- package/dist/configSchema.js +75 -0
- package/dist/declare.d.js +1 -0
- package/dist/index.d.ts +866 -866
- package/dist/index.js +251 -6
- package/dist/index.test.js +24 -0
- package/dist/util.d.ts +41 -41
- package/dist/util.js +178 -0
- package/dist/util.test.js +66 -0
- package/package.json +4 -6
- package/src/LinearWiggleDisplay/models/model.tsx +2 -2
- package/src/WiggleBaseRenderer.tsx +1 -0
- package/dist/DensityRenderer/DensityRenderer.test.d.ts +0 -1
- package/dist/WiggleRendering.test.d.ts +0 -1
- package/dist/XYPlotRenderer/XYPlotRenderer.test.d.ts +0 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/plugin-wiggle.cjs.development.js +0 -3556
- package/dist/plugin-wiggle.cjs.development.js.map +0 -1
- package/dist/plugin-wiggle.cjs.production.min.js +0 -2
- package/dist/plugin-wiggle.cjs.production.min.js.map +0 -1
- package/dist/plugin-wiggle.esm.js +0 -3541
- package/dist/plugin-wiggle.esm.js.map +0 -1
- package/dist/util.test.d.ts +0 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
|
|
2
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
var _exportNames = {
|
|
11
|
+
WiggleBaseRenderer: true,
|
|
12
|
+
WiggleRendering: true,
|
|
13
|
+
linearWiggleDisplayModelFactory: true,
|
|
14
|
+
LinearWiggleDisplayReactComponent: true,
|
|
15
|
+
YSCALEBAR_LABEL_OFFSET: true,
|
|
16
|
+
Tooltip: true
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "LinearWiggleDisplayReactComponent", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _LinearWiggleDisplay.ReactComponent;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "Tooltip", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _Tooltip.Tooltip;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "WiggleBaseRenderer", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function get() {
|
|
33
|
+
return _WiggleBaseRenderer["default"];
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "WiggleRendering", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _WiggleRendering["default"];
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "YSCALEBAR_LABEL_OFFSET", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _LinearWiggleDisplay.YSCALEBAR_LABEL_OFFSET;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
exports["default"] = void 0;
|
|
49
|
+
Object.defineProperty(exports, "linearWiggleDisplayModelFactory", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function get() {
|
|
52
|
+
return _LinearWiggleDisplay.modelFactory;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
57
|
+
|
|
58
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
59
|
+
|
|
60
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
61
|
+
|
|
62
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
63
|
+
|
|
64
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
65
|
+
|
|
66
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
67
|
+
|
|
68
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
69
|
+
|
|
70
|
+
var _AdapterType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
|
|
71
|
+
|
|
72
|
+
var _TrackType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/TrackType"));
|
|
73
|
+
|
|
74
|
+
var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
|
|
75
|
+
|
|
76
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
77
|
+
|
|
78
|
+
var _models = require("@jbrowse/core/pluggableElementTypes/models");
|
|
79
|
+
|
|
80
|
+
var _DisplayType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/DisplayType"));
|
|
81
|
+
|
|
82
|
+
var _WiggleBaseRenderer = _interopRequireDefault(require("./WiggleBaseRenderer"));
|
|
83
|
+
|
|
84
|
+
var _WiggleRendering = _interopRequireDefault(require("./WiggleRendering"));
|
|
85
|
+
|
|
86
|
+
var _BigWigAdapter = require("./BigWigAdapter");
|
|
87
|
+
|
|
88
|
+
var _DensityRenderer = _interopRequireWildcard(require("./DensityRenderer"));
|
|
89
|
+
|
|
90
|
+
var utils = _interopRequireWildcard(require("./util"));
|
|
91
|
+
|
|
92
|
+
Object.keys(utils).forEach(function (key) {
|
|
93
|
+
if (key === "default" || key === "__esModule") return;
|
|
94
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
95
|
+
if (key in exports && exports[key] === utils[key]) return;
|
|
96
|
+
Object.defineProperty(exports, key, {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function get() {
|
|
99
|
+
return utils[key];
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
var _LinearWiggleDisplay = require("./LinearWiggleDisplay");
|
|
105
|
+
|
|
106
|
+
var _XYPlotRenderer = _interopRequireWildcard(require("./XYPlotRenderer"));
|
|
107
|
+
|
|
108
|
+
var _LinePlotRenderer = _interopRequireWildcard(require("./LinePlotRenderer"));
|
|
109
|
+
|
|
110
|
+
var _rpcMethods = require("./WiggleRPC/rpcMethods");
|
|
111
|
+
|
|
112
|
+
var _tracks = require("@jbrowse/core/util/tracks");
|
|
113
|
+
|
|
114
|
+
var _Tooltip = require("./LinearWiggleDisplay/components/Tooltip");
|
|
115
|
+
|
|
116
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
117
|
+
|
|
118
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
119
|
+
|
|
120
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
121
|
+
|
|
122
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
123
|
+
|
|
124
|
+
var WigglePlugin = /*#__PURE__*/function (_Plugin) {
|
|
125
|
+
(0, _inherits2["default"])(WigglePlugin, _Plugin);
|
|
126
|
+
|
|
127
|
+
var _super = _createSuper(WigglePlugin);
|
|
128
|
+
|
|
129
|
+
function WigglePlugin() {
|
|
130
|
+
var _this;
|
|
131
|
+
|
|
132
|
+
(0, _classCallCheck2["default"])(this, WigglePlugin);
|
|
133
|
+
|
|
134
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
135
|
+
args[_key] = arguments[_key];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
139
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "name", 'WigglePlugin');
|
|
140
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "exports", {
|
|
141
|
+
LinearWiggleDisplayReactComponent: _LinearWiggleDisplay.ReactComponent,
|
|
142
|
+
XYPlotRendererReactComponent: _XYPlotRenderer.ReactComponent,
|
|
143
|
+
XYPlotRenderer: _XYPlotRenderer["default"],
|
|
144
|
+
xyPlotRendererConfigSchema: _XYPlotRenderer.configSchema,
|
|
145
|
+
utils: utils,
|
|
146
|
+
WiggleBaseRenderer: _WiggleBaseRenderer["default"],
|
|
147
|
+
linearWiggleDisplayModelFactory: _LinearWiggleDisplay.modelFactory
|
|
148
|
+
});
|
|
149
|
+
return _this;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
(0, _createClass2["default"])(WigglePlugin, [{
|
|
153
|
+
key: "install",
|
|
154
|
+
value: function install(pluginManager) {
|
|
155
|
+
pluginManager.addTrackType(function () {
|
|
156
|
+
var configSchema = (0, _configuration.ConfigurationSchema)('QuantitativeTrack', {}, {
|
|
157
|
+
baseConfiguration: (0, _models.createBaseTrackConfig)(pluginManager)
|
|
158
|
+
});
|
|
159
|
+
return new _TrackType["default"]({
|
|
160
|
+
name: 'QuantitativeTrack',
|
|
161
|
+
configSchema: configSchema,
|
|
162
|
+
stateModel: (0, _models.createBaseTrackModel)(pluginManager, 'QuantitativeTrack', configSchema)
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
pluginManager.addDisplayType(function () {
|
|
166
|
+
var configSchema = (0, _LinearWiggleDisplay.configSchemaFactory)(pluginManager);
|
|
167
|
+
return new _DisplayType["default"]({
|
|
168
|
+
name: 'LinearWiggleDisplay',
|
|
169
|
+
configSchema: configSchema,
|
|
170
|
+
stateModel: (0, _LinearWiggleDisplay.modelFactory)(pluginManager, configSchema),
|
|
171
|
+
trackType: 'QuantitativeTrack',
|
|
172
|
+
viewType: 'LinearGenomeView',
|
|
173
|
+
ReactComponent: _LinearWiggleDisplay.ReactComponent
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
pluginManager.addAdapterType(function () {
|
|
177
|
+
return new _AdapterType["default"]({
|
|
178
|
+
name: 'BigWigAdapter',
|
|
179
|
+
configSchema: _BigWigAdapter.configSchema,
|
|
180
|
+
adapterCapabilities: ['hasResolution', 'hasLocalStats', 'hasGlobalStats'],
|
|
181
|
+
getAdapterClass: function getAdapterClass() {
|
|
182
|
+
return Promise.resolve().then(function () {
|
|
183
|
+
return _interopRequireWildcard(require('./BigWigAdapter/BigWigAdapter'));
|
|
184
|
+
}).then(function (r) {
|
|
185
|
+
return r["default"];
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
|
|
191
|
+
return function (file, index, adapterHint) {
|
|
192
|
+
var regexGuess = /\.(bw|bigwig)$/i;
|
|
193
|
+
var adapterName = 'BigWigAdapter';
|
|
194
|
+
var fileName = (0, _tracks.getFileName)(file);
|
|
195
|
+
var obj = {
|
|
196
|
+
type: adapterName,
|
|
197
|
+
bigWigLocation: file
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
201
|
+
return obj;
|
|
202
|
+
} else if (adapterHint === adapterName) {
|
|
203
|
+
return obj;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return adapterGuesser(file, index, adapterHint);
|
|
207
|
+
};
|
|
208
|
+
});
|
|
209
|
+
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', function (trackTypeGuesser) {
|
|
210
|
+
return function (adapterName) {
|
|
211
|
+
if (adapterName === 'BigWigAdapter') {
|
|
212
|
+
return 'QuantitativeTrack';
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return trackTypeGuesser(adapterName);
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
pluginManager.addRendererType(function () {
|
|
219
|
+
return new _DensityRenderer["default"]({
|
|
220
|
+
name: 'DensityRenderer',
|
|
221
|
+
ReactComponent: _DensityRenderer.ReactComponent,
|
|
222
|
+
configSchema: _DensityRenderer.configSchema,
|
|
223
|
+
pluginManager: pluginManager
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
pluginManager.addRendererType(function () {
|
|
227
|
+
return new _LinePlotRenderer["default"]({
|
|
228
|
+
name: 'LinePlotRenderer',
|
|
229
|
+
ReactComponent: _LinePlotRenderer.ReactComponent,
|
|
230
|
+
configSchema: _LinePlotRenderer.configSchema,
|
|
231
|
+
pluginManager: pluginManager
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
pluginManager.addRendererType(function () {
|
|
235
|
+
return new _XYPlotRenderer["default"]({
|
|
236
|
+
name: 'XYPlotRenderer',
|
|
237
|
+
ReactComponent: _XYPlotRenderer.ReactComponent,
|
|
238
|
+
configSchema: _XYPlotRenderer.configSchema,
|
|
239
|
+
pluginManager: pluginManager
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
pluginManager.addRpcMethod(function () {
|
|
243
|
+
return new _rpcMethods.WiggleGetGlobalStats(pluginManager);
|
|
244
|
+
});
|
|
245
|
+
pluginManager.addRpcMethod(function () {
|
|
246
|
+
return new _rpcMethods.WiggleGetMultiRegionStats(pluginManager);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}]);
|
|
250
|
+
return WigglePlugin;
|
|
251
|
+
}(_Plugin2["default"]);
|
|
252
|
+
|
|
253
|
+
exports["default"] = WigglePlugin;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _PluginManager = _interopRequireDefault(require("@jbrowse/core/PluginManager"));
|
|
6
|
+
|
|
7
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
8
|
+
|
|
9
|
+
var _ = _interopRequireDefault(require("."));
|
|
10
|
+
|
|
11
|
+
test('plugin in a stock JBrowse', function () {
|
|
12
|
+
console.warn = jest.fn();
|
|
13
|
+
var pluginManager = new _PluginManager["default"]([new _["default"]()]);
|
|
14
|
+
pluginManager.createPluggableElements();
|
|
15
|
+
pluginManager.configure();
|
|
16
|
+
expect(function () {
|
|
17
|
+
return pluginManager.addPlugin(new _["default"]());
|
|
18
|
+
}).toThrow(/JBrowse already configured, cannot add plugins/);
|
|
19
|
+
var BigWigAdapter = pluginManager.getAdapterType('BigWigAdapter');
|
|
20
|
+
var config = BigWigAdapter.configSchema.create({
|
|
21
|
+
type: 'BigWigAdapter'
|
|
22
|
+
});
|
|
23
|
+
expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
|
|
24
|
+
});
|
package/dist/util.d.ts
CHANGED
|
@@ -1,41 +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];
|
|
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/dist/util.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getNiceDomain = getNiceDomain;
|
|
9
|
+
exports.getOrigin = getOrigin;
|
|
10
|
+
exports.getScale = getScale;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _d3Scale = require("d3-scale");
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* produces a d3-scale from arguments. applies a "nice domain" adjustment
|
|
18
|
+
*
|
|
19
|
+
* @param object - containing attributes
|
|
20
|
+
* - domain [min,max]
|
|
21
|
+
* - range [min,max]
|
|
22
|
+
* - bounds [min,max]
|
|
23
|
+
* - scaleType (linear or log)
|
|
24
|
+
* - pivotValue (number)
|
|
25
|
+
* - inverted (boolean)
|
|
26
|
+
*/
|
|
27
|
+
function getScale(_ref) {
|
|
28
|
+
var _ref$domain = _ref.domain,
|
|
29
|
+
domain = _ref$domain === void 0 ? [] : _ref$domain,
|
|
30
|
+
_ref$range = _ref.range,
|
|
31
|
+
range = _ref$range === void 0 ? [] : _ref$range,
|
|
32
|
+
scaleType = _ref.scaleType,
|
|
33
|
+
pivotValue = _ref.pivotValue,
|
|
34
|
+
inverted = _ref.inverted;
|
|
35
|
+
var scale;
|
|
36
|
+
|
|
37
|
+
var _domain = (0, _slicedToArray2["default"])(domain, 2),
|
|
38
|
+
min = _domain[0],
|
|
39
|
+
max = _domain[1];
|
|
40
|
+
|
|
41
|
+
if (min === undefined || max === undefined) {
|
|
42
|
+
throw new Error('invalid domain');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (scaleType === 'linear') {
|
|
46
|
+
scale = (0, _d3Scale.scaleLinear)();
|
|
47
|
+
} else if (scaleType === 'log') {
|
|
48
|
+
scale = (0, _d3Scale.scaleLog)();
|
|
49
|
+
scale.base(2);
|
|
50
|
+
} else if (scaleType === 'quantize') {
|
|
51
|
+
scale = (0, _d3Scale.scaleQuantize)();
|
|
52
|
+
} else {
|
|
53
|
+
throw new Error('undefined scaleType');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
scale.domain(pivotValue !== undefined ? [min, pivotValue, max] : [min, max]);
|
|
57
|
+
scale.nice();
|
|
58
|
+
|
|
59
|
+
var _range = (0, _slicedToArray2["default"])(range, 2),
|
|
60
|
+
rangeMin = _range[0],
|
|
61
|
+
rangeMax = _range[1];
|
|
62
|
+
|
|
63
|
+
if (rangeMin === undefined || rangeMax === undefined) {
|
|
64
|
+
throw new Error('invalid range');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
scale.range(inverted ? range.slice().reverse() : range);
|
|
68
|
+
return scale;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* gets the origin for drawing the graph. for linear this is 0, for log this is arbitrarily set to log(1)==0
|
|
72
|
+
*
|
|
73
|
+
* @param scaleType -
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
function getOrigin(scaleType) {
|
|
78
|
+
// if (pivot) {
|
|
79
|
+
// if (pivot === 'mean') {
|
|
80
|
+
// return stats.scoreMean || 0
|
|
81
|
+
// }
|
|
82
|
+
// if (pivot === 'zero') {
|
|
83
|
+
// return 0
|
|
84
|
+
// }
|
|
85
|
+
// return parseFloat()
|
|
86
|
+
// }
|
|
87
|
+
// if (scaleType === 'z_score') {
|
|
88
|
+
// return stats.scoreMean || 0
|
|
89
|
+
// }
|
|
90
|
+
if (scaleType === 'log') {
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* produces a "nice" domain that actually rounds down to 0 for the min
|
|
98
|
+
* or 0 to the max depending on if all values are positive or negative
|
|
99
|
+
*
|
|
100
|
+
* @param object - containing attributes
|
|
101
|
+
* - domain [min,max]
|
|
102
|
+
* - bounds [min,max]
|
|
103
|
+
* - mean
|
|
104
|
+
* - stddev
|
|
105
|
+
* - scaleType (linear or log)
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
function getNiceDomain(_ref2) {
|
|
110
|
+
var scaleType = _ref2.scaleType,
|
|
111
|
+
domain = _ref2.domain,
|
|
112
|
+
bounds = _ref2.bounds;
|
|
113
|
+
|
|
114
|
+
var _bounds = (0, _slicedToArray2["default"])(bounds, 2),
|
|
115
|
+
minScore = _bounds[0],
|
|
116
|
+
maxScore = _bounds[1];
|
|
117
|
+
|
|
118
|
+
var _domain2 = (0, _slicedToArray2["default"])(domain, 2),
|
|
119
|
+
min = _domain2[0],
|
|
120
|
+
max = _domain2[1];
|
|
121
|
+
|
|
122
|
+
if (scaleType === 'linear') {
|
|
123
|
+
if (max < 0) {
|
|
124
|
+
max = 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (min > 0) {
|
|
128
|
+
min = 0;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (scaleType === 'log') {
|
|
133
|
+
// if the min is 0, assume that it's just something
|
|
134
|
+
// with no read coverage and that we should ignore it in calculations
|
|
135
|
+
// if it's greater than 1 pin to 1 for the full range also
|
|
136
|
+
// otherwise, we may see bigwigs with fractional values
|
|
137
|
+
if (min === 0 || min > 1) {
|
|
138
|
+
min = 1;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (min === undefined || max === undefined) {
|
|
143
|
+
throw new Error('invalid domain supplied to stats function');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (minScore !== undefined && minScore !== Number.MIN_VALUE) {
|
|
147
|
+
min = minScore;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (maxScore !== undefined && maxScore !== Number.MAX_VALUE) {
|
|
151
|
+
max = maxScore;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
var getScaleType = function getScaleType(type) {
|
|
155
|
+
if (type === 'linear') {
|
|
156
|
+
return (0, _d3Scale.scaleLinear)();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (type === 'log') {
|
|
160
|
+
var _scale = (0, _d3Scale.scaleLog)();
|
|
161
|
+
|
|
162
|
+
_scale.base(2);
|
|
163
|
+
|
|
164
|
+
return _scale;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (type === 'quantize') {
|
|
168
|
+
return (0, _d3Scale.scaleQuantize)();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
throw new Error("undefined scaleType ".concat(type));
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
var scale = getScaleType(scaleType);
|
|
175
|
+
scale.domain([min, max]);
|
|
176
|
+
scale.nice();
|
|
177
|
+
return scale.domain();
|
|
178
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _util = require("./util");
|
|
4
|
+
|
|
5
|
+
test('linear scale', function () {
|
|
6
|
+
var scaleType = 'linear';
|
|
7
|
+
var domain = [0, 100];
|
|
8
|
+
var range = [0, 100];
|
|
9
|
+
var scale = (0, _util.getScale)({
|
|
10
|
+
scaleType: scaleType,
|
|
11
|
+
domain: domain,
|
|
12
|
+
range: range
|
|
13
|
+
});
|
|
14
|
+
expect(scale.domain()).toEqual(domain);
|
|
15
|
+
});
|
|
16
|
+
test('log scale', function () {
|
|
17
|
+
var scaleType = 'log';
|
|
18
|
+
var domain = [1, 100];
|
|
19
|
+
var range = [0, 100];
|
|
20
|
+
var scale = (0, _util.getScale)({
|
|
21
|
+
scaleType: scaleType,
|
|
22
|
+
domain: domain,
|
|
23
|
+
range: range
|
|
24
|
+
});
|
|
25
|
+
expect(scale.domain()).toEqual([1, 128]);
|
|
26
|
+
});
|
|
27
|
+
test('test inverted', function () {
|
|
28
|
+
var scaleType = 'log';
|
|
29
|
+
var inverted = true;
|
|
30
|
+
var domain = [1, 100];
|
|
31
|
+
var range = [0, 100];
|
|
32
|
+
var scale = (0, _util.getScale)({
|
|
33
|
+
scaleType: scaleType,
|
|
34
|
+
domain: domain,
|
|
35
|
+
range: range,
|
|
36
|
+
inverted: inverted
|
|
37
|
+
});
|
|
38
|
+
expect(scale.domain()).toEqual([1, 128]);
|
|
39
|
+
expect(scale.range()).toEqual(range.reverse());
|
|
40
|
+
});
|
|
41
|
+
test('test minScore', function () {
|
|
42
|
+
var scaleType = 'linear';
|
|
43
|
+
var domain = [0, 100];
|
|
44
|
+
var range = [0, 100];
|
|
45
|
+
var bounds = [50, undefined];
|
|
46
|
+
var ret = (0, _util.getNiceDomain)({
|
|
47
|
+
scaleType: scaleType,
|
|
48
|
+
domain: domain,
|
|
49
|
+
range: range,
|
|
50
|
+
bounds: bounds
|
|
51
|
+
});
|
|
52
|
+
expect(ret).toEqual([50, 100]);
|
|
53
|
+
});
|
|
54
|
+
test('test min and max score', function () {
|
|
55
|
+
var scaleType = 'linear';
|
|
56
|
+
var domain = [1, 100];
|
|
57
|
+
var range = [0, 100];
|
|
58
|
+
var bounds = [undefined, 70];
|
|
59
|
+
var ret = (0, _util.getNiceDomain)({
|
|
60
|
+
scaleType: scaleType,
|
|
61
|
+
domain: domain,
|
|
62
|
+
range: range,
|
|
63
|
+
bounds: bounds
|
|
64
|
+
});
|
|
65
|
+
expect(ret).toEqual([0, 70]);
|
|
66
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-wiggle",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "JBrowse 2 wiggle adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -18,15 +18,13 @@
|
|
|
18
18
|
"distMain": "dist/index.js",
|
|
19
19
|
"srcMain": "src/index.ts",
|
|
20
20
|
"main": "dist/index.js",
|
|
21
|
-
"distModule": "dist/plugin-wiggle.esm.js",
|
|
22
|
-
"module": "dist/plugin-wiggle.esm.js",
|
|
23
21
|
"files": [
|
|
24
22
|
"dist",
|
|
25
23
|
"src"
|
|
26
24
|
],
|
|
27
25
|
"scripts": {
|
|
28
|
-
"
|
|
29
|
-
"
|
|
26
|
+
"build": "babel src --root-mode upward --out-dir dist --extensions .ts,.js,.tsx,.jsx",
|
|
27
|
+
"postbuild": "tsc --build tsconfig.build.json",
|
|
30
28
|
"test": "cd ../..; jest plugins/wiggle",
|
|
31
29
|
"prepublishOnly": "yarn test",
|
|
32
30
|
"prepack": "yarn build; yarn useDist",
|
|
@@ -60,5 +58,5 @@
|
|
|
60
58
|
"publishConfig": {
|
|
61
59
|
"access": "public"
|
|
62
60
|
},
|
|
63
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "6da232090c90f22ac96fd464c33082c89b8da14b"
|
|
64
62
|
}
|
|
@@ -558,7 +558,7 @@ const stateModelFactory = (
|
|
|
558
558
|
try {
|
|
559
559
|
stats = await getStats({
|
|
560
560
|
signal: aborter.signal,
|
|
561
|
-
|
|
561
|
+
...self.renderProps(),
|
|
562
562
|
})
|
|
563
563
|
if (isAlive(self)) {
|
|
564
564
|
self.updateStats(stats)
|
|
@@ -591,7 +591,7 @@ const stateModelFactory = (
|
|
|
591
591
|
|
|
592
592
|
const wiggleStats = await getStats({
|
|
593
593
|
signal: aborter.signal,
|
|
594
|
-
|
|
594
|
+
...self.renderProps(),
|
|
595
595
|
})
|
|
596
596
|
|
|
597
597
|
if (isAlive(self)) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/index.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|