@jbrowse/plugin-bed 1.7.10 → 1.7.11
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/BedAdapter/BedAdapter.d.ts +29 -0
- package/dist/BedAdapter/BedAdapter.js +498 -0
- package/dist/BedAdapter/BedAdapter.test.js +255 -0
- package/dist/BedAdapter/configSchema.d.ts +2 -0
- package/dist/BedAdapter/configSchema.js +52 -0
- package/dist/BedAdapter/index.d.ts +1 -0
- package/dist/BedAdapter/index.js +15 -0
- package/dist/BedTabixAdapter/BedTabixAdapter.d.ts +3 -7
- package/dist/BedTabixAdapter/BedTabixAdapter.js +25 -81
- package/dist/index.js +31 -0
- package/dist/util.d.ts +3 -1
- package/dist/util.js +66 -7
- package/package.json +4 -2
- package/src/BedAdapter/BedAdapter.test.ts +170 -0
- package/src/BedAdapter/BedAdapter.ts +172 -0
- package/src/BedAdapter/__snapshots__/BedAdapter.test.ts.snap +437 -0
- package/src/BedAdapter/configSchema.ts +45 -0
- package/src/BedAdapter/index.ts +1 -0
- package/src/BedAdapter/test_data/gwas.bed +20 -0
- package/src/BedAdapter/test_data/volvox-autosql.bed +1 -0
- package/src/BedAdapter/test_data/volvox-bed12.bed +4 -0
- package/src/BedAdapter/test_data/volvox.sort.bed +109 -0
- package/src/BedAdapter/test_data/volvox.sort.with.header.bed +121 -0
- package/src/BedTabixAdapter/BedTabixAdapter.ts +29 -80
- package/src/index.ts +34 -1
- package/src/util.ts +65 -6
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import BED from '@gmod/bed';
|
|
2
|
+
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import { Region, Feature } from '@jbrowse/core/util';
|
|
4
|
+
import IntervalTree from '@flatten-js/interval-tree';
|
|
5
|
+
export default class BedAdapter extends BaseFeatureDataAdapter {
|
|
6
|
+
protected bedFeatures?: Promise<{
|
|
7
|
+
header: string;
|
|
8
|
+
features: Record<string, string[]>;
|
|
9
|
+
parser: typeof BED;
|
|
10
|
+
columnNames: string[];
|
|
11
|
+
scoreColumn: string;
|
|
12
|
+
colRef: number;
|
|
13
|
+
colStart: number;
|
|
14
|
+
colEnd: number;
|
|
15
|
+
}>;
|
|
16
|
+
protected intervalTrees: {
|
|
17
|
+
[key: string]: Promise<IntervalTree | undefined> | undefined;
|
|
18
|
+
};
|
|
19
|
+
static capabilities: string[];
|
|
20
|
+
private loadDataP;
|
|
21
|
+
private loadData;
|
|
22
|
+
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
23
|
+
getHeader(opts?: BaseOptions): Promise<string>;
|
|
24
|
+
getNames(): Promise<string[] | undefined>;
|
|
25
|
+
private loadFeatureIntervalTreeHelper;
|
|
26
|
+
private loadFeatureIntervalTree;
|
|
27
|
+
getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
28
|
+
freeResources(): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,498 @@
|
|
|
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
+
|
|
28
|
+
var _bed = _interopRequireDefault(require("@gmod/bed"));
|
|
29
|
+
|
|
30
|
+
var _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
31
|
+
|
|
32
|
+
var _io = require("@jbrowse/core/util/io");
|
|
33
|
+
|
|
34
|
+
var _rxjs = require("@jbrowse/core/util/rxjs");
|
|
35
|
+
|
|
36
|
+
var _util = require("../util");
|
|
37
|
+
|
|
38
|
+
var _intervalTree = _interopRequireDefault(require("@flatten-js/interval-tree"));
|
|
39
|
+
|
|
40
|
+
var _bgzfFilehandle = require("@gmod/bgzf-filehandle");
|
|
41
|
+
|
|
42
|
+
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); }; }
|
|
43
|
+
|
|
44
|
+
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; } }
|
|
45
|
+
|
|
46
|
+
function isGzip(buf) {
|
|
47
|
+
return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var BedAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
|
|
51
|
+
(0, _inherits2.default)(BedAdapter, _BaseFeatureDataAdapt);
|
|
52
|
+
|
|
53
|
+
var _super = _createSuper(BedAdapter);
|
|
54
|
+
|
|
55
|
+
function BedAdapter() {
|
|
56
|
+
var _this;
|
|
57
|
+
|
|
58
|
+
(0, _classCallCheck2.default)(this, BedAdapter);
|
|
59
|
+
|
|
60
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
61
|
+
args[_key] = arguments[_key];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
65
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "bedFeatures", void 0);
|
|
66
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "intervalTrees", {});
|
|
67
|
+
return _this;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
(0, _createClass2.default)(BedAdapter, [{
|
|
71
|
+
key: "loadDataP",
|
|
72
|
+
value: function () {
|
|
73
|
+
var _loadDataP = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
74
|
+
var opts,
|
|
75
|
+
pm,
|
|
76
|
+
bedLoc,
|
|
77
|
+
buf,
|
|
78
|
+
buffer,
|
|
79
|
+
data,
|
|
80
|
+
lines,
|
|
81
|
+
headerLines,
|
|
82
|
+
i,
|
|
83
|
+
header,
|
|
84
|
+
features,
|
|
85
|
+
line,
|
|
86
|
+
tab,
|
|
87
|
+
refName,
|
|
88
|
+
autoSql,
|
|
89
|
+
parser,
|
|
90
|
+
columnNames,
|
|
91
|
+
scoreColumn,
|
|
92
|
+
colRef,
|
|
93
|
+
colStart,
|
|
94
|
+
colEnd,
|
|
95
|
+
_args = arguments;
|
|
96
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
97
|
+
while (1) {
|
|
98
|
+
switch (_context.prev = _context.next) {
|
|
99
|
+
case 0:
|
|
100
|
+
opts = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
101
|
+
pm = this.pluginManager;
|
|
102
|
+
bedLoc = this.getConf('bedLocation');
|
|
103
|
+
_context.next = 5;
|
|
104
|
+
return (0, _io.openLocation)(bedLoc, pm).readFile(opts);
|
|
105
|
+
|
|
106
|
+
case 5:
|
|
107
|
+
buf = _context.sent;
|
|
108
|
+
|
|
109
|
+
if (!isGzip(buf)) {
|
|
110
|
+
_context.next = 12;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
_context.next = 9;
|
|
115
|
+
return (0, _bgzfFilehandle.unzip)(buf);
|
|
116
|
+
|
|
117
|
+
case 9:
|
|
118
|
+
_context.t0 = _context.sent;
|
|
119
|
+
_context.next = 13;
|
|
120
|
+
break;
|
|
121
|
+
|
|
122
|
+
case 12:
|
|
123
|
+
_context.t0 = buf;
|
|
124
|
+
|
|
125
|
+
case 13:
|
|
126
|
+
buffer = _context.t0;
|
|
127
|
+
|
|
128
|
+
if (!(buffer.length > 536870888)) {
|
|
129
|
+
_context.next = 16;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
throw new Error('Data exceeds maximum string length (512MB)');
|
|
134
|
+
|
|
135
|
+
case 16:
|
|
136
|
+
data = new TextDecoder('utf8', {
|
|
137
|
+
fatal: true
|
|
138
|
+
}).decode(buffer);
|
|
139
|
+
lines = data.split('\n').filter(function (f) {
|
|
140
|
+
return !!f;
|
|
141
|
+
});
|
|
142
|
+
headerLines = [];
|
|
143
|
+
i = 0;
|
|
144
|
+
|
|
145
|
+
for (; i < lines.length && lines[i].startsWith('#'); i++) {
|
|
146
|
+
headerLines.push(lines[i]);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
header = headerLines.join('\n');
|
|
150
|
+
features = {};
|
|
151
|
+
|
|
152
|
+
for (; i < lines.length; i++) {
|
|
153
|
+
line = lines[i];
|
|
154
|
+
tab = line.indexOf('\t');
|
|
155
|
+
refName = line.slice(0, tab);
|
|
156
|
+
|
|
157
|
+
if (!features[refName]) {
|
|
158
|
+
features[refName] = [];
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
features[refName].push(line);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
autoSql = this.getConf('autoSql');
|
|
165
|
+
parser = new _bed.default({
|
|
166
|
+
autoSql: autoSql
|
|
167
|
+
});
|
|
168
|
+
columnNames = this.getConf('columnNames');
|
|
169
|
+
scoreColumn = this.getConf('scoreColumn');
|
|
170
|
+
colRef = this.getConf('colRef');
|
|
171
|
+
colStart = this.getConf('colStart');
|
|
172
|
+
colEnd = this.getConf('colEnd');
|
|
173
|
+
return _context.abrupt("return", {
|
|
174
|
+
header: header,
|
|
175
|
+
features: features,
|
|
176
|
+
parser: parser,
|
|
177
|
+
columnNames: columnNames,
|
|
178
|
+
scoreColumn: scoreColumn,
|
|
179
|
+
colRef: colRef,
|
|
180
|
+
colStart: colStart,
|
|
181
|
+
colEnd: colEnd
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
case 32:
|
|
185
|
+
case "end":
|
|
186
|
+
return _context.stop();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}, _callee, this);
|
|
190
|
+
}));
|
|
191
|
+
|
|
192
|
+
function loadDataP() {
|
|
193
|
+
return _loadDataP.apply(this, arguments);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return loadDataP;
|
|
197
|
+
}()
|
|
198
|
+
}, {
|
|
199
|
+
key: "loadData",
|
|
200
|
+
value: function () {
|
|
201
|
+
var _loadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
202
|
+
var _this2 = this;
|
|
203
|
+
|
|
204
|
+
var opts,
|
|
205
|
+
_args2 = arguments;
|
|
206
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
207
|
+
while (1) {
|
|
208
|
+
switch (_context2.prev = _context2.next) {
|
|
209
|
+
case 0:
|
|
210
|
+
opts = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};
|
|
211
|
+
|
|
212
|
+
if (!this.bedFeatures) {
|
|
213
|
+
this.bedFeatures = this.loadDataP(opts).catch(function (e) {
|
|
214
|
+
_this2.bedFeatures = undefined;
|
|
215
|
+
throw e;
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
return _context2.abrupt("return", this.bedFeatures);
|
|
220
|
+
|
|
221
|
+
case 3:
|
|
222
|
+
case "end":
|
|
223
|
+
return _context2.stop();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}, _callee2, this);
|
|
227
|
+
}));
|
|
228
|
+
|
|
229
|
+
function loadData() {
|
|
230
|
+
return _loadData.apply(this, arguments);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return loadData;
|
|
234
|
+
}()
|
|
235
|
+
}, {
|
|
236
|
+
key: "getRefNames",
|
|
237
|
+
value: function () {
|
|
238
|
+
var _getRefNames = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
239
|
+
var opts,
|
|
240
|
+
_yield$this$loadData,
|
|
241
|
+
features,
|
|
242
|
+
_args3 = arguments;
|
|
243
|
+
|
|
244
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
245
|
+
while (1) {
|
|
246
|
+
switch (_context3.prev = _context3.next) {
|
|
247
|
+
case 0:
|
|
248
|
+
opts = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};
|
|
249
|
+
_context3.next = 3;
|
|
250
|
+
return this.loadData(opts);
|
|
251
|
+
|
|
252
|
+
case 3:
|
|
253
|
+
_yield$this$loadData = _context3.sent;
|
|
254
|
+
features = _yield$this$loadData.features;
|
|
255
|
+
return _context3.abrupt("return", Object.keys(features));
|
|
256
|
+
|
|
257
|
+
case 6:
|
|
258
|
+
case "end":
|
|
259
|
+
return _context3.stop();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}, _callee3, this);
|
|
263
|
+
}));
|
|
264
|
+
|
|
265
|
+
function getRefNames() {
|
|
266
|
+
return _getRefNames.apply(this, arguments);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return getRefNames;
|
|
270
|
+
}()
|
|
271
|
+
}, {
|
|
272
|
+
key: "getHeader",
|
|
273
|
+
value: function () {
|
|
274
|
+
var _getHeader = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
275
|
+
var opts,
|
|
276
|
+
_yield$this$loadData2,
|
|
277
|
+
header,
|
|
278
|
+
_args4 = arguments;
|
|
279
|
+
|
|
280
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
281
|
+
while (1) {
|
|
282
|
+
switch (_context4.prev = _context4.next) {
|
|
283
|
+
case 0:
|
|
284
|
+
opts = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {};
|
|
285
|
+
_context4.next = 3;
|
|
286
|
+
return this.loadData(opts);
|
|
287
|
+
|
|
288
|
+
case 3:
|
|
289
|
+
_yield$this$loadData2 = _context4.sent;
|
|
290
|
+
header = _yield$this$loadData2.header;
|
|
291
|
+
return _context4.abrupt("return", header);
|
|
292
|
+
|
|
293
|
+
case 6:
|
|
294
|
+
case "end":
|
|
295
|
+
return _context4.stop();
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}, _callee4, this);
|
|
299
|
+
}));
|
|
300
|
+
|
|
301
|
+
function getHeader() {
|
|
302
|
+
return _getHeader.apply(this, arguments);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return getHeader;
|
|
306
|
+
}()
|
|
307
|
+
}, {
|
|
308
|
+
key: "getNames",
|
|
309
|
+
value: function () {
|
|
310
|
+
var _getNames = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
311
|
+
var _yield$this$loadData3, header, columnNames, defs, defline;
|
|
312
|
+
|
|
313
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
314
|
+
while (1) {
|
|
315
|
+
switch (_context5.prev = _context5.next) {
|
|
316
|
+
case 0:
|
|
317
|
+
_context5.next = 2;
|
|
318
|
+
return this.loadData();
|
|
319
|
+
|
|
320
|
+
case 2:
|
|
321
|
+
_yield$this$loadData3 = _context5.sent;
|
|
322
|
+
header = _yield$this$loadData3.header;
|
|
323
|
+
columnNames = _yield$this$loadData3.columnNames;
|
|
324
|
+
|
|
325
|
+
if (!columnNames.length) {
|
|
326
|
+
_context5.next = 7;
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return _context5.abrupt("return", columnNames);
|
|
331
|
+
|
|
332
|
+
case 7:
|
|
333
|
+
defs = header.split('\n').filter(function (f) {
|
|
334
|
+
return !!f;
|
|
335
|
+
});
|
|
336
|
+
defline = defs[defs.length - 1];
|
|
337
|
+
return _context5.abrupt("return", defline !== null && defline !== void 0 && defline.includes('\t') ? defline.slice(1).split('\t').map(function (field) {
|
|
338
|
+
return field.trim();
|
|
339
|
+
}) : undefined);
|
|
340
|
+
|
|
341
|
+
case 10:
|
|
342
|
+
case "end":
|
|
343
|
+
return _context5.stop();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}, _callee5, this);
|
|
347
|
+
}));
|
|
348
|
+
|
|
349
|
+
function getNames() {
|
|
350
|
+
return _getNames.apply(this, arguments);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
return getNames;
|
|
354
|
+
}()
|
|
355
|
+
}, {
|
|
356
|
+
key: "loadFeatureIntervalTreeHelper",
|
|
357
|
+
value: function () {
|
|
358
|
+
var _loadFeatureIntervalTreeHelper = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(refName) {
|
|
359
|
+
var _this3 = this;
|
|
360
|
+
|
|
361
|
+
var _yield$this$loadData4, colRef, colStart, colEnd, features, parser, scoreColumn, lines, names, intervalTree, ret, i, obj;
|
|
362
|
+
|
|
363
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
364
|
+
while (1) {
|
|
365
|
+
switch (_context6.prev = _context6.next) {
|
|
366
|
+
case 0:
|
|
367
|
+
_context6.next = 2;
|
|
368
|
+
return this.loadData();
|
|
369
|
+
|
|
370
|
+
case 2:
|
|
371
|
+
_yield$this$loadData4 = _context6.sent;
|
|
372
|
+
colRef = _yield$this$loadData4.colRef;
|
|
373
|
+
colStart = _yield$this$loadData4.colStart;
|
|
374
|
+
colEnd = _yield$this$loadData4.colEnd;
|
|
375
|
+
features = _yield$this$loadData4.features;
|
|
376
|
+
parser = _yield$this$loadData4.parser;
|
|
377
|
+
scoreColumn = _yield$this$loadData4.scoreColumn;
|
|
378
|
+
lines = features[refName];
|
|
379
|
+
|
|
380
|
+
if (lines) {
|
|
381
|
+
_context6.next = 12;
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
return _context6.abrupt("return", undefined);
|
|
386
|
+
|
|
387
|
+
case 12:
|
|
388
|
+
_context6.next = 14;
|
|
389
|
+
return this.getNames();
|
|
390
|
+
|
|
391
|
+
case 14:
|
|
392
|
+
names = _context6.sent;
|
|
393
|
+
intervalTree = new _intervalTree.default();
|
|
394
|
+
ret = lines.map(function (f, i) {
|
|
395
|
+
var uniqueId = "".concat(_this3.id, "-").concat(refName, "-").concat(i);
|
|
396
|
+
return (0, _util.featureData)(f, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names);
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
for (i = 0; i < ret.length; i++) {
|
|
400
|
+
obj = ret[i];
|
|
401
|
+
intervalTree.insert([obj.get('start'), obj.get('end')], obj);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return _context6.abrupt("return", intervalTree);
|
|
405
|
+
|
|
406
|
+
case 19:
|
|
407
|
+
case "end":
|
|
408
|
+
return _context6.stop();
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}, _callee6, this);
|
|
412
|
+
}));
|
|
413
|
+
|
|
414
|
+
function loadFeatureIntervalTreeHelper(_x) {
|
|
415
|
+
return _loadFeatureIntervalTreeHelper.apply(this, arguments);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
return loadFeatureIntervalTreeHelper;
|
|
419
|
+
}()
|
|
420
|
+
}, {
|
|
421
|
+
key: "loadFeatureIntervalTree",
|
|
422
|
+
value: function () {
|
|
423
|
+
var _loadFeatureIntervalTree = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(refName) {
|
|
424
|
+
var _this4 = this;
|
|
425
|
+
|
|
426
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
427
|
+
while (1) {
|
|
428
|
+
switch (_context7.prev = _context7.next) {
|
|
429
|
+
case 0:
|
|
430
|
+
if (!this.intervalTrees[refName]) {
|
|
431
|
+
this.intervalTrees[refName] = this.loadFeatureIntervalTreeHelper(refName).catch(function (e) {
|
|
432
|
+
_this4.intervalTrees[refName] = undefined;
|
|
433
|
+
throw e;
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
return _context7.abrupt("return", this.intervalTrees[refName]);
|
|
438
|
+
|
|
439
|
+
case 2:
|
|
440
|
+
case "end":
|
|
441
|
+
return _context7.stop();
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}, _callee7, this);
|
|
445
|
+
}));
|
|
446
|
+
|
|
447
|
+
function loadFeatureIntervalTree(_x2) {
|
|
448
|
+
return _loadFeatureIntervalTree.apply(this, arguments);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
return loadFeatureIntervalTree;
|
|
452
|
+
}()
|
|
453
|
+
}, {
|
|
454
|
+
key: "getFeatures",
|
|
455
|
+
value: function getFeatures(query) {
|
|
456
|
+
var _this5 = this;
|
|
457
|
+
|
|
458
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
459
|
+
return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
|
|
460
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(observer) {
|
|
461
|
+
var start, end, refName, intervalTree;
|
|
462
|
+
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
463
|
+
while (1) {
|
|
464
|
+
switch (_context8.prev = _context8.next) {
|
|
465
|
+
case 0:
|
|
466
|
+
start = query.start, end = query.end, refName = query.refName;
|
|
467
|
+
_context8.next = 3;
|
|
468
|
+
return _this5.loadFeatureIntervalTree(refName);
|
|
469
|
+
|
|
470
|
+
case 3:
|
|
471
|
+
intervalTree = _context8.sent;
|
|
472
|
+
intervalTree === null || intervalTree === void 0 ? void 0 : intervalTree.search([start, end]).forEach(function (f) {
|
|
473
|
+
return observer.next(f);
|
|
474
|
+
});
|
|
475
|
+
observer.complete();
|
|
476
|
+
|
|
477
|
+
case 6:
|
|
478
|
+
case "end":
|
|
479
|
+
return _context8.stop();
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}, _callee8);
|
|
483
|
+
}));
|
|
484
|
+
|
|
485
|
+
return function (_x3) {
|
|
486
|
+
return _ref.apply(this, arguments);
|
|
487
|
+
};
|
|
488
|
+
}(), opts.signal);
|
|
489
|
+
}
|
|
490
|
+
}, {
|
|
491
|
+
key: "freeResources",
|
|
492
|
+
value: function freeResources() {}
|
|
493
|
+
}]);
|
|
494
|
+
return BedAdapter;
|
|
495
|
+
}(_BaseAdapter.BaseFeatureDataAdapter);
|
|
496
|
+
|
|
497
|
+
exports.default = BedAdapter;
|
|
498
|
+
(0, _defineProperty2.default)(BedAdapter, "capabilities", ['getFeatures', 'getRefNames']);
|