@jbrowse/plugin-gtf 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.
@@ -1,22 +1,10 @@
1
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 = (0, _configuration.ConfigurationSchema)('GtfAdapter', {
11
- gtfLocation: {
12
- type: 'fileLocation',
13
- defaultValue: {
14
- uri: '/path/to/my.gtf',
15
- locationType: 'UriLocation'
16
- }
17
- }
18
- }, {
19
- explicitlyTyped: true
20
- });
21
-
22
- exports.default = _default;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var configuration_1 = require("@jbrowse/core/configuration");
4
+ exports.default = (0, configuration_1.ConfigurationSchema)('GtfAdapter', {
5
+ gtfLocation: {
6
+ type: 'fileLocation',
7
+ defaultValue: { uri: '/path/to/my.gtf', locationType: 'UriLocation' },
8
+ },
9
+ }, { explicitlyTyped: true });
10
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/GtfAdapter/configSchema.ts"],"names":[],"mappings":";;AAAA,6DAAiE;AAEjE,kBAAe,IAAA,mCAAmB,EAChC,YAAY,EACZ;IACE,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE;KACtE;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA"}
@@ -1,15 +1,9 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "configSchema", {
9
- enumerable: true,
10
- get: function get() {
11
- return _configSchema.default;
12
- }
13
- });
14
-
15
- var _configSchema = _interopRequireDefault(require("./configSchema"));
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.configSchema = void 0;
7
+ var configSchema_1 = require("./configSchema");
8
+ Object.defineProperty(exports, "configSchema", { enumerable: true, get: function () { return __importDefault(configSchema_1).default; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/GtfAdapter/index.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAwD;AAA/C,6HAAA,OAAO,OAAgB"}
package/dist/index.js CHANGED
@@ -1,101 +1,87 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
9
32
  });
10
- exports.default = void 0;
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _AdapterType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
27
-
28
- var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
29
-
30
- var _GtfAdapter = require("./GtfAdapter");
31
-
32
- var _tracks = require("@jbrowse/core/util/tracks");
33
-
34
- 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); }
35
-
36
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
37
-
38
- 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); }; }
39
-
40
- 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; } }
41
-
42
- var GtfPlugin = /*#__PURE__*/function (_Plugin) {
43
- (0, _inherits2.default)(GtfPlugin, _Plugin);
44
-
45
- var _super = _createSuper(GtfPlugin);
46
-
47
- function GtfPlugin() {
48
- var _this;
49
-
50
- (0, _classCallCheck2.default)(this, GtfPlugin);
51
-
52
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
53
- args[_key] = arguments[_key];
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ var AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
45
+ var Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
46
+ var GtfAdapter_1 = require("./GtfAdapter");
47
+ var tracks_1 = require("@jbrowse/core/util/tracks");
48
+ var GtfPlugin = /** @class */ (function (_super) {
49
+ __extends(GtfPlugin, _super);
50
+ function GtfPlugin() {
51
+ var _this = _super !== null && _super.apply(this, arguments) || this;
52
+ _this.name = 'GTFPlugin';
53
+ return _this;
54
54
  }
55
-
56
- _this = _super.call.apply(_super, [this].concat(args));
57
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "name", 'GTFPlugin');
58
- return _this;
59
- }
60
-
61
- (0, _createClass2.default)(GtfPlugin, [{
62
- key: "install",
63
- value: function install(pluginManager) {
64
- pluginManager.addAdapterType(function () {
65
- return new _AdapterType.default({
66
- name: 'GtfAdapter',
67
- configSchema: _GtfAdapter.configSchema,
68
- getAdapterClass: function getAdapterClass() {
69
- return Promise.resolve().then(function () {
70
- return _interopRequireWildcard(require('./GtfAdapter/GtfAdapter'));
71
- }).then(function (r) {
72
- return r.default;
55
+ GtfPlugin.prototype.install = function (pluginManager) {
56
+ pluginManager.addAdapterType(function () {
57
+ return new AdapterType_1.default({
58
+ name: 'GtfAdapter',
59
+ configSchema: GtfAdapter_1.configSchema,
60
+ getAdapterClass: function () {
61
+ return Promise.resolve().then(function () { return __importStar(require('./GtfAdapter/GtfAdapter')); }).then(function (r) { return r.default; });
62
+ },
73
63
  });
74
- }
75
64
  });
76
- });
77
- pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
78
- return function (file, index, adapterHint) {
79
- var regexGuess = /\.gtf(\.gz)?$/i;
80
- var adapterName = 'GtfAdapter';
81
- var fileName = (0, _tracks.getFileName)(file);
82
- var obj = {
83
- type: adapterName,
84
- gtfLocation: file
85
- };
86
-
87
- if (regexGuess.test(fileName) && !adapterHint) {
88
- return obj;
89
- } else if (adapterHint === adapterName) {
90
- return obj;
91
- }
92
-
93
- return adapterGuesser(file, index, adapterHint);
94
- };
95
- });
96
- }
97
- }]);
98
- return GtfPlugin;
99
- }(_Plugin2.default);
100
-
101
- exports.default = GtfPlugin;
65
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
66
+ return function (file, index, adapterHint) {
67
+ var regexGuess = /\.gtf(\.gz)?$/i;
68
+ var adapterName = 'GtfAdapter';
69
+ var fileName = (0, tracks_1.getFileName)(file);
70
+ var obj = {
71
+ type: adapterName,
72
+ gtfLocation: file,
73
+ };
74
+ if (regexGuess.test(fileName) && !adapterHint) {
75
+ return obj;
76
+ }
77
+ else if (adapterHint === adapterName) {
78
+ return obj;
79
+ }
80
+ return adapterGuesser(file, index, adapterHint);
81
+ };
82
+ });
83
+ };
84
+ return GtfPlugin;
85
+ }(Plugin_1.default));
86
+ exports.default = GtfPlugin;
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gGAAyE;AAEzE,gEAAyC;AACzC,2CAAqE;AAErE,oDAAuE;AAEvE;IAAuC,6BAAM;IAA7C;QAAA,qEAuCC;QAtCC,UAAI,GAAG,WAAW,CAAA;;IAsCpB,CAAC;IApCC,2BAAO,GAAP,UAAQ,aAA4B;QAClC,aAAa,CAAC,cAAc,CAC1B;YACE,OAAA,IAAI,qBAAW,CAAC;gBACd,IAAI,EAAE,YAAY;gBAClB,YAAY,EAAE,yBAAsB;gBACpC,eAAe,EAAE;oBACf,OAAA,iEAAO,yBAAyB,OAAE,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,EAAT,CAAS,CAAC;gBAAtD,CAAsD;aACzD,CAAC;QALF,CAKE,CACL,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,UAAC,cAA8B;YAC7B,OAAO,UACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB;gBAEpB,IAAM,UAAU,GAAG,gBAAgB,CAAA;gBACnC,IAAM,WAAW,GAAG,YAAY,CAAA;gBAChC,IAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAA;gBAElC,IAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,IAAI;iBAClB,CAAA;gBACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC;IACH,gBAAC;AAAD,CAAC,AAvCD,CAAuC,gBAAM,GAuC5C"}
package/dist/util.js CHANGED
@@ -1,87 +1,77 @@
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.featureData = featureData;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- 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; }
13
-
14
- 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; }
15
-
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.featureData = void 0;
16
15
  function featureData(data) {
17
- var f = _objectSpread({}, data);
18
-
19
- f.start -= 1; // convert to interbase
20
-
21
- f.strand = {
22
- '+': 1,
23
- '-': -1,
24
- '.': 0,
25
- '?': undefined
26
- }[data.strand]; // convert strand
27
-
28
- f.phase = Number(data.frame);
29
- f.refName = data.seq_name;
30
-
31
- if (data.score === null) {
32
- delete f.score;
33
- }
34
-
35
- if (data.frame === null) {
36
- delete f.score;
37
- }
38
-
39
- var defaultFields = ['start', 'end', 'seq_name', 'score', 'featureType', 'source', 'frame', 'strand'];
40
- Object.keys(data.attributes).forEach(function (a) {
41
- var b = a.toLowerCase();
42
-
43
- if (defaultFields.includes(b)) {
44
- // add "suffix" to tag name if it already exists
45
- // reproduces behavior of NCList
46
- b += '2';
16
+ var f = __assign({}, data);
17
+ f.start -= 1; // convert to interbase
18
+ f.strand = { '+': 1, '-': -1, '.': 0, '?': undefined }[data.strand]; // convert strand
19
+ f.phase = Number(data.frame);
20
+ f.refName = data.seq_name;
21
+ if (data.score === null) {
22
+ delete f.score;
23
+ }
24
+ if (data.frame === null) {
25
+ delete f.score;
47
26
  }
48
-
49
- if (data.attributes[a] !== null) {
50
- var attr = data.attributes[a];
51
-
52
- if (Array.isArray(attr) && attr.length === 1) {
53
- // gtf uses double quotes for text values in the attributes column, remove them
54
- var formattedAttr = attr[0].replace(/^"|"$/g, '');
55
- attr = formattedAttr;
56
- }
57
-
58
- f[b] = attr;
27
+ var defaultFields = [
28
+ 'start',
29
+ 'end',
30
+ 'seq_name',
31
+ 'score',
32
+ 'featureType',
33
+ 'source',
34
+ 'frame',
35
+ 'strand',
36
+ ];
37
+ Object.keys(data.attributes).forEach(function (a) {
38
+ var b = a.toLowerCase();
39
+ if (defaultFields.includes(b)) {
40
+ // add "suffix" to tag name if it already exists
41
+ // reproduces behavior of NCList
42
+ b += '2';
43
+ }
44
+ if (data.attributes[a] !== null) {
45
+ var attr = data.attributes[a];
46
+ if (Array.isArray(attr) && attr.length === 1) {
47
+ // gtf uses double quotes for text values in the attributes column, remove them
48
+ var formattedAttr = attr[0].replace(/^"|"$/g, '');
49
+ attr = formattedAttr;
50
+ }
51
+ f[b] = attr;
52
+ }
53
+ });
54
+ f.refName = f.seq_name;
55
+ f.type = f.featureType;
56
+ // the SimpleFeature constructor takes care of recursively inflating subfeatures
57
+ if (data.child_features && data.child_features.length) {
58
+ f.subfeatures = data.child_features
59
+ .map(function (childLocs) { return childLocs.map(function (childLoc) { return featureData(childLoc); }); })
60
+ .flat();
59
61
  }
60
- });
61
- f.refName = f.seq_name;
62
- f.type = f.featureType; // the SimpleFeature constructor takes care of recursively inflating subfeatures
63
-
64
- if (data.child_features && data.child_features.length) {
65
- f.subfeatures = data.child_features.map(function (childLocs) {
66
- return childLocs.map(function (childLoc) {
67
- return featureData(childLoc);
68
- });
69
- }).flat();
70
- }
71
-
72
- delete f.child_features;
73
- delete f.data;
74
- delete f.derived_features; // eslint-disable-next-line no-underscore-dangle
75
-
76
- delete f._linehash;
77
- delete f.attributes;
78
- delete f.seq_name;
79
- delete f.featureType;
80
- delete f.frame;
81
-
82
- if (f.transcript_id) {
83
- f.name = f.transcript_id;
84
- }
85
-
86
- return f;
87
- }
62
+ delete f.child_features;
63
+ delete f.data;
64
+ delete f.derived_features;
65
+ // eslint-disable-next-line no-underscore-dangle
66
+ delete f._linehash;
67
+ delete f.attributes;
68
+ delete f.seq_name;
69
+ delete f.featureType;
70
+ delete f.frame;
71
+ if (f.transcript_id) {
72
+ f.name = f.transcript_id;
73
+ }
74
+ return f;
75
+ }
76
+ exports.featureData = featureData;
77
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import { NoAssemblyRegion } from '@jbrowse/core/util/types';
3
+ import IntervalTree from '@flatten-js/interval-tree';
4
+ import { Feature } from '@jbrowse/core/util/simpleFeature';
5
+ export default class extends BaseFeatureDataAdapter {
6
+ protected gtfFeatures?: Promise<{
7
+ feats: {
8
+ [key: string]: string[];
9
+ };
10
+ }>;
11
+ protected intervalTrees: {
12
+ [key: string]: Promise<IntervalTree | undefined> | undefined;
13
+ };
14
+ private loadDataP;
15
+ private loadData;
16
+ getRefNames(opts?: BaseOptions): Promise<string[]>;
17
+ private loadFeatureIntervalTreeHelper;
18
+ private loadFeatureIntervalTree;
19
+ getFeatures(query: NoAssemblyRegion, opts?: BaseOptions): import("rxjs").Observable<Feature>;
20
+ freeResources(): void;
21
+ }
@@ -0,0 +1,102 @@
1
+ import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import { openLocation } from '@jbrowse/core/util/io';
3
+ import { ObservableCreate } from '@jbrowse/core/util/rxjs';
4
+ import IntervalTree from '@flatten-js/interval-tree';
5
+ import SimpleFeature from '@jbrowse/core/util/simpleFeature';
6
+ import { unzip } from '@gmod/bgzf-filehandle';
7
+ import gtf from '@gmod/gtf';
8
+ import { featureData } from '../util';
9
+ function isGzip(buf) {
10
+ return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
11
+ }
12
+ export default class extends BaseFeatureDataAdapter {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.intervalTrees = {};
16
+ }
17
+ async loadDataP(opts = {}) {
18
+ const gtfLoc = this.getConf('gtfLocation');
19
+ const buffer = await openLocation(gtfLoc, this.pluginManager).readFile(opts);
20
+ const buf = isGzip(buffer) ? await unzip(buffer) : buffer;
21
+ // 512MB max chrome string length is 512MB
22
+ if (buf.length > 536870888) {
23
+ throw new Error('Data exceeds maximum string length (512MB)');
24
+ }
25
+ const data = new TextDecoder('utf8', { fatal: true }).decode(buf);
26
+ const lines = data.split('\n').filter(f => !!f && !f.startsWith('#'));
27
+ const feats = {};
28
+ for (let i = 0; i < lines.length; i++) {
29
+ const line = lines[i];
30
+ if (line.startsWith('#')) {
31
+ continue;
32
+ }
33
+ const tab = line.indexOf('\t');
34
+ const refName = line.slice(0, tab);
35
+ if (!feats[refName]) {
36
+ feats[refName] = [];
37
+ }
38
+ feats[refName].push(lines[i]);
39
+ }
40
+ return { feats };
41
+ }
42
+ async loadData(opts = {}) {
43
+ if (!this.gtfFeatures) {
44
+ this.gtfFeatures = this.loadDataP(opts).catch(e => {
45
+ this.gtfFeatures = undefined;
46
+ throw e;
47
+ });
48
+ }
49
+ return this.gtfFeatures;
50
+ }
51
+ async getRefNames(opts = {}) {
52
+ const { feats } = await this.loadData(opts);
53
+ return Object.keys(feats);
54
+ }
55
+ async loadFeatureIntervalTreeHelper(refName) {
56
+ const { feats } = await this.loadData();
57
+ const lines = feats[refName];
58
+ if (!lines) {
59
+ return undefined;
60
+ }
61
+ const data = gtf.parseStringSync(lines.join('\n'), {
62
+ parseFeatures: true,
63
+ parseComments: false,
64
+ parseDirectives: false,
65
+ parseSequences: false,
66
+ });
67
+ const intervalTree = new IntervalTree();
68
+ const ret = data.flat().map((f, i) => new SimpleFeature({
69
+ data: featureData(f),
70
+ id: `${this.id}-${refName}-${i}`,
71
+ }));
72
+ for (let i = 0; i < ret.length; i++) {
73
+ const obj = ret[i];
74
+ intervalTree.insert([obj.get('start'), obj.get('end')], obj);
75
+ }
76
+ return intervalTree;
77
+ }
78
+ async loadFeatureIntervalTree(refName) {
79
+ if (!this.intervalTrees[refName]) {
80
+ this.intervalTrees[refName] = this.loadFeatureIntervalTreeHelper(refName).catch(e => {
81
+ this.intervalTrees[refName] = undefined;
82
+ throw e;
83
+ });
84
+ }
85
+ return this.intervalTrees[refName];
86
+ }
87
+ getFeatures(query, opts = {}) {
88
+ return ObservableCreate(async (observer) => {
89
+ try {
90
+ const { start, end, refName } = query;
91
+ const intervalTree = await this.loadFeatureIntervalTree(refName);
92
+ intervalTree === null || intervalTree === void 0 ? void 0 : intervalTree.search([start, end]).forEach(f => observer.next(f));
93
+ observer.complete();
94
+ }
95
+ catch (e) {
96
+ observer.error(e);
97
+ }
98
+ }, opts.signal);
99
+ }
100
+ freeResources( /* { region } */) { }
101
+ }
102
+ //# sourceMappingURL=GtfAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GtfAdapter.js","sourceRoot":"","sources":["../../src/GtfAdapter/GtfAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ export default ConfigurationSchema('GtfAdapter', {
3
+ gtfLocation: {
4
+ type: 'fileLocation',
5
+ defaultValue: { uri: '/path/to/my.gtf', locationType: 'UriLocation' },
6
+ },
7
+ }, { explicitlyTyped: true });
8
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/GtfAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,mBAAmB,CAChC,YAAY,EACZ;IACE,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE;KACtE;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA"}
@@ -0,0 +1 @@
1
+ export { default as configSchema } from './configSchema';
@@ -0,0 +1,2 @@
1
+ export { default as configSchema } from './configSchema';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/GtfAdapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ import Plugin from '@jbrowse/core/Plugin';
3
+ export default class GtfPlugin extends Plugin {
4
+ name: string;
5
+ install(pluginManager: PluginManager): void;
6
+ }
package/esm/index.js ADDED
@@ -0,0 +1,36 @@
1
+ import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
2
+ import Plugin from '@jbrowse/core/Plugin';
3
+ import { configSchema as gtfAdapterConfigSchema } from './GtfAdapter';
4
+ import { getFileName } from '@jbrowse/core/util/tracks';
5
+ export default class GtfPlugin extends Plugin {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.name = 'GTFPlugin';
9
+ }
10
+ install(pluginManager) {
11
+ pluginManager.addAdapterType(() => new AdapterType({
12
+ name: 'GtfAdapter',
13
+ configSchema: gtfAdapterConfigSchema,
14
+ getAdapterClass: () => import('./GtfAdapter/GtfAdapter').then(r => r.default),
15
+ }));
16
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
17
+ return (file, index, adapterHint) => {
18
+ const regexGuess = /\.gtf(\.gz)?$/i;
19
+ const adapterName = 'GtfAdapter';
20
+ const fileName = getFileName(file);
21
+ const obj = {
22
+ type: adapterName,
23
+ gtfLocation: file,
24
+ };
25
+ if (regexGuess.test(fileName) && !adapterHint) {
26
+ return obj;
27
+ }
28
+ else if (adapterHint === adapterName) {
29
+ return obj;
30
+ }
31
+ return adapterGuesser(file, index, adapterHint);
32
+ };
33
+ });
34
+ }
35
+ }
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,iDAAiD,CAAA;AAEzE,OAAO,MAAM,MAAM,sBAAsB,CAAA;AACzC,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErE,OAAO,EAAkB,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvE,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,MAAM;IAA7C;;QACE,SAAI,GAAG,WAAW,CAAA;IAsCpB,CAAC;IApCC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,sBAAsB;YACpC,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SACzD,CAAC,CACL,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,gBAAgB,CAAA;gBACnC,MAAM,WAAW,GAAG,YAAY,CAAA;gBAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAElC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,IAAI;iBAClB,CAAA;gBACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC;CACF"}