@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,200 @@
|
|
|
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 _FromConfigRegionsAdapter = _interopRequireDefault(require("./FromConfigRegionsAdapter"));
|
|
10
|
+
|
|
11
|
+
var _configSchema = require("./configSchema");
|
|
12
|
+
|
|
13
|
+
test('adapter can fetch regions 1', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
14
|
+
var features, adapter, result;
|
|
15
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
16
|
+
while (1) {
|
|
17
|
+
switch (_context.prev = _context.next) {
|
|
18
|
+
case 0:
|
|
19
|
+
features = [{
|
|
20
|
+
uniqueId: 'one',
|
|
21
|
+
refName: 'ctgA',
|
|
22
|
+
start: 250,
|
|
23
|
+
end: 400
|
|
24
|
+
}, {
|
|
25
|
+
uniqueId: 'two',
|
|
26
|
+
refName: 'ctgA',
|
|
27
|
+
start: 150,
|
|
28
|
+
end: 300
|
|
29
|
+
}, {
|
|
30
|
+
uniqueId: 'three',
|
|
31
|
+
refName: 'ctgB',
|
|
32
|
+
start: 50,
|
|
33
|
+
end: 60
|
|
34
|
+
}];
|
|
35
|
+
adapter = new _FromConfigRegionsAdapter["default"](_configSchema.regionsConfigSchema.create({
|
|
36
|
+
features: features
|
|
37
|
+
}));
|
|
38
|
+
_context.next = 4;
|
|
39
|
+
return adapter.getRegions();
|
|
40
|
+
|
|
41
|
+
case 4:
|
|
42
|
+
result = _context.sent;
|
|
43
|
+
expect(result).toEqual([{
|
|
44
|
+
refName: 'ctgA',
|
|
45
|
+
start: 150,
|
|
46
|
+
end: 400
|
|
47
|
+
}, {
|
|
48
|
+
refName: 'ctgB',
|
|
49
|
+
start: 50,
|
|
50
|
+
end: 60
|
|
51
|
+
}]);
|
|
52
|
+
|
|
53
|
+
case 6:
|
|
54
|
+
case "end":
|
|
55
|
+
return _context.stop();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}, _callee);
|
|
59
|
+
})));
|
|
60
|
+
test('adapter can fetch regions 2', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
61
|
+
var features, adapter, result;
|
|
62
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
63
|
+
while (1) {
|
|
64
|
+
switch (_context2.prev = _context2.next) {
|
|
65
|
+
case 0:
|
|
66
|
+
features = [{
|
|
67
|
+
uniqueId: 'three',
|
|
68
|
+
refName: 'ctgB',
|
|
69
|
+
start: 50,
|
|
70
|
+
end: 60
|
|
71
|
+
}, {
|
|
72
|
+
uniqueId: 'two',
|
|
73
|
+
refName: 'ctgA',
|
|
74
|
+
start: 150,
|
|
75
|
+
end: 300
|
|
76
|
+
}, {
|
|
77
|
+
uniqueId: 'one',
|
|
78
|
+
refName: 'ctgA',
|
|
79
|
+
start: 250,
|
|
80
|
+
end: 400
|
|
81
|
+
}];
|
|
82
|
+
adapter = new _FromConfigRegionsAdapter["default"](_configSchema.regionsConfigSchema.create({
|
|
83
|
+
features: features
|
|
84
|
+
}));
|
|
85
|
+
_context2.next = 4;
|
|
86
|
+
return adapter.getRegions();
|
|
87
|
+
|
|
88
|
+
case 4:
|
|
89
|
+
result = _context2.sent;
|
|
90
|
+
expect(result).toEqual([{
|
|
91
|
+
refName: 'ctgA',
|
|
92
|
+
start: 150,
|
|
93
|
+
end: 400
|
|
94
|
+
}, {
|
|
95
|
+
refName: 'ctgB',
|
|
96
|
+
start: 50,
|
|
97
|
+
end: 60
|
|
98
|
+
}]);
|
|
99
|
+
|
|
100
|
+
case 6:
|
|
101
|
+
case "end":
|
|
102
|
+
return _context2.stop();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}, _callee2);
|
|
106
|
+
})));
|
|
107
|
+
test('adapter can fetch regions 3', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
108
|
+
var features, adapter, result;
|
|
109
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
110
|
+
while (1) {
|
|
111
|
+
switch (_context3.prev = _context3.next) {
|
|
112
|
+
case 0:
|
|
113
|
+
features = [{
|
|
114
|
+
uniqueId: 'two',
|
|
115
|
+
refName: 'ctgA',
|
|
116
|
+
start: 150,
|
|
117
|
+
end: 300
|
|
118
|
+
}, {
|
|
119
|
+
uniqueId: 'one',
|
|
120
|
+
refName: 'ctgA',
|
|
121
|
+
start: 250,
|
|
122
|
+
end: 400
|
|
123
|
+
}, {
|
|
124
|
+
uniqueId: 'three',
|
|
125
|
+
refName: 'ctgB',
|
|
126
|
+
start: 50,
|
|
127
|
+
end: 60
|
|
128
|
+
}];
|
|
129
|
+
adapter = new _FromConfigRegionsAdapter["default"](_configSchema.regionsConfigSchema.create({
|
|
130
|
+
features: features
|
|
131
|
+
}));
|
|
132
|
+
_context3.next = 4;
|
|
133
|
+
return adapter.getRegions();
|
|
134
|
+
|
|
135
|
+
case 4:
|
|
136
|
+
result = _context3.sent;
|
|
137
|
+
expect(result).toEqual([{
|
|
138
|
+
refName: 'ctgA',
|
|
139
|
+
start: 150,
|
|
140
|
+
end: 400
|
|
141
|
+
}, {
|
|
142
|
+
refName: 'ctgB',
|
|
143
|
+
start: 50,
|
|
144
|
+
end: 60
|
|
145
|
+
}]);
|
|
146
|
+
|
|
147
|
+
case 6:
|
|
148
|
+
case "end":
|
|
149
|
+
return _context3.stop();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}, _callee3);
|
|
153
|
+
})));
|
|
154
|
+
test('adapter can fetch regions 4', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
155
|
+
var features, adapter, result;
|
|
156
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
157
|
+
while (1) {
|
|
158
|
+
switch (_context4.prev = _context4.next) {
|
|
159
|
+
case 0:
|
|
160
|
+
features = [{
|
|
161
|
+
uniqueId: 'two',
|
|
162
|
+
refName: 'ctgA',
|
|
163
|
+
start: 150,
|
|
164
|
+
end: 300
|
|
165
|
+
}, {
|
|
166
|
+
uniqueId: 'onePrime',
|
|
167
|
+
refName: 'ctgA',
|
|
168
|
+
start: 300,
|
|
169
|
+
end: 400
|
|
170
|
+
}, {
|
|
171
|
+
uniqueId: 'three',
|
|
172
|
+
refName: 'ctgB',
|
|
173
|
+
start: 50,
|
|
174
|
+
end: 60
|
|
175
|
+
}];
|
|
176
|
+
adapter = new _FromConfigRegionsAdapter["default"](_configSchema.regionsConfigSchema.create({
|
|
177
|
+
features: features
|
|
178
|
+
}));
|
|
179
|
+
_context4.next = 4;
|
|
180
|
+
return adapter.getRegions();
|
|
181
|
+
|
|
182
|
+
case 4:
|
|
183
|
+
result = _context4.sent;
|
|
184
|
+
expect(result).toEqual([{
|
|
185
|
+
refName: 'ctgA',
|
|
186
|
+
start: 150,
|
|
187
|
+
end: 400
|
|
188
|
+
}, {
|
|
189
|
+
refName: 'ctgB',
|
|
190
|
+
start: 50,
|
|
191
|
+
end: 60
|
|
192
|
+
}]);
|
|
193
|
+
|
|
194
|
+
case 6:
|
|
195
|
+
case "end":
|
|
196
|
+
return _context4.stop();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}, _callee4);
|
|
200
|
+
})));
|
|
@@ -0,0 +1,201 @@
|
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
|
|
18
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
+
|
|
20
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
21
|
+
|
|
22
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
23
|
+
|
|
24
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
25
|
+
|
|
26
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
27
|
+
|
|
28
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
29
|
+
|
|
30
|
+
var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
|
|
31
|
+
|
|
32
|
+
var _rxjs = require("@jbrowse/core/util/rxjs");
|
|
33
|
+
|
|
34
|
+
var _operators = require("rxjs/operators");
|
|
35
|
+
|
|
36
|
+
var _FromConfigAdapter2 = _interopRequireDefault(require("./FromConfigAdapter"));
|
|
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 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 FromConfigSequenceAdapter = /*#__PURE__*/function (_FromConfigAdapter) {
|
|
53
|
+
(0, _inherits2["default"])(FromConfigSequenceAdapter, _FromConfigAdapter);
|
|
54
|
+
|
|
55
|
+
var _super = _createSuper(FromConfigSequenceAdapter);
|
|
56
|
+
|
|
57
|
+
function FromConfigSequenceAdapter() {
|
|
58
|
+
(0, _classCallCheck2["default"])(this, FromConfigSequenceAdapter);
|
|
59
|
+
return _super.apply(this, arguments);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
(0, _createClass2["default"])(FromConfigSequenceAdapter, [{
|
|
63
|
+
key: "getFeatures",
|
|
64
|
+
value:
|
|
65
|
+
/**
|
|
66
|
+
* Fetch features for a certain region
|
|
67
|
+
* @param region - Region
|
|
68
|
+
* @returns Observable of Feature objects in the region
|
|
69
|
+
*/
|
|
70
|
+
function getFeatures(region) {
|
|
71
|
+
var _this = this;
|
|
72
|
+
|
|
73
|
+
// TODO: restore commented version below once TSDX supports Rollup v2
|
|
74
|
+
// xref: https://github.com/rollup/rollup/blob/master/CHANGELOG.md#bug-fixes-45
|
|
75
|
+
// return ObservableCreate<Feature>(async observer => {
|
|
76
|
+
// const feats = await super.getFeatures(region).pipe(toArray()).toPromise()
|
|
77
|
+
var superGetFeatures = (0, _get2["default"])((0, _getPrototypeOf2["default"])(FromConfigSequenceAdapter.prototype), "getFeatures", this);
|
|
78
|
+
return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
|
|
79
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(observer) {
|
|
80
|
+
var feats, feat;
|
|
81
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
82
|
+
while (1) {
|
|
83
|
+
switch (_context.prev = _context.next) {
|
|
84
|
+
case 0:
|
|
85
|
+
_context.next = 2;
|
|
86
|
+
return superGetFeatures.call(_this, region).pipe((0, _operators.toArray)()).toPromise();
|
|
87
|
+
|
|
88
|
+
case 2:
|
|
89
|
+
feats = _context.sent;
|
|
90
|
+
feat = feats[0];
|
|
91
|
+
observer.next(new _simpleFeature["default"](_objectSpread(_objectSpread({}, feat.toJSON()), {}, {
|
|
92
|
+
uniqueId: "".concat(feat.id(), ":").concat(region.start, "-").concat(region.end),
|
|
93
|
+
end: region.end,
|
|
94
|
+
start: region.start,
|
|
95
|
+
seq: feat.get('seq').slice(Math.max(region.start - feat.get('start'), 0), Math.max(region.end - feat.get('start'), 0))
|
|
96
|
+
})));
|
|
97
|
+
observer.complete();
|
|
98
|
+
|
|
99
|
+
case 6:
|
|
100
|
+
case "end":
|
|
101
|
+
return _context.stop();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}, _callee);
|
|
105
|
+
}));
|
|
106
|
+
|
|
107
|
+
return function (_x) {
|
|
108
|
+
return _ref.apply(this, arguments);
|
|
109
|
+
};
|
|
110
|
+
}());
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get refName, start, and end for all features after collapsing any overlaps
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
}, {
|
|
117
|
+
key: "getRegions",
|
|
118
|
+
value: function () {
|
|
119
|
+
var _getRegions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
120
|
+
var regions, _iterator, _step, _step$value, refName, features, currentRegion, _iterator2, _step2, feature;
|
|
121
|
+
|
|
122
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
123
|
+
while (1) {
|
|
124
|
+
switch (_context2.prev = _context2.next) {
|
|
125
|
+
case 0:
|
|
126
|
+
regions = []; // recall: features are stored in this object sorted by start coordinate
|
|
127
|
+
|
|
128
|
+
_iterator = _createForOfIteratorHelper(this.features);
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
132
|
+
_step$value = (0, _slicedToArray2["default"])(_step.value, 2), refName = _step$value[0], features = _step$value[1];
|
|
133
|
+
currentRegion = void 0;
|
|
134
|
+
_iterator2 = _createForOfIteratorHelper(features);
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
138
|
+
feature = _step2.value;
|
|
139
|
+
|
|
140
|
+
if (currentRegion && currentRegion.end >= feature.get('start') && currentRegion.start <= feature.get('end')) {
|
|
141
|
+
currentRegion.end = feature.get('end');
|
|
142
|
+
} else {
|
|
143
|
+
if (currentRegion) {
|
|
144
|
+
regions.push(currentRegion);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
currentRegion = {
|
|
148
|
+
refName: refName,
|
|
149
|
+
start: feature.get('start'),
|
|
150
|
+
end: feature.get('end')
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
} catch (err) {
|
|
155
|
+
_iterator2.e(err);
|
|
156
|
+
} finally {
|
|
157
|
+
_iterator2.f();
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (currentRegion) {
|
|
161
|
+
regions.push(currentRegion);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
} catch (err) {
|
|
165
|
+
_iterator.e(err);
|
|
166
|
+
} finally {
|
|
167
|
+
_iterator.f();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return _context2.abrupt("return", regions);
|
|
171
|
+
|
|
172
|
+
case 4:
|
|
173
|
+
case "end":
|
|
174
|
+
return _context2.stop();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}, _callee2, this);
|
|
178
|
+
}));
|
|
179
|
+
|
|
180
|
+
function getRegions() {
|
|
181
|
+
return _getRegions.apply(this, arguments);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return getRegions;
|
|
185
|
+
}()
|
|
186
|
+
/**
|
|
187
|
+
* called to provide a hint that data tied to a certain region
|
|
188
|
+
* will not be needed for the forseeable future and can be purged
|
|
189
|
+
* from caches, etc
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
}, {
|
|
193
|
+
key: "freeResources",
|
|
194
|
+
value: function
|
|
195
|
+
/* { region } */
|
|
196
|
+
freeResources() {}
|
|
197
|
+
}]);
|
|
198
|
+
return FromConfigSequenceAdapter;
|
|
199
|
+
}(_FromConfigAdapter2["default"]);
|
|
200
|
+
|
|
201
|
+
exports["default"] = FromConfigSequenceAdapter;
|
|
@@ -0,0 +1,110 @@
|
|
|
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 _FromConfigSequenceAdapter = _interopRequireDefault(require("./FromConfigSequenceAdapter"));
|
|
12
|
+
|
|
13
|
+
var _configSchema = require("./configSchema");
|
|
14
|
+
|
|
15
|
+
test('adapter can fetch sequences when there is just one feature representing whole refseq', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
16
|
+
var features, adapter, result, featuresArray, result2, featuresArray2;
|
|
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: 0,
|
|
25
|
+
end: 150,
|
|
26
|
+
seq: 'ccaaaccgtcaattaaccggtatcttctcggaaacggcggttctctcctagatagcgatctgtggtctcaccatgcaatttaaacaggtgagtaaagattgctacaaatacgagactagctgtcaccagatgctgttcatctgttggctc'
|
|
27
|
+
}];
|
|
28
|
+
adapter = new _FromConfigSequenceAdapter["default"](_configSchema.sequenceConfigSchema.create({
|
|
29
|
+
features: features
|
|
30
|
+
}));
|
|
31
|
+
result = adapter.getFeatures({
|
|
32
|
+
refName: 'ctgA',
|
|
33
|
+
start: 0,
|
|
34
|
+
end: 50
|
|
35
|
+
});
|
|
36
|
+
_context.next = 5;
|
|
37
|
+
return result.pipe((0, _operators.toArray)()).toPromise();
|
|
38
|
+
|
|
39
|
+
case 5:
|
|
40
|
+
featuresArray = _context.sent;
|
|
41
|
+
expect(featuresArray.length).toBe(1);
|
|
42
|
+
expect(featuresArray[0].get('seq')).toBe(features[0].seq.slice(0, 50));
|
|
43
|
+
result2 = adapter.getFeatures({
|
|
44
|
+
refName: 'ctgA',
|
|
45
|
+
start: 100,
|
|
46
|
+
end: 150
|
|
47
|
+
});
|
|
48
|
+
_context.next = 11;
|
|
49
|
+
return result2.pipe((0, _operators.toArray)()).toPromise();
|
|
50
|
+
|
|
51
|
+
case 11:
|
|
52
|
+
featuresArray2 = _context.sent;
|
|
53
|
+
expect(featuresArray2.length).toBe(1);
|
|
54
|
+
expect(featuresArray2[0].get('seq')).toBe(features[0].seq.slice(100, 150));
|
|
55
|
+
|
|
56
|
+
case 14:
|
|
57
|
+
case "end":
|
|
58
|
+
return _context.stop();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}, _callee);
|
|
62
|
+
})));
|
|
63
|
+
test("adapter can fetch sequences when the config's sequence doesn't start at 0", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
64
|
+
var features, adapter, result, featuresArray, result2, featuresArray2;
|
|
65
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
66
|
+
while (1) {
|
|
67
|
+
switch (_context2.prev = _context2.next) {
|
|
68
|
+
case 0:
|
|
69
|
+
features = [{
|
|
70
|
+
uniqueId: 'one',
|
|
71
|
+
refName: 'ctgA',
|
|
72
|
+
start: 5000,
|
|
73
|
+
end: 5150,
|
|
74
|
+
seq: 'ccaaaccgtcaattaaccggtatcttctcggaaacggcggttctctcctagatagcgatctgtggtctcaccatgcaatttaaacaggtgagtaaagattgctacaaatacgagactagctgtcaccagatgctgttcatctgttggctc'
|
|
75
|
+
}];
|
|
76
|
+
adapter = new _FromConfigSequenceAdapter["default"](_configSchema.sequenceConfigSchema.create({
|
|
77
|
+
features: features
|
|
78
|
+
}));
|
|
79
|
+
result = adapter.getFeatures({
|
|
80
|
+
refName: 'ctgA',
|
|
81
|
+
start: 4950,
|
|
82
|
+
end: 5050
|
|
83
|
+
});
|
|
84
|
+
_context2.next = 5;
|
|
85
|
+
return result.pipe((0, _operators.toArray)()).toPromise();
|
|
86
|
+
|
|
87
|
+
case 5:
|
|
88
|
+
featuresArray = _context2.sent;
|
|
89
|
+
expect(featuresArray.length).toBe(1);
|
|
90
|
+
expect(featuresArray[0].get('seq')).toBe(features[0].seq.slice(0, 50));
|
|
91
|
+
result2 = adapter.getFeatures({
|
|
92
|
+
refName: 'ctgA',
|
|
93
|
+
start: 5050,
|
|
94
|
+
end: 5150
|
|
95
|
+
});
|
|
96
|
+
_context2.next = 11;
|
|
97
|
+
return result2.pipe((0, _operators.toArray)()).toPromise();
|
|
98
|
+
|
|
99
|
+
case 11:
|
|
100
|
+
featuresArray2 = _context2.sent;
|
|
101
|
+
expect(featuresArray2.length).toBe(1);
|
|
102
|
+
expect(featuresArray2[0].get('seq')).toBe(features[0].seq.slice(50, 150));
|
|
103
|
+
|
|
104
|
+
case 14:
|
|
105
|
+
case "end":
|
|
106
|
+
return _context2.stop();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}, _callee2);
|
|
110
|
+
})));
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sequenceConfigSchema = exports.regionsConfigSchema = exports.configSchema = void 0;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var configSchema = (0, _configuration.ConfigurationSchema)('FromConfigAdapter', {
|
|
11
|
+
features: {
|
|
12
|
+
type: 'frozen',
|
|
13
|
+
defaultValue: []
|
|
14
|
+
},
|
|
15
|
+
featureClass: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
defaultValue: 'SimpleFeature'
|
|
18
|
+
}
|
|
19
|
+
}, {
|
|
20
|
+
explicitlyTyped: true,
|
|
21
|
+
implicitIdentifier: 'adapterId'
|
|
22
|
+
});
|
|
23
|
+
exports.configSchema = configSchema;
|
|
24
|
+
var regionsConfigSchema = (0, _configuration.ConfigurationSchema)('FromConfigRegionsAdapter', {
|
|
25
|
+
features: {
|
|
26
|
+
type: 'frozen',
|
|
27
|
+
defaultValue: []
|
|
28
|
+
},
|
|
29
|
+
featureClass: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
defaultValue: 'SimpleFeature'
|
|
32
|
+
}
|
|
33
|
+
}, {
|
|
34
|
+
explicitlyTyped: true,
|
|
35
|
+
implicitIdentifier: 'adapterId'
|
|
36
|
+
});
|
|
37
|
+
exports.regionsConfigSchema = regionsConfigSchema;
|
|
38
|
+
var sequenceConfigSchema = (0, _configuration.ConfigurationSchema)('FromConfigSequenceAdapter', {
|
|
39
|
+
features: {
|
|
40
|
+
type: 'frozen',
|
|
41
|
+
defaultValue: []
|
|
42
|
+
},
|
|
43
|
+
featureClass: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
defaultValue: 'SimpleFeature'
|
|
46
|
+
}
|
|
47
|
+
}, {
|
|
48
|
+
explicitlyTyped: true,
|
|
49
|
+
implicitIdentifier: 'adapterId'
|
|
50
|
+
});
|
|
51
|
+
exports.sequenceConfigSchema = sequenceConfigSchema;
|
|
@@ -0,0 +1,51 @@
|
|
|
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, "AdapterClass", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _FromConfigAdapter["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "RegionsAdapterClass", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _FromConfigRegionsAdapter["default"];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "SequenceAdapterClass", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function get() {
|
|
23
|
+
return _FromConfigSequenceAdapter["default"];
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "configSchema", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function get() {
|
|
29
|
+
return _configSchema.configSchema;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "regionsConfigSchema", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function get() {
|
|
35
|
+
return _configSchema.regionsConfigSchema;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "sequenceConfigSchema", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function get() {
|
|
41
|
+
return _configSchema.sequenceConfigSchema;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
var _FromConfigAdapter = _interopRequireDefault(require("./FromConfigAdapter"));
|
|
46
|
+
|
|
47
|
+
var _FromConfigRegionsAdapter = _interopRequireDefault(require("./FromConfigRegionsAdapter"));
|
|
48
|
+
|
|
49
|
+
var _FromConfigSequenceAdapter = _interopRequireDefault(require("./FromConfigSequenceAdapter"));
|
|
50
|
+
|
|
51
|
+
var _configSchema = require("./configSchema");
|