@jbrowse/plugin-sequence 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/BgzipFastaAdapter/BgzipFastaAdapter.js +70 -0
- package/dist/BgzipFastaAdapter/BgzipFastaAdapter.test.js +64 -0
- package/dist/BgzipFastaAdapter/configSchema.js +36 -0
- package/dist/BgzipFastaAdapter/index.js +15 -0
- package/dist/ChromSizesAdapter/ChromSizesAdapter.js +170 -0
- package/dist/ChromSizesAdapter/ChromSizesAdapter.test.js +46 -0
- package/dist/ChromSizesAdapter/configSchema.js +22 -0
- package/dist/ChromSizesAdapter/index.js +15 -0
- package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +239 -0
- package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.js +245 -0
- package/dist/DivSequenceRenderer/configSchema.js +20 -0
- package/dist/DivSequenceRenderer/index.js +23 -0
- package/dist/GCContentAdapter/GCContentAdapter.js +261 -0
- package/dist/GCContentAdapter/configSchema.js +18 -0
- package/dist/GCContentAdapter/index.js +31 -0
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +0 -5
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +228 -0
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.test.js +71 -0
- package/dist/IndexedFastaAdapter/configSchema.js +29 -0
- package/dist/IndexedFastaAdapter/index.js +15 -0
- package/dist/LinearReferenceSequenceDisplay/configSchema.js +18 -0
- package/dist/LinearReferenceSequenceDisplay/index.js +21 -0
- package/dist/LinearReferenceSequenceDisplay/model.d.ts +8 -8
- package/dist/LinearReferenceSequenceDisplay/model.js +102 -0
- package/dist/TwoBitAdapter/TwoBitAdapter.js +289 -0
- package/dist/TwoBitAdapter/TwoBitAdapter.test.js +94 -0
- package/dist/TwoBitAdapter/configSchema.js +30 -0
- package/dist/TwoBitAdapter/index.js +15 -0
- package/dist/declare.d.js +1 -0
- package/dist/index.js +325 -6
- package/dist/index.test.js +29 -0
- package/dist/plugin-sequence.cjs.development.js +0 -6
- package/dist/plugin-sequence.cjs.development.js.map +1 -1
- package/dist/plugin-sequence.cjs.production.min.js.map +1 -1
- package/dist/plugin-sequence.esm.js +0 -6
- package/dist/plugin-sequence.esm.js.map +1 -1
- package/dist/referenceSeqTrackConfig.js +88 -0
- package/package.json +3 -6
- package/src/IndexedFastaAdapter/IndexedFastaAdapter.ts +0 -5
- package/src/index.ts +7 -8
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
6
|
+
|
|
7
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
8
|
+
|
|
9
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
10
|
+
|
|
11
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
12
|
+
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
|
|
17
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
18
|
+
|
|
19
|
+
var _react2 = require("@testing-library/react");
|
|
20
|
+
|
|
21
|
+
var _ui = require("@jbrowse/core/ui");
|
|
22
|
+
|
|
23
|
+
var _PrecomputedLayout = _interopRequireDefault(require("@jbrowse/core/util/layouts/PrecomputedLayout"));
|
|
24
|
+
|
|
25
|
+
var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
|
|
26
|
+
|
|
27
|
+
var _core = require("@material-ui/core");
|
|
28
|
+
|
|
29
|
+
var _DivSequenceRendering = _interopRequireDefault(require("./DivSequenceRendering"));
|
|
30
|
+
|
|
31
|
+
var _configSchema = _interopRequireDefault(require("../configSchema"));
|
|
32
|
+
|
|
33
|
+
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); }; }
|
|
34
|
+
|
|
35
|
+
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; } }
|
|
36
|
+
|
|
37
|
+
function Rendering(props) {
|
|
38
|
+
return /*#__PURE__*/_react["default"].createElement(_core.ThemeProvider, {
|
|
39
|
+
theme: (0, _ui.createJBrowseTheme)()
|
|
40
|
+
}, /*#__PURE__*/_react["default"].createElement(_DivSequenceRendering["default"], props));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
var ErrorCatcher = /*#__PURE__*/function (_React$Component) {
|
|
44
|
+
(0, _inherits2["default"])(ErrorCatcher, _React$Component);
|
|
45
|
+
|
|
46
|
+
var _super = _createSuper(ErrorCatcher);
|
|
47
|
+
|
|
48
|
+
function ErrorCatcher(props) {
|
|
49
|
+
var _this;
|
|
50
|
+
|
|
51
|
+
(0, _classCallCheck2["default"])(this, ErrorCatcher);
|
|
52
|
+
_this = _super.call(this, props);
|
|
53
|
+
_this.state = {
|
|
54
|
+
hasError: false,
|
|
55
|
+
errorText: ''
|
|
56
|
+
};
|
|
57
|
+
return _this;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
(0, _createClass2["default"])(ErrorCatcher, [{
|
|
61
|
+
key: "render",
|
|
62
|
+
value: function render() {
|
|
63
|
+
var _this$state = this.state,
|
|
64
|
+
hasError = _this$state.hasError,
|
|
65
|
+
errorText = _this$state.errorText;
|
|
66
|
+
|
|
67
|
+
if (hasError) {
|
|
68
|
+
// You can render any custom fallback UI
|
|
69
|
+
return /*#__PURE__*/_react["default"].createElement("h1", {
|
|
70
|
+
className: "error"
|
|
71
|
+
}, errorText);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
var children = this.props.children;
|
|
75
|
+
return children;
|
|
76
|
+
}
|
|
77
|
+
}], [{
|
|
78
|
+
key: "getDerivedStateFromError",
|
|
79
|
+
value: function getDerivedStateFromError(error) {
|
|
80
|
+
// Update state so the next render will show the fallback UI.
|
|
81
|
+
return {
|
|
82
|
+
hasError: true,
|
|
83
|
+
errorText: String(error)
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}]);
|
|
87
|
+
return ErrorCatcher;
|
|
88
|
+
}(_react["default"].Component);
|
|
89
|
+
|
|
90
|
+
ErrorCatcher.propTypes = {
|
|
91
|
+
children: _propTypes["default"].node.isRequired
|
|
92
|
+
};
|
|
93
|
+
describe('<DivSequenceRendering />', function () {
|
|
94
|
+
// This just keeps our testing logs clean by not displaying `console.error`s
|
|
95
|
+
// from errors we intentionally throw in our tests. Hopefully React will
|
|
96
|
+
// someday provide a way for error boundaries to prevent error logging so we
|
|
97
|
+
// won't have to do this: https://github.com/facebook/react/issues/15069
|
|
98
|
+
var originalError = console.error;
|
|
99
|
+
beforeAll(function () {
|
|
100
|
+
console.error = function () {
|
|
101
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
102
|
+
args[_key] = arguments[_key];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (args[0].includes('feature one did not contain a valid `seq` attribute') || args[0].includes('The above error occurred in the <SequenceDivs> component')) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
originalError.call.apply(originalError, [console].concat(args));
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
afterAll(function () {
|
|
113
|
+
console.error = originalError;
|
|
114
|
+
});
|
|
115
|
+
it('renders with no features', function () {
|
|
116
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
|
|
117
|
+
width: 500,
|
|
118
|
+
height: 500,
|
|
119
|
+
regions: [{
|
|
120
|
+
refName: 'zonk',
|
|
121
|
+
start: 0,
|
|
122
|
+
end: 300
|
|
123
|
+
}],
|
|
124
|
+
layout: new _PrecomputedLayout["default"]({
|
|
125
|
+
rectangles: {},
|
|
126
|
+
totalHeight: 20
|
|
127
|
+
}),
|
|
128
|
+
config: _configSchema["default"].create(),
|
|
129
|
+
bpPerPx: 3
|
|
130
|
+
})),
|
|
131
|
+
container = _render.container;
|
|
132
|
+
|
|
133
|
+
expect(container).toMatchSnapshot();
|
|
134
|
+
});
|
|
135
|
+
it('renders with one, zoomed way out', function () {
|
|
136
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
|
|
137
|
+
width: 500,
|
|
138
|
+
height: 500,
|
|
139
|
+
regions: [{
|
|
140
|
+
refName: 'zonk',
|
|
141
|
+
start: 0,
|
|
142
|
+
end: 1000
|
|
143
|
+
}],
|
|
144
|
+
features: new Map([['one', new _simpleFeature["default"]({
|
|
145
|
+
uniqueId: 'one',
|
|
146
|
+
start: 1,
|
|
147
|
+
end: 3,
|
|
148
|
+
seq: 'AB'
|
|
149
|
+
})]]),
|
|
150
|
+
config: _configSchema["default"].create({}),
|
|
151
|
+
bpPerPx: 3
|
|
152
|
+
})),
|
|
153
|
+
container = _render2.container;
|
|
154
|
+
|
|
155
|
+
expect(container).toMatchSnapshot();
|
|
156
|
+
});
|
|
157
|
+
it('renders with one feature with no seq, zoomed in, should throw', function () {
|
|
158
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(ErrorCatcher, null, /*#__PURE__*/_react["default"].createElement(Rendering, {
|
|
159
|
+
width: 500,
|
|
160
|
+
height: 500,
|
|
161
|
+
regions: [{
|
|
162
|
+
refName: 'zonk',
|
|
163
|
+
start: 0,
|
|
164
|
+
end: 1000
|
|
165
|
+
}],
|
|
166
|
+
features: new Map([['one', new _simpleFeature["default"]({
|
|
167
|
+
uniqueId: 'one',
|
|
168
|
+
start: 1,
|
|
169
|
+
end: 3
|
|
170
|
+
})]]),
|
|
171
|
+
config: _configSchema["default"].create({}),
|
|
172
|
+
bpPerPx: 0.05
|
|
173
|
+
}))),
|
|
174
|
+
container = _render3.container;
|
|
175
|
+
|
|
176
|
+
expect(container).toMatchSnapshot();
|
|
177
|
+
});
|
|
178
|
+
it('renders with one feature with an incorrect seq, zoomed in, should throw', function () {
|
|
179
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(ErrorCatcher, null, /*#__PURE__*/_react["default"].createElement(Rendering, {
|
|
180
|
+
width: 500,
|
|
181
|
+
height: 500,
|
|
182
|
+
regions: [{
|
|
183
|
+
refName: 'zonk',
|
|
184
|
+
start: 0,
|
|
185
|
+
end: 1000
|
|
186
|
+
}],
|
|
187
|
+
features: new Map([['one', new _simpleFeature["default"]({
|
|
188
|
+
uniqueId: 'one',
|
|
189
|
+
start: 1,
|
|
190
|
+
end: 3,
|
|
191
|
+
seq: 'ABC'
|
|
192
|
+
})]]),
|
|
193
|
+
config: _configSchema["default"].create({}),
|
|
194
|
+
bpPerPx: 0.05
|
|
195
|
+
}))),
|
|
196
|
+
container = _render4.container;
|
|
197
|
+
|
|
198
|
+
expect(container).toMatchSnapshot();
|
|
199
|
+
});
|
|
200
|
+
it('renders with one feature with a correct seq, zoomed in, should render nicely', function () {
|
|
201
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
|
|
202
|
+
width: 500,
|
|
203
|
+
height: 500,
|
|
204
|
+
regions: [{
|
|
205
|
+
refName: 'zonk',
|
|
206
|
+
start: 0,
|
|
207
|
+
end: 1000
|
|
208
|
+
}],
|
|
209
|
+
features: new Map([['one', new _simpleFeature["default"]({
|
|
210
|
+
uniqueId: 'one',
|
|
211
|
+
start: 1,
|
|
212
|
+
end: 10,
|
|
213
|
+
seq: 'ABCDEFGHI'
|
|
214
|
+
})]]),
|
|
215
|
+
config: _configSchema["default"].create({}),
|
|
216
|
+
bpPerPx: 0.05
|
|
217
|
+
})),
|
|
218
|
+
container = _render5.container;
|
|
219
|
+
|
|
220
|
+
expect(container).toMatchSnapshot();
|
|
221
|
+
});
|
|
222
|
+
it('renders with one feature reversed with a correct seq, zoomed in, should render nicely', function () {
|
|
223
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
|
|
224
|
+
width: 500,
|
|
225
|
+
height: 500,
|
|
226
|
+
regions: [{
|
|
227
|
+
refName: 'zonk',
|
|
228
|
+
start: 0,
|
|
229
|
+
end: 1000,
|
|
230
|
+
reversed: true
|
|
231
|
+
}],
|
|
232
|
+
features: new Map([['one', new _simpleFeature["default"]({
|
|
233
|
+
uniqueId: 'one',
|
|
234
|
+
start: 1,
|
|
235
|
+
end: 10,
|
|
236
|
+
seq: 'ABCDEFGHI'
|
|
237
|
+
})]]),
|
|
238
|
+
config: _configSchema["default"].create({}),
|
|
239
|
+
bpPerPx: 0.05
|
|
240
|
+
})),
|
|
241
|
+
container = _render6.container;
|
|
242
|
+
|
|
243
|
+
expect(container).toMatchSnapshot();
|
|
244
|
+
});
|
|
245
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
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)('DivSequenceRenderer', {
|
|
11
|
+
height: {
|
|
12
|
+
type: 'number',
|
|
13
|
+
description: 'height in pixels of each line of sequence',
|
|
14
|
+
defaultValue: 16
|
|
15
|
+
}
|
|
16
|
+
}, {
|
|
17
|
+
explicitlyTyped: true
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
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, "ReactComponent", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _DivSequenceRendering["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "configSchema", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _configSchema["default"];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
var _DivSequenceRendering = _interopRequireDefault(require("./components/DivSequenceRendering"));
|
|
22
|
+
|
|
23
|
+
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
+
|
|
22
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
+
|
|
24
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
+
|
|
26
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
+
|
|
28
|
+
var _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
29
|
+
|
|
30
|
+
var _rxjs = require("@jbrowse/core/util/rxjs");
|
|
31
|
+
|
|
32
|
+
var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
|
|
33
|
+
|
|
34
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
35
|
+
|
|
36
|
+
var _operators = require("rxjs/operators");
|
|
37
|
+
|
|
38
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
39
|
+
|
|
40
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
|
+
|
|
42
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
|
+
|
|
44
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
|
+
|
|
46
|
+
var _default = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
|
|
47
|
+
(0, _inherits2["default"])(_default, _BaseFeatureDataAdapt);
|
|
48
|
+
|
|
49
|
+
var _super = _createSuper(_default);
|
|
50
|
+
|
|
51
|
+
function _default() {
|
|
52
|
+
var _this;
|
|
53
|
+
|
|
54
|
+
(0, _classCallCheck2["default"])(this, _default);
|
|
55
|
+
|
|
56
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
57
|
+
args[_key] = arguments[_key];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
61
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "windowSize", 1000);
|
|
62
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "windowDelta", 1000);
|
|
63
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "gcMode", 'content');
|
|
64
|
+
return _this;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
(0, _createClass2["default"])(_default, [{
|
|
68
|
+
key: "configure",
|
|
69
|
+
value: function () {
|
|
70
|
+
var _configure = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
71
|
+
var _this$getSubAdapter;
|
|
72
|
+
|
|
73
|
+
var sequenceAdapter, dataAdapter;
|
|
74
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
75
|
+
while (1) {
|
|
76
|
+
switch (_context.prev = _context.next) {
|
|
77
|
+
case 0:
|
|
78
|
+
// instantiate the sequence adapter
|
|
79
|
+
sequenceAdapter = (0, _configuration.readConfObject)(this.config, 'sequenceAdapter');
|
|
80
|
+
_context.next = 3;
|
|
81
|
+
return (_this$getSubAdapter = this.getSubAdapter) === null || _this$getSubAdapter === void 0 ? void 0 : _this$getSubAdapter.call(this, sequenceAdapter);
|
|
82
|
+
|
|
83
|
+
case 3:
|
|
84
|
+
dataAdapter = _context.sent;
|
|
85
|
+
|
|
86
|
+
if (dataAdapter) {
|
|
87
|
+
_context.next = 6;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
throw new Error('Error getting subadapter');
|
|
92
|
+
|
|
93
|
+
case 6:
|
|
94
|
+
return _context.abrupt("return", dataAdapter.dataAdapter);
|
|
95
|
+
|
|
96
|
+
case 7:
|
|
97
|
+
case "end":
|
|
98
|
+
return _context.stop();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, _callee, this);
|
|
102
|
+
}));
|
|
103
|
+
|
|
104
|
+
function configure() {
|
|
105
|
+
return _configure.apply(this, arguments);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return configure;
|
|
109
|
+
}()
|
|
110
|
+
}, {
|
|
111
|
+
key: "getRefNames",
|
|
112
|
+
value: function () {
|
|
113
|
+
var _getRefNames = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
114
|
+
var sequenceAdapter;
|
|
115
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
116
|
+
while (1) {
|
|
117
|
+
switch (_context2.prev = _context2.next) {
|
|
118
|
+
case 0:
|
|
119
|
+
_context2.next = 2;
|
|
120
|
+
return this.configure();
|
|
121
|
+
|
|
122
|
+
case 2:
|
|
123
|
+
sequenceAdapter = _context2.sent;
|
|
124
|
+
return _context2.abrupt("return", sequenceAdapter.getRefNames());
|
|
125
|
+
|
|
126
|
+
case 4:
|
|
127
|
+
case "end":
|
|
128
|
+
return _context2.stop();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}, _callee2, this);
|
|
132
|
+
}));
|
|
133
|
+
|
|
134
|
+
function getRefNames() {
|
|
135
|
+
return _getRefNames.apply(this, arguments);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return getRefNames;
|
|
139
|
+
}()
|
|
140
|
+
/**
|
|
141
|
+
* Fetch features for a certain region
|
|
142
|
+
* @param param -
|
|
143
|
+
* @returns Observable of Feature objects in the region
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
}, {
|
|
147
|
+
key: "getFeatures",
|
|
148
|
+
value: function getFeatures(query, opts) {
|
|
149
|
+
var _this2 = this;
|
|
150
|
+
|
|
151
|
+
this.windowSize = 1000;
|
|
152
|
+
this.windowDelta = 1000;
|
|
153
|
+
this.gcMode = 'content';
|
|
154
|
+
return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
|
|
155
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(observer) {
|
|
156
|
+
var _feats$;
|
|
157
|
+
|
|
158
|
+
var sequenceAdapter, hw, f, queryStart, queryEnd, ret, feats, residues, i, r, nc, ng, len, j, pos, score;
|
|
159
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
160
|
+
while (1) {
|
|
161
|
+
switch (_context3.prev = _context3.next) {
|
|
162
|
+
case 0:
|
|
163
|
+
_context3.next = 2;
|
|
164
|
+
return _this2.configure();
|
|
165
|
+
|
|
166
|
+
case 2:
|
|
167
|
+
sequenceAdapter = _context3.sent;
|
|
168
|
+
hw = _this2.windowSize === 1 ? 1 : _this2.windowSize / 2; // Half the window size
|
|
169
|
+
|
|
170
|
+
f = _this2.windowSize === 1;
|
|
171
|
+
queryStart = query.start, queryEnd = query.end;
|
|
172
|
+
queryStart = Math.max(0, queryStart - hw);
|
|
173
|
+
queryEnd += hw;
|
|
174
|
+
|
|
175
|
+
if (!(queryEnd < 0 || queryStart > queryEnd)) {
|
|
176
|
+
_context3.next = 11;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
observer.complete();
|
|
181
|
+
return _context3.abrupt("return");
|
|
182
|
+
|
|
183
|
+
case 11:
|
|
184
|
+
ret = sequenceAdapter.getFeatures(_objectSpread(_objectSpread({}, query), {}, {
|
|
185
|
+
start: queryStart,
|
|
186
|
+
end: queryEnd
|
|
187
|
+
}));
|
|
188
|
+
_context3.next = 14;
|
|
189
|
+
return ret.pipe((0, _operators.toArray)()).toPromise();
|
|
190
|
+
|
|
191
|
+
case 14:
|
|
192
|
+
feats = _context3.sent;
|
|
193
|
+
residues = ((_feats$ = feats[0]) === null || _feats$ === void 0 ? void 0 : _feats$.get('seq')) || '';
|
|
194
|
+
|
|
195
|
+
for (i = hw; i < residues.length - hw; i += _this2.windowDelta) {
|
|
196
|
+
r = f ? residues[i] : residues.slice(i - hw, i + hw);
|
|
197
|
+
nc = 0;
|
|
198
|
+
ng = 0;
|
|
199
|
+
len = 0;
|
|
200
|
+
|
|
201
|
+
for (j = 0; j < r.length; j++) {
|
|
202
|
+
if (r[j] === 'c' || r[j] === 'C') {
|
|
203
|
+
nc++;
|
|
204
|
+
} else if (r[j] === 'g' || r[j] === 'G') {
|
|
205
|
+
ng++;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if (r[j] !== 'N') {
|
|
209
|
+
len++;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
pos = queryStart;
|
|
214
|
+
score = void 0;
|
|
215
|
+
|
|
216
|
+
if (_this2.gcMode === 'content') {
|
|
217
|
+
score = (ng + nc) / (len || 1);
|
|
218
|
+
} else if (_this2.gcMode === 'skew') {
|
|
219
|
+
score = (ng - nc) / (ng + nc || 1);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
observer.next(new _simpleFeature["default"]({
|
|
223
|
+
uniqueId: "".concat(_this2.id, "_").concat(pos + i),
|
|
224
|
+
start: pos + i,
|
|
225
|
+
end: pos + i + _this2.windowDelta,
|
|
226
|
+
score: score
|
|
227
|
+
}));
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
observer.complete();
|
|
231
|
+
|
|
232
|
+
case 18:
|
|
233
|
+
case "end":
|
|
234
|
+
return _context3.stop();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}, _callee3);
|
|
238
|
+
}));
|
|
239
|
+
|
|
240
|
+
return function (_x) {
|
|
241
|
+
return _ref.apply(this, arguments);
|
|
242
|
+
};
|
|
243
|
+
}());
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* called to provide a hint that data tied to a certain region
|
|
247
|
+
* will not be needed for the forseeable future and can be purged
|
|
248
|
+
* from caches, etc
|
|
249
|
+
*/
|
|
250
|
+
|
|
251
|
+
}, {
|
|
252
|
+
key: "freeResources",
|
|
253
|
+
value: function
|
|
254
|
+
/* { region } */
|
|
255
|
+
freeResources() {}
|
|
256
|
+
}]);
|
|
257
|
+
return _default;
|
|
258
|
+
}(_BaseAdapter.BaseFeatureDataAdapter);
|
|
259
|
+
|
|
260
|
+
exports["default"] = _default;
|
|
261
|
+
(0, _defineProperty2["default"])(_default, "capabilities", ['hasLocalStats']);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var _default = function _default(pluginManager) {
|
|
11
|
+
return (0, _configuration.ConfigurationSchema)('GCContentAdapter', {
|
|
12
|
+
sequenceAdapter: pluginManager.pluggableConfigSchemaType('adapter')
|
|
13
|
+
}, {
|
|
14
|
+
explicitlyTyped: true
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
+
|
|
12
|
+
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
13
|
+
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2["default"])(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
+
|
|
18
|
+
var _default = function _default(pluginManager) {
|
|
19
|
+
return {
|
|
20
|
+
configSchema: pluginManager.load(_configSchema["default"]),
|
|
21
|
+
getAdapterClass: function getAdapterClass() {
|
|
22
|
+
return Promise.resolve().then(function () {
|
|
23
|
+
return _interopRequireWildcard(require('./GCContentAdapter'));
|
|
24
|
+
}).then(function (r) {
|
|
25
|
+
return r["default"];
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports["default"] = _default;
|
|
@@ -15,11 +15,6 @@ export default class extends BaseSequenceAdapter {
|
|
|
15
15
|
start: number;
|
|
16
16
|
end: number;
|
|
17
17
|
}[]>;
|
|
18
|
-
/**
|
|
19
|
-
* Fetch features for a certain region
|
|
20
|
-
* @param param -
|
|
21
|
-
* @returns Observable of Feature objects in the region
|
|
22
|
-
*/
|
|
23
18
|
getFeatures(region: NoAssemblyRegion, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
24
19
|
/**
|
|
25
20
|
* called to provide a hint that data tied to a certain region
|