@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.
Files changed (140) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.js +176 -284
  2. package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -0
  3. package/dist/BigWigAdapter/configSchema.js +12 -21
  4. package/dist/BigWigAdapter/configSchema.js.map +1 -0
  5. package/dist/BigWigAdapter/index.js +8 -14
  6. package/dist/BigWigAdapter/index.js.map +1 -0
  7. package/dist/DensityRenderer/index.d.ts +1 -1
  8. package/dist/DensityRenderer/index.js +152 -133
  9. package/dist/DensityRenderer/index.js.map +1 -0
  10. package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +1 -1
  11. package/dist/LinePlotRenderer/LinePlotRenderer.js +182 -168
  12. package/dist/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
  13. package/dist/LinePlotRenderer/index.js +19 -33
  14. package/dist/LinePlotRenderer/index.js.map +1 -0
  15. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +95 -105
  16. package/dist/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  17. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +86 -107
  18. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  19. package/dist/LinearWiggleDisplay/components/Tooltip.js +147 -152
  20. package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
  21. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +44 -50
  22. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  23. package/dist/LinearWiggleDisplay/components/YScaleBar.js +24 -31
  24. package/dist/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  25. package/dist/LinearWiggleDisplay/index.js +13 -42
  26. package/dist/LinearWiggleDisplay/index.js.map +1 -0
  27. package/dist/LinearWiggleDisplay/models/configSchema.js +65 -69
  28. package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -0
  29. package/dist/LinearWiggleDisplay/models/model.d.ts +16 -14
  30. package/dist/LinearWiggleDisplay/models/model.js +585 -696
  31. package/dist/LinearWiggleDisplay/models/model.js.map +1 -0
  32. package/dist/WiggleBaseRenderer.d.ts +3 -3
  33. package/dist/WiggleBaseRenderer.js +119 -129
  34. package/dist/WiggleBaseRenderer.js.map +1 -0
  35. package/dist/WiggleRPC/rpcMethods.js +182 -288
  36. package/dist/WiggleRPC/rpcMethods.js.map +1 -0
  37. package/dist/WiggleRendering.js +107 -102
  38. package/dist/WiggleRendering.js.map +1 -0
  39. package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +1 -1
  40. package/dist/XYPlotRenderer/XYPlotRenderer.js +250 -194
  41. package/dist/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
  42. package/dist/XYPlotRenderer/index.js +30 -33
  43. package/dist/XYPlotRenderer/index.js.map +1 -0
  44. package/dist/configSchema.js +47 -74
  45. package/dist/configSchema.js.map +1 -0
  46. package/dist/index.d.ts +118 -67
  47. package/dist/index.js +167 -242
  48. package/dist/index.js.map +1 -0
  49. package/dist/util.js +112 -143
  50. package/dist/util.js.map +1 -0
  51. package/esm/BigWigAdapter/BigWigAdapter.d.ts +24 -0
  52. package/esm/BigWigAdapter/BigWigAdapter.js +62 -0
  53. package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -0
  54. package/{dist/LinePlotRenderer → esm/BigWigAdapter}/configSchema.d.ts +0 -0
  55. package/esm/BigWigAdapter/configSchema.js +11 -0
  56. package/esm/BigWigAdapter/configSchema.js.map +1 -0
  57. package/esm/BigWigAdapter/index.d.ts +1 -0
  58. package/esm/BigWigAdapter/index.js +2 -0
  59. package/esm/BigWigAdapter/index.js.map +1 -0
  60. package/esm/DensityRenderer/index.d.ts +6 -0
  61. package/esm/DensityRenderer/index.js +39 -0
  62. package/esm/DensityRenderer/index.js.map +1 -0
  63. package/esm/LinePlotRenderer/LinePlotRenderer.d.ts +4 -0
  64. package/esm/LinePlotRenderer/LinePlotRenderer.js +71 -0
  65. package/esm/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
  66. package/esm/LinePlotRenderer/index.d.ts +3 -0
  67. package/esm/LinePlotRenderer/index.js +12 -0
  68. package/esm/LinePlotRenderer/index.js.map +1 -0
  69. package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  70. package/esm/LinearWiggleDisplay/components/SetColorDialog.js +55 -0
  71. package/esm/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  72. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  73. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
  74. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  75. package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +24 -0
  76. package/esm/LinearWiggleDisplay/components/Tooltip.js +107 -0
  77. package/esm/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
  78. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +8 -0
  79. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js +29 -0
  80. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  81. package/esm/LinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  82. package/esm/LinearWiggleDisplay/components/YScaleBar.js +9 -0
  83. package/esm/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  84. package/esm/LinearWiggleDisplay/index.d.ts +3 -0
  85. package/esm/LinearWiggleDisplay/index.js +4 -0
  86. package/esm/LinearWiggleDisplay/index.js.map +1 -0
  87. package/esm/LinearWiggleDisplay/models/configSchema.d.ts +2 -0
  88. package/esm/LinearWiggleDisplay/models/configSchema.js +64 -0
  89. package/esm/LinearWiggleDisplay/models/configSchema.js.map +1 -0
  90. package/esm/LinearWiggleDisplay/models/model.d.ts +290 -0
  91. package/esm/LinearWiggleDisplay/models/model.js +495 -0
  92. package/esm/LinearWiggleDisplay/models/model.js.map +1 -0
  93. package/esm/WiggleBaseRenderer.d.ts +55 -0
  94. package/esm/WiggleBaseRenderer.js +34 -0
  95. package/esm/WiggleBaseRenderer.js.map +1 -0
  96. package/esm/WiggleRPC/rpcMethods.d.ts +31 -0
  97. package/esm/WiggleRPC/rpcMethods.js +70 -0
  98. package/esm/WiggleRPC/rpcMethods.js.map +1 -0
  99. package/esm/WiggleRendering.d.ts +16 -0
  100. package/esm/WiggleRendering.js +40 -0
  101. package/esm/WiggleRendering.js.map +1 -0
  102. package/esm/XYPlotRenderer/XYPlotRenderer.d.ts +4 -0
  103. package/esm/XYPlotRenderer/XYPlotRenderer.js +109 -0
  104. package/esm/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
  105. package/esm/XYPlotRenderer/index.d.ts +3 -0
  106. package/esm/XYPlotRenderer/index.js +23 -0
  107. package/esm/XYPlotRenderer/index.js.map +1 -0
  108. package/esm/configSchema.d.ts +2 -0
  109. package/esm/configSchema.js +46 -0
  110. package/esm/configSchema.js.map +1 -0
  111. package/esm/index.d.ts +917 -0
  112. package/esm/index.js +115 -0
  113. package/esm/index.js.map +1 -0
  114. package/esm/util.d.ts +41 -0
  115. package/esm/util.js +123 -0
  116. package/esm/util.js.map +1 -0
  117. package/package.json +23 -15
  118. package/src/DensityRenderer/DensityRenderer.test.js +5 -0
  119. package/src/DensityRenderer/index.ts +1 -1
  120. package/src/LinePlotRenderer/LinePlotRenderer.js +1 -1
  121. package/src/LinePlotRenderer/index.js +7 -1
  122. package/src/LinearWiggleDisplay/components/SetColorDialog.tsx +10 -13
  123. package/src/LinearWiggleDisplay/components/SetMinMaxDialog.tsx +13 -11
  124. package/src/LinearWiggleDisplay/components/Tooltip.tsx +4 -3
  125. package/src/LinearWiggleDisplay/components/WiggleDisplayComponent.tsx +9 -4
  126. package/src/LinearWiggleDisplay/models/model.tsx +56 -65
  127. package/src/WiggleBaseRenderer.tsx +3 -3
  128. package/src/XYPlotRenderer/XYPlotRenderer.test.js +5 -0
  129. package/src/XYPlotRenderer/XYPlotRenderer.ts +87 -40
  130. package/src/XYPlotRenderer/index.ts +19 -2
  131. package/src/configSchema.ts +0 -23
  132. package/dist/BigWigAdapter/BigWigAdapter.test.js +0 -157
  133. package/dist/DensityRenderer/DensityRenderer.test.js +0 -84
  134. package/dist/LinePlotRenderer/configSchema.js +0 -70
  135. package/dist/WiggleRendering.test.js +0 -52
  136. package/dist/XYPlotRenderer/XYPlotRenderer.test.js +0 -83
  137. package/dist/declare.d.js +0 -1
  138. package/dist/index.test.js +0 -24
  139. package/dist/util.test.js +0 -66
  140. package/src/LinePlotRenderer/configSchema.js +0 -68
@@ -0,0 +1,495 @@
1
+ import React, { lazy } from 'react';
2
+ import { ConfigurationReference, getConf, readConfObject, } from '@jbrowse/core/configuration';
3
+ import { isAbortException, getSession, getContainingView, isSelectionContainer, } from '@jbrowse/core/util';
4
+ import { getRpcSessionId } from '@jbrowse/core/util/tracks';
5
+ import { BaseLinearDisplay, } from '@jbrowse/plugin-linear-genome-view';
6
+ import { autorun, when } from 'mobx';
7
+ import { addDisposer, isAlive, types, getEnv } from 'mobx-state-tree';
8
+ import { axisPropsFromTickScale } from 'react-d3-axis-mod';
9
+ import { getNiceDomain, getScale } from '../../util';
10
+ import Tooltip from '../components/Tooltip';
11
+ import { YScaleBar } from '../components/WiggleDisplayComponent';
12
+ const SetMinMaxDlg = lazy(() => import('../components/SetMinMaxDialog'));
13
+ const SetColorDlg = lazy(() => import('../components/SetColorDialog'));
14
+ // fudge factor for making all labels on the YScalebar visible
15
+ export const YSCALEBAR_LABEL_OFFSET = 5;
16
+ // using a map because it preserves order
17
+ const rendererTypes = new Map([
18
+ ['xyplot', 'XYPlotRenderer'],
19
+ ['density', 'DensityRenderer'],
20
+ ['line', 'LinePlotRenderer'],
21
+ ]);
22
+ const stateModelFactory = (pluginManager, configSchema) => types
23
+ .compose('LinearWiggleDisplay', BaseLinearDisplay, types.model({
24
+ type: types.literal('LinearWiggleDisplay'),
25
+ configuration: ConfigurationReference(configSchema),
26
+ selectedRendering: types.optional(types.string, ''),
27
+ resolution: types.optional(types.number, 1),
28
+ fill: types.maybe(types.boolean),
29
+ color: types.maybe(types.string),
30
+ posColor: types.maybe(types.string),
31
+ negColor: types.maybe(types.string),
32
+ summaryScoreMode: types.maybe(types.string),
33
+ rendererTypeNameState: types.maybe(types.string),
34
+ scale: types.maybe(types.string),
35
+ autoscale: types.maybe(types.string),
36
+ displayCrossHatches: types.maybe(types.boolean),
37
+ constraints: types.optional(types.model({
38
+ max: types.maybe(types.number),
39
+ min: types.maybe(types.number),
40
+ }), {}),
41
+ }))
42
+ .volatile(() => ({
43
+ statsReady: false,
44
+ message: undefined,
45
+ stats: { scoreMin: 0, scoreMax: 50 },
46
+ statsFetchInProgress: undefined,
47
+ }))
48
+ .actions(self => ({
49
+ updateStats({ scoreMin, scoreMax, }) {
50
+ if (self.stats.scoreMin !== scoreMin ||
51
+ self.stats.scoreMax !== scoreMax) {
52
+ self.stats = { scoreMin, scoreMax };
53
+ }
54
+ self.statsReady = true;
55
+ },
56
+ setColor(color) {
57
+ self.color = color;
58
+ },
59
+ setPosColor(color) {
60
+ self.posColor = color;
61
+ },
62
+ setNegColor(color) {
63
+ self.negColor = color;
64
+ },
65
+ setLoading(aborter) {
66
+ const { statsFetchInProgress: statsFetch } = self;
67
+ if (statsFetch !== undefined && !statsFetch.signal.aborted) {
68
+ statsFetch.abort();
69
+ }
70
+ self.statsFetchInProgress = aborter;
71
+ },
72
+ // this overrides the BaseLinearDisplayModel to avoid popping up a
73
+ // feature detail display, but still sets the feature selection on the
74
+ // model so listeners can detect a click
75
+ selectFeature(feature) {
76
+ const session = getSession(self);
77
+ if (isSelectionContainer(session)) {
78
+ session.setSelection(feature);
79
+ }
80
+ },
81
+ setResolution(res) {
82
+ self.resolution = res;
83
+ },
84
+ setFill(fill) {
85
+ self.fill = fill;
86
+ },
87
+ toggleLogScale() {
88
+ if (self.scale !== 'log') {
89
+ self.scale = 'log';
90
+ }
91
+ else {
92
+ self.scale = 'linear';
93
+ }
94
+ },
95
+ setScaleType(scale) {
96
+ self.scale = scale;
97
+ },
98
+ setSummaryScoreMode(val) {
99
+ self.summaryScoreMode = val;
100
+ },
101
+ setAutoscale(val) {
102
+ self.autoscale = val;
103
+ },
104
+ setMaxScore(val) {
105
+ self.constraints.max = val;
106
+ },
107
+ setRendererType(val) {
108
+ self.rendererTypeNameState = val;
109
+ },
110
+ setMinScore(val) {
111
+ self.constraints.min = val;
112
+ },
113
+ toggleCrossHatches() {
114
+ self.displayCrossHatches = !self.displayCrossHatches;
115
+ },
116
+ setCrossHatches(cross) {
117
+ self.displayCrossHatches = cross;
118
+ },
119
+ }))
120
+ .views(self => ({
121
+ get TooltipComponent() {
122
+ return Tooltip;
123
+ },
124
+ get adapterTypeName() {
125
+ return self.adapterConfig.type;
126
+ },
127
+ get rendererTypeName() {
128
+ const viewName = self.rendererTypeNameState || getConf(self, 'defaultRendering');
129
+ const rendererType = rendererTypes.get(viewName);
130
+ if (!rendererType) {
131
+ throw new Error(`unknown alignments view name ${viewName}`);
132
+ }
133
+ return rendererType;
134
+ },
135
+ // subclasses can define these, as snpcoverage track does
136
+ get filters() {
137
+ return undefined;
138
+ },
139
+ get scaleType() {
140
+ return self.scale || getConf(self, 'scaleType');
141
+ },
142
+ get maxScore() {
143
+ const { max } = self.constraints;
144
+ return max !== null && max !== void 0 ? max : getConf(self, 'maxScore');
145
+ },
146
+ get minScore() {
147
+ const { min } = self.constraints;
148
+ return min !== null && min !== void 0 ? min : getConf(self, 'minScore');
149
+ },
150
+ }))
151
+ .views(self => ({
152
+ get rendererConfig() {
153
+ const configBlob = getConf(self, ['renderers', self.rendererTypeName]) || {};
154
+ const { color, posColor, negColor, summaryScoreMode, scaleType, displayCrossHatches, fill, } = self;
155
+ return self.rendererType.configSchema.create({
156
+ ...configBlob,
157
+ ...(scaleType ? { scaleType } : {}),
158
+ ...(fill ? { filled: fill } : {}),
159
+ ...(displayCrossHatches ? { displayCrossHatches } : {}),
160
+ ...(summaryScoreMode ? { summaryScoreMode } : {}),
161
+ ...(color ? { color } : {}),
162
+ ...(negColor ? { negColor } : {}),
163
+ ...(posColor ? { posColor } : {}),
164
+ }, getEnv(self));
165
+ },
166
+ }))
167
+ .views(self => {
168
+ let oldDomain = [0, 0];
169
+ return {
170
+ get filled() {
171
+ const { fill, rendererConfig: conf } = self;
172
+ return fill !== null && fill !== void 0 ? fill : readConfObject(conf, 'filled');
173
+ },
174
+ get summaryScoreModeSetting() {
175
+ const { summaryScoreMode, rendererConfig: conf } = self;
176
+ return summaryScoreMode !== null && summaryScoreMode !== void 0 ? summaryScoreMode : readConfObject(conf, 'summaryScoreMode');
177
+ },
178
+ get domain() {
179
+ const { stats, scaleType, minScore, maxScore } = self;
180
+ const ret = getNiceDomain({
181
+ domain: [stats.scoreMin, stats.scoreMax],
182
+ bounds: [minScore, maxScore],
183
+ scaleType,
184
+ });
185
+ // avoid weird scalebar if log value and empty region displayed
186
+ if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
187
+ return [0, Number.MIN_VALUE];
188
+ }
189
+ // avoid returning a new object if it matches the old value
190
+ if (JSON.stringify(oldDomain) !== JSON.stringify(ret)) {
191
+ oldDomain = ret;
192
+ }
193
+ return oldDomain;
194
+ },
195
+ get needsScalebar() {
196
+ return (self.rendererTypeName === 'XYPlotRenderer' ||
197
+ self.rendererTypeName === 'LinePlotRenderer');
198
+ },
199
+ get scaleOpts() {
200
+ return {
201
+ domain: this.domain,
202
+ stats: self.stats,
203
+ autoscaleType: this.autoscaleType,
204
+ scaleType: self.scaleType,
205
+ inverted: getConf(self, 'inverted'),
206
+ };
207
+ },
208
+ get canHaveFill() {
209
+ return self.rendererTypeName === 'XYPlotRenderer';
210
+ },
211
+ get autoscaleType() {
212
+ var _a;
213
+ return (_a = self.autoscale) !== null && _a !== void 0 ? _a : getConf(self, 'autoscale');
214
+ },
215
+ get displayCrossHatchesSetting() {
216
+ const { displayCrossHatches: hatches, rendererConfig: conf } = self;
217
+ return hatches !== null && hatches !== void 0 ? hatches : readConfObject(conf, 'displayCrossHatches');
218
+ },
219
+ };
220
+ })
221
+ .views(self => ({
222
+ get ticks() {
223
+ const { scaleType, domain, height } = self;
224
+ const minimalTicks = getConf(self, 'minimalTicks');
225
+ const range = [height - YSCALEBAR_LABEL_OFFSET, YSCALEBAR_LABEL_OFFSET];
226
+ const scale = getScale({
227
+ scaleType,
228
+ domain,
229
+ range,
230
+ inverted: getConf(self, 'inverted'),
231
+ });
232
+ const ticks = axisPropsFromTickScale(scale, 4);
233
+ return height < 100 || minimalTicks
234
+ ? { ...ticks, values: domain }
235
+ : ticks;
236
+ },
237
+ }))
238
+ .views(self => {
239
+ const { renderProps: superRenderProps } = self;
240
+ return {
241
+ renderProps() {
242
+ const superProps = superRenderProps();
243
+ const { filters, ticks, height, resolution, scaleOpts } = self;
244
+ return {
245
+ ...superProps,
246
+ notReady: superProps.notReady || !self.statsReady,
247
+ rpcDriverName: self.rpcDriverName,
248
+ displayModel: self,
249
+ config: self.rendererConfig,
250
+ displayCrossHatches: self.displayCrossHatchesSetting,
251
+ scaleOpts,
252
+ resolution,
253
+ height,
254
+ ticks,
255
+ filters,
256
+ };
257
+ },
258
+ get adapterCapabilities() {
259
+ return pluginManager.getAdapterType(self.adapterTypeName)
260
+ .adapterCapabilities;
261
+ },
262
+ get hasResolution() {
263
+ return this.adapterCapabilities.includes('hasResolution');
264
+ },
265
+ get hasGlobalStats() {
266
+ return this.adapterCapabilities.includes('hasGlobalStats');
267
+ },
268
+ };
269
+ })
270
+ .views(self => {
271
+ const { trackMenuItems: superTrackMenuItems } = self;
272
+ const hasRenderings = getConf(self, 'defaultRendering');
273
+ return {
274
+ trackMenuItems() {
275
+ return [
276
+ ...superTrackMenuItems(),
277
+ ...(self.hasResolution
278
+ ? [
279
+ {
280
+ label: 'Resolution',
281
+ subMenu: [
282
+ {
283
+ label: 'Finer resolution',
284
+ onClick: () => self.setResolution(self.resolution * 5),
285
+ },
286
+ {
287
+ label: 'Coarser resolution',
288
+ onClick: () => self.setResolution(self.resolution / 5),
289
+ },
290
+ ],
291
+ },
292
+ {
293
+ label: 'Summary score mode',
294
+ subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({
295
+ label: elt,
296
+ onClick: () => self.setSummaryScoreMode(elt),
297
+ })),
298
+ },
299
+ ]
300
+ : []),
301
+ ...(self.canHaveFill
302
+ ? [
303
+ {
304
+ label: self.filled
305
+ ? 'Turn off histogram fill'
306
+ : 'Turn on histogram fill',
307
+ onClick: () => self.setFill(!self.filled),
308
+ },
309
+ ]
310
+ : []),
311
+ {
312
+ label: self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
313
+ onClick: () => self.toggleLogScale(),
314
+ },
315
+ {
316
+ type: 'checkbox',
317
+ label: 'Draw cross hatches',
318
+ checked: self.displayCrossHatchesSetting,
319
+ onClick: () => self.toggleCrossHatches(),
320
+ },
321
+ ...(hasRenderings
322
+ ? [
323
+ {
324
+ label: 'Renderer type',
325
+ subMenu: ['xyplot', 'density', 'line'].map(key => ({
326
+ label: key,
327
+ onClick: () => self.setRendererType(key),
328
+ })),
329
+ },
330
+ ]
331
+ : []),
332
+ {
333
+ label: 'Autoscale type',
334
+ subMenu: [
335
+ ['local', 'Local'],
336
+ ...(self.hasGlobalStats
337
+ ? [
338
+ ['global', 'Global'],
339
+ ['globalsd', 'Global ± 3σ'],
340
+ ]
341
+ : []),
342
+ ['localsd', 'Local ± 3σ'],
343
+ ].map(([val, label]) => ({
344
+ label,
345
+ onClick: () => self.setAutoscale(val),
346
+ })),
347
+ },
348
+ {
349
+ label: 'Set min/max score',
350
+ onClick: () => {
351
+ getSession(self).queueDialog(handleClose => [
352
+ SetMinMaxDlg,
353
+ { model: self, handleClose },
354
+ ]);
355
+ },
356
+ },
357
+ {
358
+ label: 'Set color',
359
+ onClick: () => {
360
+ getSession(self).queueDialog(handleClose => [
361
+ SetColorDlg,
362
+ { model: self, handleClose },
363
+ ]);
364
+ },
365
+ },
366
+ ];
367
+ },
368
+ };
369
+ })
370
+ .actions(self => {
371
+ const { reload: superReload, renderSvg: superRenderSvg } = self;
372
+ async function getStats(opts) {
373
+ const { rpcManager } = getSession(self);
374
+ const nd = getConf(self, 'numStdDev') || 3;
375
+ const { adapterConfig, autoscaleType } = self;
376
+ const sessionId = getRpcSessionId(self);
377
+ const params = {
378
+ sessionId,
379
+ adapterConfig,
380
+ statusCallback: (message) => {
381
+ if (isAlive(self)) {
382
+ self.setMessage(message);
383
+ }
384
+ },
385
+ ...opts,
386
+ };
387
+ if (autoscaleType === 'global' || autoscaleType === 'globalsd') {
388
+ const results = (await rpcManager.call(sessionId, 'WiggleGetGlobalStats', params));
389
+ const { scoreMin, scoreMean, scoreStdDev } = results;
390
+ // globalsd uses heuristic to avoid unnecessary scoreMin<0
391
+ // if the scoreMin is never less than 0
392
+ // helps with most coverage bigwigs just being >0
393
+ return autoscaleType === 'globalsd'
394
+ ? {
395
+ ...results,
396
+ scoreMin: scoreMin >= 0 ? 0 : scoreMean - nd * scoreStdDev,
397
+ scoreMax: scoreMean + nd * scoreStdDev,
398
+ }
399
+ : results;
400
+ }
401
+ if (autoscaleType === 'local' || autoscaleType === 'localsd') {
402
+ const { dynamicBlocks, bpPerPx } = getContainingView(self);
403
+ const results = (await rpcManager.call(sessionId, 'WiggleGetMultiRegionStats', {
404
+ ...params,
405
+ regions: dynamicBlocks.contentBlocks.map(region => {
406
+ const { start, end } = region;
407
+ return {
408
+ ...JSON.parse(JSON.stringify(region)),
409
+ start: Math.floor(start),
410
+ end: Math.ceil(end),
411
+ };
412
+ }),
413
+ bpPerPx,
414
+ }));
415
+ const { scoreMin, scoreMean, scoreStdDev } = results;
416
+ // localsd uses heuristic to avoid unnecessary scoreMin<0 if the
417
+ // scoreMin is never less than 0 helps with most coverage bigwigs
418
+ // just being >0
419
+ return autoscaleType === 'localsd'
420
+ ? {
421
+ ...results,
422
+ scoreMin: scoreMin >= 0 ? 0 : scoreMean - nd * scoreStdDev,
423
+ scoreMax: scoreMean + nd * scoreStdDev,
424
+ }
425
+ : results;
426
+ }
427
+ if (autoscaleType === 'zscale') {
428
+ return rpcManager.call(sessionId, 'WiggleGetGlobalStats', params);
429
+ }
430
+ throw new Error(`invalid autoscaleType '${autoscaleType}'`);
431
+ }
432
+ return {
433
+ // re-runs stats and refresh whole display on reload
434
+ async reload() {
435
+ self.setError();
436
+ const aborter = new AbortController();
437
+ self.setLoading(aborter);
438
+ try {
439
+ const stats = await getStats({
440
+ signal: aborter.signal,
441
+ ...self.renderProps(),
442
+ });
443
+ if (isAlive(self)) {
444
+ self.updateStats(stats);
445
+ superReload();
446
+ }
447
+ }
448
+ catch (e) {
449
+ self.setError(e);
450
+ }
451
+ },
452
+ afterAttach() {
453
+ addDisposer(self, autorun(async () => {
454
+ try {
455
+ const view = getContainingView(self);
456
+ if (!view.initialized) {
457
+ return;
458
+ }
459
+ if (!self.estimatedStatsReady) {
460
+ return;
461
+ }
462
+ if (self.regionTooLarge) {
463
+ return;
464
+ }
465
+ const aborter = new AbortController();
466
+ self.setLoading(aborter);
467
+ const wiggleStats = await getStats({
468
+ signal: aborter.signal,
469
+ ...self.renderProps(),
470
+ });
471
+ if (isAlive(self)) {
472
+ self.updateStats(wiggleStats);
473
+ }
474
+ }
475
+ catch (e) {
476
+ if (!isAbortException(e) && isAlive(self)) {
477
+ console.error(e);
478
+ self.setError(e);
479
+ }
480
+ }
481
+ }, { delay: 1000 }));
482
+ },
483
+ async renderSvg(opts) {
484
+ await when(() => self.statsReady && !!self.regionCannotBeRenderedText);
485
+ const { needsScalebar, stats } = self;
486
+ const { offsetPx } = getContainingView(self);
487
+ return (React.createElement(React.Fragment, null,
488
+ React.createElement("g", { id: "snpcov" }, await superRenderSvg(opts)),
489
+ needsScalebar && stats ? (React.createElement("g", { transform: `translate(${Math.max(-offsetPx, 0)})` },
490
+ React.createElement(YScaleBar, { model: self, orientation: "left" }))) : null));
491
+ },
492
+ };
493
+ });
494
+ export default stateModelFactory;
495
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/LinearWiggleDisplay/models/model.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /// <reference types="react" />
2
+ import { Feature } from '@jbrowse/core/util/simpleFeature';
3
+ import FeatureRendererType, { RenderArgs as FeatureRenderArgs, RenderArgsSerialized, RenderArgsDeserialized as FeatureRenderArgsDeserialized, RenderResults, ResultsSerialized, ResultsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
4
+ import { ThemeOptions } from '@mui/material';
5
+ import { ScaleOpts } from './util';
6
+ export interface RenderArgs extends FeatureRenderArgs {
7
+ scaleOpts: ScaleOpts;
8
+ }
9
+ export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
10
+ bpPerPx: number;
11
+ height: number;
12
+ highResolutionScaling: number;
13
+ scaleOpts: ScaleOpts;
14
+ displayCrossHatches: boolean;
15
+ ticks: {
16
+ values: number[];
17
+ };
18
+ themeOptions: ThemeOptions;
19
+ }
20
+ export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
21
+ features: Map<string, Feature>;
22
+ }
23
+ export type { RenderArgsSerialized, RenderResults, ResultsSerialized, ResultsDeserialized, };
24
+ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
25
+ supportsSVG: boolean;
26
+ render(renderProps: RenderArgsDeserialized): Promise<{
27
+ features: Map<string, Feature>;
28
+ containsNoTransferables: boolean;
29
+ height: number;
30
+ width: number;
31
+ canvasRecordedData: any;
32
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
33
+ imageData?: undefined;
34
+ html?: string | undefined;
35
+ } | {
36
+ features: Map<string, Feature>;
37
+ containsNoTransferables: boolean;
38
+ height: number;
39
+ width: number;
40
+ reactElement: JSX.Element;
41
+ canvasRecordedData?: undefined;
42
+ imageData?: undefined;
43
+ html?: string | undefined;
44
+ } | {
45
+ features: Map<string, Feature>;
46
+ containsNoTransferables: boolean;
47
+ height: number;
48
+ width: number;
49
+ imageData: any;
50
+ canvasRecordedData?: undefined;
51
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
52
+ html?: string | undefined;
53
+ }>;
54
+ abstract draw<T extends RenderArgsDeserializedWithFeatures>(ctx: CanvasRenderingContext2D, props: T): Promise<void>;
55
+ }
@@ -0,0 +1,34 @@
1
+ import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
2
+ import { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils';
3
+ export default class WiggleBaseRenderer extends FeatureRendererType {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.supportsSVG = true;
7
+ }
8
+ async render(renderProps) {
9
+ const features = await this.getFeatures(renderProps);
10
+ const { height, regions, bpPerPx } = renderProps;
11
+ const [region] = regions;
12
+ const width = (region.end - region.start) / bpPerPx;
13
+ const res = await renderToAbstractCanvas(width, height, renderProps, (ctx) => this.draw(ctx, {
14
+ ...renderProps,
15
+ features,
16
+ }));
17
+ const results = await super.render({
18
+ ...renderProps,
19
+ ...res,
20
+ features,
21
+ height,
22
+ width,
23
+ });
24
+ return {
25
+ ...results,
26
+ ...res,
27
+ features,
28
+ containsNoTransferables: true,
29
+ height,
30
+ width,
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=WiggleBaseRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WiggleBaseRenderer.js","sourceRoot":"","sources":["../src/WiggleBaseRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,mBAON,MAAM,mEAAmE,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AA8BhF,MAAM,CAAC,OAAO,OAAgB,kBAAmB,SAAQ,mBAAmB;IAA5E;;QACE,gBAAW,GAAG,IAAI,CAAA;IA6CpB,CAAC;IA3CC,KAAK,CAAC,MAAM,CAAC,WAAmC;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAA;QACxB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;QAEnD,MAAM,GAAG,GAAG,MAAM,sBAAsB,CACtC,KAAK,EACL,MAAM,EACN,WAAW,EACX,CAAC,GAA6B,EAAE,EAAE,CAChC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,GAAG,WAAW;YACd,QAAQ;SACT,CAAC,CACL,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YACjC,GAAG,WAAW;YACd,GAAG,GAAG;YACN,QAAQ;YACR,MAAM;YACN,KAAK;SACN,CAAC,CAAA;QAEF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,GAAG;YACN,QAAQ;YACR,uBAAuB,EAAE,IAAI;YAC7B,MAAM;YACN,KAAK;SACN,CAAA;IACH,CAAC;CAUF"}
@@ -0,0 +1,31 @@
1
+ import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType';
2
+ import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods';
3
+ import { Region } from '@jbrowse/core/util/types';
4
+ import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals';
5
+ import { FeatureStats } from '@jbrowse/core/util/stats';
6
+ export declare class WiggleGetGlobalStats extends RpcMethodType {
7
+ name: string;
8
+ deserializeArguments(args: any, rpcDriverClassName: string): Promise<any>;
9
+ execute(args: {
10
+ adapterConfig: {};
11
+ signal?: RemoteAbortSignal;
12
+ headers?: Record<string, string>;
13
+ sessionId: string;
14
+ }, rpcDriverClassName: string): Promise<FeatureStats>;
15
+ }
16
+ export declare class WiggleGetMultiRegionStats extends RpcMethodType {
17
+ name: string;
18
+ deserializeArguments(args: any, rpcDriverClassName: string): Promise<any>;
19
+ serializeArguments(args: RenderArgs & {
20
+ signal?: AbortSignal;
21
+ statusCallback?: Function;
22
+ }, rpcDriverClassName: string): Promise<{}>;
23
+ execute(args: {
24
+ adapterConfig: {};
25
+ signal?: RemoteAbortSignal;
26
+ sessionId: string;
27
+ headers?: Record<string, string>;
28
+ regions: Region[];
29
+ bpPerPx: number;
30
+ }, rpcDriverClassName: string): Promise<FeatureStats>;
31
+ }