@jbrowse/plugin-config 1.6.7 → 1.7.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/ConfigurationEditorWidget/components/CallbackEditor.js +123 -0
- package/dist/ConfigurationEditorWidget/components/CodeEditor.js +77 -0
- package/dist/ConfigurationEditorWidget/components/ColorEditor.js +125 -0
- package/dist/ConfigurationEditorWidget/components/ColorEditor.test.js +31 -0
- package/dist/ConfigurationEditorWidget/components/ColorPicker.js +72 -0
- package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.js +176 -0
- package/dist/ConfigurationEditorWidget/components/ConfigurationEditor.test.js +121 -0
- package/dist/ConfigurationEditorWidget/components/JsonEditor.js +82 -0
- package/dist/ConfigurationEditorWidget/components/SlotEditor.js +438 -0
- package/dist/ConfigurationEditorWidget/components/TypeSelector.js +48 -0
- package/dist/ConfigurationEditorWidget/index.js +45 -0
- package/dist/ConfigurationEditorWidget/model.js +28 -0
- package/dist/FromConfigAdapter/FromConfigAdapter.js +215 -0
- package/dist/FromConfigAdapter/FromConfigAdapter.test.js +100 -0
- package/dist/FromConfigAdapter/FromConfigRegionsAdapter.js +154 -0
- package/dist/FromConfigAdapter/FromConfigRegionsAdapter.test.js +200 -0
- package/dist/FromConfigAdapter/FromConfigSequenceAdapter.js +201 -0
- package/dist/FromConfigAdapter/FromConfigSequenceAdapter.test.js +110 -0
- package/dist/FromConfigAdapter/configSchema.js +51 -0
- package/dist/FromConfigAdapter/index.js +51 -0
- package/dist/RefNameAliasAdapter/RefNameAliasAdapter.js +125 -0
- package/dist/RefNameAliasAdapter/RefNameAliasAdapter.test.js +41 -0
- package/dist/RefNameAliasAdapter/configSchema.js +26 -0
- package/dist/RefNameAliasAdapter/index.js +23 -0
- package/dist/index.js +150 -6
- package/dist/index.test.js +41 -0
- package/package.json +3 -6
- package/src/ConfigurationEditorWidget/components/ConfigurationEditor.js +22 -17
- package/src/ConfigurationEditorWidget/components/JsonEditor.js +1 -2
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.configSchema = exports.HeadingComponent = void 0;
|
|
9
|
+
Object.defineProperty(exports, "stateModelFactory", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function get() {
|
|
12
|
+
return _model["default"];
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
var _mobxReact = require("mobx-react");
|
|
17
|
+
|
|
18
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
19
|
+
|
|
20
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
21
|
+
|
|
22
|
+
var _model = _interopRequireDefault(require("./model"));
|
|
23
|
+
|
|
24
|
+
var configSchema = (0, _configuration.ConfigurationSchema)('ConfigurationEditorWidget', {});
|
|
25
|
+
exports.configSchema = configSchema;
|
|
26
|
+
var HeadingComponent = (0, _mobxReact.observer)(function (_ref) {
|
|
27
|
+
var model = _ref.model;
|
|
28
|
+
|
|
29
|
+
if (model && model.target) {
|
|
30
|
+
if (model.target.type) {
|
|
31
|
+
return "".concat(model.target.type, " settings");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if ((0, _mobxStateTree.isStateTreeNode)(model.target)) {
|
|
35
|
+
var type = (0, _mobxStateTree.getType)(model.target);
|
|
36
|
+
|
|
37
|
+
if (type && type.name) {
|
|
38
|
+
return "".concat(type.name.replace('ConfigurationSchema', ''), " settings");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return 'Settings';
|
|
44
|
+
});
|
|
45
|
+
exports.HeadingComponent = HeadingComponent;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
9
|
+
|
|
10
|
+
var _mst = require("@jbrowse/core/util/types/mst");
|
|
11
|
+
|
|
12
|
+
var _default = function _default(pluginManager) {
|
|
13
|
+
return _mobxStateTree.types.model('ConfigurationEditorWidget', {
|
|
14
|
+
id: _mst.ElementId,
|
|
15
|
+
type: _mobxStateTree.types.literal('ConfigurationEditorWidget'),
|
|
16
|
+
// If you add different types of targets, don't forget to account for that
|
|
17
|
+
// in the key of ./components/ConfigurationEditor.js
|
|
18
|
+
target: _mobxStateTree.types.safeReference(pluginManager.pluggableConfigSchemaType('track'))
|
|
19
|
+
}).actions(function (self) {
|
|
20
|
+
return {
|
|
21
|
+
setTarget: function setTarget(newTarget) {
|
|
22
|
+
self.target = newTarget;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,215 @@
|
|
|
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
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 _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
|
|
33
|
+
|
|
34
|
+
var _rxjs = require("@jbrowse/core/util/rxjs");
|
|
35
|
+
|
|
36
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
37
|
+
|
|
38
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
39
|
+
|
|
40
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
41
|
+
|
|
42
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
43
|
+
|
|
44
|
+
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); }; }
|
|
45
|
+
|
|
46
|
+
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; } }
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Adapter that just returns the features defined in its `features` configuration
|
|
50
|
+
* key, like:
|
|
51
|
+
* `"features": [ { "refName": "ctgA", "start":1, "end":20 }, ... ]`
|
|
52
|
+
*/
|
|
53
|
+
var FromConfigAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
|
|
54
|
+
(0, _inherits2["default"])(FromConfigAdapter, _BaseFeatureDataAdapt);
|
|
55
|
+
|
|
56
|
+
var _super = _createSuper(FromConfigAdapter);
|
|
57
|
+
|
|
58
|
+
function FromConfigAdapter(conf, getSubAdapter, pluginManager) {
|
|
59
|
+
var _this;
|
|
60
|
+
|
|
61
|
+
(0, _classCallCheck2["default"])(this, FromConfigAdapter);
|
|
62
|
+
_this = _super.call(this, conf, getSubAdapter, pluginManager);
|
|
63
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "features", void 0);
|
|
64
|
+
var feats = (0, _configuration.readConfObject)(conf, 'features');
|
|
65
|
+
_this.features = FromConfigAdapter.makeFeatures(feats || []);
|
|
66
|
+
return _this;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
(0, _createClass2["default"])(FromConfigAdapter, [{
|
|
70
|
+
key: "getRefNames",
|
|
71
|
+
value: function () {
|
|
72
|
+
var _getRefNames = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
73
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
74
|
+
while (1) {
|
|
75
|
+
switch (_context.prev = _context.next) {
|
|
76
|
+
case 0:
|
|
77
|
+
return _context.abrupt("return", (0, _toConsumableArray2["default"])(this.features.keys()));
|
|
78
|
+
|
|
79
|
+
case 1:
|
|
80
|
+
case "end":
|
|
81
|
+
return _context.stop();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}, _callee, this);
|
|
85
|
+
}));
|
|
86
|
+
|
|
87
|
+
function getRefNames() {
|
|
88
|
+
return _getRefNames.apply(this, arguments);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return getRefNames;
|
|
92
|
+
}()
|
|
93
|
+
}, {
|
|
94
|
+
key: "getRefNameAliases",
|
|
95
|
+
value: function () {
|
|
96
|
+
var _getRefNameAliases = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
97
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
98
|
+
while (1) {
|
|
99
|
+
switch (_context2.prev = _context2.next) {
|
|
100
|
+
case 0:
|
|
101
|
+
return _context2.abrupt("return", Array.from(this.features.values()).map(function (featureArray) {
|
|
102
|
+
return {
|
|
103
|
+
refName: featureArray[0].get('refName'),
|
|
104
|
+
aliases: featureArray[0].get('aliases')
|
|
105
|
+
};
|
|
106
|
+
}));
|
|
107
|
+
|
|
108
|
+
case 1:
|
|
109
|
+
case "end":
|
|
110
|
+
return _context2.stop();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}, _callee2, this);
|
|
114
|
+
}));
|
|
115
|
+
|
|
116
|
+
function getRefNameAliases() {
|
|
117
|
+
return _getRefNameAliases.apply(this, arguments);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return getRefNameAliases;
|
|
121
|
+
}()
|
|
122
|
+
}, {
|
|
123
|
+
key: "getFeatures",
|
|
124
|
+
value: function getFeatures(region) {
|
|
125
|
+
var _this2 = this;
|
|
126
|
+
|
|
127
|
+
var refName = region.refName,
|
|
128
|
+
start = region.start,
|
|
129
|
+
end = region.end;
|
|
130
|
+
return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
|
|
131
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(observer) {
|
|
132
|
+
var features, i, f;
|
|
133
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
134
|
+
while (1) {
|
|
135
|
+
switch (_context3.prev = _context3.next) {
|
|
136
|
+
case 0:
|
|
137
|
+
features = _this2.features.get(refName) || [];
|
|
138
|
+
|
|
139
|
+
for (i = 0; i < features.length; i++) {
|
|
140
|
+
f = features[i];
|
|
141
|
+
|
|
142
|
+
if (f.get('end') > start && f.get('start') < end) {
|
|
143
|
+
observer.next(f);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
observer.complete();
|
|
148
|
+
|
|
149
|
+
case 3:
|
|
150
|
+
case "end":
|
|
151
|
+
return _context3.stop();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}, _callee3);
|
|
155
|
+
}));
|
|
156
|
+
|
|
157
|
+
return function (_x) {
|
|
158
|
+
return _ref.apply(this, arguments);
|
|
159
|
+
};
|
|
160
|
+
}());
|
|
161
|
+
}
|
|
162
|
+
}, {
|
|
163
|
+
key: "freeResources",
|
|
164
|
+
value: function
|
|
165
|
+
/* { region } */
|
|
166
|
+
freeResources() {}
|
|
167
|
+
}], [{
|
|
168
|
+
key: "makeFeatures",
|
|
169
|
+
value: function makeFeatures(fdata) {
|
|
170
|
+
var features = new Map();
|
|
171
|
+
|
|
172
|
+
for (var i = 0; i < fdata.length; i += 1) {
|
|
173
|
+
if (fdata[i]) {
|
|
174
|
+
var f = this.makeFeature(fdata[i]);
|
|
175
|
+
var refName = f.get('refName');
|
|
176
|
+
var bucket = features.get(refName);
|
|
177
|
+
|
|
178
|
+
if (!bucket) {
|
|
179
|
+
bucket = [];
|
|
180
|
+
features.set(refName, bucket);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
bucket.push(f);
|
|
184
|
+
}
|
|
185
|
+
} // sort the features on each reference sequence by start coordinate
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
var _iterator = _createForOfIteratorHelper(features.values()),
|
|
189
|
+
_step;
|
|
190
|
+
|
|
191
|
+
try {
|
|
192
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
193
|
+
var refFeatures = _step.value;
|
|
194
|
+
refFeatures.sort(function (a, b) {
|
|
195
|
+
return a.get('start') - b.get('start');
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
} catch (err) {
|
|
199
|
+
_iterator.e(err);
|
|
200
|
+
} finally {
|
|
201
|
+
_iterator.f();
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return features;
|
|
205
|
+
}
|
|
206
|
+
}, {
|
|
207
|
+
key: "makeFeature",
|
|
208
|
+
value: function makeFeature(data) {
|
|
209
|
+
return new _simpleFeature["default"](data);
|
|
210
|
+
}
|
|
211
|
+
}]);
|
|
212
|
+
return FromConfigAdapter;
|
|
213
|
+
}(_BaseAdapter.BaseFeatureDataAdapter);
|
|
214
|
+
|
|
215
|
+
exports["default"] = FromConfigAdapter;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
9
|
+
var _operators = require("rxjs/operators");
|
|
10
|
+
|
|
11
|
+
var _FromConfigAdapter = _interopRequireDefault(require("./FromConfigAdapter"));
|
|
12
|
+
|
|
13
|
+
var _configSchema = require("./configSchema");
|
|
14
|
+
|
|
15
|
+
test('adapter can fetch features', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
16
|
+
var features, adapter, result, featuresArray;
|
|
17
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
18
|
+
while (1) {
|
|
19
|
+
switch (_context.prev = _context.next) {
|
|
20
|
+
case 0:
|
|
21
|
+
features = [{
|
|
22
|
+
uniqueId: 'one',
|
|
23
|
+
refName: 'ctgA',
|
|
24
|
+
start: 20,
|
|
25
|
+
end: 40
|
|
26
|
+
}, {
|
|
27
|
+
uniqueId: 'two',
|
|
28
|
+
refName: 'ctgB',
|
|
29
|
+
start: 50,
|
|
30
|
+
end: 60
|
|
31
|
+
}];
|
|
32
|
+
adapter = new _FromConfigAdapter["default"](_configSchema.configSchema.create({
|
|
33
|
+
features: features
|
|
34
|
+
}));
|
|
35
|
+
result = adapter.getFeatures({
|
|
36
|
+
refName: 'ctgA',
|
|
37
|
+
start: 0,
|
|
38
|
+
end: 20000
|
|
39
|
+
});
|
|
40
|
+
_context.next = 5;
|
|
41
|
+
return result.pipe((0, _operators.toArray)()).toPromise();
|
|
42
|
+
|
|
43
|
+
case 5:
|
|
44
|
+
featuresArray = _context.sent;
|
|
45
|
+
expect(featuresArray.length).toBe(1);
|
|
46
|
+
expect(featuresArray[0].toJSON()).toEqual(features[0]);
|
|
47
|
+
|
|
48
|
+
case 8:
|
|
49
|
+
case "end":
|
|
50
|
+
return _context.stop();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}, _callee);
|
|
54
|
+
})));
|
|
55
|
+
test('adapter can fetch features with subfeatures', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
56
|
+
var features, adapter, result, featuresArray;
|
|
57
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
58
|
+
while (1) {
|
|
59
|
+
switch (_context2.prev = _context2.next) {
|
|
60
|
+
case 0:
|
|
61
|
+
features = [{
|
|
62
|
+
refName: 'ctgA',
|
|
63
|
+
uniqueId: 'feat1',
|
|
64
|
+
start: 200,
|
|
65
|
+
end: 750,
|
|
66
|
+
name: 'Feature1',
|
|
67
|
+
subfeatures: [{
|
|
68
|
+
uniqueId: 'feat2',
|
|
69
|
+
start: 225,
|
|
70
|
+
end: 300,
|
|
71
|
+
name: 'Feature2'
|
|
72
|
+
}, {
|
|
73
|
+
uniqueId: 'feat3',
|
|
74
|
+
start: 400,
|
|
75
|
+
end: 600,
|
|
76
|
+
name: 'Feature3'
|
|
77
|
+
}]
|
|
78
|
+
}];
|
|
79
|
+
adapter = new _FromConfigAdapter["default"](_configSchema.configSchema.create({
|
|
80
|
+
features: features
|
|
81
|
+
}));
|
|
82
|
+
result = adapter.getFeatures({
|
|
83
|
+
refName: 'ctgA',
|
|
84
|
+
start: 0,
|
|
85
|
+
end: 20000
|
|
86
|
+
});
|
|
87
|
+
_context2.next = 5;
|
|
88
|
+
return result.pipe((0, _operators.toArray)()).toPromise();
|
|
89
|
+
|
|
90
|
+
case 5:
|
|
91
|
+
featuresArray = _context2.sent;
|
|
92
|
+
expect(featuresArray.length).toBe(1);
|
|
93
|
+
|
|
94
|
+
case 7:
|
|
95
|
+
case "end":
|
|
96
|
+
return _context2.stop();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, _callee2);
|
|
100
|
+
})));
|
|
@@ -0,0 +1,154 @@
|
|
|
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 _BaseAdapter2 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
31
|
+
|
|
32
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
33
|
+
|
|
34
|
+
var _FromConfigAdapter = _interopRequireDefault(require("./FromConfigAdapter"));
|
|
35
|
+
|
|
36
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
37
|
+
|
|
38
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
39
|
+
|
|
40
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
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
|
+
/**
|
|
47
|
+
* Adapter that just returns the features defined in its `features` configuration
|
|
48
|
+
* key, like:
|
|
49
|
+
* `"features": [ { "refName": "ctgA", "start":1, "end":20 }, ... ]`
|
|
50
|
+
*/
|
|
51
|
+
var FromConfigRegionsAdapter = /*#__PURE__*/function (_BaseAdapter) {
|
|
52
|
+
(0, _inherits2["default"])(FromConfigRegionsAdapter, _BaseAdapter);
|
|
53
|
+
|
|
54
|
+
var _super = _createSuper(FromConfigRegionsAdapter);
|
|
55
|
+
|
|
56
|
+
function FromConfigRegionsAdapter(config, getSubAdapter, pluginManager) {
|
|
57
|
+
var _this;
|
|
58
|
+
|
|
59
|
+
(0, _classCallCheck2["default"])(this, FromConfigRegionsAdapter);
|
|
60
|
+
_this = _super.call(this, config, getSubAdapter, pluginManager);
|
|
61
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "features", void 0);
|
|
62
|
+
var features = (0, _configuration.readConfObject)(config, 'features');
|
|
63
|
+
_this.features = _FromConfigAdapter["default"].makeFeatures(features || []);
|
|
64
|
+
return _this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get refName, start, and end for all features after collapsing any overlaps
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
(0, _createClass2["default"])(FromConfigRegionsAdapter, [{
|
|
72
|
+
key: "getRegions",
|
|
73
|
+
value: function () {
|
|
74
|
+
var _getRegions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
75
|
+
var regions, _iterator, _step, _step$value, refName, features, currentRegion, _iterator2, _step2, feature;
|
|
76
|
+
|
|
77
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
78
|
+
while (1) {
|
|
79
|
+
switch (_context.prev = _context.next) {
|
|
80
|
+
case 0:
|
|
81
|
+
regions = []; // recall: features are stored in this object sorted by start coordinate
|
|
82
|
+
|
|
83
|
+
_iterator = _createForOfIteratorHelper(this.features);
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
87
|
+
_step$value = (0, _slicedToArray2["default"])(_step.value, 2), refName = _step$value[0], features = _step$value[1];
|
|
88
|
+
currentRegion = void 0;
|
|
89
|
+
_iterator2 = _createForOfIteratorHelper(features);
|
|
90
|
+
|
|
91
|
+
try {
|
|
92
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
93
|
+
feature = _step2.value;
|
|
94
|
+
|
|
95
|
+
if (currentRegion && currentRegion.end >= feature.get('start') && currentRegion.start <= feature.get('end')) {
|
|
96
|
+
currentRegion.end = feature.get('end');
|
|
97
|
+
} else {
|
|
98
|
+
if (currentRegion) {
|
|
99
|
+
regions.push(currentRegion);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
currentRegion = {
|
|
103
|
+
refName: refName,
|
|
104
|
+
start: feature.get('start'),
|
|
105
|
+
end: feature.get('end')
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
} catch (err) {
|
|
110
|
+
_iterator2.e(err);
|
|
111
|
+
} finally {
|
|
112
|
+
_iterator2.f();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (currentRegion) {
|
|
116
|
+
regions.push(currentRegion);
|
|
117
|
+
}
|
|
118
|
+
} // sort the regions by refName
|
|
119
|
+
|
|
120
|
+
} catch (err) {
|
|
121
|
+
_iterator.e(err);
|
|
122
|
+
} finally {
|
|
123
|
+
_iterator.f();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
regions.sort(function (a, b) {
|
|
127
|
+
return a.refName.localeCompare(b.refName);
|
|
128
|
+
});
|
|
129
|
+
return _context.abrupt("return", regions);
|
|
130
|
+
|
|
131
|
+
case 5:
|
|
132
|
+
case "end":
|
|
133
|
+
return _context.stop();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}, _callee, this);
|
|
137
|
+
}));
|
|
138
|
+
|
|
139
|
+
function getRegions() {
|
|
140
|
+
return _getRegions.apply(this, arguments);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return getRegions;
|
|
144
|
+
}()
|
|
145
|
+
}, {
|
|
146
|
+
key: "freeResources",
|
|
147
|
+
value: function
|
|
148
|
+
/* { region } */
|
|
149
|
+
freeResources() {}
|
|
150
|
+
}]);
|
|
151
|
+
return FromConfigRegionsAdapter;
|
|
152
|
+
}(_BaseAdapter2.BaseAdapter);
|
|
153
|
+
|
|
154
|
+
exports["default"] = FromConfigRegionsAdapter;
|