@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.
- package/dist/GtfAdapter/GtfAdapter.js +216 -397
- package/dist/GtfAdapter/GtfAdapter.js.map +1 -0
- package/dist/GtfAdapter/configSchema.js +9 -21
- package/dist/GtfAdapter/configSchema.js.map +1 -0
- package/dist/GtfAdapter/index.js +8 -14
- package/dist/GtfAdapter/index.js.map +1 -0
- package/dist/index.js +82 -96
- package/dist/index.js.map +1 -0
- package/dist/util.js +73 -83
- package/dist/util.js.map +1 -0
- package/esm/GtfAdapter/GtfAdapter.d.ts +21 -0
- package/esm/GtfAdapter/GtfAdapter.js +102 -0
- package/esm/GtfAdapter/GtfAdapter.js.map +1 -0
- package/esm/GtfAdapter/configSchema.d.ts +2 -0
- package/esm/GtfAdapter/configSchema.js +8 -0
- package/esm/GtfAdapter/configSchema.js.map +1 -0
- package/esm/GtfAdapter/index.d.ts +1 -0
- package/esm/GtfAdapter/index.js +2 -0
- package/esm/GtfAdapter/index.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.js +36 -0
- package/esm/index.js.map +1 -0
- package/esm/util.d.ts +15 -0
- package/esm/util.js +62 -0
- package/esm/util.js.map +1 -0
- package/package.json +18 -10
- package/dist/GtfAdapter/GtfAdapter.test.js +0 -127
- package/dist/declare.d.js +0 -1
|
@@ -1,22 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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"}
|
package/dist/GtfAdapter/index.js
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "configSchema", {
|
|
9
|
-
|
|
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
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
f.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
package/dist/util.js.map
ADDED
|
@@ -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,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 @@
|
|
|
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
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
|
package/esm/index.js.map
ADDED
|
@@ -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"}
|