@jbrowse/plugin-alignments 1.6.9 → 1.7.3

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 (131) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -6
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +216 -0
  3. package/dist/AlignmentsFeatureDetail/index.d.ts +13 -13
  4. package/dist/AlignmentsFeatureDetail/index.js +63 -0
  5. package/dist/AlignmentsFeatureDetail/index.test.js +60 -0
  6. package/dist/AlignmentsTrack/index.d.ts +2 -2
  7. package/dist/AlignmentsTrack/index.js +37 -0
  8. package/dist/BamAdapter/BamAdapter.d.ts +40 -30
  9. package/dist/BamAdapter/BamAdapter.js +598 -0
  10. package/dist/BamAdapter/BamAdapter.test.js +177 -0
  11. package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -33
  12. package/dist/BamAdapter/BamSlightlyLazyFeature.js +176 -0
  13. package/dist/BamAdapter/MismatchParser.d.ts +28 -28
  14. package/dist/BamAdapter/MismatchParser.js +384 -0
  15. package/dist/BamAdapter/MismatchParser.test.js +259 -0
  16. package/dist/BamAdapter/configSchema.d.ts +2 -2
  17. package/dist/BamAdapter/configSchema.js +48 -0
  18. package/dist/BamAdapter/index.d.ts +3 -3
  19. package/dist/BamAdapter/index.js +36 -0
  20. package/dist/CramAdapter/CramAdapter.d.ts +52 -43
  21. package/dist/CramAdapter/CramAdapter.js +660 -0
  22. package/dist/CramAdapter/CramAdapter.test.js +138 -0
  23. package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -49
  24. package/dist/CramAdapter/CramSlightlyLazyFeature.js +447 -0
  25. package/dist/CramAdapter/CramTestAdapters.d.ts +29 -29
  26. package/dist/CramAdapter/CramTestAdapters.js +234 -0
  27. package/dist/CramAdapter/configSchema.d.ts +3 -3
  28. package/dist/CramAdapter/configSchema.js +40 -0
  29. package/dist/CramAdapter/index.d.ts +3 -3
  30. package/dist/CramAdapter/index.js +36 -0
  31. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -9
  32. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +97 -0
  33. package/dist/HtsgetBamAdapter/configSchema.d.ts +2 -2
  34. package/dist/HtsgetBamAdapter/configSchema.js +31 -0
  35. package/dist/HtsgetBamAdapter/index.d.ts +3 -3
  36. package/dist/HtsgetBamAdapter/index.js +42 -0
  37. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -7
  38. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +69 -0
  39. package/dist/LinearAlignmentsDisplay/index.d.ts +2 -2
  40. package/dist/LinearAlignmentsDisplay/index.js +31 -0
  41. package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -4
  42. package/dist/LinearAlignmentsDisplay/models/configSchema.js +25 -0
  43. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +83 -0
  44. package/dist/LinearAlignmentsDisplay/models/model.d.ts +105 -105
  45. package/dist/LinearAlignmentsDisplay/models/model.js +250 -0
  46. package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -14
  47. package/dist/LinearPileupDisplay/components/ColorByModifications.js +123 -0
  48. package/dist/LinearPileupDisplay/components/ColorByTag.d.ts +9 -9
  49. package/dist/LinearPileupDisplay/components/ColorByTag.js +98 -0
  50. package/dist/LinearPileupDisplay/components/FilterByTag.d.ts +18 -18
  51. package/dist/LinearPileupDisplay/components/FilterByTag.js +203 -0
  52. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -13
  53. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +32 -0
  54. package/dist/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -16
  55. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +99 -0
  56. package/dist/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -10
  57. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +90 -0
  58. package/dist/LinearPileupDisplay/components/SortByTag.d.ts +9 -9
  59. package/dist/LinearPileupDisplay/components/SortByTag.js +95 -0
  60. package/dist/LinearPileupDisplay/configSchema.d.ts +6 -6
  61. package/dist/LinearPileupDisplay/configSchema.js +47 -0
  62. package/dist/LinearPileupDisplay/configSchema.test.js +92 -0
  63. package/dist/LinearPileupDisplay/index.d.ts +2 -2
  64. package/dist/LinearPileupDisplay/index.js +30 -0
  65. package/dist/LinearPileupDisplay/model.d.ts +319 -321
  66. package/dist/LinearPileupDisplay/model.js +602 -0
  67. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -10
  68. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +63 -0
  69. package/dist/LinearSNPCoverageDisplay/index.d.ts +2 -2
  70. package/dist/LinearSNPCoverageDisplay/index.js +30 -0
  71. package/dist/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -2
  72. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +57 -0
  73. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +62 -0
  74. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +346 -96
  75. package/dist/LinearSNPCoverageDisplay/models/model.js +237 -0
  76. package/dist/NestedFrequencyTable.d.ts +14 -14
  77. package/dist/NestedFrequencyTable.js +152 -0
  78. package/dist/PileupRPC/rpcMethods.d.ts +34 -34
  79. package/dist/PileupRPC/rpcMethods.js +285 -0
  80. package/dist/PileupRenderer/PileupLayoutSession.d.ts +29 -29
  81. package/dist/PileupRenderer/PileupLayoutSession.js +79 -0
  82. package/dist/PileupRenderer/PileupRenderer.d.ts +125 -125
  83. package/dist/PileupRenderer/PileupRenderer.js +1220 -0
  84. package/dist/PileupRenderer/components/PileupRendering.d.ts +23 -23
  85. package/dist/PileupRenderer/components/PileupRendering.js +270 -0
  86. package/dist/PileupRenderer/components/PileupRendering.test.js +36 -0
  87. package/dist/PileupRenderer/configSchema.d.ts +2 -2
  88. package/dist/PileupRenderer/configSchema.js +72 -0
  89. package/dist/PileupRenderer/index.d.ts +2 -2
  90. package/dist/PileupRenderer/index.js +25 -0
  91. package/dist/PileupRenderer/sortUtil.d.ts +8 -8
  92. package/dist/PileupRenderer/sortUtil.js +112 -0
  93. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -71
  94. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +606 -0
  95. package/dist/SNPCoverageAdapter/configSchema.d.ts +3 -3
  96. package/dist/SNPCoverageAdapter/configSchema.js +22 -0
  97. package/dist/SNPCoverageAdapter/index.d.ts +3 -3
  98. package/dist/SNPCoverageAdapter/index.js +45 -0
  99. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -20
  100. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +296 -0
  101. package/dist/SNPCoverageRenderer/configSchema.d.ts +2 -2
  102. package/dist/SNPCoverageRenderer/configSchema.js +40 -0
  103. package/dist/SNPCoverageRenderer/index.d.ts +3 -3
  104. package/dist/SNPCoverageRenderer/index.js +34 -0
  105. package/dist/declare.d.js +1 -0
  106. package/dist/index.d.ts +10 -10
  107. package/dist/index.js +154 -6
  108. package/dist/index.test.js +26 -0
  109. package/dist/shared.d.ts +25 -25
  110. package/dist/shared.js +96 -0
  111. package/dist/util.d.ts +19 -19
  112. package/dist/util.js +135 -0
  113. package/package.json +5 -8
  114. package/src/BamAdapter/BamAdapter.ts +35 -8
  115. package/src/CramAdapter/CramAdapter.ts +42 -15
  116. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +1 -1
  117. package/src/LinearPileupDisplay/model.ts +2 -22
  118. package/src/LinearSNPCoverageDisplay/models/model.ts +6 -36
  119. package/src/PileupRenderer/PileupRenderer.tsx +3 -6
  120. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +11 -17
  121. package/dist/AlignmentsFeatureDetail/index.test.d.ts +0 -1
  122. package/dist/LinearAlignmentsDisplay/models/configSchema.test.d.ts +0 -1
  123. package/dist/LinearPileupDisplay/configSchema.test.d.ts +0 -1
  124. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.d.ts +0 -1
  125. package/dist/PileupRenderer/components/PileupRendering.test.d.ts +0 -1
  126. package/dist/plugin-alignments.cjs.development.js +0 -8438
  127. package/dist/plugin-alignments.cjs.development.js.map +0 -1
  128. package/dist/plugin-alignments.cjs.production.min.js +0 -2
  129. package/dist/plugin-alignments.cjs.production.min.js.map +0 -1
  130. package/dist/plugin-alignments.esm.js +0 -8430
  131. package/dist/plugin-alignments.esm.js.map +0 -1
@@ -0,0 +1,606 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.capabilities = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
27
+
28
+ var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
29
+
30
+ var _rxjs = require("@jbrowse/core/util/rxjs");
31
+
32
+ var _operators = require("rxjs/operators");
33
+
34
+ var _util = require("../util");
35
+
36
+ var _MismatchParser = require("../BamAdapter/MismatchParser");
37
+
38
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
39
+
40
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
41
+
42
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
43
+
44
+ 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); }; }
45
+
46
+ 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; } }
47
+
48
+ function mismatchLen(mismatch) {
49
+ return !isInterbase(mismatch.type) ? mismatch.length : 1;
50
+ }
51
+
52
+ function isInterbase(type) {
53
+ return type === 'softclip' || type === 'hardclip' || type === 'insertion';
54
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+
56
+
57
+ function inc(bin, strand, type, field) {
58
+ var thisBin = bin[type][field];
59
+
60
+ if (!thisBin) {
61
+ thisBin = bin[type][field] = {
62
+ total: 0,
63
+ strands: {
64
+ '-1': 0,
65
+ '0': 0,
66
+ '1': 0
67
+ }
68
+ };
69
+ }
70
+
71
+ thisBin.total++;
72
+ thisBin.strands[strand]++;
73
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+
75
+
76
+ function dec(bin, strand, type, field) {
77
+ if (!bin[type][field]) {
78
+ bin[type][field] = {
79
+ total: 0,
80
+ strands: {
81
+ '-1': 0,
82
+ '0': 0,
83
+ '1': 0
84
+ }
85
+ };
86
+ }
87
+
88
+ bin[type][field].total--;
89
+ bin[type][field].strands[strand]--;
90
+ }
91
+
92
+ var SNPCoverageAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
93
+ (0, _inherits2["default"])(SNPCoverageAdapter, _BaseFeatureDataAdapt);
94
+
95
+ var _super = _createSuper(SNPCoverageAdapter);
96
+
97
+ function SNPCoverageAdapter() {
98
+ (0, _classCallCheck2["default"])(this, SNPCoverageAdapter);
99
+ return _super.apply(this, arguments);
100
+ }
101
+
102
+ (0, _createClass2["default"])(SNPCoverageAdapter, [{
103
+ key: "configure",
104
+ value: function () {
105
+ var _configure = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
106
+ var _this$getSubAdapter, _this$getSubAdapter2;
107
+
108
+ var subadapterConfig, sequenceConf, dataAdapter, sequenceAdapter;
109
+ return _regenerator["default"].wrap(function _callee$(_context) {
110
+ while (1) {
111
+ switch (_context.prev = _context.next) {
112
+ case 0:
113
+ subadapterConfig = this.getConf('subadapter');
114
+ sequenceConf = this.getConf(['subadapter', 'sequenceAdapter']);
115
+ _context.next = 4;
116
+ return (_this$getSubAdapter = this.getSubAdapter) === null || _this$getSubAdapter === void 0 ? void 0 : _this$getSubAdapter.call(this, subadapterConfig);
117
+
118
+ case 4:
119
+ dataAdapter = _context.sent;
120
+
121
+ if (!sequenceConf) {
122
+ _context.next = 11;
123
+ break;
124
+ }
125
+
126
+ _context.next = 8;
127
+ return (_this$getSubAdapter2 = this.getSubAdapter) === null || _this$getSubAdapter2 === void 0 ? void 0 : _this$getSubAdapter2.call(this, sequenceConf);
128
+
129
+ case 8:
130
+ _context.t0 = _context.sent;
131
+ _context.next = 12;
132
+ break;
133
+
134
+ case 11:
135
+ _context.t0 = undefined;
136
+
137
+ case 12:
138
+ sequenceAdapter = _context.t0;
139
+
140
+ if (dataAdapter) {
141
+ _context.next = 15;
142
+ break;
143
+ }
144
+
145
+ throw new Error('Failed to get subadapter');
146
+
147
+ case 15:
148
+ return _context.abrupt("return", {
149
+ subadapter: dataAdapter.dataAdapter,
150
+ sequenceAdapter: sequenceAdapter === null || sequenceAdapter === void 0 ? void 0 : sequenceAdapter.dataAdapter
151
+ });
152
+
153
+ case 16:
154
+ case "end":
155
+ return _context.stop();
156
+ }
157
+ }
158
+ }, _callee, this);
159
+ }));
160
+
161
+ function configure() {
162
+ return _configure.apply(this, arguments);
163
+ }
164
+
165
+ return configure;
166
+ }()
167
+ }, {
168
+ key: "fetchSequence",
169
+ value: function () {
170
+ var _fetchSequence2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(region) {
171
+ var _yield$this$configure, sequenceAdapter;
172
+
173
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
174
+ while (1) {
175
+ switch (_context2.prev = _context2.next) {
176
+ case 0:
177
+ _context2.next = 2;
178
+ return this.configure();
179
+
180
+ case 2:
181
+ _yield$this$configure = _context2.sent;
182
+ sequenceAdapter = _yield$this$configure.sequenceAdapter;
183
+
184
+ if (sequenceAdapter) {
185
+ _context2.next = 6;
186
+ break;
187
+ }
188
+
189
+ return _context2.abrupt("return", undefined);
190
+
191
+ case 6:
192
+ return _context2.abrupt("return", (0, _util.fetchSequence)(region, sequenceAdapter));
193
+
194
+ case 7:
195
+ case "end":
196
+ return _context2.stop();
197
+ }
198
+ }
199
+ }, _callee2, this);
200
+ }));
201
+
202
+ function fetchSequence(_x) {
203
+ return _fetchSequence2.apply(this, arguments);
204
+ }
205
+
206
+ return fetchSequence;
207
+ }()
208
+ }, {
209
+ key: "getFeatures",
210
+ value: function getFeatures(region) {
211
+ var _this = this;
212
+
213
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
214
+ return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
215
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(observer) {
216
+ var _yield$_this$configur, subadapter, feats, _yield$_this$generate, bins, skipmap;
217
+
218
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
219
+ while (1) {
220
+ switch (_context3.prev = _context3.next) {
221
+ case 0:
222
+ _context3.next = 2;
223
+ return _this.configure();
224
+
225
+ case 2:
226
+ _yield$_this$configur = _context3.sent;
227
+ subadapter = _yield$_this$configur.subadapter;
228
+ _context3.next = 6;
229
+ return subadapter.getFeatures(region, opts).pipe((0, _operators.toArray)()).toPromise();
230
+
231
+ case 6:
232
+ feats = _context3.sent;
233
+ _context3.next = 9;
234
+ return _this.generateCoverageBins(feats, region, opts);
235
+
236
+ case 9:
237
+ _yield$_this$generate = _context3.sent;
238
+ bins = _yield$_this$generate.bins;
239
+ skipmap = _yield$_this$generate.skipmap;
240
+ bins.forEach(function (bin, index) {
241
+ observer.next(new _simpleFeature["default"]({
242
+ id: "".concat(_this.id, "-").concat(region.start + index),
243
+ data: {
244
+ score: bin.total,
245
+ snpinfo: bin,
246
+ start: region.start + index,
247
+ end: region.start + index + 1,
248
+ refName: region.refName
249
+ }
250
+ }));
251
+ }); // make fake features from the coverage
252
+
253
+ Object.entries(skipmap).forEach(function (_ref2) {
254
+ var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
255
+ key = _ref3[0],
256
+ skip = _ref3[1];
257
+
258
+ observer.next(new _simpleFeature["default"]({
259
+ id: key,
260
+ data: {
261
+ type: 'skip',
262
+ start: skip.start,
263
+ end: skip.end,
264
+ strand: skip.strand,
265
+ score: skip.score,
266
+ xs: skip.xs
267
+ }
268
+ }));
269
+ });
270
+ observer.complete();
271
+
272
+ case 15:
273
+ case "end":
274
+ return _context3.stop();
275
+ }
276
+ }
277
+ }, _callee3);
278
+ }));
279
+
280
+ return function (_x2) {
281
+ return _ref.apply(this, arguments);
282
+ };
283
+ }(), opts.signal);
284
+ }
285
+ }, {
286
+ key: "estimateRegionsStats",
287
+ value: function () {
288
+ var _estimateRegionsStats = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(regions, opts) {
289
+ var _yield$this$configure2, subadapter;
290
+
291
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
292
+ while (1) {
293
+ switch (_context4.prev = _context4.next) {
294
+ case 0:
295
+ _context4.next = 2;
296
+ return this.configure();
297
+
298
+ case 2:
299
+ _yield$this$configure2 = _context4.sent;
300
+ subadapter = _yield$this$configure2.subadapter;
301
+ return _context4.abrupt("return", subadapter.estimateRegionsStats(regions, opts));
302
+
303
+ case 5:
304
+ case "end":
305
+ return _context4.stop();
306
+ }
307
+ }
308
+ }, _callee4, this);
309
+ }));
310
+
311
+ function estimateRegionsStats(_x3, _x4) {
312
+ return _estimateRegionsStats.apply(this, arguments);
313
+ }
314
+
315
+ return estimateRegionsStats;
316
+ }()
317
+ }, {
318
+ key: "getRefNames",
319
+ value: function () {
320
+ var _getRefNames = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
321
+ var opts,
322
+ _yield$this$configure3,
323
+ subadapter,
324
+ _args5 = arguments;
325
+
326
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
327
+ while (1) {
328
+ switch (_context5.prev = _context5.next) {
329
+ case 0:
330
+ opts = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {};
331
+ _context5.next = 3;
332
+ return this.configure();
333
+
334
+ case 3:
335
+ _yield$this$configure3 = _context5.sent;
336
+ subadapter = _yield$this$configure3.subadapter;
337
+ return _context5.abrupt("return", subadapter.getRefNames(opts));
338
+
339
+ case 6:
340
+ case "end":
341
+ return _context5.stop();
342
+ }
343
+ }
344
+ }, _callee5, this);
345
+ }));
346
+
347
+ function getRefNames() {
348
+ return _getRefNames.apply(this, arguments);
349
+ }
350
+
351
+ return getRefNames;
352
+ }()
353
+ }, {
354
+ key: "freeResources",
355
+ value: function
356
+ /* { region } */
357
+ freeResources() {}
358
+ }, {
359
+ key: "generateCoverageBins",
360
+ value: function () {
361
+ var _generateCoverageBins = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(features, region, opts) {
362
+ var _opts$colorBy;
363
+
364
+ var colorBy, binMax, skipmap, regionSeq, bins, _loop, i;
365
+
366
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
367
+ while (1) {
368
+ switch (_context6.prev = _context6.next) {
369
+ case 0:
370
+ colorBy = opts.colorBy;
371
+ binMax = Math.ceil(region.end - region.start);
372
+ skipmap = {}; // bins contain:
373
+ // - cov feature if they contribute to coverage
374
+ // - noncov are insertions/clip features that don't contribute to coverage
375
+ // - delskips deletions or introns that don't contribute to coverage
376
+
377
+ if (!(features.length && (0, _util.shouldFetchReferenceSequence)((_opts$colorBy = opts.colorBy) === null || _opts$colorBy === void 0 ? void 0 : _opts$colorBy.type))) {
378
+ _context6.next = 9;
379
+ break;
380
+ }
381
+
382
+ _context6.next = 6;
383
+ return this.fetchSequence(region);
384
+
385
+ case 6:
386
+ _context6.t0 = _context6.sent;
387
+ _context6.next = 10;
388
+ break;
389
+
390
+ case 9:
391
+ _context6.t0 = undefined;
392
+
393
+ case 10:
394
+ regionSeq = _context6.t0;
395
+ bins = [];
396
+
397
+ _loop = function _loop(i) {
398
+ var feature = features[i];
399
+ var ops = (0, _MismatchParser.parseCigar)(feature.get('CIGAR'));
400
+ var fstart = feature.get('start');
401
+ var fend = feature.get('end');
402
+ var fstrand = feature.get('strand');
403
+
404
+ for (var j = fstart; j < fend; j++) {
405
+ var _i = j - region.start;
406
+
407
+ if (_i >= 0 && _i < binMax) {
408
+ var bin = bins[_i] || {
409
+ total: 0,
410
+ lowqual: {},
411
+ cov: {},
412
+ delskips: {},
413
+ noncov: {},
414
+ ref: {}
415
+ };
416
+
417
+ if (j !== fend) {
418
+ bin.total++;
419
+ inc(bin, fstrand, 'ref', 'ref');
420
+ }
421
+
422
+ bins[_i] = bin;
423
+ }
424
+ }
425
+
426
+ if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications') {
427
+ var seq = feature.get('seq');
428
+ var mm = (0, _util.getTagAlt)(feature, 'MM', 'Mm') || '';
429
+ (0, _MismatchParser.getModificationPositions)(mm, seq, fstrand).forEach(function (_ref4) {
430
+ var type = _ref4.type,
431
+ positions = _ref4.positions;
432
+ var mod = "mod_".concat(type);
433
+
434
+ var _iterator = _createForOfIteratorHelper((0, _MismatchParser.getNextRefPos)(ops, positions)),
435
+ _step;
436
+
437
+ try {
438
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
439
+ var pos = _step.value;
440
+ var epos = pos + fstart - region.start;
441
+
442
+ if (epos >= 0 && epos < bins.length && pos + fstart < fend) {
443
+ var _bin = bins[epos];
444
+ inc(_bin, fstrand, 'cov', mod);
445
+ }
446
+ }
447
+ } catch (err) {
448
+ _iterator.e(err);
449
+ } finally {
450
+ _iterator.f();
451
+ }
452
+ });
453
+ } // methylation based coloring takes into account both reference
454
+ // sequence CpG detection and reads
455
+ else if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'methylation') {
456
+ if (!regionSeq) {
457
+ throw new Error('no region sequence detected, need sequenceAdapter configuration');
458
+ }
459
+
460
+ var _seq = feature.get('seq');
461
+
462
+ var _mm = (0, _util.getTagAlt)(feature, 'MM', 'Mm') || '';
463
+
464
+ var methBins = new Array(region.end - region.start).fill(0);
465
+ (0, _MismatchParser.getModificationPositions)(_mm, _seq, fstrand).forEach(function (_ref5) {
466
+ var type = _ref5.type,
467
+ positions = _ref5.positions;
468
+
469
+ // we are processing methylation
470
+ if (type === 'm') {
471
+ var _iterator2 = _createForOfIteratorHelper((0, _MismatchParser.getNextRefPos)(ops, positions)),
472
+ _step2;
473
+
474
+ try {
475
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
476
+ var pos = _step2.value;
477
+ var epos = pos + fstart - region.start;
478
+
479
+ if (epos >= 0 && epos < methBins.length) {
480
+ methBins[epos] = 1;
481
+ }
482
+ }
483
+ } catch (err) {
484
+ _iterator2.e(err);
485
+ } finally {
486
+ _iterator2.f();
487
+ }
488
+ }
489
+ });
490
+
491
+ for (var _j = fstart; _j < fend; _j++) {
492
+ var _i2 = _j - region.start;
493
+
494
+ if (_i2 >= 0 && _i2 < bins.length - 1) {
495
+ var l1 = regionSeq[_i2].toLowerCase();
496
+
497
+ var l2 = regionSeq[_i2 + 1].toLowerCase();
498
+
499
+ var _bin2 = bins[_i2];
500
+ var bin1 = bins[_i2 + 1]; // color
501
+
502
+ if (l1 === 'c' && l2 === 'g') {
503
+ if (methBins[_i2] || methBins[_i2 + 1]) {
504
+ inc(_bin2, fstrand, 'cov', 'meth');
505
+ inc(bin1, fstrand, 'cov', 'meth');
506
+ dec(_bin2, fstrand, 'ref', 'ref');
507
+ dec(bin1, fstrand, 'ref', 'ref');
508
+ } else {
509
+ inc(_bin2, fstrand, 'cov', 'unmeth');
510
+ inc(bin1, fstrand, 'cov', 'unmeth');
511
+ dec(_bin2, fstrand, 'ref', 'ref');
512
+ dec(bin1, fstrand, 'ref', 'ref');
513
+ }
514
+ }
515
+ }
516
+ }
517
+ } // normal SNP based coloring
518
+ else {
519
+ var mismatches = feature.get('mismatches');
520
+
521
+ if (mismatches) {
522
+ for (var _i3 = 0; _i3 < mismatches.length; _i3++) {
523
+ var mismatch = mismatches[_i3];
524
+ var mstart = fstart + mismatch.start;
525
+
526
+ for (var _j2 = mstart; _j2 < mstart + mismatchLen(mismatch); _j2++) {
527
+ var epos = _j2 - region.start;
528
+
529
+ if (epos >= 0 && epos < bins.length) {
530
+ var _bin3 = bins[epos];
531
+ var base = mismatch.base,
532
+ type = mismatch.type;
533
+ var interbase = isInterbase(type);
534
+
535
+ if (!interbase) {
536
+ dec(_bin3, fstrand, 'ref', 'ref');
537
+ } else {
538
+ inc(_bin3, fstrand, 'noncov', type);
539
+ }
540
+
541
+ if (type === 'deletion' || type === 'skip') {
542
+ inc(_bin3, fstrand, 'delskips', type);
543
+ _bin3.total--;
544
+ } else if (!interbase) {
545
+ inc(_bin3, fstrand, 'cov', base);
546
+ }
547
+ }
548
+ }
549
+ }
550
+
551
+ mismatches.filter(function (mismatch) {
552
+ return mismatch.type === 'skip';
553
+ }).forEach(function (mismatch) {
554
+ var mstart = feature.get('start') + mismatch.start;
555
+ var start = mstart;
556
+ var end = mstart + mismatch.length;
557
+ var strand = feature.get('strand');
558
+ var hash = "".concat(start, "_").concat(end, "_").concat(strand);
559
+
560
+ if (!skipmap[hash]) {
561
+ skipmap[hash] = {
562
+ feature: feature,
563
+ start: start,
564
+ end: end,
565
+ strand: strand,
566
+ xs: (0, _util.getTag)(feature, 'XS') || (0, _util.getTag)(feature, 'TS'),
567
+ score: 1
568
+ };
569
+ } else {
570
+ skipmap[hash].score++;
571
+ }
572
+ });
573
+ }
574
+ }
575
+ };
576
+
577
+ for (i = 0; i < features.length; i++) {
578
+ _loop(i);
579
+ }
580
+
581
+ return _context6.abrupt("return", {
582
+ bins: bins,
583
+ skipmap: skipmap
584
+ });
585
+
586
+ case 15:
587
+ case "end":
588
+ return _context6.stop();
589
+ }
590
+ }
591
+ }, _callee6, this);
592
+ }));
593
+
594
+ function generateCoverageBins(_x5, _x6, _x7) {
595
+ return _generateCoverageBins.apply(this, arguments);
596
+ }
597
+
598
+ return generateCoverageBins;
599
+ }()
600
+ }]);
601
+ return SNPCoverageAdapter;
602
+ }(_BaseAdapter.BaseFeatureDataAdapter);
603
+
604
+ exports["default"] = SNPCoverageAdapter;
605
+ var capabilities = SNPCoverageAdapter.capabilities;
606
+ exports.capabilities = capabilities;
@@ -1,3 +1,3 @@
1
- import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
3
- export default _default;
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
3
+ export default _default;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _configuration = require("@jbrowse/core/configuration");
9
+
10
+ var _mobxStateTree = require("mobx-state-tree");
11
+
12
+ var _default = function _default(pluginManager) {
13
+ return _mobxStateTree.types.late(function () {
14
+ return (0, _configuration.ConfigurationSchema)('SNPCoverageAdapter', {
15
+ subadapter: pluginManager.pluggableConfigSchemaType('adapter')
16
+ }, {
17
+ explicitlyTyped: true
18
+ });
19
+ });
20
+ };
21
+
22
+ exports["default"] = _default;
@@ -1,3 +1,3 @@
1
- import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => void;
3
- export default _default;
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => void;
3
+ export default _default;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _AdapterType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
13
+
14
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
15
+
16
+ var _SNPCoverageAdapter = require("./SNPCoverageAdapter");
17
+
18
+ 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); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2["default"])(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; }
21
+
22
+ var _default = function _default(pluginManager) {
23
+ pluginManager.addAdapterType(function () {
24
+ return new _AdapterType["default"]({
25
+ name: 'SNPCoverageAdapter',
26
+ adapterMetadata: {
27
+ category: null,
28
+ displayName: null,
29
+ hiddenFromGUI: true,
30
+ description: null
31
+ },
32
+ getAdapterClass: function getAdapterClass() {
33
+ return Promise.resolve().then(function () {
34
+ return _interopRequireWildcard(require('./SNPCoverageAdapter'));
35
+ }).then(function (r) {
36
+ return r["default"];
37
+ });
38
+ },
39
+ configSchema: (0, _configSchema["default"])(pluginManager),
40
+ adapterCapabilities: _SNPCoverageAdapter.capabilities
41
+ });
42
+ });
43
+ };
44
+
45
+ exports["default"] = _default;