@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.
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -6
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +216 -0
- package/dist/AlignmentsFeatureDetail/index.d.ts +13 -13
- package/dist/AlignmentsFeatureDetail/index.js +63 -0
- package/dist/AlignmentsFeatureDetail/index.test.js +60 -0
- package/dist/AlignmentsTrack/index.d.ts +2 -2
- package/dist/AlignmentsTrack/index.js +37 -0
- package/dist/BamAdapter/BamAdapter.d.ts +40 -30
- package/dist/BamAdapter/BamAdapter.js +598 -0
- package/dist/BamAdapter/BamAdapter.test.js +177 -0
- package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -33
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +176 -0
- package/dist/BamAdapter/MismatchParser.d.ts +28 -28
- package/dist/BamAdapter/MismatchParser.js +384 -0
- package/dist/BamAdapter/MismatchParser.test.js +259 -0
- package/dist/BamAdapter/configSchema.d.ts +2 -2
- package/dist/BamAdapter/configSchema.js +48 -0
- package/dist/BamAdapter/index.d.ts +3 -3
- package/dist/BamAdapter/index.js +36 -0
- package/dist/CramAdapter/CramAdapter.d.ts +52 -43
- package/dist/CramAdapter/CramAdapter.js +660 -0
- package/dist/CramAdapter/CramAdapter.test.js +138 -0
- package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -49
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +447 -0
- package/dist/CramAdapter/CramTestAdapters.d.ts +29 -29
- package/dist/CramAdapter/CramTestAdapters.js +234 -0
- package/dist/CramAdapter/configSchema.d.ts +3 -3
- package/dist/CramAdapter/configSchema.js +40 -0
- package/dist/CramAdapter/index.d.ts +3 -3
- package/dist/CramAdapter/index.js +36 -0
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -9
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +97 -0
- package/dist/HtsgetBamAdapter/configSchema.d.ts +2 -2
- package/dist/HtsgetBamAdapter/configSchema.js +31 -0
- package/dist/HtsgetBamAdapter/index.d.ts +3 -3
- package/dist/HtsgetBamAdapter/index.js +42 -0
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -7
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +69 -0
- package/dist/LinearAlignmentsDisplay/index.d.ts +2 -2
- package/dist/LinearAlignmentsDisplay/index.js +31 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -4
- package/dist/LinearAlignmentsDisplay/models/configSchema.js +25 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +83 -0
- package/dist/LinearAlignmentsDisplay/models/model.d.ts +105 -105
- package/dist/LinearAlignmentsDisplay/models/model.js +250 -0
- package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -14
- package/dist/LinearPileupDisplay/components/ColorByModifications.js +123 -0
- package/dist/LinearPileupDisplay/components/ColorByTag.d.ts +9 -9
- package/dist/LinearPileupDisplay/components/ColorByTag.js +98 -0
- package/dist/LinearPileupDisplay/components/FilterByTag.d.ts +18 -18
- package/dist/LinearPileupDisplay/components/FilterByTag.js +203 -0
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -13
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +32 -0
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -16
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +99 -0
- package/dist/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -10
- package/dist/LinearPileupDisplay/components/SetMaxHeight.js +90 -0
- package/dist/LinearPileupDisplay/components/SortByTag.d.ts +9 -9
- package/dist/LinearPileupDisplay/components/SortByTag.js +95 -0
- package/dist/LinearPileupDisplay/configSchema.d.ts +6 -6
- package/dist/LinearPileupDisplay/configSchema.js +47 -0
- package/dist/LinearPileupDisplay/configSchema.test.js +92 -0
- package/dist/LinearPileupDisplay/index.d.ts +2 -2
- package/dist/LinearPileupDisplay/index.js +30 -0
- package/dist/LinearPileupDisplay/model.d.ts +319 -321
- package/dist/LinearPileupDisplay/model.js +602 -0
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -10
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +63 -0
- package/dist/LinearSNPCoverageDisplay/index.d.ts +2 -2
- package/dist/LinearSNPCoverageDisplay/index.js +30 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -2
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js +57 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +62 -0
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +346 -96
- package/dist/LinearSNPCoverageDisplay/models/model.js +237 -0
- package/dist/NestedFrequencyTable.d.ts +14 -14
- package/dist/NestedFrequencyTable.js +152 -0
- package/dist/PileupRPC/rpcMethods.d.ts +34 -34
- package/dist/PileupRPC/rpcMethods.js +285 -0
- package/dist/PileupRenderer/PileupLayoutSession.d.ts +29 -29
- package/dist/PileupRenderer/PileupLayoutSession.js +79 -0
- package/dist/PileupRenderer/PileupRenderer.d.ts +125 -125
- package/dist/PileupRenderer/PileupRenderer.js +1220 -0
- package/dist/PileupRenderer/components/PileupRendering.d.ts +23 -23
- package/dist/PileupRenderer/components/PileupRendering.js +270 -0
- package/dist/PileupRenderer/components/PileupRendering.test.js +36 -0
- package/dist/PileupRenderer/configSchema.d.ts +2 -2
- package/dist/PileupRenderer/configSchema.js +72 -0
- package/dist/PileupRenderer/index.d.ts +2 -2
- package/dist/PileupRenderer/index.js +25 -0
- package/dist/PileupRenderer/sortUtil.d.ts +8 -8
- package/dist/PileupRenderer/sortUtil.js +112 -0
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -71
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +606 -0
- package/dist/SNPCoverageAdapter/configSchema.d.ts +3 -3
- package/dist/SNPCoverageAdapter/configSchema.js +22 -0
- package/dist/SNPCoverageAdapter/index.d.ts +3 -3
- package/dist/SNPCoverageAdapter/index.js +45 -0
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -20
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +296 -0
- package/dist/SNPCoverageRenderer/configSchema.d.ts +2 -2
- package/dist/SNPCoverageRenderer/configSchema.js +40 -0
- package/dist/SNPCoverageRenderer/index.d.ts +3 -3
- package/dist/SNPCoverageRenderer/index.js +34 -0
- package/dist/declare.d.js +1 -0
- package/dist/index.d.ts +10 -10
- package/dist/index.js +154 -6
- package/dist/index.test.js +26 -0
- package/dist/shared.d.ts +25 -25
- package/dist/shared.js +96 -0
- package/dist/util.d.ts +19 -19
- package/dist/util.js +135 -0
- package/package.json +5 -8
- package/src/BamAdapter/BamAdapter.ts +35 -8
- package/src/CramAdapter/CramAdapter.ts +42 -15
- package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +1 -1
- package/src/LinearPileupDisplay/model.ts +2 -22
- package/src/LinearSNPCoverageDisplay/models/model.ts +6 -36
- package/src/PileupRenderer/PileupRenderer.tsx +3 -6
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +11 -17
- package/dist/AlignmentsFeatureDetail/index.test.d.ts +0 -1
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.d.ts +0 -1
- package/dist/LinearPileupDisplay/configSchema.test.d.ts +0 -1
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.d.ts +0 -1
- package/dist/PileupRenderer/components/PileupRendering.test.d.ts +0 -1
- package/dist/plugin-alignments.cjs.development.js +0 -8438
- package/dist/plugin-alignments.cjs.development.js.map +0 -1
- package/dist/plugin-alignments.cjs.production.min.js +0 -2
- package/dist/plugin-alignments.cjs.production.min.js.map +0 -1
- package/dist/plugin-alignments.esm.js +0 -8430
- 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;
|