@jbrowse/plugin-bed 3.7.0 → 4.0.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/esm/BedAdapter/BedAdapter.js +8 -11
- package/esm/BedAdapter/configSchema.d.ts +2 -2
- package/esm/BedAdapter/index.js +2 -2
- package/esm/BedGraphAdapter/BedGraphAdapter.js +5 -8
- package/esm/BedGraphAdapter/configSchema.d.ts +2 -2
- package/esm/BedGraphAdapter/index.js +2 -2
- package/esm/BedGraphTabixAdapter/BedGraphTabixAdapter.js +3 -3
- package/esm/BedGraphTabixAdapter/configSchema.d.ts +5 -5
- package/esm/BedGraphTabixAdapter/configSchema.js +1 -1
- package/esm/BedGraphTabixAdapter/index.js +2 -2
- package/esm/BedTabixAdapter/BedTabixAdapter.js +10 -6
- package/esm/BedTabixAdapter/configSchema.d.ts +5 -5
- package/esm/BedTabixAdapter/configSchema.js +1 -1
- package/esm/BedTabixAdapter/index.js +2 -2
- package/esm/BedpeAdapter/BedpeAdapter.js +9 -13
- package/esm/BedpeAdapter/configSchema.d.ts +2 -2
- package/esm/BedpeAdapter/index.js +2 -2
- package/esm/BedpeAdapter/util.js +1 -1
- package/esm/BigBedAdapter/BigBedAdapter.d.ts +1 -1
- package/esm/BigBedAdapter/BigBedAdapter.js +8 -9
- package/esm/BigBedAdapter/configSchema.d.ts +2 -2
- package/esm/BigBedAdapter/index.js +2 -2
- package/esm/generateRepeatMaskerFeature.js +2 -2
- package/esm/generateUcscTranscript.d.ts +18 -9
- package/esm/generateUcscTranscript.js +67 -84
- package/esm/index.js +8 -11
- package/esm/types.d.ts +2 -11
- package/esm/util.d.ts +11 -174
- package/esm/util.js +49 -48
- package/package.json +26 -33
- package/dist/BedAdapter/BedAdapter.d.ts +0 -36
- package/dist/BedAdapter/BedAdapter.js +0 -137
- package/dist/BedAdapter/configSchema.d.ts +0 -41
- package/dist/BedAdapter/configSchema.js +0 -58
- package/dist/BedAdapter/index.d.ts +0 -2
- package/dist/BedAdapter/index.js +0 -49
- package/dist/BedGraphAdapter/BedGraphAdapter.d.ts +0 -23
- package/dist/BedGraphAdapter/BedGraphAdapter.js +0 -122
- package/dist/BedGraphAdapter/configSchema.d.ts +0 -15
- package/dist/BedGraphAdapter/configSchema.js +0 -32
- package/dist/BedGraphAdapter/index.d.ts +0 -2
- package/dist/BedGraphAdapter/index.js +0 -49
- package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.d.ts +0 -17
- package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.js +0 -107
- package/dist/BedGraphTabixAdapter/configSchema.d.ts +0 -29
- package/dist/BedGraphTabixAdapter/configSchema.js +0 -53
- package/dist/BedGraphTabixAdapter/index.d.ts +0 -2
- package/dist/BedGraphTabixAdapter/index.js +0 -49
- package/dist/BedTabixAdapter/BedTabixAdapter.d.ts +0 -43
- package/dist/BedTabixAdapter/BedTabixAdapter.js +0 -104
- package/dist/BedTabixAdapter/configSchema.d.ts +0 -39
- package/dist/BedTabixAdapter/configSchema.js +0 -63
- package/dist/BedTabixAdapter/index.d.ts +0 -2
- package/dist/BedTabixAdapter/index.js +0 -49
- package/dist/BedpeAdapter/BedpeAdapter.d.ts +0 -22
- package/dist/BedpeAdapter/BedpeAdapter.js +0 -111
- package/dist/BedpeAdapter/configSchema.d.ts +0 -16
- package/dist/BedpeAdapter/configSchema.js +0 -33
- package/dist/BedpeAdapter/index.d.ts +0 -2
- package/dist/BedpeAdapter/index.js +0 -49
- package/dist/BedpeAdapter/util.d.ts +0 -2
- package/dist/BedpeAdapter/util.js +0 -55
- package/dist/BigBedAdapter/BigBedAdapter.d.ts +0 -46
- package/dist/BigBedAdapter/BigBedAdapter.js +0 -230
- package/dist/BigBedAdapter/configSchema.d.ts +0 -20
- package/dist/BigBedAdapter/configSchema.js +0 -37
- package/dist/BigBedAdapter/index.d.ts +0 -2
- package/dist/BigBedAdapter/index.js +0 -49
- package/dist/GuessAdapter/index.d.ts +0 -2
- package/dist/GuessAdapter/index.js +0 -68
- package/dist/generateBedMethylFeature.d.ts +0 -31
- package/dist/generateBedMethylFeature.js +0 -32
- package/dist/generateRepeatMaskerFeature.d.ts +0 -51
- package/dist/generateRepeatMaskerFeature.js +0 -42
- package/dist/generateUcscTranscript.d.ts +0 -20
- package/dist/generateUcscTranscript.js +0 -123
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -29
- package/dist/types.d.ts +0 -18
- package/dist/types.js +0 -2
- package/dist/util.d.ts +0 -213
- package/dist/util.js +0 -157
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { IntervalTree } from '@flatten-js/interval-tree';
|
|
2
|
-
import BED from '@gmod/bed';
|
|
3
|
-
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
4
|
-
import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
5
|
-
import type { Feature, Region } from '@jbrowse/core/util';
|
|
6
|
-
export default class BedAdapter extends BaseFeatureDataAdapter {
|
|
7
|
-
protected bedFeatures?: Promise<{
|
|
8
|
-
header: string;
|
|
9
|
-
features: Record<string, string[]>;
|
|
10
|
-
parser: BED;
|
|
11
|
-
columnNames: string[];
|
|
12
|
-
scoreColumn: string;
|
|
13
|
-
colRef: number;
|
|
14
|
-
colStart: number;
|
|
15
|
-
colEnd: number;
|
|
16
|
-
}>;
|
|
17
|
-
protected intervalTrees: Record<string, Promise<IntervalTree<Feature> | undefined> | undefined>;
|
|
18
|
-
static capabilities: string[];
|
|
19
|
-
private loadDataP;
|
|
20
|
-
loadData(opts?: BaseOptions): Promise<{
|
|
21
|
-
header: string;
|
|
22
|
-
features: Record<string, string[]>;
|
|
23
|
-
parser: BED;
|
|
24
|
-
columnNames: string[];
|
|
25
|
-
scoreColumn: string;
|
|
26
|
-
colRef: number;
|
|
27
|
-
colStart: number;
|
|
28
|
-
colEnd: number;
|
|
29
|
-
}>;
|
|
30
|
-
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
31
|
-
getHeader(opts?: BaseOptions): Promise<string>;
|
|
32
|
-
getNames(): Promise<string[] | undefined>;
|
|
33
|
-
private loadFeatureIntervalTreeHelper;
|
|
34
|
-
loadFeatureIntervalTree(refName: string): Promise<IntervalTree<Feature> | undefined>;
|
|
35
|
-
getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
36
|
-
}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const interval_tree_1 = require("@flatten-js/interval-tree");
|
|
7
|
-
const bed_1 = __importDefault(require("@gmod/bed"));
|
|
8
|
-
const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
9
|
-
const util_1 = require("@jbrowse/core/util");
|
|
10
|
-
const io_1 = require("@jbrowse/core/util/io");
|
|
11
|
-
const parseLineByLine_1 = require("@jbrowse/core/util/parseLineByLine");
|
|
12
|
-
const rxjs_1 = require("@jbrowse/core/util/rxjs");
|
|
13
|
-
const util_2 = require("../util");
|
|
14
|
-
class BedAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
this.intervalTrees = {};
|
|
18
|
-
}
|
|
19
|
-
async loadDataP(opts) {
|
|
20
|
-
const bedLoc = this.getConf('bedLocation');
|
|
21
|
-
const buffer = await (0, util_1.fetchAndMaybeUnzip)((0, io_1.openLocation)(bedLoc, this.pluginManager), opts);
|
|
22
|
-
const headerLines = [];
|
|
23
|
-
const features = {};
|
|
24
|
-
(0, parseLineByLine_1.parseLineByLine)(buffer, line => {
|
|
25
|
-
if (line.startsWith('#')) {
|
|
26
|
-
headerLines.push(line);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
const tab = line.indexOf('\t');
|
|
30
|
-
const refName = line.slice(0, tab);
|
|
31
|
-
if (!features[refName]) {
|
|
32
|
-
features[refName] = [];
|
|
33
|
-
}
|
|
34
|
-
features[refName].push(line);
|
|
35
|
-
}
|
|
36
|
-
return true;
|
|
37
|
-
}, opts === null || opts === void 0 ? void 0 : opts.statusCallback);
|
|
38
|
-
const header = headerLines.join('\n');
|
|
39
|
-
const autoSql = this.getConf('autoSql');
|
|
40
|
-
const parser = new bed_1.default({ autoSql });
|
|
41
|
-
const columnNames = this.getConf('columnNames');
|
|
42
|
-
const scoreColumn = this.getConf('scoreColumn');
|
|
43
|
-
const colRef = this.getConf('colRef');
|
|
44
|
-
const colStart = this.getConf('colStart');
|
|
45
|
-
const colEnd = this.getConf('colEnd');
|
|
46
|
-
return {
|
|
47
|
-
header,
|
|
48
|
-
features,
|
|
49
|
-
parser,
|
|
50
|
-
columnNames,
|
|
51
|
-
scoreColumn,
|
|
52
|
-
colRef,
|
|
53
|
-
colStart,
|
|
54
|
-
colEnd,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
async loadData(opts = {}) {
|
|
58
|
-
if (!this.bedFeatures) {
|
|
59
|
-
this.bedFeatures = this.loadDataP(opts).catch((e) => {
|
|
60
|
-
this.bedFeatures = undefined;
|
|
61
|
-
throw e;
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
return this.bedFeatures;
|
|
65
|
-
}
|
|
66
|
-
async getRefNames(opts = {}) {
|
|
67
|
-
const { features } = await this.loadData(opts);
|
|
68
|
-
return Object.keys(features);
|
|
69
|
-
}
|
|
70
|
-
async getHeader(opts = {}) {
|
|
71
|
-
const { header } = await this.loadData(opts);
|
|
72
|
-
return header;
|
|
73
|
-
}
|
|
74
|
-
async getNames() {
|
|
75
|
-
const { header, columnNames } = await this.loadData();
|
|
76
|
-
if (columnNames.length) {
|
|
77
|
-
return columnNames;
|
|
78
|
-
}
|
|
79
|
-
const defs = header.split(/\n|\r\n|\r/).filter(f => !!f);
|
|
80
|
-
const defline = defs.at(-1);
|
|
81
|
-
return (defline === null || defline === void 0 ? void 0 : defline.includes('\t'))
|
|
82
|
-
? defline
|
|
83
|
-
.slice(1)
|
|
84
|
-
.split('\t')
|
|
85
|
-
.map(field => field.trim())
|
|
86
|
-
: undefined;
|
|
87
|
-
}
|
|
88
|
-
async loadFeatureIntervalTreeHelper(refName) {
|
|
89
|
-
const { colRef, colStart, colEnd, features, parser, scoreColumn } = await this.loadData();
|
|
90
|
-
const lines = features[refName];
|
|
91
|
-
if (!lines) {
|
|
92
|
-
return undefined;
|
|
93
|
-
}
|
|
94
|
-
const names = await this.getNames();
|
|
95
|
-
const intervalTree = new interval_tree_1.IntervalTree();
|
|
96
|
-
for (let i = 0; i < lines.length; i++) {
|
|
97
|
-
const line = lines[i];
|
|
98
|
-
const uniqueId = `${this.id}-${refName}-${i}`;
|
|
99
|
-
const feat = new util_1.SimpleFeature((0, util_2.featureData)({
|
|
100
|
-
line,
|
|
101
|
-
colRef,
|
|
102
|
-
colStart,
|
|
103
|
-
colEnd,
|
|
104
|
-
scoreColumn,
|
|
105
|
-
parser,
|
|
106
|
-
uniqueId,
|
|
107
|
-
names,
|
|
108
|
-
}));
|
|
109
|
-
intervalTree.insert([feat.get('start'), feat.get('end')], feat);
|
|
110
|
-
}
|
|
111
|
-
return intervalTree;
|
|
112
|
-
}
|
|
113
|
-
async loadFeatureIntervalTree(refName) {
|
|
114
|
-
if (!this.intervalTrees[refName]) {
|
|
115
|
-
this.intervalTrees[refName] = this.loadFeatureIntervalTreeHelper(refName).catch((e) => {
|
|
116
|
-
this.intervalTrees[refName] = undefined;
|
|
117
|
-
throw e;
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
return this.intervalTrees[refName];
|
|
121
|
-
}
|
|
122
|
-
getFeatures(query, opts = {}) {
|
|
123
|
-
return (0, rxjs_1.ObservableCreate)(async (observer) => {
|
|
124
|
-
const { start, end, refName } = query;
|
|
125
|
-
const intervalTree = await this.loadFeatureIntervalTree(refName);
|
|
126
|
-
const features = intervalTree === null || intervalTree === void 0 ? void 0 : intervalTree.search([start, end]);
|
|
127
|
-
if (features) {
|
|
128
|
-
for (const f of features) {
|
|
129
|
-
observer.next(f);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
observer.complete();
|
|
133
|
-
}, opts.stopToken);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
BedAdapter.capabilities = ['getFeatures', 'getRefNames'];
|
|
137
|
-
exports.default = BedAdapter;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
declare const BedAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
2
|
-
bedLocation: {
|
|
3
|
-
type: string;
|
|
4
|
-
description: string;
|
|
5
|
-
defaultValue: {
|
|
6
|
-
uri: string;
|
|
7
|
-
locationType: string;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
columnNames: {
|
|
11
|
-
type: string;
|
|
12
|
-
description: string;
|
|
13
|
-
defaultValue: never[];
|
|
14
|
-
};
|
|
15
|
-
scoreColumn: {
|
|
16
|
-
type: string;
|
|
17
|
-
description: string;
|
|
18
|
-
defaultValue: string;
|
|
19
|
-
};
|
|
20
|
-
autoSql: {
|
|
21
|
-
type: string;
|
|
22
|
-
description: string;
|
|
23
|
-
defaultValue: string;
|
|
24
|
-
};
|
|
25
|
-
colRef: {
|
|
26
|
-
type: string;
|
|
27
|
-
description: string;
|
|
28
|
-
defaultValue: number;
|
|
29
|
-
};
|
|
30
|
-
colStart: {
|
|
31
|
-
type: string;
|
|
32
|
-
description: string;
|
|
33
|
-
defaultValue: number;
|
|
34
|
-
};
|
|
35
|
-
colEnd: {
|
|
36
|
-
type: string;
|
|
37
|
-
description: string;
|
|
38
|
-
defaultValue: number;
|
|
39
|
-
};
|
|
40
|
-
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
41
|
-
export default BedAdapter;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const configuration_1 = require("@jbrowse/core/configuration");
|
|
4
|
-
function x() { }
|
|
5
|
-
const BedAdapter = (0, configuration_1.ConfigurationSchema)('BedAdapter', {
|
|
6
|
-
bedLocation: {
|
|
7
|
-
type: 'fileLocation',
|
|
8
|
-
description: 'path to bed file, also allows gzipped bed',
|
|
9
|
-
defaultValue: {
|
|
10
|
-
uri: '/path/to/my.bed.gz',
|
|
11
|
-
locationType: 'UriLocation',
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
columnNames: {
|
|
15
|
-
type: 'stringArray',
|
|
16
|
-
description: 'List of column names',
|
|
17
|
-
defaultValue: [],
|
|
18
|
-
},
|
|
19
|
-
scoreColumn: {
|
|
20
|
-
type: 'string',
|
|
21
|
-
description: 'The column to use as a "score" attribute',
|
|
22
|
-
defaultValue: '',
|
|
23
|
-
},
|
|
24
|
-
autoSql: {
|
|
25
|
-
type: 'string',
|
|
26
|
-
description: 'The autoSql definition for the data fields in the file',
|
|
27
|
-
defaultValue: '',
|
|
28
|
-
},
|
|
29
|
-
colRef: {
|
|
30
|
-
type: 'number',
|
|
31
|
-
description: 'The column to use as a "refName" attribute',
|
|
32
|
-
defaultValue: 0,
|
|
33
|
-
},
|
|
34
|
-
colStart: {
|
|
35
|
-
type: 'number',
|
|
36
|
-
description: 'The column to use as a "start" attribute',
|
|
37
|
-
defaultValue: 1,
|
|
38
|
-
},
|
|
39
|
-
colEnd: {
|
|
40
|
-
type: 'number',
|
|
41
|
-
description: 'The column to use as a "end" attribute',
|
|
42
|
-
defaultValue: 2,
|
|
43
|
-
},
|
|
44
|
-
}, {
|
|
45
|
-
explicitlyTyped: true,
|
|
46
|
-
preProcessSnapshot: snap => {
|
|
47
|
-
return snap.uri
|
|
48
|
-
? {
|
|
49
|
-
...snap,
|
|
50
|
-
bedLocation: {
|
|
51
|
-
uri: snap.uri,
|
|
52
|
-
baseUri: snap.baseUri,
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
: snap;
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
exports.default = BedAdapter;
|
package/dist/BedAdapter/index.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.default = BedAdapterF;
|
|
40
|
-
const AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
|
|
41
|
-
const configSchema_1 = __importDefault(require("./configSchema"));
|
|
42
|
-
function BedAdapterF(pluginManager) {
|
|
43
|
-
pluginManager.addAdapterType(() => new AdapterType_1.default({
|
|
44
|
-
name: 'BedAdapter',
|
|
45
|
-
displayName: 'BED adapter',
|
|
46
|
-
configSchema: configSchema_1.default,
|
|
47
|
-
getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./BedAdapter'))).then(r => r.default),
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { IntervalTree } from '@flatten-js/interval-tree';
|
|
2
|
-
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
-
import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
4
|
-
import type { Feature, Region } from '@jbrowse/core/util';
|
|
5
|
-
export default class BedGraphAdapter extends BaseFeatureDataAdapter {
|
|
6
|
-
protected bedFeatures?: Promise<{
|
|
7
|
-
header: string;
|
|
8
|
-
features: Record<string, string[]>;
|
|
9
|
-
columnNames: string[];
|
|
10
|
-
}>;
|
|
11
|
-
protected intervalTrees: Record<string, Promise<IntervalTree<Feature> | undefined> | undefined>;
|
|
12
|
-
getNames(): Promise<string[] | undefined>;
|
|
13
|
-
private loadFeatureIntervalTreeHelper;
|
|
14
|
-
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
15
|
-
private loadDataP;
|
|
16
|
-
loadFeatureIntervalTree(refName: string): Promise<IntervalTree<Feature> | undefined>;
|
|
17
|
-
loadData(opts?: BaseOptions): Promise<{
|
|
18
|
-
header: string;
|
|
19
|
-
features: Record<string, string[]>;
|
|
20
|
-
columnNames: string[];
|
|
21
|
-
}>;
|
|
22
|
-
getFeatures(query: Region, _opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
23
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const interval_tree_1 = require("@flatten-js/interval-tree");
|
|
4
|
-
const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
5
|
-
const util_1 = require("@jbrowse/core/util");
|
|
6
|
-
const io_1 = require("@jbrowse/core/util/io");
|
|
7
|
-
const parseLineByLine_1 = require("@jbrowse/core/util/parseLineByLine");
|
|
8
|
-
const rxjs_1 = require("@jbrowse/core/util/rxjs");
|
|
9
|
-
class BedGraphAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
this.intervalTrees = {};
|
|
13
|
-
}
|
|
14
|
-
async getNames() {
|
|
15
|
-
const { header, columnNames } = await this.loadData();
|
|
16
|
-
if (columnNames.length) {
|
|
17
|
-
return columnNames;
|
|
18
|
-
}
|
|
19
|
-
const defs = header.split(/\n|\r\n|\r/).filter(f => !!f);
|
|
20
|
-
const defline = defs.at(-1);
|
|
21
|
-
return (defline === null || defline === void 0 ? void 0 : defline.includes('\t'))
|
|
22
|
-
? defline
|
|
23
|
-
.slice(1)
|
|
24
|
-
.split('\t')
|
|
25
|
-
.map(field => field.trim())
|
|
26
|
-
: undefined;
|
|
27
|
-
}
|
|
28
|
-
async loadFeatureIntervalTreeHelper(refName) {
|
|
29
|
-
var _a;
|
|
30
|
-
const { features } = await this.loadData();
|
|
31
|
-
const lines = features[refName];
|
|
32
|
-
if (!lines) {
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
const names = ((_a = (await this.getNames())) === null || _a === void 0 ? void 0 : _a.slice(3)) || [];
|
|
36
|
-
const intervalTree = new interval_tree_1.IntervalTree();
|
|
37
|
-
for (let i = 0, l = lines.length; i < l; i++) {
|
|
38
|
-
const line = lines[i];
|
|
39
|
-
const [refName, s, e, ...rest] = line.split('\t');
|
|
40
|
-
for (let j = 0, l2 = rest.length; j < l2; j++) {
|
|
41
|
-
const uniqueId = `${this.id}-${refName}-${i}-${j}`;
|
|
42
|
-
const start = +s;
|
|
43
|
-
const end = +e;
|
|
44
|
-
const score = +rest[j];
|
|
45
|
-
const source = names[j] || `col${j}`;
|
|
46
|
-
if (score) {
|
|
47
|
-
intervalTree.insert([start, end], new util_1.SimpleFeature({
|
|
48
|
-
id: uniqueId,
|
|
49
|
-
data: {
|
|
50
|
-
refName,
|
|
51
|
-
start,
|
|
52
|
-
end,
|
|
53
|
-
score,
|
|
54
|
-
source,
|
|
55
|
-
},
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return intervalTree;
|
|
61
|
-
}
|
|
62
|
-
async getRefNames(opts = {}) {
|
|
63
|
-
const { features } = await this.loadData(opts);
|
|
64
|
-
return Object.keys(features);
|
|
65
|
-
}
|
|
66
|
-
async loadDataP(opts = {}) {
|
|
67
|
-
const pm = this.pluginManager;
|
|
68
|
-
const bedLoc = this.getConf('bedGraphLocation');
|
|
69
|
-
const buffer = await (0, util_1.fetchAndMaybeUnzip)((0, io_1.openLocation)(bedLoc, pm), opts);
|
|
70
|
-
const features = {};
|
|
71
|
-
const headerLines = [];
|
|
72
|
-
(0, parseLineByLine_1.parseLineByLine)(buffer, line => {
|
|
73
|
-
if (line.startsWith('#')) {
|
|
74
|
-
headerLines.push(line);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
const tab = line.indexOf('\t');
|
|
78
|
-
const refName = line.slice(0, tab);
|
|
79
|
-
if (!features[refName]) {
|
|
80
|
-
features[refName] = [];
|
|
81
|
-
}
|
|
82
|
-
features[refName].push(line);
|
|
83
|
-
}
|
|
84
|
-
return true;
|
|
85
|
-
}, opts.statusCallback);
|
|
86
|
-
const columnNames = this.getConf('columnNames');
|
|
87
|
-
return {
|
|
88
|
-
header: headerLines.join('\n'),
|
|
89
|
-
features,
|
|
90
|
-
columnNames,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
async loadFeatureIntervalTree(refName) {
|
|
94
|
-
if (!this.intervalTrees[refName]) {
|
|
95
|
-
this.intervalTrees[refName] = this.loadFeatureIntervalTreeHelper(refName).catch((e) => {
|
|
96
|
-
this.intervalTrees[refName] = undefined;
|
|
97
|
-
throw e;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
return this.intervalTrees[refName];
|
|
101
|
-
}
|
|
102
|
-
async loadData(opts = {}) {
|
|
103
|
-
if (!this.bedFeatures) {
|
|
104
|
-
this.bedFeatures = this.loadDataP(opts).catch((e) => {
|
|
105
|
-
this.bedFeatures = undefined;
|
|
106
|
-
throw e;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
return this.bedFeatures;
|
|
110
|
-
}
|
|
111
|
-
getFeatures(query, _opts = {}) {
|
|
112
|
-
return (0, rxjs_1.ObservableCreate)(async (observer) => {
|
|
113
|
-
const { start, end, refName } = query;
|
|
114
|
-
const intervalTree = await this.loadFeatureIntervalTree(refName);
|
|
115
|
-
for (const feature of (intervalTree === null || intervalTree === void 0 ? void 0 : intervalTree.search([start, end])) || []) {
|
|
116
|
-
observer.next(feature);
|
|
117
|
-
}
|
|
118
|
-
observer.complete();
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
exports.default = BedGraphAdapter;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
declare const BedGraphAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
2
|
-
bedGraphLocation: {
|
|
3
|
-
type: string;
|
|
4
|
-
defaultValue: {
|
|
5
|
-
uri: string;
|
|
6
|
-
locationType: string;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
columnNames: {
|
|
10
|
-
type: string;
|
|
11
|
-
description: string;
|
|
12
|
-
defaultValue: never[];
|
|
13
|
-
};
|
|
14
|
-
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
15
|
-
export default BedGraphAdapter;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const configuration_1 = require("@jbrowse/core/configuration");
|
|
4
|
-
function x() { }
|
|
5
|
-
const BedGraphAdapter = (0, configuration_1.ConfigurationSchema)('BedGraphAdapter', {
|
|
6
|
-
bedGraphLocation: {
|
|
7
|
-
type: 'fileLocation',
|
|
8
|
-
defaultValue: {
|
|
9
|
-
uri: '/path/to/my.bedgraph',
|
|
10
|
-
locationType: 'UriLocation',
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
columnNames: {
|
|
14
|
-
type: 'stringArray',
|
|
15
|
-
description: 'List of column names',
|
|
16
|
-
defaultValue: [],
|
|
17
|
-
},
|
|
18
|
-
}, {
|
|
19
|
-
explicitlyTyped: true,
|
|
20
|
-
preProcessSnapshot: snap => {
|
|
21
|
-
return snap.uri
|
|
22
|
-
? {
|
|
23
|
-
...snap,
|
|
24
|
-
bedGraphLocation: {
|
|
25
|
-
uri: snap.uri,
|
|
26
|
-
baseUri: snap.baseUri,
|
|
27
|
-
},
|
|
28
|
-
}
|
|
29
|
-
: snap;
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
exports.default = BedGraphAdapter;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.default = BedGraphAdapterF;
|
|
40
|
-
const AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
|
|
41
|
-
const configSchema_1 = __importDefault(require("./configSchema"));
|
|
42
|
-
function BedGraphAdapterF(pluginManager) {
|
|
43
|
-
pluginManager.addAdapterType(() => new AdapterType_1.default({
|
|
44
|
-
name: 'BedGraphAdapter',
|
|
45
|
-
displayName: 'BedGraph adapter',
|
|
46
|
-
configSchema: configSchema_1.default,
|
|
47
|
-
getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./BedGraphAdapter'))).then(r => r.default),
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { TabixIndexedFile } from '@gmod/tabix';
|
|
2
|
-
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
-
import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
4
|
-
import type { Feature, Region } from '@jbrowse/core/util';
|
|
5
|
-
export default class BedGraphAdapter extends BaseFeatureDataAdapter {
|
|
6
|
-
private configured?;
|
|
7
|
-
private configurePre;
|
|
8
|
-
protected configure(): Promise<{
|
|
9
|
-
bedGraph: TabixIndexedFile;
|
|
10
|
-
header: string;
|
|
11
|
-
columnNames: string[];
|
|
12
|
-
}>;
|
|
13
|
-
getNames(): Promise<string[] | undefined>;
|
|
14
|
-
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
15
|
-
getHeader(): Promise<string>;
|
|
16
|
-
getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
17
|
-
}
|