@jbrowse/plugin-bed 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/BedAdapter/BedAdapter.d.ts +1 -1
- package/dist/BedAdapter/BedAdapter.js +260 -485
- package/dist/BedAdapter/BedAdapter.js.map +1 -0
- package/dist/BedAdapter/configSchema.js +39 -51
- package/dist/BedAdapter/configSchema.js.map +1 -0
- package/dist/BedAdapter/index.js +8 -14
- package/dist/BedAdapter/index.js.map +1 -0
- package/dist/BedTabixAdapter/BedTabixAdapter.js +154 -234
- package/dist/BedTabixAdapter/BedTabixAdapter.js.map +1 -0
- package/dist/BedTabixAdapter/configSchema.js +38 -51
- package/dist/BedTabixAdapter/configSchema.js.map +1 -0
- package/dist/BedTabixAdapter/index.js +8 -14
- package/dist/BedTabixAdapter/index.js.map +1 -0
- package/dist/BigBedAdapter/BigBedAdapter.d.ts +4 -21
- package/dist/BigBedAdapter/BigBedAdapter.js +228 -335
- package/dist/BigBedAdapter/BigBedAdapter.js.map +1 -0
- package/dist/BigBedAdapter/configSchema.js +9 -21
- package/dist/BigBedAdapter/configSchema.js.map +1 -0
- package/dist/BigBedAdapter/index.js +8 -14
- package/dist/BigBedAdapter/index.js.map +1 -0
- package/dist/index.js +129 -157
- package/dist/index.js.map +1 -0
- package/dist/util.d.ts +1 -1
- package/dist/util.js +156 -175
- package/dist/util.js.map +1 -0
- package/esm/BedAdapter/BedAdapter.d.ts +29 -0
- package/esm/BedAdapter/BedAdapter.js +130 -0
- package/esm/BedAdapter/BedAdapter.js.map +1 -0
- package/esm/BedAdapter/configSchema.d.ts +2 -0
- package/esm/BedAdapter/configSchema.js +38 -0
- package/esm/BedAdapter/configSchema.js.map +1 -0
- package/esm/BedAdapter/index.d.ts +1 -0
- package/esm/BedAdapter/index.js +2 -0
- package/esm/BedAdapter/index.js.map +1 -0
- package/esm/BedTabixAdapter/BedTabixAdapter.d.ts +19 -0
- package/esm/BedTabixAdapter/BedTabixAdapter.js +68 -0
- package/esm/BedTabixAdapter/BedTabixAdapter.js.map +1 -0
- package/esm/BedTabixAdapter/configSchema.d.ts +2 -0
- package/esm/BedTabixAdapter/configSchema.js +38 -0
- package/esm/BedTabixAdapter/configSchema.js.map +1 -0
- package/esm/BedTabixAdapter/index.d.ts +1 -0
- package/esm/BedTabixAdapter/index.js +2 -0
- package/esm/BedTabixAdapter/index.js.map +1 -0
- package/esm/BigBedAdapter/BigBedAdapter.d.ts +29 -0
- package/esm/BigBedAdapter/BigBedAdapter.js +104 -0
- package/esm/BigBedAdapter/BigBedAdapter.js.map +1 -0
- package/esm/BigBedAdapter/configSchema.d.ts +2 -0
- package/esm/BigBedAdapter/configSchema.js +8 -0
- package/esm/BigBedAdapter/configSchema.js.map +1 -0
- package/esm/BigBedAdapter/index.d.ts +1 -0
- package/esm/BigBedAdapter/index.js +2 -0
- package/esm/BigBedAdapter/index.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.js +81 -0
- package/esm/index.js.map +1 -0
- package/esm/util.d.ts +4 -0
- package/esm/util.js +154 -0
- package/esm/util.js.map +1 -0
- package/package.json +18 -9
- package/src/BedAdapter/BedAdapter.ts +1 -1
- package/src/BedTabixAdapter/BedTabixAdapter.ts +1 -2
- package/src/BigBedAdapter/BigBedAdapter.ts +2 -14
- package/src/util.ts +1 -1
- package/dist/BedAdapter/BedAdapter.test.js +0 -255
- package/dist/BedTabixAdapter/BedTabixAdapter.test.js +0 -276
- package/dist/BigBedAdapter/BigBedAdapter.test.js +0 -63
- package/dist/declare.d.js +0 -1
- package/dist/index.test.js +0 -24
- package/src/declare.d.ts +0 -1
package/dist/util.js
CHANGED
|
@@ -1,183 +1,164 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
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; }
|
|
18
|
-
|
|
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 = exports.ucscProcessedTranscript = void 0;
|
|
15
|
+
var util_1 = require("@jbrowse/core/util");
|
|
19
16
|
function ucscProcessedTranscript(feature) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return feature;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var blocks = children ? children.filter(function (child) {
|
|
30
|
-
return child.get('type') === 'block';
|
|
31
|
-
}).sort(function (a, b) {
|
|
32
|
-
return a.get('start') - b.get('start');
|
|
33
|
-
}) : []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
-
|
|
35
|
-
var newChildren = [];
|
|
36
|
-
blocks.forEach(function (block) {
|
|
37
|
-
var start = block.get('start');
|
|
38
|
-
var end = block.get('end');
|
|
39
|
-
|
|
40
|
-
if (thickStart >= end) {
|
|
41
|
-
// left-side UTR
|
|
42
|
-
var prime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
43
|
-
newChildren.push({
|
|
44
|
-
type: "".concat(prime, "_prime_UTR"),
|
|
45
|
-
start: start,
|
|
46
|
-
end: end
|
|
47
|
-
});
|
|
48
|
-
} else if (thickStart > start && thickStart < end && thickEnd >= end) {
|
|
49
|
-
// UTR | CDS
|
|
50
|
-
var _prime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
51
|
-
|
|
52
|
-
newChildren.push({
|
|
53
|
-
type: "".concat(_prime, "_prime_UTR"),
|
|
54
|
-
start: start,
|
|
55
|
-
end: thickStart
|
|
56
|
-
}, {
|
|
57
|
-
type: 'CDS',
|
|
58
|
-
start: thickStart,
|
|
59
|
-
end: end
|
|
60
|
-
});
|
|
61
|
-
} else if (thickStart <= start && thickEnd >= end) {
|
|
62
|
-
// CDS
|
|
63
|
-
newChildren.push({
|
|
64
|
-
type: 'CDS',
|
|
65
|
-
start: start,
|
|
66
|
-
end: end
|
|
67
|
-
});
|
|
68
|
-
} else if (thickStart > start && thickStart < end && thickEnd < end) {
|
|
69
|
-
// UTR | CDS | UTR
|
|
70
|
-
var leftPrime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
71
|
-
var rightPrime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
72
|
-
newChildren.push({
|
|
73
|
-
type: "".concat(leftPrime, "_prime_UTR"),
|
|
74
|
-
start: start,
|
|
75
|
-
end: thickStart
|
|
76
|
-
}, {
|
|
77
|
-
type: "CDS",
|
|
78
|
-
start: thickStart,
|
|
79
|
-
end: thickEnd
|
|
80
|
-
}, {
|
|
81
|
-
type: "".concat(rightPrime, "_prime_UTR"),
|
|
82
|
-
start: thickEnd,
|
|
83
|
-
end: end
|
|
84
|
-
});
|
|
85
|
-
} else if (thickStart <= start && thickEnd > start && thickEnd < end) {
|
|
86
|
-
// CDS | UTR
|
|
87
|
-
var _prime2 = feature.get('strand') > 0 ? 'three' : 'five';
|
|
88
|
-
|
|
89
|
-
newChildren.push({
|
|
90
|
-
type: "CDS",
|
|
91
|
-
start: start,
|
|
92
|
-
end: thickEnd
|
|
93
|
-
}, {
|
|
94
|
-
type: "".concat(_prime2, "_prime_UTR"),
|
|
95
|
-
start: thickEnd,
|
|
96
|
-
end: end
|
|
97
|
-
});
|
|
98
|
-
} else if (thickEnd <= start) {
|
|
99
|
-
// right-side UTR
|
|
100
|
-
var _prime3 = feature.get('strand') > 0 ? 'three' : 'five';
|
|
101
|
-
|
|
102
|
-
newChildren.push({
|
|
103
|
-
type: "".concat(_prime3, "_prime_UTR"),
|
|
104
|
-
start: start,
|
|
105
|
-
end: end
|
|
106
|
-
});
|
|
17
|
+
var children = feature.children();
|
|
18
|
+
// split the blocks into UTR, CDS, and exons
|
|
19
|
+
var thickStart = feature.get('thickStart');
|
|
20
|
+
var thickEnd = feature.get('thickEnd');
|
|
21
|
+
if (!thickStart && !thickEnd) {
|
|
22
|
+
return feature;
|
|
107
23
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
24
|
+
var blocks = children
|
|
25
|
+
? children
|
|
26
|
+
.filter(function (child) { return child.get('type') === 'block'; })
|
|
27
|
+
.sort(function (a, b) { return a.get('start') - b.get('start'); })
|
|
28
|
+
: [];
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
+
var newChildren = [];
|
|
31
|
+
blocks.forEach(function (block) {
|
|
32
|
+
var start = block.get('start');
|
|
33
|
+
var end = block.get('end');
|
|
34
|
+
if (thickStart >= end) {
|
|
35
|
+
// left-side UTR
|
|
36
|
+
var prime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
37
|
+
newChildren.push({
|
|
38
|
+
type: "".concat(prime, "_prime_UTR"),
|
|
39
|
+
start: start,
|
|
40
|
+
end: end,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else if (thickStart > start && thickStart < end && thickEnd >= end) {
|
|
44
|
+
// UTR | CDS
|
|
45
|
+
var prime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
46
|
+
newChildren.push({
|
|
47
|
+
type: "".concat(prime, "_prime_UTR"),
|
|
48
|
+
start: start,
|
|
49
|
+
end: thickStart,
|
|
50
|
+
}, {
|
|
51
|
+
type: 'CDS',
|
|
52
|
+
start: thickStart,
|
|
53
|
+
end: end,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else if (thickStart <= start && thickEnd >= end) {
|
|
57
|
+
// CDS
|
|
58
|
+
newChildren.push({
|
|
59
|
+
type: 'CDS',
|
|
60
|
+
start: start,
|
|
61
|
+
end: end,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (thickStart > start && thickStart < end && thickEnd < end) {
|
|
65
|
+
// UTR | CDS | UTR
|
|
66
|
+
var leftPrime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
67
|
+
var rightPrime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
68
|
+
newChildren.push({
|
|
69
|
+
type: "".concat(leftPrime, "_prime_UTR"),
|
|
70
|
+
start: start,
|
|
71
|
+
end: thickStart,
|
|
72
|
+
}, {
|
|
73
|
+
type: "CDS",
|
|
74
|
+
start: thickStart,
|
|
75
|
+
end: thickEnd,
|
|
76
|
+
}, {
|
|
77
|
+
type: "".concat(rightPrime, "_prime_UTR"),
|
|
78
|
+
start: thickEnd,
|
|
79
|
+
end: end,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else if (thickStart <= start && thickEnd > start && thickEnd < end) {
|
|
83
|
+
// CDS | UTR
|
|
84
|
+
var prime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
85
|
+
newChildren.push({
|
|
86
|
+
type: "CDS",
|
|
87
|
+
start: start,
|
|
88
|
+
end: thickEnd,
|
|
89
|
+
}, {
|
|
90
|
+
type: "".concat(prime, "_prime_UTR"),
|
|
91
|
+
start: thickEnd,
|
|
92
|
+
end: end,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else if (thickEnd <= start) {
|
|
96
|
+
// right-side UTR
|
|
97
|
+
var prime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
98
|
+
newChildren.push({
|
|
99
|
+
type: "".concat(prime, "_prime_UTR"),
|
|
100
|
+
start: start,
|
|
101
|
+
end: end,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
var newData = Object.fromEntries(feature.tags().map(function (tag) { return [tag, feature.get(tag)]; }));
|
|
106
|
+
newData.subfeatures = newChildren;
|
|
107
|
+
newData.type = 'mRNA';
|
|
108
|
+
newData.uniqueId = feature.id();
|
|
109
|
+
delete newData.chromStarts;
|
|
110
|
+
delete newData.chromStart;
|
|
111
|
+
delete newData.chromEnd;
|
|
112
|
+
delete newData.chrom;
|
|
113
|
+
delete newData.blockStarts;
|
|
114
|
+
delete newData.blockSizes;
|
|
115
|
+
delete newData.blockCount;
|
|
116
|
+
delete newData.thickStart;
|
|
117
|
+
delete newData.thickEnd;
|
|
118
|
+
var newFeature = new util_1.SimpleFeature({
|
|
119
|
+
data: newData,
|
|
120
|
+
id: feature.id(),
|
|
121
|
+
});
|
|
122
|
+
return newFeature;
|
|
129
123
|
}
|
|
130
|
-
|
|
124
|
+
exports.ucscProcessedTranscript = ucscProcessedTranscript;
|
|
131
125
|
function defaultParser(fields, line) {
|
|
132
|
-
|
|
133
|
-
return [fields[i], f];
|
|
134
|
-
}));
|
|
126
|
+
return Object.fromEntries(line.split('\t').map(function (f, i) { return [fields[i], f]; }));
|
|
135
127
|
}
|
|
136
|
-
|
|
137
128
|
function featureData(line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
start: bmin,
|
|
163
|
-
end: bmax,
|
|
164
|
-
type: 'block'
|
|
165
|
-
});
|
|
129
|
+
var l = line.split('\t');
|
|
130
|
+
var refName = l[colRef];
|
|
131
|
+
var start = +l[colStart];
|
|
132
|
+
var colSame = colStart === colEnd ? 1 : 0;
|
|
133
|
+
var end = +l[colEnd] + colSame;
|
|
134
|
+
var data = names
|
|
135
|
+
? defaultParser(names, line)
|
|
136
|
+
: parser.parseLine(line, { uniqueId: uniqueId });
|
|
137
|
+
var blockCount = data.blockCount, blockSizes = data.blockSizes, blockStarts = data.blockStarts, chromStarts = data.chromStarts;
|
|
138
|
+
if (blockCount) {
|
|
139
|
+
var starts = chromStarts || blockStarts || [];
|
|
140
|
+
var sizes = blockSizes;
|
|
141
|
+
var blocksOffset = start;
|
|
142
|
+
data.subfeatures = [];
|
|
143
|
+
for (var b = 0; b < blockCount; b += 1) {
|
|
144
|
+
var bmin = (starts[b] || 0) + blocksOffset;
|
|
145
|
+
var bmax = bmin + (sizes[b] || 0);
|
|
146
|
+
data.subfeatures.push({
|
|
147
|
+
uniqueId: "".concat(uniqueId, "-").concat(b),
|
|
148
|
+
start: bmin,
|
|
149
|
+
end: bmax,
|
|
150
|
+
type: 'block',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
166
153
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
data.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
end: end,
|
|
179
|
-
refName: refName,
|
|
180
|
-
uniqueId: uniqueId
|
|
181
|
-
}));
|
|
182
|
-
return f.get('thickStart') ? ucscProcessedTranscript(f) : f;
|
|
183
|
-
}
|
|
154
|
+
if (scoreColumn) {
|
|
155
|
+
data.score = +data[scoreColumn];
|
|
156
|
+
}
|
|
157
|
+
delete data.chrom;
|
|
158
|
+
delete data.chromStart;
|
|
159
|
+
delete data.chromEnd;
|
|
160
|
+
var f = new util_1.SimpleFeature(__assign(__assign({}, data), { start: start, end: end, refName: refName, uniqueId: uniqueId }));
|
|
161
|
+
return f.get('thickStart') ? ucscProcessedTranscript(f) : f;
|
|
162
|
+
}
|
|
163
|
+
exports.featureData = featureData;
|
|
164
|
+
//# 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,29 @@
|
|
|
1
|
+
import BED from '@gmod/bed';
|
|
2
|
+
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import { Region, Feature } from '@jbrowse/core/util';
|
|
4
|
+
import IntervalTree from '@flatten-js/interval-tree';
|
|
5
|
+
export default class BedAdapter extends BaseFeatureDataAdapter {
|
|
6
|
+
protected bedFeatures?: Promise<{
|
|
7
|
+
header: string;
|
|
8
|
+
features: Record<string, string[]>;
|
|
9
|
+
parser: BED;
|
|
10
|
+
columnNames: string[];
|
|
11
|
+
scoreColumn: string;
|
|
12
|
+
colRef: number;
|
|
13
|
+
colStart: number;
|
|
14
|
+
colEnd: number;
|
|
15
|
+
}>;
|
|
16
|
+
protected intervalTrees: {
|
|
17
|
+
[key: string]: Promise<IntervalTree | undefined> | undefined;
|
|
18
|
+
};
|
|
19
|
+
static capabilities: string[];
|
|
20
|
+
private loadDataP;
|
|
21
|
+
private loadData;
|
|
22
|
+
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
23
|
+
getHeader(opts?: BaseOptions): Promise<string>;
|
|
24
|
+
getNames(): Promise<string[] | undefined>;
|
|
25
|
+
private loadFeatureIntervalTreeHelper;
|
|
26
|
+
private loadFeatureIntervalTree;
|
|
27
|
+
getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
28
|
+
freeResources(): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import BED from '@gmod/bed';
|
|
2
|
+
import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import { openLocation } from '@jbrowse/core/util/io';
|
|
4
|
+
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
5
|
+
import { featureData } from '../util';
|
|
6
|
+
import IntervalTree from '@flatten-js/interval-tree';
|
|
7
|
+
import { unzip } from '@gmod/bgzf-filehandle';
|
|
8
|
+
function isGzip(buf) {
|
|
9
|
+
return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
|
|
10
|
+
}
|
|
11
|
+
export default class BedAdapter extends BaseFeatureDataAdapter {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.intervalTrees = {};
|
|
15
|
+
}
|
|
16
|
+
async loadDataP(opts = {}) {
|
|
17
|
+
const pm = this.pluginManager;
|
|
18
|
+
const bedLoc = this.getConf('bedLocation');
|
|
19
|
+
const buf = await openLocation(bedLoc, pm).readFile(opts);
|
|
20
|
+
const buffer = isGzip(buf) ? await unzip(buf) : buf;
|
|
21
|
+
// 512MB max chrome string length is 512MB
|
|
22
|
+
if (buffer.length > 536870888) {
|
|
23
|
+
throw new Error('Data exceeds maximum string length (512MB)');
|
|
24
|
+
}
|
|
25
|
+
const data = new TextDecoder('utf8', { fatal: true }).decode(buffer);
|
|
26
|
+
const lines = data.split('\n').filter(f => !!f);
|
|
27
|
+
const headerLines = [];
|
|
28
|
+
let i = 0;
|
|
29
|
+
for (; i < lines.length && lines[i].startsWith('#'); i++) {
|
|
30
|
+
headerLines.push(lines[i]);
|
|
31
|
+
}
|
|
32
|
+
const header = headerLines.join('\n');
|
|
33
|
+
const features = {};
|
|
34
|
+
for (; i < lines.length; i++) {
|
|
35
|
+
const line = lines[i];
|
|
36
|
+
const tab = line.indexOf('\t');
|
|
37
|
+
const refName = line.slice(0, tab);
|
|
38
|
+
if (!features[refName]) {
|
|
39
|
+
features[refName] = [];
|
|
40
|
+
}
|
|
41
|
+
features[refName].push(line);
|
|
42
|
+
}
|
|
43
|
+
const autoSql = this.getConf('autoSql');
|
|
44
|
+
const parser = new BED({ autoSql });
|
|
45
|
+
const columnNames = this.getConf('columnNames');
|
|
46
|
+
const scoreColumn = this.getConf('scoreColumn');
|
|
47
|
+
const colRef = this.getConf('colRef');
|
|
48
|
+
const colStart = this.getConf('colStart');
|
|
49
|
+
const colEnd = this.getConf('colEnd');
|
|
50
|
+
return {
|
|
51
|
+
header,
|
|
52
|
+
features,
|
|
53
|
+
parser,
|
|
54
|
+
columnNames,
|
|
55
|
+
scoreColumn,
|
|
56
|
+
colRef,
|
|
57
|
+
colStart,
|
|
58
|
+
colEnd,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
async loadData(opts = {}) {
|
|
62
|
+
if (!this.bedFeatures) {
|
|
63
|
+
this.bedFeatures = this.loadDataP(opts).catch(e => {
|
|
64
|
+
this.bedFeatures = undefined;
|
|
65
|
+
throw e;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return this.bedFeatures;
|
|
69
|
+
}
|
|
70
|
+
async getRefNames(opts = {}) {
|
|
71
|
+
const { features } = await this.loadData(opts);
|
|
72
|
+
return Object.keys(features);
|
|
73
|
+
}
|
|
74
|
+
async getHeader(opts = {}) {
|
|
75
|
+
const { header } = await this.loadData(opts);
|
|
76
|
+
return header;
|
|
77
|
+
}
|
|
78
|
+
async getNames() {
|
|
79
|
+
const { header, columnNames } = await this.loadData();
|
|
80
|
+
if (columnNames.length) {
|
|
81
|
+
return columnNames;
|
|
82
|
+
}
|
|
83
|
+
const defs = header.split('\n').filter(f => !!f);
|
|
84
|
+
const defline = defs[defs.length - 1];
|
|
85
|
+
return (defline === null || defline === void 0 ? void 0 : defline.includes('\t'))
|
|
86
|
+
? defline
|
|
87
|
+
.slice(1)
|
|
88
|
+
.split('\t')
|
|
89
|
+
.map(field => field.trim())
|
|
90
|
+
: undefined;
|
|
91
|
+
}
|
|
92
|
+
async loadFeatureIntervalTreeHelper(refName) {
|
|
93
|
+
const { colRef, colStart, colEnd, features, parser, scoreColumn } = await this.loadData();
|
|
94
|
+
const lines = features[refName];
|
|
95
|
+
if (!lines) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const names = await this.getNames();
|
|
99
|
+
const intervalTree = new IntervalTree();
|
|
100
|
+
const ret = lines.map((f, i) => {
|
|
101
|
+
const uniqueId = `${this.id}-${refName}-${i}`;
|
|
102
|
+
return featureData(f, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names);
|
|
103
|
+
});
|
|
104
|
+
for (let i = 0; i < ret.length; i++) {
|
|
105
|
+
const obj = ret[i];
|
|
106
|
+
intervalTree.insert([obj.get('start'), obj.get('end')], obj);
|
|
107
|
+
}
|
|
108
|
+
return intervalTree;
|
|
109
|
+
}
|
|
110
|
+
async loadFeatureIntervalTree(refName) {
|
|
111
|
+
if (!this.intervalTrees[refName]) {
|
|
112
|
+
this.intervalTrees[refName] = this.loadFeatureIntervalTreeHelper(refName).catch(e => {
|
|
113
|
+
this.intervalTrees[refName] = undefined;
|
|
114
|
+
throw e;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return this.intervalTrees[refName];
|
|
118
|
+
}
|
|
119
|
+
getFeatures(query, opts = {}) {
|
|
120
|
+
return ObservableCreate(async (observer) => {
|
|
121
|
+
const { start, end, refName } = query;
|
|
122
|
+
const intervalTree = await this.loadFeatureIntervalTree(refName);
|
|
123
|
+
intervalTree === null || intervalTree === void 0 ? void 0 : intervalTree.search([start, end]).forEach(f => observer.next(f));
|
|
124
|
+
observer.complete();
|
|
125
|
+
}, opts.signal);
|
|
126
|
+
}
|
|
127
|
+
freeResources() { }
|
|
128
|
+
}
|
|
129
|
+
BedAdapter.capabilities = ['getFeatures', 'getRefNames'];
|
|
130
|
+
//# sourceMappingURL=BedAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BedAdapter.js","sourceRoot":"","sources":["../../src/BedAdapter/BedAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,WAAW,CAAA;AAC3B,OAAO,EACL,sBAAsB,GAEvB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,YAAY,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,sBAAsB;IAA9D;;QAYY,kBAAa,GAEnB,EAAE,CAAA;IA6IR,CAAC;IAzIS,KAAK,CAAC,SAAS,CAAC,OAAoB,EAAE;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACnD,2CAA2C;QAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,SAAW,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;SAC9D;QACD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SAC3B;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,EAA8B,CAAA;QAC/C,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACtB,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;aACvB;YACD,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC7B;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAW,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAErC,OAAO;YACL,MAAM;YACN,QAAQ;YACR,MAAM;YACN,WAAW;YACX,WAAW;YACX,MAAM;YACN,QAAQ;YACR,MAAM;SACP,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAoB,EAAE;QAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAChD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;gBAC5B,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QAED,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAoB,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAoB,EAAE;QACpC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACrD,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,OAAO,WAAW,CAAA;SACnB;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACrC,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,IAAI,CAAC;YAC5B,CAAC,CAAC,OAAO;iBACJ,KAAK,CAAC,CAAC,CAAC;iBACR,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,OAAe;QACzD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAC/D,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAA;SACjB;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEnC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,CAAA;YAC7C,OAAO,WAAW,CAChB,CAAC,EACD,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EACX,MAAM,EACN,QAAQ,EACR,KAAK,CACN,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;SAC7D;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAe;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAC9D,OAAO,CACR,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACV,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;gBACvC,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAEM,WAAW,CAAC,KAAa,EAAE,OAAoB,EAAE;QACtD,OAAO,gBAAgB,CAAU,KAAK,EAAC,QAAQ,EAAC,EAAE;YAChD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;YACrC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;YAChE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACjE,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACrB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,CAAC;IAEM,aAAa,KAAU,CAAC;;AA1IjB,uBAAY,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
export default ConfigurationSchema('BedAdapter', {
|
|
3
|
+
bedLocation: {
|
|
4
|
+
type: 'fileLocation',
|
|
5
|
+
defaultValue: { uri: '/path/to/my.bed.gz', locationType: 'UriLocation' },
|
|
6
|
+
},
|
|
7
|
+
columnNames: {
|
|
8
|
+
type: 'stringArray',
|
|
9
|
+
description: 'List of column names',
|
|
10
|
+
defaultValue: [],
|
|
11
|
+
},
|
|
12
|
+
scoreColumn: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The column to use as a "score" attribute',
|
|
15
|
+
defaultValue: '',
|
|
16
|
+
},
|
|
17
|
+
autoSql: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'The autoSql definition for the data fields in the file',
|
|
20
|
+
defaultValue: '',
|
|
21
|
+
},
|
|
22
|
+
colRef: {
|
|
23
|
+
type: 'number',
|
|
24
|
+
description: 'The column to use as a "refName" attribute',
|
|
25
|
+
defaultValue: 0,
|
|
26
|
+
},
|
|
27
|
+
colStart: {
|
|
28
|
+
type: 'number',
|
|
29
|
+
description: 'The column to use as a "start" attribute',
|
|
30
|
+
defaultValue: 1,
|
|
31
|
+
},
|
|
32
|
+
colEnd: {
|
|
33
|
+
type: 'number',
|
|
34
|
+
description: 'The column to use as a "end" attribute',
|
|
35
|
+
defaultValue: 2,
|
|
36
|
+
},
|
|
37
|
+
}, { explicitlyTyped: true });
|
|
38
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/BedAdapter/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,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE;KACzE;IAED,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,EAAE;KACjB;IAED,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0CAA0C;QACvD,YAAY,EAAE,EAAE;KACjB;IAED,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wDAAwD;QACrE,YAAY,EAAE,EAAE;KACjB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4CAA4C;QACzD,YAAY,EAAE,CAAC;KAChB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0CAA0C;QACvD,YAAY,EAAE,CAAC;KAChB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wCAAwC;QACrD,YAAY,EAAE,CAAC;KAChB;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/BedAdapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
|
+
import { Region, Feature } from '@jbrowse/core/util';
|
|
3
|
+
import { TabixIndexedFile } from '@gmod/tabix';
|
|
4
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
5
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
6
|
+
import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
7
|
+
export default class BedTabixAdapter extends BaseFeatureDataAdapter {
|
|
8
|
+
private parser;
|
|
9
|
+
protected bed: TabixIndexedFile;
|
|
10
|
+
protected columnNames: string[];
|
|
11
|
+
protected scoreColumn: string;
|
|
12
|
+
static capabilities: string[];
|
|
13
|
+
constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
|
|
14
|
+
getRefNames(opts?: BaseOptions): Promise<any>;
|
|
15
|
+
getHeader(): Promise<string>;
|
|
16
|
+
getNames(): Promise<string[] | undefined>;
|
|
17
|
+
getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
18
|
+
freeResources(): void;
|
|
19
|
+
}
|