@jbrowse/plugin-sequence 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 (63) hide show
  1. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.d.ts +7 -7
  2. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js +70 -0
  3. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.test.js +64 -0
  4. package/dist/BgzipFastaAdapter/configSchema.d.ts +2 -2
  5. package/dist/BgzipFastaAdapter/configSchema.js +36 -0
  6. package/dist/BgzipFastaAdapter/index.d.ts +1 -1
  7. package/dist/BgzipFastaAdapter/index.js +15 -0
  8. package/dist/ChromSizesAdapter/ChromSizesAdapter.d.ts +19 -19
  9. package/dist/ChromSizesAdapter/ChromSizesAdapter.js +170 -0
  10. package/dist/ChromSizesAdapter/ChromSizesAdapter.test.js +46 -0
  11. package/dist/ChromSizesAdapter/configSchema.d.ts +2 -2
  12. package/dist/ChromSizesAdapter/configSchema.js +22 -0
  13. package/dist/ChromSizesAdapter/index.d.ts +1 -1
  14. package/dist/ChromSizesAdapter/index.js +15 -0
  15. package/dist/DivSequenceRenderer/components/DivSequenceRendering.d.ts +21 -21
  16. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +239 -0
  17. package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.js +245 -0
  18. package/dist/DivSequenceRenderer/configSchema.d.ts +2 -2
  19. package/dist/DivSequenceRenderer/configSchema.js +20 -0
  20. package/dist/DivSequenceRenderer/index.d.ts +2 -2
  21. package/dist/DivSequenceRenderer/index.js +23 -0
  22. package/dist/GCContentAdapter/GCContentAdapter.d.ts +23 -23
  23. package/dist/GCContentAdapter/GCContentAdapter.js +261 -0
  24. package/dist/GCContentAdapter/configSchema.d.ts +3 -3
  25. package/dist/GCContentAdapter/configSchema.js +18 -0
  26. package/dist/GCContentAdapter/index.d.ts +6 -6
  27. package/dist/GCContentAdapter/index.js +31 -0
  28. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +25 -25
  29. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +228 -0
  30. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.test.js +71 -0
  31. package/dist/IndexedFastaAdapter/configSchema.d.ts +2 -2
  32. package/dist/IndexedFastaAdapter/configSchema.js +29 -0
  33. package/dist/IndexedFastaAdapter/index.d.ts +1 -1
  34. package/dist/IndexedFastaAdapter/index.js +15 -0
  35. package/dist/LinearReferenceSequenceDisplay/configSchema.d.ts +1 -1
  36. package/dist/LinearReferenceSequenceDisplay/configSchema.js +18 -0
  37. package/dist/LinearReferenceSequenceDisplay/index.d.ts +2 -2
  38. package/dist/LinearReferenceSequenceDisplay/index.js +21 -0
  39. package/dist/LinearReferenceSequenceDisplay/model.d.ts +208 -208
  40. package/dist/LinearReferenceSequenceDisplay/model.js +102 -0
  41. package/dist/TwoBitAdapter/TwoBitAdapter.d.ts +26 -26
  42. package/dist/TwoBitAdapter/TwoBitAdapter.js +289 -0
  43. package/dist/TwoBitAdapter/TwoBitAdapter.test.js +94 -0
  44. package/dist/TwoBitAdapter/configSchema.d.ts +2 -2
  45. package/dist/TwoBitAdapter/configSchema.js +30 -0
  46. package/dist/TwoBitAdapter/index.d.ts +1 -1
  47. package/dist/TwoBitAdapter/index.js +15 -0
  48. package/dist/declare.d.js +1 -0
  49. package/dist/index.d.ts +6 -6
  50. package/dist/index.js +325 -6
  51. package/dist/index.test.js +29 -0
  52. package/dist/referenceSeqTrackConfig.d.ts +2 -2
  53. package/dist/referenceSeqTrackConfig.js +88 -0
  54. package/package.json +5 -7
  55. package/src/index.ts +7 -8
  56. package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.d.ts +0 -1
  57. package/dist/index.test.d.ts +0 -1
  58. package/dist/plugin-sequence.cjs.development.js +0 -2567
  59. package/dist/plugin-sequence.cjs.development.js.map +0 -1
  60. package/dist/plugin-sequence.cjs.production.min.js +0 -2
  61. package/dist/plugin-sequence.cjs.production.min.js.map +0 -1
  62. package/dist/plugin-sequence.esm.js +0 -2561
  63. package/dist/plugin-sequence.esm.js.map +0 -1
@@ -0,0 +1,261 @@
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 _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
29
+
30
+ var _rxjs = require("@jbrowse/core/util/rxjs");
31
+
32
+ var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
33
+
34
+ var _configuration = require("@jbrowse/core/configuration");
35
+
36
+ var _operators = require("rxjs/operators");
37
+
38
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
39
+
40
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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
+ var _default = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
47
+ (0, _inherits2["default"])(_default, _BaseFeatureDataAdapt);
48
+
49
+ var _super = _createSuper(_default);
50
+
51
+ function _default() {
52
+ var _this;
53
+
54
+ (0, _classCallCheck2["default"])(this, _default);
55
+
56
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
57
+ args[_key] = arguments[_key];
58
+ }
59
+
60
+ _this = _super.call.apply(_super, [this].concat(args));
61
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "windowSize", 1000);
62
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "windowDelta", 1000);
63
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "gcMode", 'content');
64
+ return _this;
65
+ }
66
+
67
+ (0, _createClass2["default"])(_default, [{
68
+ key: "configure",
69
+ value: function () {
70
+ var _configure = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
71
+ var _this$getSubAdapter;
72
+
73
+ var sequenceAdapter, dataAdapter;
74
+ return _regenerator["default"].wrap(function _callee$(_context) {
75
+ while (1) {
76
+ switch (_context.prev = _context.next) {
77
+ case 0:
78
+ // instantiate the sequence adapter
79
+ sequenceAdapter = (0, _configuration.readConfObject)(this.config, 'sequenceAdapter');
80
+ _context.next = 3;
81
+ return (_this$getSubAdapter = this.getSubAdapter) === null || _this$getSubAdapter === void 0 ? void 0 : _this$getSubAdapter.call(this, sequenceAdapter);
82
+
83
+ case 3:
84
+ dataAdapter = _context.sent;
85
+
86
+ if (dataAdapter) {
87
+ _context.next = 6;
88
+ break;
89
+ }
90
+
91
+ throw new Error('Error getting subadapter');
92
+
93
+ case 6:
94
+ return _context.abrupt("return", dataAdapter.dataAdapter);
95
+
96
+ case 7:
97
+ case "end":
98
+ return _context.stop();
99
+ }
100
+ }
101
+ }, _callee, this);
102
+ }));
103
+
104
+ function configure() {
105
+ return _configure.apply(this, arguments);
106
+ }
107
+
108
+ return configure;
109
+ }()
110
+ }, {
111
+ key: "getRefNames",
112
+ value: function () {
113
+ var _getRefNames = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
114
+ var sequenceAdapter;
115
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
116
+ while (1) {
117
+ switch (_context2.prev = _context2.next) {
118
+ case 0:
119
+ _context2.next = 2;
120
+ return this.configure();
121
+
122
+ case 2:
123
+ sequenceAdapter = _context2.sent;
124
+ return _context2.abrupt("return", sequenceAdapter.getRefNames());
125
+
126
+ case 4:
127
+ case "end":
128
+ return _context2.stop();
129
+ }
130
+ }
131
+ }, _callee2, this);
132
+ }));
133
+
134
+ function getRefNames() {
135
+ return _getRefNames.apply(this, arguments);
136
+ }
137
+
138
+ return getRefNames;
139
+ }()
140
+ /**
141
+ * Fetch features for a certain region
142
+ * @param param -
143
+ * @returns Observable of Feature objects in the region
144
+ */
145
+
146
+ }, {
147
+ key: "getFeatures",
148
+ value: function getFeatures(query, opts) {
149
+ var _this2 = this;
150
+
151
+ this.windowSize = 1000;
152
+ this.windowDelta = 1000;
153
+ this.gcMode = 'content';
154
+ return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
155
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(observer) {
156
+ var _feats$;
157
+
158
+ var sequenceAdapter, hw, f, queryStart, queryEnd, ret, feats, residues, i, r, nc, ng, len, j, pos, score;
159
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
160
+ while (1) {
161
+ switch (_context3.prev = _context3.next) {
162
+ case 0:
163
+ _context3.next = 2;
164
+ return _this2.configure();
165
+
166
+ case 2:
167
+ sequenceAdapter = _context3.sent;
168
+ hw = _this2.windowSize === 1 ? 1 : _this2.windowSize / 2; // Half the window size
169
+
170
+ f = _this2.windowSize === 1;
171
+ queryStart = query.start, queryEnd = query.end;
172
+ queryStart = Math.max(0, queryStart - hw);
173
+ queryEnd += hw;
174
+
175
+ if (!(queryEnd < 0 || queryStart > queryEnd)) {
176
+ _context3.next = 11;
177
+ break;
178
+ }
179
+
180
+ observer.complete();
181
+ return _context3.abrupt("return");
182
+
183
+ case 11:
184
+ ret = sequenceAdapter.getFeatures(_objectSpread(_objectSpread({}, query), {}, {
185
+ start: queryStart,
186
+ end: queryEnd
187
+ }));
188
+ _context3.next = 14;
189
+ return ret.pipe((0, _operators.toArray)()).toPromise();
190
+
191
+ case 14:
192
+ feats = _context3.sent;
193
+ residues = ((_feats$ = feats[0]) === null || _feats$ === void 0 ? void 0 : _feats$.get('seq')) || '';
194
+
195
+ for (i = hw; i < residues.length - hw; i += _this2.windowDelta) {
196
+ r = f ? residues[i] : residues.slice(i - hw, i + hw);
197
+ nc = 0;
198
+ ng = 0;
199
+ len = 0;
200
+
201
+ for (j = 0; j < r.length; j++) {
202
+ if (r[j] === 'c' || r[j] === 'C') {
203
+ nc++;
204
+ } else if (r[j] === 'g' || r[j] === 'G') {
205
+ ng++;
206
+ }
207
+
208
+ if (r[j] !== 'N') {
209
+ len++;
210
+ }
211
+ }
212
+
213
+ pos = queryStart;
214
+ score = void 0;
215
+
216
+ if (_this2.gcMode === 'content') {
217
+ score = (ng + nc) / (len || 1);
218
+ } else if (_this2.gcMode === 'skew') {
219
+ score = (ng - nc) / (ng + nc || 1);
220
+ }
221
+
222
+ observer.next(new _simpleFeature["default"]({
223
+ uniqueId: "".concat(_this2.id, "_").concat(pos + i),
224
+ start: pos + i,
225
+ end: pos + i + _this2.windowDelta,
226
+ score: score
227
+ }));
228
+ }
229
+
230
+ observer.complete();
231
+
232
+ case 18:
233
+ case "end":
234
+ return _context3.stop();
235
+ }
236
+ }
237
+ }, _callee3);
238
+ }));
239
+
240
+ return function (_x) {
241
+ return _ref.apply(this, arguments);
242
+ };
243
+ }());
244
+ }
245
+ /**
246
+ * called to provide a hint that data tied to a certain region
247
+ * will not be needed for the forseeable future and can be purged
248
+ * from caches, etc
249
+ */
250
+
251
+ }, {
252
+ key: "freeResources",
253
+ value: function
254
+ /* { region } */
255
+ freeResources() {}
256
+ }]);
257
+ return _default;
258
+ }(_BaseAdapter.BaseFeatureDataAdapter);
259
+
260
+ exports["default"] = _default;
261
+ (0, _defineProperty2["default"])(_default, "capabilities", ['hasLocalStats']);
@@ -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,18 @@
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 _default = function _default(pluginManager) {
11
+ return (0, _configuration.ConfigurationSchema)('GCContentAdapter', {
12
+ sequenceAdapter: pluginManager.pluggableConfigSchemaType('adapter')
13
+ }, {
14
+ explicitlyTyped: true
15
+ });
16
+ };
17
+
18
+ exports["default"] = _default;
@@ -1,6 +1,6 @@
1
- import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => {
3
- configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
4
- getAdapterClass: () => Promise<typeof import("./GCContentAdapter").default>;
5
- };
6
- export default _default;
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => {
3
+ configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
4
+ getAdapterClass: () => Promise<typeof import("./GCContentAdapter").default>;
5
+ };
6
+ export default _default;
@@ -0,0 +1,31 @@
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 _configSchema = _interopRequireDefault(require("./configSchema"));
13
+
14
+ 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); }
15
+
16
+ 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; }
17
+
18
+ var _default = function _default(pluginManager) {
19
+ return {
20
+ configSchema: pluginManager.load(_configSchema["default"]),
21
+ getAdapterClass: function getAdapterClass() {
22
+ return Promise.resolve().then(function () {
23
+ return _interopRequireWildcard(require('./GCContentAdapter'));
24
+ }).then(function (r) {
25
+ return r["default"];
26
+ });
27
+ }
28
+ };
29
+ };
30
+
31
+ exports["default"] = _default;
@@ -1,25 +1,25 @@
1
- import { IndexedFasta } from '@gmod/indexedfasta';
2
- import { BaseSequenceAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
3
- import { NoAssemblyRegion } from '@jbrowse/core/util/types';
4
- import { Feature } from '@jbrowse/core/util/simpleFeature';
5
- import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema';
6
- import PluginManager from '@jbrowse/core/PluginManager';
7
- import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
8
- export default class extends BaseSequenceAdapter {
9
- protected fasta: IndexedFasta;
10
- private seqCache;
11
- constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
12
- getRefNames(opts?: BaseOptions): Promise<string[]>;
13
- getRegions(opts?: BaseOptions): Promise<{
14
- refName: string;
15
- start: number;
16
- end: number;
17
- }[]>;
18
- getFeatures(region: NoAssemblyRegion, opts?: BaseOptions): import("rxjs").Observable<Feature>;
19
- /**
20
- * called to provide a hint that data tied to a certain region
21
- * will not be needed for the forseeable future and can be purged
22
- * from caches, etc
23
- */
24
- freeResources(): void;
25
- }
1
+ import { IndexedFasta } from '@gmod/indexedfasta';
2
+ import { BaseSequenceAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
3
+ import { NoAssemblyRegion } from '@jbrowse/core/util/types';
4
+ import { Feature } from '@jbrowse/core/util/simpleFeature';
5
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema';
6
+ import PluginManager from '@jbrowse/core/PluginManager';
7
+ import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
8
+ export default class extends BaseSequenceAdapter {
9
+ protected fasta: IndexedFasta;
10
+ private seqCache;
11
+ constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
12
+ getRefNames(opts?: BaseOptions): Promise<string[]>;
13
+ getRegions(opts?: BaseOptions): Promise<{
14
+ refName: string;
15
+ start: number;
16
+ end: number;
17
+ }[]>;
18
+ getFeatures(region: NoAssemblyRegion, opts?: BaseOptions): import("rxjs").Observable<Feature>;
19
+ /**
20
+ * called to provide a hint that data tied to a certain region
21
+ * will not be needed for the forseeable future and can be purged
22
+ * from caches, etc
23
+ */
24
+ freeResources(): void;
25
+ }
@@ -0,0 +1,228 @@
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 _indexedfasta = require("@gmod/indexedfasta");
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 _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
37
+
38
+ var _configuration = require("@jbrowse/core/configuration");
39
+
40
+ var _abortablePromiseCache = _interopRequireDefault(require("abortable-promise-cache"));
41
+
42
+ var _QuickLRU = _interopRequireDefault(require("@jbrowse/core/util/QuickLRU"));
43
+
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
+
46
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
+
48
+ 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); }; }
49
+
50
+ 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; } }
51
+
52
+ var _default = /*#__PURE__*/function (_BaseSequenceAdapter) {
53
+ (0, _inherits2["default"])(_default, _BaseSequenceAdapter);
54
+
55
+ var _super = _createSuper(_default);
56
+
57
+ function _default(config, getSubAdapter, pluginManager) {
58
+ var _this;
59
+
60
+ (0, _classCallCheck2["default"])(this, _default);
61
+ _this = _super.call(this, config, getSubAdapter, pluginManager);
62
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "fasta", void 0);
63
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "seqCache", new _abortablePromiseCache["default"]({
64
+ cache: new _QuickLRU["default"]({
65
+ maxSize: 200
66
+ }),
67
+ fill: function () {
68
+ var _fill = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(args, signal) {
69
+ var refName, start, end;
70
+ return _regenerator["default"].wrap(function _callee$(_context) {
71
+ while (1) {
72
+ switch (_context.prev = _context.next) {
73
+ case 0:
74
+ refName = args.refName, start = args.start, end = args.end;
75
+ return _context.abrupt("return", _this.fasta.getSequence(refName, start, end, _objectSpread(_objectSpread({}, args), {}, {
76
+ signal: signal
77
+ })));
78
+
79
+ case 2:
80
+ case "end":
81
+ return _context.stop();
82
+ }
83
+ }
84
+ }, _callee);
85
+ }));
86
+
87
+ function fill(_x, _x2) {
88
+ return _fill.apply(this, arguments);
89
+ }
90
+
91
+ return fill;
92
+ }()
93
+ }));
94
+ var fastaLocation = (0, _configuration.readConfObject)(config, 'fastaLocation');
95
+ var faiLocation = (0, _configuration.readConfObject)(config, 'faiLocation');
96
+ var fastaOpts = {
97
+ fasta: (0, _io.openLocation)(fastaLocation, _this.pluginManager),
98
+ fai: (0, _io.openLocation)(faiLocation, _this.pluginManager)
99
+ };
100
+ _this.fasta = new _indexedfasta.IndexedFasta(fastaOpts);
101
+ return _this;
102
+ }
103
+
104
+ (0, _createClass2["default"])(_default, [{
105
+ key: "getRefNames",
106
+ value: function getRefNames(opts) {
107
+ return this.fasta.getSequenceNames(opts);
108
+ }
109
+ }, {
110
+ key: "getRegions",
111
+ value: function () {
112
+ var _getRegions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(opts) {
113
+ var seqSizes;
114
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
115
+ while (1) {
116
+ switch (_context2.prev = _context2.next) {
117
+ case 0:
118
+ _context2.next = 2;
119
+ return this.fasta.getSequenceSizes(opts);
120
+
121
+ case 2:
122
+ seqSizes = _context2.sent;
123
+ return _context2.abrupt("return", Object.keys(seqSizes).map(function (refName) {
124
+ return {
125
+ refName: refName,
126
+ start: 0,
127
+ end: seqSizes[refName]
128
+ };
129
+ }));
130
+
131
+ case 4:
132
+ case "end":
133
+ return _context2.stop();
134
+ }
135
+ }
136
+ }, _callee2, this);
137
+ }));
138
+
139
+ function getRegions(_x3) {
140
+ return _getRegions.apply(this, arguments);
141
+ }
142
+
143
+ return getRegions;
144
+ }()
145
+ }, {
146
+ key: "getFeatures",
147
+ value: function getFeatures(region, opts) {
148
+ var _this2 = this;
149
+
150
+ var refName = region.refName,
151
+ start = region.start,
152
+ end = region.end;
153
+ return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
154
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(observer) {
155
+ var size, regionEnd, chunks, chunkSize, s, e, chunkStart, r, seq;
156
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
157
+ while (1) {
158
+ switch (_context3.prev = _context3.next) {
159
+ case 0:
160
+ _context3.next = 2;
161
+ return _this2.fasta.getSequenceSize(refName, opts);
162
+
163
+ case 2:
164
+ size = _context3.sent;
165
+ regionEnd = size !== undefined ? Math.min(size, end) : end;
166
+ chunks = [];
167
+ chunkSize = 128000;
168
+ s = start - start % chunkSize;
169
+ e = end + (chunkSize - end % chunkSize);
170
+
171
+ for (chunkStart = s; chunkStart < e; chunkStart += chunkSize) {
172
+ r = {
173
+ refName: refName,
174
+ start: chunkStart,
175
+ end: chunkStart + chunkSize
176
+ };
177
+ chunks.push(_this2.seqCache.get(JSON.stringify(r), r, opts === null || opts === void 0 ? void 0 : opts.signal));
178
+ }
179
+
180
+ _context3.next = 11;
181
+ return Promise.all(chunks);
182
+
183
+ case 11:
184
+ seq = _context3.sent.join('').slice(start - s).slice(0, end - start);
185
+
186
+ if (seq) {
187
+ observer.next(new _simpleFeature["default"]({
188
+ id: "".concat(refName, " ").concat(start, "-").concat(regionEnd),
189
+ data: {
190
+ refName: refName,
191
+ start: start,
192
+ end: regionEnd,
193
+ seq: seq
194
+ }
195
+ }));
196
+ }
197
+
198
+ observer.complete();
199
+
200
+ case 14:
201
+ case "end":
202
+ return _context3.stop();
203
+ }
204
+ }
205
+ }, _callee3);
206
+ }));
207
+
208
+ return function (_x4) {
209
+ return _ref.apply(this, arguments);
210
+ };
211
+ }());
212
+ }
213
+ /**
214
+ * called to provide a hint that data tied to a certain region
215
+ * will not be needed for the forseeable future and can be purged
216
+ * from caches, etc
217
+ */
218
+
219
+ }, {
220
+ key: "freeResources",
221
+ value: function
222
+ /* { region } */
223
+ freeResources() {}
224
+ }]);
225
+ return _default;
226
+ }(_BaseAdapter.BaseSequenceAdapter);
227
+
228
+ exports["default"] = _default;