@jbrowse/plugin-bed 1.7.11 → 2.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/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 +155 -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.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.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 +69 -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 +46 -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 +15 -6
- 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
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import BED from '@gmod/bed';
|
|
3
|
+
import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
4
|
+
import { openLocation } from '@jbrowse/core/util/io';
|
|
5
|
+
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
6
|
+
import { TabixIndexedFile } from '@gmod/tabix';
|
|
7
|
+
import { featureData } from '../util';
|
|
8
|
+
export default class BedTabixAdapter extends BaseFeatureDataAdapter {
|
|
9
|
+
constructor(config, getSubAdapter, pluginManager) {
|
|
10
|
+
super(config, getSubAdapter, pluginManager);
|
|
11
|
+
const bedGzLoc = this.getConf('bedGzLocation');
|
|
12
|
+
const type = this.getConf(['index', 'indexType']);
|
|
13
|
+
const loc = this.getConf(['index', 'location']);
|
|
14
|
+
const autoSql = this.getConf('autoSql');
|
|
15
|
+
const pm = this.pluginManager;
|
|
16
|
+
this.bed = new TabixIndexedFile({
|
|
17
|
+
filehandle: openLocation(bedGzLoc, pm),
|
|
18
|
+
csiFilehandle: type === 'CSI' ? openLocation(loc, pm) : undefined,
|
|
19
|
+
tbiFilehandle: type !== 'CSI' ? openLocation(loc, pm) : undefined,
|
|
20
|
+
chunkCacheSize: 50 * 2 ** 20,
|
|
21
|
+
});
|
|
22
|
+
this.columnNames = this.getConf('columnNames');
|
|
23
|
+
this.scoreColumn = this.getConf('scoreColumn');
|
|
24
|
+
this.parser = new BED({ autoSql });
|
|
25
|
+
}
|
|
26
|
+
async getRefNames(opts = {}) {
|
|
27
|
+
return this.bed.getReferenceSequenceNames(opts);
|
|
28
|
+
}
|
|
29
|
+
async getHeader() {
|
|
30
|
+
return this.bed.getHeader();
|
|
31
|
+
}
|
|
32
|
+
async getNames() {
|
|
33
|
+
if (this.columnNames.length) {
|
|
34
|
+
return this.columnNames;
|
|
35
|
+
}
|
|
36
|
+
const header = await this.bed.getHeader();
|
|
37
|
+
const defs = header.split('\n').filter(f => !!f);
|
|
38
|
+
const defline = defs[defs.length - 1];
|
|
39
|
+
return (defline === null || defline === void 0 ? void 0 : defline.includes('\t'))
|
|
40
|
+
? defline
|
|
41
|
+
.slice(1)
|
|
42
|
+
.split('\t')
|
|
43
|
+
.map(f => f.trim())
|
|
44
|
+
: undefined;
|
|
45
|
+
}
|
|
46
|
+
getFeatures(query, opts = {}) {
|
|
47
|
+
return ObservableCreate(async (observer) => {
|
|
48
|
+
const meta = await this.bed.getMetadata();
|
|
49
|
+
const { columnNumbers } = meta;
|
|
50
|
+
const colRef = columnNumbers.ref - 1;
|
|
51
|
+
const colStart = columnNumbers.start - 1;
|
|
52
|
+
const colEnd = columnNumbers.end - 1;
|
|
53
|
+
// colSame handles special case for tabix where a single column is both
|
|
54
|
+
// the start and end, this is assumed to be covering the base at this
|
|
55
|
+
// position (e.g. tabix -s 1 -b 2 -e 2) begin and end are same
|
|
56
|
+
const names = await this.getNames();
|
|
57
|
+
await this.bed.getLines(query.refName, query.start, query.end, {
|
|
58
|
+
lineCallback: (line, fileOffset) => {
|
|
59
|
+
observer.next(featureData(line, colRef, colStart, colEnd, this.scoreColumn, this.parser, `${this.id}-${fileOffset}`, names));
|
|
60
|
+
},
|
|
61
|
+
signal: opts.signal,
|
|
62
|
+
});
|
|
63
|
+
observer.complete();
|
|
64
|
+
}, opts.signal);
|
|
65
|
+
}
|
|
66
|
+
freeResources() { }
|
|
67
|
+
}
|
|
68
|
+
BedTabixAdapter.capabilities = ['getFeatures', 'getRefNames'];
|
|
69
|
+
//# sourceMappingURL=BedTabixAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BedTabixAdapter.js","sourceRoot":"","sources":["../../src/BedTabixAdapter/BedTabixAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
import { types } from 'mobx-state-tree';
|
|
3
|
+
export default ConfigurationSchema('BedTabixAdapter', {
|
|
4
|
+
bedGzLocation: {
|
|
5
|
+
type: 'fileLocation',
|
|
6
|
+
defaultValue: { uri: '/path/to/my.bed.gz', locationType: 'UriLocation' },
|
|
7
|
+
},
|
|
8
|
+
index: ConfigurationSchema('TabixIndex', {
|
|
9
|
+
indexType: {
|
|
10
|
+
model: types.enumeration('IndexType', ['TBI', 'CSI']),
|
|
11
|
+
type: 'stringEnum',
|
|
12
|
+
defaultValue: 'TBI',
|
|
13
|
+
},
|
|
14
|
+
location: {
|
|
15
|
+
type: 'fileLocation',
|
|
16
|
+
defaultValue: {
|
|
17
|
+
uri: '/path/to/my.bed.gz.tbi',
|
|
18
|
+
locationType: 'UriLocation',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
}),
|
|
22
|
+
columnNames: {
|
|
23
|
+
type: 'stringArray',
|
|
24
|
+
description: 'List of column names',
|
|
25
|
+
defaultValue: [],
|
|
26
|
+
},
|
|
27
|
+
scoreColumn: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'The column to use as a "score" attribute',
|
|
30
|
+
defaultValue: '',
|
|
31
|
+
},
|
|
32
|
+
autoSql: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
description: 'The autoSql definition for the data fields in the file',
|
|
35
|
+
defaultValue: '',
|
|
36
|
+
},
|
|
37
|
+
}, { explicitlyTyped: true });
|
|
38
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/BedTabixAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,eAAe,mBAAmB,CAChC,iBAAiB,EACjB;IACE,aAAa,EAAE;QACb,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE;KACzE;IAED,KAAK,EAAE,mBAAmB,CAAC,YAAY,EAAE;QACvC,SAAS,EAAE;YACT,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrD,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,KAAK;SACpB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,cAAc;YACpB,YAAY,EAAE;gBACZ,GAAG,EAAE,wBAAwB;gBAC7B,YAAY,EAAE,aAAa;aAC5B;SACF;KACF,CAAC;IAEF,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;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/BedTabixAdapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BigBed } from '@gmod/bbi';
|
|
2
|
+
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import { Region } from '@jbrowse/core/util/types';
|
|
4
|
+
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
5
|
+
interface BEDFeature {
|
|
6
|
+
chrom: string;
|
|
7
|
+
chromStart: number;
|
|
8
|
+
chromEnd: number;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
interface Parser {
|
|
12
|
+
parseLine: (line: string, opts: {
|
|
13
|
+
uniqueId: string | number;
|
|
14
|
+
}) => BEDFeature;
|
|
15
|
+
autoSql: {
|
|
16
|
+
fields: {
|
|
17
|
+
name: string;
|
|
18
|
+
comment: string;
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export default class BigBedAdapter extends BaseFeatureDataAdapter {
|
|
23
|
+
private cached?;
|
|
24
|
+
configurePre(opts?: BaseOptions): Promise<{
|
|
25
|
+
bigbed: BigBed;
|
|
26
|
+
header: any;
|
|
27
|
+
parser: Parser;
|
|
28
|
+
}>;
|
|
29
|
+
configure(opts?: BaseOptions): Promise<{
|
|
30
|
+
bigbed: BigBed;
|
|
31
|
+
header: any;
|
|
32
|
+
parser: Parser;
|
|
33
|
+
}>;
|
|
34
|
+
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
35
|
+
getHeader(opts?: BaseOptions): Promise<{
|
|
36
|
+
version: any;
|
|
37
|
+
fileType: any;
|
|
38
|
+
autoSql: {};
|
|
39
|
+
fields: {
|
|
40
|
+
[k: string]: string;
|
|
41
|
+
};
|
|
42
|
+
}>;
|
|
43
|
+
getFeatures(region: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
44
|
+
freeResources(): void;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { BigBed } from '@gmod/bbi';
|
|
3
|
+
import BED from '@gmod/bed';
|
|
4
|
+
import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
5
|
+
import { openLocation } from '@jbrowse/core/util/io';
|
|
6
|
+
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
7
|
+
import SimpleFeature from '@jbrowse/core/util/simpleFeature';
|
|
8
|
+
import { map, mergeAll } from 'rxjs/operators';
|
|
9
|
+
import { readConfObject } from '@jbrowse/core/configuration';
|
|
10
|
+
import { ucscProcessedTranscript } from '../util';
|
|
11
|
+
function isUCSC(f) {
|
|
12
|
+
return f.get('thickStart') && f.get('blockCount') && f.get('strand') !== 0;
|
|
13
|
+
}
|
|
14
|
+
export default class BigBedAdapter extends BaseFeatureDataAdapter {
|
|
15
|
+
async configurePre(opts) {
|
|
16
|
+
const bigbed = new BigBed({
|
|
17
|
+
filehandle: openLocation(readConfObject(this.config, 'bigBedLocation'), this.pluginManager),
|
|
18
|
+
});
|
|
19
|
+
const header = await bigbed.getHeader(opts);
|
|
20
|
+
const parser = new BED({ autoSql: header.autoSql });
|
|
21
|
+
return { bigbed, header, parser };
|
|
22
|
+
}
|
|
23
|
+
async configure(opts) {
|
|
24
|
+
if (!this.cached) {
|
|
25
|
+
this.cached = this.configurePre(opts).catch(e => {
|
|
26
|
+
this.cached = undefined;
|
|
27
|
+
throw e;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return this.cached;
|
|
31
|
+
}
|
|
32
|
+
async getRefNames(opts) {
|
|
33
|
+
const { header } = await this.configure(opts);
|
|
34
|
+
return Object.keys(header.refsByName);
|
|
35
|
+
}
|
|
36
|
+
async getHeader(opts) {
|
|
37
|
+
const { parser, header } = await this.configure(opts);
|
|
38
|
+
const { version, fileType } = header;
|
|
39
|
+
const { fields, ...rest } = parser.autoSql;
|
|
40
|
+
return {
|
|
41
|
+
version,
|
|
42
|
+
fileType,
|
|
43
|
+
autoSql: { ...rest },
|
|
44
|
+
fields: Object.fromEntries(fields.map(({ name, comment }) => [name, comment])),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
getFeatures(region, opts = {}) {
|
|
48
|
+
const { refName, start, end } = region;
|
|
49
|
+
const { signal } = opts;
|
|
50
|
+
return ObservableCreate(async (observer) => {
|
|
51
|
+
try {
|
|
52
|
+
const { parser, bigbed } = await this.configure(opts);
|
|
53
|
+
const ob = await bigbed.getFeatureStream(refName, start, end, {
|
|
54
|
+
signal,
|
|
55
|
+
basesPerSpan: end - start,
|
|
56
|
+
});
|
|
57
|
+
ob.pipe(mergeAll(), map(r => {
|
|
58
|
+
const data = parser.parseLine(`${refName}\t${r.start}\t${r.end}\t${r.rest}`, {
|
|
59
|
+
uniqueId: r.uniqueId,
|
|
60
|
+
});
|
|
61
|
+
const { blockCount, blockSizes, blockStarts, chromStarts } = data;
|
|
62
|
+
if (blockCount) {
|
|
63
|
+
const starts = chromStarts || blockStarts || [];
|
|
64
|
+
const sizes = blockSizes;
|
|
65
|
+
const blocksOffset = r.start;
|
|
66
|
+
data.subfeatures = [];
|
|
67
|
+
for (let b = 0; b < blockCount; b += 1) {
|
|
68
|
+
const bmin = (starts[b] || 0) + blocksOffset;
|
|
69
|
+
const bmax = bmin + (sizes[b] || 0);
|
|
70
|
+
data.subfeatures.push({
|
|
71
|
+
uniqueId: `${r.uniqueId}-${b}`,
|
|
72
|
+
start: bmin,
|
|
73
|
+
end: bmax,
|
|
74
|
+
type: 'block',
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (r.uniqueId === undefined) {
|
|
79
|
+
throw new Error('invalid bbi feature');
|
|
80
|
+
}
|
|
81
|
+
const { chromStart, chromEnd, chrom, ...rest } = data;
|
|
82
|
+
const f = new SimpleFeature({
|
|
83
|
+
id: `${this.id}-${r.uniqueId}`,
|
|
84
|
+
data: {
|
|
85
|
+
...rest,
|
|
86
|
+
start: r.start,
|
|
87
|
+
end: r.end,
|
|
88
|
+
refName,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
// collection of heuristics for suggesting that this feature
|
|
92
|
+
// should be converted to a gene, CNV bigbed has many gene like
|
|
93
|
+
// features including thickStart and blockCount but no strand
|
|
94
|
+
return isUCSC(f) ? ucscProcessedTranscript(f) : f;
|
|
95
|
+
})).subscribe(observer);
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
observer.error(e);
|
|
99
|
+
}
|
|
100
|
+
}, opts.signal);
|
|
101
|
+
}
|
|
102
|
+
freeResources() { }
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=BigBedAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BigBedAdapter.js","sourceRoot":"","sources":["../../src/BigBedAdapter/BigBedAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
export default ConfigurationSchema('BigBedAdapter', {
|
|
3
|
+
bigBedLocation: {
|
|
4
|
+
type: 'fileLocation',
|
|
5
|
+
defaultValue: { uri: '/path/to/my.bb', locationType: 'UriLocation' },
|
|
6
|
+
},
|
|
7
|
+
}, { explicitlyTyped: true });
|
|
8
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/BigBedAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,mBAAmB,CAChC,eAAe,EACf;IACE,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE;KACrE;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/BigBedAdapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
|
package/esm/index.d.ts
ADDED
package/esm/index.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
|
|
2
|
+
import Plugin from '@jbrowse/core/Plugin';
|
|
3
|
+
import { configSchema as bigBedAdapterConfigSchema } from './BigBedAdapter';
|
|
4
|
+
import { configSchema as bedTabixAdapterConfigSchema } from './BedTabixAdapter';
|
|
5
|
+
import { configSchema as bedAdapterConfigSchema } from './BedAdapter';
|
|
6
|
+
import { getFileName, makeIndex, makeIndexType, } from '@jbrowse/core/util/tracks';
|
|
7
|
+
export default class BedPlugin extends Plugin {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.name = 'BedPlugin';
|
|
11
|
+
}
|
|
12
|
+
install(pluginManager) {
|
|
13
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
14
|
+
name: 'BigBedAdapter',
|
|
15
|
+
configSchema: bigBedAdapterConfigSchema,
|
|
16
|
+
getAdapterClass: () => import('./BigBedAdapter/BigBedAdapter').then(r => r.default),
|
|
17
|
+
}));
|
|
18
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
19
|
+
return (file, index, adapterHint) => {
|
|
20
|
+
const regexGuess = /\.(bb|bigbed)$/i;
|
|
21
|
+
const adapterName = 'BigBedAdapter';
|
|
22
|
+
const fileName = getFileName(file);
|
|
23
|
+
const obj = {
|
|
24
|
+
type: adapterName,
|
|
25
|
+
bigBedLocation: file,
|
|
26
|
+
};
|
|
27
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
else if (adapterHint === adapterName) {
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
return adapterGuesser(file, index, adapterHint);
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
37
|
+
name: 'BedTabixAdapter',
|
|
38
|
+
configSchema: bedTabixAdapterConfigSchema,
|
|
39
|
+
getAdapterClass: () => import('./BedTabixAdapter/BedTabixAdapter').then(r => r.default),
|
|
40
|
+
}));
|
|
41
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
42
|
+
name: 'BedAdapter',
|
|
43
|
+
configSchema: bedAdapterConfigSchema,
|
|
44
|
+
getAdapterClass: () => import('./BedAdapter/BedAdapter').then(r => r.default),
|
|
45
|
+
}));
|
|
46
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
47
|
+
return (file, index, adapterHint) => {
|
|
48
|
+
const regexGuess = /\.bed\.b?gz$/i;
|
|
49
|
+
const adapterName = 'BedTabixAdapter';
|
|
50
|
+
const fileName = getFileName(file);
|
|
51
|
+
const indexName = index && getFileName(index);
|
|
52
|
+
if (regexGuess.test(fileName) || adapterHint === adapterName) {
|
|
53
|
+
return {
|
|
54
|
+
type: adapterName,
|
|
55
|
+
bedGzLocation: file,
|
|
56
|
+
index: {
|
|
57
|
+
location: index || makeIndex(file, '.tbi'),
|
|
58
|
+
indexType: makeIndexType(indexName, 'CSI', 'TBI'),
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return adapterGuesser(file, index, adapterHint);
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
66
|
+
return (file, index, adapterHint) => {
|
|
67
|
+
const regexGuess = /\.bed$/i;
|
|
68
|
+
const adapterName = 'BedAdapter';
|
|
69
|
+
const fileName = getFileName(file);
|
|
70
|
+
if (regexGuess.test(fileName) || adapterHint === adapterName) {
|
|
71
|
+
return {
|
|
72
|
+
type: adapterName,
|
|
73
|
+
bedLocation: file,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return adapterGuesser(file, index, adapterHint);
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/esm/util.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { SimpleFeature, Feature } from '@jbrowse/core/util';
|
|
2
|
+
import BED from '@gmod/bed';
|
|
3
|
+
export declare function ucscProcessedTranscript(feature: Feature): Feature | SimpleFeature;
|
|
4
|
+
export declare function featureData(line: string, colRef: number, colStart: number, colEnd: number, scoreColumn: string, parser: typeof BED, uniqueId: string, names?: string[]): Feature | SimpleFeature;
|
package/esm/util.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { SimpleFeature } from '@jbrowse/core/util';
|
|
2
|
+
export function ucscProcessedTranscript(feature) {
|
|
3
|
+
const children = feature.children();
|
|
4
|
+
// split the blocks into UTR, CDS, and exons
|
|
5
|
+
const thickStart = feature.get('thickStart');
|
|
6
|
+
const thickEnd = feature.get('thickEnd');
|
|
7
|
+
if (!thickStart && !thickEnd) {
|
|
8
|
+
return feature;
|
|
9
|
+
}
|
|
10
|
+
const blocks = children
|
|
11
|
+
? children
|
|
12
|
+
.filter(child => child.get('type') === 'block')
|
|
13
|
+
.sort((a, b) => a.get('start') - b.get('start'))
|
|
14
|
+
: [];
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
const newChildren = [];
|
|
17
|
+
blocks.forEach(block => {
|
|
18
|
+
const start = block.get('start');
|
|
19
|
+
const end = block.get('end');
|
|
20
|
+
if (thickStart >= end) {
|
|
21
|
+
// left-side UTR
|
|
22
|
+
const prime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
23
|
+
newChildren.push({
|
|
24
|
+
type: `${prime}_prime_UTR`,
|
|
25
|
+
start,
|
|
26
|
+
end,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else if (thickStart > start && thickStart < end && thickEnd >= end) {
|
|
30
|
+
// UTR | CDS
|
|
31
|
+
const prime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
32
|
+
newChildren.push({
|
|
33
|
+
type: `${prime}_prime_UTR`,
|
|
34
|
+
start,
|
|
35
|
+
end: thickStart,
|
|
36
|
+
}, {
|
|
37
|
+
type: 'CDS',
|
|
38
|
+
start: thickStart,
|
|
39
|
+
end,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else if (thickStart <= start && thickEnd >= end) {
|
|
43
|
+
// CDS
|
|
44
|
+
newChildren.push({
|
|
45
|
+
type: 'CDS',
|
|
46
|
+
start,
|
|
47
|
+
end,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
else if (thickStart > start && thickStart < end && thickEnd < end) {
|
|
51
|
+
// UTR | CDS | UTR
|
|
52
|
+
const leftPrime = feature.get('strand') > 0 ? 'five' : 'three';
|
|
53
|
+
const rightPrime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
54
|
+
newChildren.push({
|
|
55
|
+
type: `${leftPrime}_prime_UTR`,
|
|
56
|
+
start,
|
|
57
|
+
end: thickStart,
|
|
58
|
+
}, {
|
|
59
|
+
type: `CDS`,
|
|
60
|
+
start: thickStart,
|
|
61
|
+
end: thickEnd,
|
|
62
|
+
}, {
|
|
63
|
+
type: `${rightPrime}_prime_UTR`,
|
|
64
|
+
start: thickEnd,
|
|
65
|
+
end,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (thickStart <= start && thickEnd > start && thickEnd < end) {
|
|
69
|
+
// CDS | UTR
|
|
70
|
+
const prime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
71
|
+
newChildren.push({
|
|
72
|
+
type: `CDS`,
|
|
73
|
+
start,
|
|
74
|
+
end: thickEnd,
|
|
75
|
+
}, {
|
|
76
|
+
type: `${prime}_prime_UTR`,
|
|
77
|
+
start: thickEnd,
|
|
78
|
+
end,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else if (thickEnd <= start) {
|
|
82
|
+
// right-side UTR
|
|
83
|
+
const prime = feature.get('strand') > 0 ? 'three' : 'five';
|
|
84
|
+
newChildren.push({
|
|
85
|
+
type: `${prime}_prime_UTR`,
|
|
86
|
+
start,
|
|
87
|
+
end,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
const newData = Object.fromEntries(feature.tags().map(tag => [tag, feature.get(tag)]));
|
|
92
|
+
newData.subfeatures = newChildren;
|
|
93
|
+
newData.type = 'mRNA';
|
|
94
|
+
newData.uniqueId = feature.id();
|
|
95
|
+
delete newData.chromStarts;
|
|
96
|
+
delete newData.chromStart;
|
|
97
|
+
delete newData.chromEnd;
|
|
98
|
+
delete newData.chrom;
|
|
99
|
+
delete newData.blockStarts;
|
|
100
|
+
delete newData.blockSizes;
|
|
101
|
+
delete newData.blockCount;
|
|
102
|
+
delete newData.thickStart;
|
|
103
|
+
delete newData.thickEnd;
|
|
104
|
+
const newFeature = new SimpleFeature({
|
|
105
|
+
data: newData,
|
|
106
|
+
id: feature.id(),
|
|
107
|
+
});
|
|
108
|
+
return newFeature;
|
|
109
|
+
}
|
|
110
|
+
function defaultParser(fields, line) {
|
|
111
|
+
return Object.fromEntries(line.split('\t').map((f, i) => [fields[i], f]));
|
|
112
|
+
}
|
|
113
|
+
export function featureData(line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names) {
|
|
114
|
+
const l = line.split('\t');
|
|
115
|
+
const refName = l[colRef];
|
|
116
|
+
const start = +l[colStart];
|
|
117
|
+
const colSame = colStart === colEnd ? 1 : 0;
|
|
118
|
+
const end = +l[colEnd] + colSame;
|
|
119
|
+
const data = names
|
|
120
|
+
? defaultParser(names, line)
|
|
121
|
+
: parser.parseLine(line, { uniqueId });
|
|
122
|
+
const { blockCount, blockSizes, blockStarts, chromStarts } = data;
|
|
123
|
+
if (blockCount) {
|
|
124
|
+
const starts = chromStarts || blockStarts || [];
|
|
125
|
+
const sizes = blockSizes;
|
|
126
|
+
const blocksOffset = start;
|
|
127
|
+
data.subfeatures = [];
|
|
128
|
+
for (let b = 0; b < blockCount; b += 1) {
|
|
129
|
+
const bmin = (starts[b] || 0) + blocksOffset;
|
|
130
|
+
const bmax = bmin + (sizes[b] || 0);
|
|
131
|
+
data.subfeatures.push({
|
|
132
|
+
uniqueId: `${uniqueId}-${b}`,
|
|
133
|
+
start: bmin,
|
|
134
|
+
end: bmax,
|
|
135
|
+
type: 'block',
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (scoreColumn) {
|
|
140
|
+
data.score = +data[scoreColumn];
|
|
141
|
+
}
|
|
142
|
+
delete data.chrom;
|
|
143
|
+
delete data.chromStart;
|
|
144
|
+
delete data.chromEnd;
|
|
145
|
+
const f = new SimpleFeature({
|
|
146
|
+
...data,
|
|
147
|
+
start,
|
|
148
|
+
end,
|
|
149
|
+
refName,
|
|
150
|
+
uniqueId,
|
|
151
|
+
});
|
|
152
|
+
return f.get('thickStart') ? ucscProcessedTranscript(f) : f;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=util.js.map
|
package/esm/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-bed",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "JBrowse 2 bed adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -20,17 +20,21 @@
|
|
|
20
20
|
"main": "dist/index.js",
|
|
21
21
|
"files": [
|
|
22
22
|
"dist",
|
|
23
|
-
"src"
|
|
23
|
+
"src",
|
|
24
|
+
"esm"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
26
|
-
"build": "
|
|
27
|
+
"build": "npm-run-all build:*",
|
|
27
28
|
"test": "cd ../..; jest plugins/bed",
|
|
28
29
|
"prepublishOnly": "yarn test",
|
|
29
30
|
"prepack": "yarn build; yarn useDist",
|
|
30
31
|
"postpack": "yarn useSrc",
|
|
31
32
|
"useDist": "node ../../scripts/useDist.js",
|
|
32
33
|
"useSrc": "node ../../scripts/useSrc.js",
|
|
33
|
-
"
|
|
34
|
+
"prebuild": "npm run clean",
|
|
35
|
+
"build:esm": "tsc --build tsconfig.build.esm.json",
|
|
36
|
+
"build:es5": "tsc --build tsconfig.build.es5.json",
|
|
37
|
+
"clean": "rimraf dist esm *.tsbuildinfo"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {
|
|
36
40
|
"@babel/runtime": "^7.17.9",
|
|
@@ -42,11 +46,16 @@
|
|
|
42
46
|
},
|
|
43
47
|
"peerDependencies": {
|
|
44
48
|
"@jbrowse/core": "^1.0.0",
|
|
45
|
-
"mobx
|
|
49
|
+
"mobx": "^6.0.0",
|
|
50
|
+
"mobx-react": "^7.0.0",
|
|
51
|
+
"mobx-state-tree": "^5.0.0",
|
|
46
52
|
"rxjs": "^6.0.0"
|
|
47
53
|
},
|
|
48
54
|
"publishConfig": {
|
|
49
55
|
"access": "public"
|
|
50
56
|
},
|
|
51
|
-
"
|
|
57
|
+
"distModule": "esm/index.js",
|
|
58
|
+
"srcModule": "src/index.ts",
|
|
59
|
+
"module": "esm/index.js",
|
|
60
|
+
"gitHead": "ecc7f5d47351a5ea04bc00f3a6eb6dfb607342e6"
|
|
52
61
|
}
|