@jbrowse/plugin-variants 1.7.11 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/ChordVariantDisplay/index.d.ts +2 -1
  2. package/dist/ChordVariantDisplay/index.js +19 -31
  3. package/dist/ChordVariantDisplay/index.js.map +1 -0
  4. package/dist/ChordVariantDisplay/models/ChordVariantDisplay.d.ts +94 -2
  5. package/dist/ChordVariantDisplay/models/ChordVariantDisplay.js +39 -71
  6. package/dist/ChordVariantDisplay/models/ChordVariantDisplay.js.map +1 -0
  7. package/dist/LinearVariantDisplay/configSchema.js +9 -16
  8. package/dist/LinearVariantDisplay/configSchema.js.map +1 -0
  9. package/dist/LinearVariantDisplay/index.js +10 -22
  10. package/dist/LinearVariantDisplay/index.js.map +1 -0
  11. package/dist/LinearVariantDisplay/model.d.ts +17 -12
  12. package/dist/LinearVariantDisplay/model.js +83 -73
  13. package/dist/LinearVariantDisplay/model.js.map +1 -0
  14. package/dist/StructuralVariantChordRenderer/ReactComponent.js +193 -214
  15. package/dist/StructuralVariantChordRenderer/ReactComponent.js.map +1 -0
  16. package/dist/StructuralVariantChordRenderer/index.js +36 -46
  17. package/dist/StructuralVariantChordRenderer/index.js.map +1 -0
  18. package/dist/VariantFeatureWidget/BreakendOptionDialog.d.ts +1 -1
  19. package/dist/VariantFeatureWidget/BreakendOptionDialog.js +95 -119
  20. package/dist/VariantFeatureWidget/BreakendOptionDialog.js.map +1 -0
  21. package/dist/VariantFeatureWidget/VariantFeatureWidget.js +193 -240
  22. package/dist/VariantFeatureWidget/VariantFeatureWidget.js.map +1 -0
  23. package/dist/VariantFeatureWidget/index.d.ts +3 -3
  24. package/dist/VariantFeatureWidget/index.js +14 -22
  25. package/dist/VariantFeatureWidget/index.js.map +1 -0
  26. package/dist/VcfAdapter/VcfAdapter.js +232 -372
  27. package/dist/VcfAdapter/VcfAdapter.js.map +1 -0
  28. package/dist/VcfAdapter/configSchema.js +9 -21
  29. package/dist/VcfAdapter/configSchema.js.map +1 -0
  30. package/dist/VcfAdapter/index.js +8 -14
  31. package/dist/VcfAdapter/index.js.map +1 -0
  32. package/dist/VcfTabixAdapter/VcfFeature.js +203 -246
  33. package/dist/VcfTabixAdapter/VcfFeature.js.map +1 -0
  34. package/dist/VcfTabixAdapter/VcfTabixAdapter.js +232 -374
  35. package/dist/VcfTabixAdapter/VcfTabixAdapter.js.map +1 -0
  36. package/dist/VcfTabixAdapter/configSchema.js +23 -36
  37. package/dist/VcfTabixAdapter/configSchema.js.map +1 -0
  38. package/dist/VcfTabixAdapter/index.js +8 -14
  39. package/dist/VcfTabixAdapter/index.js.map +1 -0
  40. package/dist/index.js +160 -203
  41. package/dist/index.js.map +1 -0
  42. package/esm/ChordVariantDisplay/index.d.ts +4 -0
  43. package/esm/ChordVariantDisplay/index.js +16 -0
  44. package/esm/ChordVariantDisplay/index.js.map +1 -0
  45. package/esm/ChordVariantDisplay/models/ChordVariantDisplay.d.ts +97 -0
  46. package/esm/ChordVariantDisplay/models/ChordVariantDisplay.js +40 -0
  47. package/esm/ChordVariantDisplay/models/ChordVariantDisplay.js.map +1 -0
  48. package/esm/LinearVariantDisplay/configSchema.d.ts +5 -0
  49. package/esm/LinearVariantDisplay/configSchema.js +7 -0
  50. package/esm/LinearVariantDisplay/configSchema.js.map +1 -0
  51. package/esm/LinearVariantDisplay/index.d.ts +2 -0
  52. package/esm/LinearVariantDisplay/index.js +3 -0
  53. package/esm/LinearVariantDisplay/index.js.map +1 -0
  54. package/esm/LinearVariantDisplay/model.d.ts +212 -0
  55. package/esm/LinearVariantDisplay/model.js +34 -0
  56. package/esm/LinearVariantDisplay/model.js.map +1 -0
  57. package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +24 -0
  58. package/esm/StructuralVariantChordRenderer/ReactComponent.js +133 -0
  59. package/esm/StructuralVariantChordRenderer/ReactComponent.js.map +1 -0
  60. package/esm/StructuralVariantChordRenderer/index.d.ts +3 -0
  61. package/esm/StructuralVariantChordRenderer/index.js +33 -0
  62. package/esm/StructuralVariantChordRenderer/index.js.map +1 -0
  63. package/esm/VariantFeatureWidget/BreakendOptionDialog.d.ts +10 -0
  64. package/esm/VariantFeatureWidget/BreakendOptionDialog.js +58 -0
  65. package/esm/VariantFeatureWidget/BreakendOptionDialog.js.map +1 -0
  66. package/esm/VariantFeatureWidget/VariantFeatureWidget.d.ts +4 -0
  67. package/esm/VariantFeatureWidget/VariantFeatureWidget.js +129 -0
  68. package/esm/VariantFeatureWidget/VariantFeatureWidget.js.map +1 -0
  69. package/esm/VariantFeatureWidget/index.d.ts +37 -0
  70. package/esm/VariantFeatureWidget/index.js +12 -0
  71. package/esm/VariantFeatureWidget/index.js.map +1 -0
  72. package/esm/VcfAdapter/VcfAdapter.d.ts +24 -0
  73. package/esm/VcfAdapter/VcfAdapter.js +99 -0
  74. package/esm/VcfAdapter/VcfAdapter.js.map +1 -0
  75. package/esm/VcfAdapter/configSchema.d.ts +2 -0
  76. package/esm/VcfAdapter/configSchema.js +8 -0
  77. package/esm/VcfAdapter/configSchema.js.map +1 -0
  78. package/esm/VcfAdapter/index.d.ts +1 -0
  79. package/esm/VcfAdapter/index.js +2 -0
  80. package/esm/VcfAdapter/index.js.map +1 -0
  81. package/esm/VcfTabixAdapter/VcfFeature.d.ts +59 -0
  82. package/esm/VcfTabixAdapter/VcfFeature.js +184 -0
  83. package/esm/VcfTabixAdapter/VcfFeature.js.map +1 -0
  84. package/esm/VcfTabixAdapter/VcfTabixAdapter.d.ts +35 -0
  85. package/esm/VcfTabixAdapter/VcfTabixAdapter.js +106 -0
  86. package/esm/VcfTabixAdapter/VcfTabixAdapter.js.map +1 -0
  87. package/esm/VcfTabixAdapter/configSchema.d.ts +2 -0
  88. package/esm/VcfTabixAdapter/configSchema.js +23 -0
  89. package/esm/VcfTabixAdapter/configSchema.js.map +1 -0
  90. package/esm/VcfTabixAdapter/index.d.ts +1 -0
  91. package/esm/VcfTabixAdapter/index.js +2 -0
  92. package/esm/VcfTabixAdapter/index.js.map +1 -0
  93. package/esm/index.d.ts +7 -0
  94. package/esm/index.js +110 -0
  95. package/esm/index.js.map +1 -0
  96. package/package.json +25 -16
  97. package/src/ChordVariantDisplay/index.ts +4 -4
  98. package/src/ChordVariantDisplay/models/ChordVariantDisplay.js +7 -8
  99. package/src/VariantFeatureWidget/BreakendOptionDialog.tsx +8 -9
  100. package/src/VariantFeatureWidget/VariantFeatureWidget.tsx +2 -3
  101. package/src/VariantFeatureWidget/__snapshots__/VariantFeatureWidget.test.js.snap +52 -57
  102. package/src/VcfTabixAdapter/VcfFeature.ts +1 -1
  103. package/src/VcfTabixAdapter/VcfTabixAdapter.ts +1 -7
  104. package/dist/LinearVariantDisplay/configSchema.test.js +0 -92
  105. package/dist/VariantFeatureWidget/VariantFeatureWidget.test.js +0 -56
  106. package/dist/VcfAdapter/VcfAdapter.test.js +0 -55
  107. package/dist/VcfTabixAdapter/VcfFeature.test.js +0 -106
  108. package/dist/VcfTabixAdapter/VcfTabixAdapter.test.js +0 -99
  109. package/dist/index.test.js +0 -37
@@ -1,383 +1,243 @@
1
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 _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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
-
22
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
-
24
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
-
26
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
-
28
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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 _configuration = require("@jbrowse/core/configuration");
37
-
38
- var _intervalTree = _interopRequireDefault(require("@flatten-js/interval-tree"));
39
-
40
- var _bgzfFilehandle = require("@gmod/bgzf-filehandle");
41
-
42
- var _vcf = _interopRequireDefault(require("@gmod/vcf"));
43
-
44
- var _VcfFeature = _interopRequireDefault(require("../VcfTabixAdapter/VcfFeature"));
45
-
46
- 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); }; }
47
-
48
- 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; } }
49
-
50
- var readVcf = function readVcf(f) {
51
- var lines = f.split('\n');
52
- var header = [];
53
- var rest = [];
54
- lines.forEach(function (line) {
55
- if (line.startsWith('#')) {
56
- header.push(line);
57
- } else if (line) {
58
- rest.push(line);
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __read = (this && this.__read) || function (o, n) {
54
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
55
+ if (!m) return o;
56
+ var i = m.call(o), r, ar = [], e;
57
+ try {
58
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
59
+ }
60
+ catch (error) { e = { error: error }; }
61
+ finally {
62
+ try {
63
+ if (r && !r.done && (m = i["return"])) m.call(i);
64
+ }
65
+ finally { if (e) throw e.error; }
59
66
  }
60
- });
61
- return {
62
- header: header.join('\n'),
63
- lines: rest
64
- };
67
+ return ar;
68
+ };
69
+ var __importDefault = (this && this.__importDefault) || function (mod) {
70
+ return (mod && mod.__esModule) ? mod : { "default": mod };
71
+ };
72
+ Object.defineProperty(exports, "__esModule", { value: true });
73
+ var BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
74
+ var io_1 = require("@jbrowse/core/util/io");
75
+ var rxjs_1 = require("@jbrowse/core/util/rxjs");
76
+ var configuration_1 = require("@jbrowse/core/configuration");
77
+ var interval_tree_1 = __importDefault(require("@flatten-js/interval-tree"));
78
+ var bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
79
+ var vcf_1 = __importDefault(require("@gmod/vcf"));
80
+ var VcfFeature_1 = __importDefault(require("../VcfTabixAdapter/VcfFeature"));
81
+ var readVcf = function (f) {
82
+ var lines = f.split('\n');
83
+ var header = [];
84
+ var rest = [];
85
+ lines.forEach(function (line) {
86
+ if (line.startsWith('#')) {
87
+ header.push(line);
88
+ }
89
+ else if (line) {
90
+ rest.push(line);
91
+ }
92
+ });
93
+ return { header: header.join('\n'), lines: rest };
65
94
  };
66
-
67
95
  function isGzip(buf) {
68
- return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
96
+ return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
69
97
  }
70
-
71
- var VcfAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
72
- (0, _inherits2.default)(VcfAdapter, _BaseFeatureDataAdapt);
73
-
74
- var _super = _createSuper(VcfAdapter);
75
-
76
- function VcfAdapter() {
77
- var _this;
78
-
79
- (0, _classCallCheck2.default)(this, VcfAdapter);
80
-
81
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
82
- args[_key] = arguments[_key];
98
+ var VcfAdapter = /** @class */ (function (_super) {
99
+ __extends(VcfAdapter, _super);
100
+ function VcfAdapter() {
101
+ return _super !== null && _super.apply(this, arguments) || this;
83
102
  }
84
-
85
- _this = _super.call.apply(_super, [this].concat(args));
86
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vcfFeatures", void 0);
87
- return _this;
88
- }
89
-
90
- (0, _createClass2.default)(VcfAdapter, [{
91
- key: "getHeader",
92
- value: function () {
93
- var _getHeader = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
94
- var _yield$this$setup, header;
95
-
96
- return _regenerator.default.wrap(function _callee$(_context) {
97
- while (1) {
98
- switch (_context.prev = _context.next) {
99
- case 0:
100
- _context.next = 2;
101
- return this.setup();
102
-
103
- case 2:
104
- _yield$this$setup = _context.sent;
105
- header = _yield$this$setup.header;
106
- return _context.abrupt("return", header);
107
-
108
- case 5:
109
- case "end":
110
- return _context.stop();
111
- }
112
- }
113
- }, _callee, this);
114
- }));
115
-
116
- function getHeader() {
117
- return _getHeader.apply(this, arguments);
118
- }
119
-
120
- return getHeader;
121
- }()
122
- }, {
123
- key: "getMetadata",
124
- value: function () {
125
- var _getMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
126
- var _yield$this$setup2, header, parser;
127
-
128
- return _regenerator.default.wrap(function _callee2$(_context2) {
129
- while (1) {
130
- switch (_context2.prev = _context2.next) {
131
- case 0:
132
- _context2.next = 2;
133
- return this.setup();
134
-
135
- case 2:
136
- _yield$this$setup2 = _context2.sent;
137
- header = _yield$this$setup2.header;
138
- parser = new _vcf.default({
139
- header: header
140
- });
141
- return _context2.abrupt("return", parser.getMetadata());
142
-
143
- case 6:
144
- case "end":
145
- return _context2.stop();
146
- }
147
- }
148
- }, _callee2, this);
149
- }));
150
-
151
- function getMetadata() {
152
- return _getMetadata.apply(this, arguments);
153
- }
154
-
155
- return getMetadata;
156
- }() // converts lines into an interval tree
157
-
158
- }, {
159
- key: "setupP",
160
- value: function () {
161
- var _setupP = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
162
- var buffer, buf, str, _readVcf, header, lines, intervalTree;
163
-
164
- return _regenerator.default.wrap(function _callee3$(_context3) {
165
- while (1) {
166
- switch (_context3.prev = _context3.next) {
167
- case 0:
168
- _context3.next = 2;
169
- return (0, _io.openLocation)((0, _configuration.readConfObject)(this.config, 'vcfLocation'), this.pluginManager).readFile();
170
-
171
- case 2:
172
- buffer = _context3.sent;
173
-
174
- if (!isGzip(buffer)) {
175
- _context3.next = 9;
176
- break;
103
+ VcfAdapter.prototype.getHeader = function () {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var header;
106
+ return __generator(this, function (_a) {
107
+ switch (_a.label) {
108
+ case 0: return [4 /*yield*/, this.setup()];
109
+ case 1:
110
+ header = (_a.sent()).header;
111
+ return [2 /*return*/, header];
177
112
  }
178
-
179
- _context3.next = 6;
180
- return (0, _bgzfFilehandle.unzip)(buffer);
181
-
182
- case 6:
183
- _context3.t0 = _context3.sent;
184
- _context3.next = 10;
185
- break;
186
-
187
- case 9:
188
- _context3.t0 = buffer;
189
-
190
- case 10:
191
- buf = _context3.t0;
192
-
193
- if (!(buf.length > 536870888)) {
194
- _context3.next = 13;
195
- break;
113
+ });
114
+ });
115
+ };
116
+ VcfAdapter.prototype.getMetadata = function () {
117
+ return __awaiter(this, void 0, void 0, function () {
118
+ var header, parser;
119
+ return __generator(this, function (_a) {
120
+ switch (_a.label) {
121
+ case 0: return [4 /*yield*/, this.setup()];
122
+ case 1:
123
+ header = (_a.sent()).header;
124
+ parser = new vcf_1.default({ header: header });
125
+ return [2 /*return*/, parser.getMetadata()];
196
126
  }
197
-
198
- throw new Error('Data exceeds maximum string length (512MB)');
199
-
200
- case 13:
201
- str = new TextDecoder().decode(buf);
202
- _readVcf = readVcf(str), header = _readVcf.header, lines = _readVcf.lines;
203
- intervalTree = lines.map(function (line, id) {
204
- var _info$match;
205
-
206
- var _line$split = line.split('\t'),
207
- _line$split2 = (0, _slicedToArray2.default)(_line$split, 8),
208
- refName = _line$split2[0],
209
- startP = _line$split2[1],
210
- ref = _line$split2[3],
211
- info = _line$split2[7];
212
-
213
- var start = +startP - 1;
214
- var end = +(((_info$match = info.match(/END=(\d+)/)) === null || _info$match === void 0 ? void 0 : _info$match[1].trim()) || start + ref.length);
215
- return {
216
- line: line,
217
- refName: refName,
218
- start: start,
219
- end: end,
220
- id: id
221
- };
222
- }).reduce(function (acc, obj) {
223
- var key = obj.refName;
224
-
225
- if (!acc[key]) {
226
- acc[key] = new _intervalTree.default();
227
- }
228
-
229
- acc[key].insert([obj.start, obj.end], obj);
230
- return acc;
231
- }, {});
232
- return _context3.abrupt("return", {
233
- header: header,
234
- intervalTree: intervalTree
235
- });
236
-
237
- case 17:
238
- case "end":
239
- return _context3.stop();
240
- }
241
- }
242
- }, _callee3, this);
243
- }));
244
-
245
- function setupP() {
246
- return _setupP.apply(this, arguments);
247
- }
248
-
249
- return setupP;
250
- }()
251
- }, {
252
- key: "setup",
253
- value: function () {
254
- var _setup = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
255
- var _this2 = this;
256
-
257
- return _regenerator.default.wrap(function _callee4$(_context4) {
258
- while (1) {
259
- switch (_context4.prev = _context4.next) {
260
- case 0:
127
+ });
128
+ });
129
+ };
130
+ // converts lines into an interval tree
131
+ VcfAdapter.prototype.setupP = function () {
132
+ return __awaiter(this, void 0, void 0, function () {
133
+ var buffer, buf, _a, str, _b, header, lines, intervalTree;
134
+ return __generator(this, function (_c) {
135
+ switch (_c.label) {
136
+ case 0: return [4 /*yield*/, (0, io_1.openLocation)((0, configuration_1.readConfObject)(this.config, 'vcfLocation'), this.pluginManager).readFile()];
137
+ case 1:
138
+ buffer = _c.sent();
139
+ if (!isGzip(buffer)) return [3 /*break*/, 3];
140
+ return [4 /*yield*/, (0, bgzf_filehandle_1.unzip)(buffer)];
141
+ case 2:
142
+ _a = _c.sent();
143
+ return [3 /*break*/, 4];
144
+ case 3:
145
+ _a = buffer;
146
+ _c.label = 4;
147
+ case 4:
148
+ buf = _a;
149
+ // 512MB max chrome string length is 512MB
150
+ if (buf.length > 536870888) {
151
+ throw new Error('Data exceeds maximum string length (512MB)');
152
+ }
153
+ str = new TextDecoder().decode(buf);
154
+ _b = readVcf(str), header = _b.header, lines = _b.lines;
155
+ intervalTree = lines
156
+ .map(function (line, id) {
157
+ var _a;
158
+ var _b = __read(line.split('\t'), 8), refName = _b[0], startP = _b[1], ref = _b[3], info = _b[7];
159
+ var start = +startP - 1;
160
+ var end = +(((_a = info.match(/END=(\d+)/)) === null || _a === void 0 ? void 0 : _a[1].trim()) || start + ref.length);
161
+ return { line: line, refName: refName, start: start, end: end, id: id };
162
+ })
163
+ .reduce(function (acc, obj) {
164
+ var key = obj.refName;
165
+ if (!acc[key]) {
166
+ acc[key] = new interval_tree_1.default();
167
+ }
168
+ acc[key].insert([obj.start, obj.end], obj);
169
+ return acc;
170
+ }, {});
171
+ return [2 /*return*/, { header: header, intervalTree: intervalTree }];
172
+ }
173
+ });
174
+ });
175
+ };
176
+ VcfAdapter.prototype.setup = function () {
177
+ return __awaiter(this, void 0, void 0, function () {
178
+ var _this = this;
179
+ return __generator(this, function (_a) {
261
180
  if (!this.vcfFeatures) {
262
- this.vcfFeatures = this.setupP().catch(function (e) {
263
- _this2.vcfFeatures = undefined;
264
- throw e;
265
- });
181
+ this.vcfFeatures = this.setupP().catch(function (e) {
182
+ _this.vcfFeatures = undefined;
183
+ throw e;
184
+ });
266
185
  }
267
-
268
- return _context4.abrupt("return", this.vcfFeatures);
269
-
270
- case 2:
271
- case "end":
272
- return _context4.stop();
273
- }
274
- }
275
- }, _callee4, this);
276
- }));
277
-
278
- function setup() {
279
- return _setup.apply(this, arguments);
280
- }
281
-
282
- return setup;
283
- }()
284
- }, {
285
- key: "getRefNames",
286
- value: function () {
287
- var _getRefNames = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
288
- var _,
289
- _yield$this$setup3,
290
- intervalTree,
291
- _args5 = arguments;
292
-
293
- return _regenerator.default.wrap(function _callee5$(_context5) {
294
- while (1) {
295
- switch (_context5.prev = _context5.next) {
296
- case 0:
297
- _ = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {};
298
- _context5.next = 3;
299
- return this.setup();
300
-
301
- case 3:
302
- _yield$this$setup3 = _context5.sent;
303
- intervalTree = _yield$this$setup3.intervalTree;
304
- return _context5.abrupt("return", Object.keys(intervalTree));
305
-
306
- case 6:
307
- case "end":
308
- return _context5.stop();
309
- }
310
- }
311
- }, _callee5, this);
312
- }));
313
-
314
- function getRefNames() {
315
- return _getRefNames.apply(this, arguments);
316
- }
317
-
318
- return getRefNames;
319
- }()
320
- }, {
321
- key: "getFeatures",
322
- value: function getFeatures(region) {
323
- var _this3 = this;
324
-
325
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
326
- return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
327
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(observer) {
328
- var _intervalTree$refName, start, end, refName, _yield$_this3$setup, header, intervalTree, parser;
329
-
330
- return _regenerator.default.wrap(function _callee6$(_context6) {
331
- while (1) {
332
- switch (_context6.prev = _context6.next) {
333
- case 0:
334
- _context6.prev = 0;
335
- start = region.start, end = region.end, refName = region.refName;
336
- _context6.next = 4;
337
- return _this3.setup();
338
-
339
- case 4:
340
- _yield$_this3$setup = _context6.sent;
341
- header = _yield$_this3$setup.header;
342
- intervalTree = _yield$_this3$setup.intervalTree;
343
- parser = new _vcf.default({
344
- header: header
345
- });
346
- (_intervalTree$refName = intervalTree[refName]) === null || _intervalTree$refName === void 0 ? void 0 : _intervalTree$refName.search([start, end]).forEach(function (f) {
347
- return observer.next(new _VcfFeature.default({
348
- variant: parser.parseLine(f.line),
349
- parser: parser,
350
- id: "".concat(_this3.id, "-").concat(f.id)
351
- }));
352
- });
353
- observer.complete();
354
- _context6.next = 15;
355
- break;
356
-
357
- case 12:
358
- _context6.prev = 12;
359
- _context6.t0 = _context6["catch"](0);
360
- observer.error(_context6.t0);
361
-
362
- case 15:
363
- case "end":
364
- return _context6.stop();
365
- }
366
- }
367
- }, _callee6, null, [[0, 12]]);
368
- }));
369
-
370
- return function (_x) {
371
- return _ref.apply(this, arguments);
372
- };
373
- }(), opts.signal);
374
- }
375
- }, {
376
- key: "freeResources",
377
- value: function freeResources() {}
378
- }]);
379
- return VcfAdapter;
380
- }(_BaseAdapter.BaseFeatureDataAdapter);
381
-
186
+ return [2 /*return*/, this.vcfFeatures];
187
+ });
188
+ });
189
+ };
190
+ VcfAdapter.prototype.getRefNames = function (_) {
191
+ if (_ === void 0) { _ = {}; }
192
+ return __awaiter(this, void 0, void 0, function () {
193
+ var intervalTree;
194
+ return __generator(this, function (_a) {
195
+ switch (_a.label) {
196
+ case 0: return [4 /*yield*/, this.setup()];
197
+ case 1:
198
+ intervalTree = (_a.sent()).intervalTree;
199
+ return [2 /*return*/, Object.keys(intervalTree)];
200
+ }
201
+ });
202
+ });
203
+ };
204
+ VcfAdapter.prototype.getFeatures = function (region, opts) {
205
+ var _this = this;
206
+ if (opts === void 0) { opts = {}; }
207
+ return (0, rxjs_1.ObservableCreate)(function (observer) { return __awaiter(_this, void 0, void 0, function () {
208
+ var start, end, refName, _a, header, intervalTree, parser_1, e_1;
209
+ var _this = this;
210
+ var _b;
211
+ return __generator(this, function (_c) {
212
+ switch (_c.label) {
213
+ case 0:
214
+ _c.trys.push([0, 2, , 3]);
215
+ start = region.start, end = region.end, refName = region.refName;
216
+ return [4 /*yield*/, this.setup()];
217
+ case 1:
218
+ _a = _c.sent(), header = _a.header, intervalTree = _a.intervalTree;
219
+ parser_1 = new vcf_1.default({ header: header });
220
+ (_b = intervalTree[refName]) === null || _b === void 0 ? void 0 : _b.search([start, end]).forEach(function (f) {
221
+ return observer.next(new VcfFeature_1.default({
222
+ variant: parser_1.parseLine(f.line),
223
+ parser: parser_1,
224
+ id: "".concat(_this.id, "-").concat(f.id),
225
+ }));
226
+ });
227
+ observer.complete();
228
+ return [3 /*break*/, 3];
229
+ case 2:
230
+ e_1 = _c.sent();
231
+ observer.error(e_1);
232
+ return [3 /*break*/, 3];
233
+ case 3: return [2 /*return*/];
234
+ }
235
+ });
236
+ }); }, opts.signal);
237
+ };
238
+ VcfAdapter.prototype.freeResources = function () { };
239
+ VcfAdapter.capabilities = ['getFeatures', 'getRefNames'];
240
+ return VcfAdapter;
241
+ }(BaseAdapter_1.BaseFeatureDataAdapter));
382
242
  exports.default = VcfAdapter;
383
- (0, _defineProperty2.default)(VcfAdapter, "capabilities", ['getFeatures', 'getRefNames']);
243
+ //# sourceMappingURL=VcfAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VcfAdapter.js","sourceRoot":"","sources":["../../src/VcfAdapter/VcfAdapter.ts"],"names":[],"mappings":"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"}