@jbrowse/plugin-wiggle 1.6.7 → 1.7.0

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.
Files changed (41) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.js +288 -0
  2. package/dist/BigWigAdapter/BigWigAdapter.test.js +157 -0
  3. package/dist/BigWigAdapter/configSchema.js +22 -0
  4. package/dist/BigWigAdapter/index.js +15 -0
  5. package/dist/DensityRenderer/DensityRenderer.test.js +84 -0
  6. package/dist/DensityRenderer/index.js +137 -0
  7. package/dist/LinePlotRenderer/LinePlotRenderer.js +171 -0
  8. package/dist/LinePlotRenderer/configSchema.js +70 -0
  9. package/dist/LinePlotRenderer/index.js +34 -0
  10. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +111 -0
  11. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +112 -0
  12. package/dist/LinearWiggleDisplay/components/Tooltip.js +167 -0
  13. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +52 -0
  14. package/dist/LinearWiggleDisplay/components/YScaleBar.js +33 -0
  15. package/dist/LinearWiggleDisplay/index.js +43 -0
  16. package/dist/LinearWiggleDisplay/models/configSchema.js +71 -0
  17. package/dist/LinearWiggleDisplay/models/model.js +706 -0
  18. package/dist/WiggleBaseRenderer.js +131 -0
  19. package/dist/WiggleRPC/rpcMethods.js +295 -0
  20. package/dist/WiggleRendering.js +109 -0
  21. package/dist/WiggleRendering.test.js +52 -0
  22. package/dist/XYPlotRenderer/XYPlotRenderer.js +199 -0
  23. package/dist/XYPlotRenderer/XYPlotRenderer.test.js +83 -0
  24. package/dist/XYPlotRenderer/index.js +34 -0
  25. package/dist/configSchema.js +75 -0
  26. package/dist/declare.d.js +1 -0
  27. package/dist/index.d.ts +25 -25
  28. package/dist/index.js +251 -6
  29. package/dist/index.test.js +24 -0
  30. package/dist/plugin-wiggle.cjs.development.js +1 -1
  31. package/dist/plugin-wiggle.cjs.development.js.map +1 -1
  32. package/dist/plugin-wiggle.cjs.production.min.js +1 -1
  33. package/dist/plugin-wiggle.cjs.production.min.js.map +1 -1
  34. package/dist/plugin-wiggle.esm.js +1 -1
  35. package/dist/plugin-wiggle.esm.js.map +1 -1
  36. package/dist/util.js +178 -0
  37. package/dist/util.test.js +66 -0
  38. package/package.json +3 -6
  39. package/src/LinearWiggleDisplay/components/Tooltip.tsx +1 -1
  40. package/src/LinearWiggleDisplay/models/model.tsx +2 -2
  41. package/src/WiggleBaseRenderer.tsx +1 -0
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.6.7",
3
+ "version": "1.7.0",
4
4
  "description": "JBrowse 2 wiggle adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -18,15 +18,12 @@
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
- "start": "tsdx watch --verbose --noClean",
29
- "build": "tsdx build",
26
+ "build": "babel src --root-mode upward --out-dir dist --extensions .ts,.js,.tsx,.jsx",
30
27
  "test": "cd ../..; jest plugins/wiggle",
31
28
  "prepublishOnly": "yarn test",
32
29
  "prepack": "yarn build; yarn useDist",
@@ -60,5 +57,5 @@
60
57
  "publishConfig": {
61
58
  "access": "public"
62
59
  },
63
- "gitHead": "02012ec299c36647f755316571775d36b0fee5ec"
60
+ "gitHead": "cc13844074d11881d211342a6a7eea113561b70b"
64
61
  }
@@ -40,7 +40,7 @@ const useStyles = makeStyles(theme => ({
40
40
  border: 'none',
41
41
  width: 1,
42
42
  height: '100%',
43
- top: 0,
43
+ top: YSCALEBAR_LABEL_OFFSET,
44
44
  cursor: 'default',
45
45
  position: 'absolute',
46
46
  pointerEvents: 'none',
@@ -558,7 +558,7 @@ const stateModelFactory = (
558
558
  try {
559
559
  stats = await getStats({
560
560
  signal: aborter.signal,
561
- filters: self.filters,
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
- filters: self.filters,
594
+ ...self.renderProps(),
595
595
  })
596
596
 
597
597
  if (isAlive(self)) {
@@ -69,6 +69,7 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
69
69
  ...results,
70
70
  ...res,
71
71
  features,
72
+ containsNoTransferables: true,
72
73
  height,
73
74
  width,
74
75
  }