@jbrowse/plugin-sequence 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/BgzipFastaAdapter/BgzipFastaAdapter.js +50 -68
- package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js.map +1 -0
- package/dist/BgzipFastaAdapter/configSchema.js +31 -43
- package/dist/BgzipFastaAdapter/configSchema.js.map +1 -0
- package/dist/BgzipFastaAdapter/index.js +8 -14
- package/dist/BgzipFastaAdapter/index.js.map +1 -0
- package/dist/ChromSizesAdapter/ChromSizesAdapter.js +132 -166
- package/dist/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -0
- package/dist/ChromSizesAdapter/configSchema.js +12 -21
- package/dist/ChromSizesAdapter/configSchema.js.map +1 -0
- package/dist/ChromSizesAdapter/index.js +8 -14
- package/dist/ChromSizesAdapter/index.js.map +1 -0
- package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +130 -229
- package/dist/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -0
- package/dist/DivSequenceRenderer/configSchema.js +10 -19
- package/dist/DivSequenceRenderer/configSchema.js.map +1 -0
- package/dist/DivSequenceRenderer/index.js +10 -22
- package/dist/DivSequenceRenderer/index.js.map +1 -0
- package/dist/GCContentAdapter/GCContentAdapter.js +181 -248
- package/dist/GCContentAdapter/GCContentAdapter.js.map +1 -0
- package/dist/GCContentAdapter/configSchema.js +7 -16
- package/dist/GCContentAdapter/configSchema.js.map +1 -0
- package/dist/GCContentAdapter/index.js +33 -28
- package/dist/GCContentAdapter/index.js.map +1 -0
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +177 -266
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -0
- package/dist/IndexedFastaAdapter/configSchema.js +21 -36
- package/dist/IndexedFastaAdapter/configSchema.js.map +1 -0
- package/dist/IndexedFastaAdapter/index.js +8 -14
- package/dist/IndexedFastaAdapter/index.js.map +1 -0
- package/dist/LinearReferenceSequenceDisplay/configSchema.js +5 -16
- package/dist/LinearReferenceSequenceDisplay/configSchema.js.map +1 -0
- package/dist/LinearReferenceSequenceDisplay/index.js +7 -20
- package/dist/LinearReferenceSequenceDisplay/index.js.map +1 -0
- package/dist/LinearReferenceSequenceDisplay/model.d.ts +17 -15
- package/dist/LinearReferenceSequenceDisplay/model.js +88 -99
- package/dist/LinearReferenceSequenceDisplay/model.js.map +1 -0
- package/dist/TwoBitAdapter/TwoBitAdapter.js +178 -274
- package/dist/TwoBitAdapter/TwoBitAdapter.js.map +1 -0
- package/dist/TwoBitAdapter/configSchema.js +16 -28
- package/dist/TwoBitAdapter/configSchema.js.map +1 -0
- package/dist/TwoBitAdapter/index.js +8 -14
- package/dist/TwoBitAdapter/index.js.map +1 -0
- package/dist/index.js +255 -312
- package/dist/index.js.map +1 -0
- package/dist/referenceSeqTrackConfig.js +71 -86
- package/dist/referenceSeqTrackConfig.js.map +1 -0
- package/esm/BgzipFastaAdapter/BgzipFastaAdapter.d.ts +7 -0
- package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js +28 -0
- package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js.map +1 -0
- package/esm/BgzipFastaAdapter/configSchema.d.ts +2 -0
- package/esm/BgzipFastaAdapter/configSchema.js +30 -0
- package/esm/BgzipFastaAdapter/configSchema.js.map +1 -0
- package/esm/BgzipFastaAdapter/index.d.ts +1 -0
- package/esm/BgzipFastaAdapter/index.js +2 -0
- package/esm/BgzipFastaAdapter/index.js.map +1 -0
- package/esm/ChromSizesAdapter/ChromSizesAdapter.d.ts +19 -0
- package/esm/ChromSizesAdapter/ChromSizesAdapter.js +45 -0
- package/esm/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -0
- package/esm/ChromSizesAdapter/configSchema.d.ts +2 -0
- package/esm/ChromSizesAdapter/configSchema.js +11 -0
- package/esm/ChromSizesAdapter/configSchema.js.map +1 -0
- package/esm/ChromSizesAdapter/index.d.ts +1 -0
- package/esm/ChromSizesAdapter/index.js +2 -0
- package/esm/ChromSizesAdapter/index.js.map +1 -0
- package/esm/DivSequenceRenderer/components/DivSequenceRendering.d.ts +21 -0
- package/esm/DivSequenceRenderer/components/DivSequenceRendering.js +97 -0
- package/esm/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -0
- package/esm/DivSequenceRenderer/configSchema.d.ts +2 -0
- package/esm/DivSequenceRenderer/configSchema.js +9 -0
- package/esm/DivSequenceRenderer/configSchema.js.map +1 -0
- package/esm/DivSequenceRenderer/index.d.ts +2 -0
- package/esm/DivSequenceRenderer/index.js +3 -0
- package/esm/DivSequenceRenderer/index.js.map +1 -0
- package/esm/GCContentAdapter/GCContentAdapter.d.ts +23 -0
- package/esm/GCContentAdapter/GCContentAdapter.js +97 -0
- package/esm/GCContentAdapter/GCContentAdapter.js.map +1 -0
- package/esm/GCContentAdapter/configSchema.d.ts +3 -0
- package/esm/GCContentAdapter/configSchema.js +7 -0
- package/esm/GCContentAdapter/configSchema.js.map +1 -0
- package/esm/GCContentAdapter/index.d.ts +6 -0
- package/esm/GCContentAdapter/index.js +8 -0
- package/esm/GCContentAdapter/index.js.map +1 -0
- package/esm/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +27 -0
- package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js +90 -0
- package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -0
- package/esm/IndexedFastaAdapter/configSchema.d.ts +2 -0
- package/esm/IndexedFastaAdapter/configSchema.js +20 -0
- package/esm/IndexedFastaAdapter/configSchema.js.map +1 -0
- package/esm/IndexedFastaAdapter/index.d.ts +1 -0
- package/esm/IndexedFastaAdapter/index.js +2 -0
- package/esm/IndexedFastaAdapter/index.js.map +1 -0
- package/esm/LinearReferenceSequenceDisplay/configSchema.d.ts +1 -0
- package/esm/LinearReferenceSequenceDisplay/configSchema.js +4 -0
- package/esm/LinearReferenceSequenceDisplay/configSchema.js.map +1 -0
- package/esm/LinearReferenceSequenceDisplay/index.d.ts +2 -0
- package/esm/LinearReferenceSequenceDisplay/index.js +3 -0
- package/esm/LinearReferenceSequenceDisplay/index.js.map +1 -0
- package/esm/LinearReferenceSequenceDisplay/model.d.ts +210 -0
- package/esm/LinearReferenceSequenceDisplay/model.js +83 -0
- package/esm/LinearReferenceSequenceDisplay/model.js.map +1 -0
- package/esm/TwoBitAdapter/TwoBitAdapter.d.ts +26 -0
- package/esm/TwoBitAdapter/TwoBitAdapter.js +79 -0
- package/esm/TwoBitAdapter/TwoBitAdapter.js.map +1 -0
- package/esm/TwoBitAdapter/configSchema.d.ts +2 -0
- package/esm/TwoBitAdapter/configSchema.js +16 -0
- package/esm/TwoBitAdapter/configSchema.js.map +1 -0
- package/esm/TwoBitAdapter/index.d.ts +1 -0
- package/esm/TwoBitAdapter/index.js +2 -0
- package/esm/TwoBitAdapter/index.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.js +197 -0
- package/esm/index.js.map +1 -0
- package/esm/referenceSeqTrackConfig.d.ts +2 -0
- package/esm/referenceSeqTrackConfig.js +63 -0
- package/esm/referenceSeqTrackConfig.js.map +1 -0
- package/package.json +16 -8
- package/src/DivSequenceRenderer/components/DivSequenceRendering.test.js +1 -1
- package/src/LinearReferenceSequenceDisplay/model.ts +4 -2
- package/dist/BgzipFastaAdapter/BgzipFastaAdapter.test.js +0 -64
- package/dist/ChromSizesAdapter/ChromSizesAdapter.test.js +0 -46
- package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.js +0 -245
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.test.js +0 -81
- package/dist/TwoBitAdapter/TwoBitAdapter.test.js +0 -94
- package/dist/declare.d.js +0 -1
- package/dist/index.test.js +0 -29
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseSequenceAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
|
+
import { NoAssemblyRegion } from '@jbrowse/core/util/types';
|
|
3
|
+
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
4
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema';
|
|
5
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
6
|
+
import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
7
|
+
export default class TwoBitAdapter extends BaseSequenceAdapter {
|
|
8
|
+
private twobit;
|
|
9
|
+
protected chromSizesData: Promise<Record<string, number> | undefined>;
|
|
10
|
+
private initChromSizes;
|
|
11
|
+
constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
|
|
12
|
+
getRefNames(): Promise<string[]>;
|
|
13
|
+
getRegions(): Promise<NoAssemblyRegion[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Fetch features for a certain region
|
|
16
|
+
* @param param -
|
|
17
|
+
* @returns Observable of Feature objects in the region
|
|
18
|
+
*/
|
|
19
|
+
getFeatures({ refName, start, end }: NoAssemblyRegion): import("rxjs").Observable<Feature>;
|
|
20
|
+
/**
|
|
21
|
+
* called to provide a hint that data tied to a certain region
|
|
22
|
+
* will not be needed for the forseeable future and can be purged
|
|
23
|
+
* from caches, etc
|
|
24
|
+
*/
|
|
25
|
+
freeResources(): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { BaseSequenceAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
|
+
import { openLocation } from '@jbrowse/core/util/io';
|
|
3
|
+
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
4
|
+
import SimpleFeature from '@jbrowse/core/util/simpleFeature';
|
|
5
|
+
import { TwoBitFile } from '@gmod/twobit';
|
|
6
|
+
import { readConfObject } from '@jbrowse/core/configuration';
|
|
7
|
+
export default class TwoBitAdapter extends BaseSequenceAdapter {
|
|
8
|
+
constructor(config, getSubAdapter, pluginManager) {
|
|
9
|
+
super(config, getSubAdapter, pluginManager);
|
|
10
|
+
this.chromSizesData = this.initChromSizes();
|
|
11
|
+
this.twobit = new TwoBitFile({
|
|
12
|
+
filehandle: openLocation(readConfObject(config, 'twoBitLocation'), this.pluginManager),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async initChromSizes() {
|
|
16
|
+
const conf = readConfObject(this.config, 'chromSizesLocation');
|
|
17
|
+
// check against default and empty in case someone makes the field blank in
|
|
18
|
+
// config editor, may want better way to check "optional config slots" in
|
|
19
|
+
// future
|
|
20
|
+
if (conf.uri !== '/path/to/default.chrom.sizes' && conf.uri !== '') {
|
|
21
|
+
const file = openLocation(conf, this.pluginManager);
|
|
22
|
+
const data = await file.readFile('utf8');
|
|
23
|
+
return Object.fromEntries(data === null || data === void 0 ? void 0 : data.split('\n').filter(line => !!line.trim()).map(line => {
|
|
24
|
+
const [name, length] = line.split('\t');
|
|
25
|
+
return [name, +length];
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
async getRefNames() {
|
|
31
|
+
const chromSizesData = await this.chromSizesData;
|
|
32
|
+
if (chromSizesData) {
|
|
33
|
+
return Object.keys(chromSizesData);
|
|
34
|
+
}
|
|
35
|
+
return this.twobit.getSequenceNames();
|
|
36
|
+
}
|
|
37
|
+
async getRegions() {
|
|
38
|
+
const chromSizesData = await this.chromSizesData;
|
|
39
|
+
if (chromSizesData) {
|
|
40
|
+
return Object.keys(chromSizesData).map(refName => ({
|
|
41
|
+
refName,
|
|
42
|
+
start: 0,
|
|
43
|
+
end: chromSizesData[refName],
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
const refSizes = await this.twobit.getSequenceSizes();
|
|
47
|
+
return Object.keys(refSizes).map(refName => ({
|
|
48
|
+
refName,
|
|
49
|
+
start: 0,
|
|
50
|
+
end: refSizes[refName],
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Fetch features for a certain region
|
|
55
|
+
* @param param -
|
|
56
|
+
* @returns Observable of Feature objects in the region
|
|
57
|
+
*/
|
|
58
|
+
getFeatures({ refName, start, end }) {
|
|
59
|
+
return ObservableCreate(async (observer) => {
|
|
60
|
+
const size = await this.twobit.getSequenceSize(refName);
|
|
61
|
+
const regionEnd = size !== undefined ? Math.min(size, end) : end;
|
|
62
|
+
const seq = await this.twobit.getSequence(refName, start, regionEnd);
|
|
63
|
+
if (seq) {
|
|
64
|
+
observer.next(new SimpleFeature({
|
|
65
|
+
id: `${refName} ${start}-${regionEnd}`,
|
|
66
|
+
data: { refName, start, end: regionEnd, seq },
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
observer.complete();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* called to provide a hint that data tied to a certain region
|
|
74
|
+
* will not be needed for the forseeable future and can be purged
|
|
75
|
+
* from caches, etc
|
|
76
|
+
*/
|
|
77
|
+
freeResources( /* { region } */) { }
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=TwoBitAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwoBitAdapter.js","sourceRoot":"","sources":["../../src/TwoBitAdapter/TwoBitAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
export default ConfigurationSchema('TwoBitAdapter', {
|
|
3
|
+
twoBitLocation: {
|
|
4
|
+
type: 'fileLocation',
|
|
5
|
+
defaultValue: { uri: '/path/to/my.2bit', locationType: 'UriLocation' },
|
|
6
|
+
},
|
|
7
|
+
chromSizesLocation: {
|
|
8
|
+
type: 'fileLocation',
|
|
9
|
+
defaultValue: {
|
|
10
|
+
uri: '/path/to/default.chrom.sizes',
|
|
11
|
+
locationType: 'UriLocation',
|
|
12
|
+
},
|
|
13
|
+
description: 'An optional chrom.sizes file can be supplied to speed up loading since parsing the twobit file can take time',
|
|
14
|
+
},
|
|
15
|
+
}, { explicitlyTyped: true });
|
|
16
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/TwoBitAdapter/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,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE;KACvE;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,8BAA8B;YACnC,YAAY,EAAE,aAAa;SAC5B;QACD,WAAW,EACT,8GAA8G;KACjH;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/TwoBitAdapter/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,197 @@
|
|
|
1
|
+
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
|
|
2
|
+
import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models';
|
|
3
|
+
import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
4
|
+
import TrackType from '@jbrowse/core/pluggableElementTypes/TrackType';
|
|
5
|
+
import Plugin from '@jbrowse/core/Plugin';
|
|
6
|
+
import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view';
|
|
7
|
+
import { makeIndex, getFileName, } from '@jbrowse/core/util/tracks';
|
|
8
|
+
import { configSchema as bgzipFastaAdapterConfigSchema } from './BgzipFastaAdapter';
|
|
9
|
+
import { configSchema as chromSizesAdapterConfigSchema } from './ChromSizesAdapter';
|
|
10
|
+
import { configSchema as divSequenceRendererConfigSchema, ReactComponent as DivSequenceRendererReactComponent, } from './DivSequenceRenderer';
|
|
11
|
+
import { configSchema as indexedFastaAdapterConfigSchema } from './IndexedFastaAdapter';
|
|
12
|
+
import { configSchema as linearReferenceSequenceDisplayConfigSchema, modelFactory as linearReferenceSequenceDisplayModelFactory, } from './LinearReferenceSequenceDisplay';
|
|
13
|
+
import { configSchema as twoBitAdapterConfigSchema } from './TwoBitAdapter';
|
|
14
|
+
import GCContentAdapterF from './GCContentAdapter';
|
|
15
|
+
import { createReferenceSeqTrackConfig } from './referenceSeqTrackConfig';
|
|
16
|
+
/* adjust in both directions */
|
|
17
|
+
class DivSequenceRenderer extends FeatureRendererType {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.supportsSVG = true;
|
|
21
|
+
}
|
|
22
|
+
getExpandedRegion(region) {
|
|
23
|
+
return {
|
|
24
|
+
...region,
|
|
25
|
+
start: Math.max(region.start - 3, 0),
|
|
26
|
+
end: region.end + 3,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export default class SequencePlugin extends Plugin {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.name = 'SequencePlugin';
|
|
34
|
+
}
|
|
35
|
+
install(pluginManager) {
|
|
36
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
37
|
+
name: 'TwoBitAdapter',
|
|
38
|
+
configSchema: twoBitAdapterConfigSchema,
|
|
39
|
+
adapterMetadata: {
|
|
40
|
+
category: null,
|
|
41
|
+
hiddenFromGUI: true,
|
|
42
|
+
displayName: null,
|
|
43
|
+
description: null,
|
|
44
|
+
},
|
|
45
|
+
getAdapterClass: () => import('./TwoBitAdapter/TwoBitAdapter').then(r => r.default),
|
|
46
|
+
}));
|
|
47
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
48
|
+
return (file, index, adapterHint) => {
|
|
49
|
+
const regexGuess = /\.2bit$/i;
|
|
50
|
+
const adapterName = 'TwoBitAdapter';
|
|
51
|
+
const fileName = getFileName(file);
|
|
52
|
+
const obj = {
|
|
53
|
+
type: adapterName,
|
|
54
|
+
twoBitLocation: file,
|
|
55
|
+
};
|
|
56
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
57
|
+
return obj;
|
|
58
|
+
}
|
|
59
|
+
else if (adapterHint === adapterName) {
|
|
60
|
+
return obj;
|
|
61
|
+
}
|
|
62
|
+
return adapterGuesser(file, index, adapterHint);
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
|
|
66
|
+
return (adapterName) => {
|
|
67
|
+
if (adapterName === 'TwoBitAdapter') {
|
|
68
|
+
return 'ReferenceSequenceTrack';
|
|
69
|
+
}
|
|
70
|
+
return trackTypeGuesser(adapterName);
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
74
|
+
name: 'ChromSizesAdapter',
|
|
75
|
+
configSchema: chromSizesAdapterConfigSchema,
|
|
76
|
+
adapterMetadata: {
|
|
77
|
+
category: null,
|
|
78
|
+
hiddenFromGUI: true,
|
|
79
|
+
displayName: null,
|
|
80
|
+
description: null,
|
|
81
|
+
},
|
|
82
|
+
getAdapterClass: () => import('./ChromSizesAdapter/ChromSizesAdapter').then(r => r.default),
|
|
83
|
+
}));
|
|
84
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
85
|
+
name: 'IndexedFastaAdapter',
|
|
86
|
+
configSchema: indexedFastaAdapterConfigSchema,
|
|
87
|
+
adapterMetadata: {
|
|
88
|
+
category: null,
|
|
89
|
+
hiddenFromGUI: true,
|
|
90
|
+
displayName: null,
|
|
91
|
+
description: null,
|
|
92
|
+
},
|
|
93
|
+
getAdapterClass: () => import('./IndexedFastaAdapter/IndexedFastaAdapter').then(r => r.default),
|
|
94
|
+
}));
|
|
95
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
96
|
+
return (file, index, adapterHint) => {
|
|
97
|
+
const regexGuess = /\.(fa|fasta|fas|fna|mfa)$/i;
|
|
98
|
+
const adapterName = 'IndexedFastaAdapter';
|
|
99
|
+
const fileName = getFileName(file);
|
|
100
|
+
const obj = {
|
|
101
|
+
type: adapterName,
|
|
102
|
+
fastaLocation: file,
|
|
103
|
+
faiLocation: index || makeIndex(file, '.fai'),
|
|
104
|
+
};
|
|
105
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
106
|
+
return obj;
|
|
107
|
+
}
|
|
108
|
+
else if (adapterHint === adapterName) {
|
|
109
|
+
return obj;
|
|
110
|
+
}
|
|
111
|
+
return adapterGuesser(file, index, adapterHint);
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
|
|
115
|
+
return (adapterName) => {
|
|
116
|
+
if (adapterName === 'IndexedFastaAdapter') {
|
|
117
|
+
return 'ReferenceSequenceTrack';
|
|
118
|
+
}
|
|
119
|
+
return trackTypeGuesser(adapterName);
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
123
|
+
name: 'BgzipFastaAdapter',
|
|
124
|
+
configSchema: bgzipFastaAdapterConfigSchema,
|
|
125
|
+
adapterMetadata: {
|
|
126
|
+
category: null,
|
|
127
|
+
hiddenFromGUI: true,
|
|
128
|
+
displayName: null,
|
|
129
|
+
description: null,
|
|
130
|
+
},
|
|
131
|
+
getAdapterClass: () => import('./BgzipFastaAdapter/BgzipFastaAdapter').then(r => r.default),
|
|
132
|
+
}));
|
|
133
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
134
|
+
return (file, index, adapterHint) => {
|
|
135
|
+
const regexGuess = /\.(fa|fasta|fas|fna|mfa)\.b?gz$/i;
|
|
136
|
+
const adapterName = 'BgzipFastaAdapter';
|
|
137
|
+
const fileName = getFileName(file);
|
|
138
|
+
const obj = {
|
|
139
|
+
type: adapterName,
|
|
140
|
+
faiLocation: makeIndex(file, '.fai'),
|
|
141
|
+
gziLocation: makeIndex(file, '.gzi'),
|
|
142
|
+
};
|
|
143
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
144
|
+
return obj;
|
|
145
|
+
}
|
|
146
|
+
else if (adapterHint === adapterName) {
|
|
147
|
+
return obj;
|
|
148
|
+
}
|
|
149
|
+
return adapterGuesser(file, index, adapterHint);
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
|
|
153
|
+
return (adapterName) => {
|
|
154
|
+
if (adapterName === 'BgzipFastaAdapter') {
|
|
155
|
+
return 'ReferenceSequenceTrack';
|
|
156
|
+
}
|
|
157
|
+
return trackTypeGuesser(adapterName);
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
161
|
+
name: 'GCContentAdapter',
|
|
162
|
+
adapterMetadata: {
|
|
163
|
+
category: null,
|
|
164
|
+
hiddenFromGUI: true,
|
|
165
|
+
displayName: null,
|
|
166
|
+
description: null,
|
|
167
|
+
},
|
|
168
|
+
...pluginManager.load(GCContentAdapterF),
|
|
169
|
+
}));
|
|
170
|
+
pluginManager.addTrackType(() => {
|
|
171
|
+
const configSchema = createReferenceSeqTrackConfig(pluginManager);
|
|
172
|
+
return new TrackType({
|
|
173
|
+
name: 'ReferenceSequenceTrack',
|
|
174
|
+
configSchema,
|
|
175
|
+
stateModel: createBaseTrackModel(pluginManager, 'ReferenceSequenceTrack', configSchema),
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
pluginManager.addDisplayType(() => {
|
|
179
|
+
const stateModel = linearReferenceSequenceDisplayModelFactory(linearReferenceSequenceDisplayConfigSchema);
|
|
180
|
+
return {
|
|
181
|
+
name: 'LinearReferenceSequenceDisplay',
|
|
182
|
+
configSchema: linearReferenceSequenceDisplayConfigSchema,
|
|
183
|
+
stateModel,
|
|
184
|
+
trackType: 'ReferenceSequenceTrack',
|
|
185
|
+
viewType: 'LinearGenomeView',
|
|
186
|
+
ReactComponent: BaseLinearDisplayComponent,
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
pluginManager.addRendererType(() => new DivSequenceRenderer({
|
|
190
|
+
name: 'DivSequenceRenderer',
|
|
191
|
+
ReactComponent: DivSequenceRendererReactComponent,
|
|
192
|
+
configSchema: divSequenceRendererConfigSchema,
|
|
193
|
+
pluginManager,
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# 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":"AAAA,OAAO,WAAW,MAAM,iDAAiD,CAAA;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AACjF,OAAO,mBAAmB,MAAM,mEAAmE,CAAA;AACnG,OAAO,SAAS,MAAM,+CAA+C,CAAA;AACrE,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,EACL,SAAS,EAET,WAAW,GAEZ,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,IAAI,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAE,YAAY,IAAI,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EACL,YAAY,IAAI,+BAA+B,EAC/C,cAAc,IAAI,iCAAiC,GACpD,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EACL,YAAY,IAAI,0CAA0C,EAC1D,YAAY,IAAI,0CAA0C,GAC3D,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,YAAY,IAAI,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AAEzE,+BAA+B;AAC/B,MAAM,mBAAoB,SAAQ,mBAAmB;IAArD;;QACE,gBAAW,GAAG,IAAI,CAAA;IASpB,CAAC;IAPC,iBAAiB,CAAC,MAAc;QAC9B,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;SACpB,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,MAAM;IAAlD;;QACE,SAAI,GAAG,gBAAgB,CAAA;IA0OzB,CAAC;IAxOC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,yBAAyB;YACvC,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAC/D,CAAC,CACL,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,UAAU,CAAA;gBAC7B,MAAM,WAAW,GAAG,eAAe,CAAA;gBACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,cAAc,EAAE,IAAI;iBACrB,CAAA;gBACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,gCAAgC,EAChC,CAAC,gBAAkC,EAAE,EAAE;YACrC,OAAO,CAAC,WAAmB,EAAE,EAAE;gBAC7B,IAAI,WAAW,KAAK,eAAe,EAAE;oBACnC,OAAO,wBAAwB,CAAA;iBAChC;gBACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;YACtC,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,6BAA6B;YAC3C,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACf;SACJ,CAAC,CACL,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,+BAA+B;YAC7C,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,2CAA2C,CAAC,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACf;SACJ,CAAC,CACL,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,4BAA4B,CAAA;gBAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAA;gBACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,aAAa,EAAE,IAAI;oBACnB,WAAW,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;iBAC9C,CAAA;gBAED,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,gCAAgC,EAChC,CAAC,gBAAkC,EAAE,EAAE;YACrC,OAAO,CAAC,WAAmB,EAAE,EAAE;gBAC7B,IAAI,WAAW,KAAK,qBAAqB,EAAE;oBACzC,OAAO,wBAAwB,CAAA;iBAChC;gBACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;YACtC,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,6BAA6B;YAC3C,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACf;SACJ,CAAC,CACL,CAAA;QAED,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,kCAAkC,CAAA;gBACrD,MAAM,WAAW,GAAG,mBAAmB,CAAA;gBACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;oBACpC,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;iBACrC,CAAA;gBAED,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,gCAAgC,EAChC,CAAC,gBAAkC,EAAE,EAAE;YACrC,OAAO,CAAC,WAAmB,EAAE,EAAE;gBAC7B,IAAI,WAAW,KAAK,mBAAmB,EAAE;oBACvC,OAAO,wBAAwB,CAAA;iBAChC;gBACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;YACtC,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,kBAAkB;YACxB,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,GAAG,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACzC,CAAC,CACL,CAAA;QACD,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE;YAC9B,MAAM,YAAY,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAA;YAEjE,OAAO,IAAI,SAAS,CAAC;gBACnB,IAAI,EAAE,wBAAwB;gBAC9B,YAAY;gBACZ,UAAU,EAAE,oBAAoB,CAC9B,aAAa,EACb,wBAAwB,EACxB,YAAY,CACb;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE;YAChC,MAAM,UAAU,GAAG,0CAA0C,CAC3D,0CAA0C,CAC3C,CAAA;YACD,OAAO;gBACL,IAAI,EAAE,gCAAgC;gBACtC,YAAY,EAAE,0CAA0C;gBACxD,UAAU;gBACV,SAAS,EAAE,wBAAwB;gBACnC,QAAQ,EAAE,kBAAkB;gBAC5B,cAAc,EAAE,0BAA0B;aAC3C,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,mBAAmB,CAAC;YACtB,IAAI,EAAE,qBAAqB;YAC3B,cAAc,EAAE,iCAAiC;YACjD,YAAY,EAAE,+BAA+B;YAC7C,aAAa;SACd,CAAC,CACL,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { types } from 'mobx-state-tree';
|
|
3
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
4
|
+
/*
|
|
5
|
+
Note: this is primarily a copy of createBaseTrackConfig, except with a subset
|
|
6
|
+
of the config slots, to avoid including fields that don't make sense for the
|
|
7
|
+
ReferenceSequenceTrack
|
|
8
|
+
*/
|
|
9
|
+
export function createReferenceSeqTrackConfig(pluginManager) {
|
|
10
|
+
return ConfigurationSchema('ReferenceSequenceTrack', {
|
|
11
|
+
adapter: pluginManager.pluggableConfigSchemaType('adapter'),
|
|
12
|
+
displays: types.array(pluginManager.pluggableConfigSchemaType('display')),
|
|
13
|
+
name: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'optional track name',
|
|
16
|
+
defaultValue: '',
|
|
17
|
+
},
|
|
18
|
+
metadata: {
|
|
19
|
+
type: 'frozen',
|
|
20
|
+
description: 'anything to add about this track',
|
|
21
|
+
defaultValue: {},
|
|
22
|
+
},
|
|
23
|
+
}, {
|
|
24
|
+
preProcessSnapshot: s => {
|
|
25
|
+
const snap = JSON.parse(JSON.stringify(s));
|
|
26
|
+
const displayTypes = new Set();
|
|
27
|
+
const { displays = [] } = snap;
|
|
28
|
+
if (snap.trackId !== 'placeholderId') {
|
|
29
|
+
// Gets the displays on the track snapshot and the possible displays
|
|
30
|
+
// from the track type and adds any missing possible displays to the
|
|
31
|
+
// snapshot
|
|
32
|
+
displays.forEach((d) => d && displayTypes.add(d.type));
|
|
33
|
+
const trackType = pluginManager.getTrackType(snap.type);
|
|
34
|
+
trackType.displayTypes.forEach(displayType => {
|
|
35
|
+
if (!displayTypes.has(displayType.name)) {
|
|
36
|
+
displays.push({
|
|
37
|
+
displayId: `${snap.trackId}-${displayType.name}`,
|
|
38
|
+
type: displayType.name,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return { ...snap, displays };
|
|
44
|
+
},
|
|
45
|
+
explicitIdentifier: 'trackId',
|
|
46
|
+
explicitlyTyped: true,
|
|
47
|
+
actions: (self) => ({
|
|
48
|
+
addDisplayConf(displayConf) {
|
|
49
|
+
const { type } = displayConf;
|
|
50
|
+
if (!type) {
|
|
51
|
+
throw new Error(`unknown display type ${type}`);
|
|
52
|
+
}
|
|
53
|
+
const display = self.displays.find((d) => d && d.displayId === displayConf.displayId);
|
|
54
|
+
if (display) {
|
|
55
|
+
return display;
|
|
56
|
+
}
|
|
57
|
+
const length = self.displays.push(displayConf);
|
|
58
|
+
return self.displays[length - 1];
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=referenceSeqTrackConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenceSeqTrackConfig.js","sourceRoot":"","sources":["../src/referenceSeqTrackConfig.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE;;;;EAIE;AACF,MAAM,UAAU,6BAA6B,CAAC,aAA4B;IACxE,OAAO,mBAAmB,CACxB,wBAAwB,EACxB;QACE,OAAO,EAAE,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAC3D,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,YAAY,EAAE,EAAE;SACjB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,YAAY,EAAE,EAAE;SACjB;KACF,EACD;QACE,kBAAkB,EAAE,CAAC,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;YAC9B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;YAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,EAAE;gBACpC,oEAAoE;gBACpE,oEAAoE;gBACpE,WAAW;gBACX,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvD,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;wBACvC,QAAQ,CAAC,IAAI,CAAC;4BACZ,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE;4BAChD,IAAI,EAAE,WAAW,CAAC,IAAI;yBACvB,CAAC,CAAA;qBACH;gBACH,CAAC,CAAC,CAAA;aACH;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAA;QAC9B,CAAC;QACD,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACvB,cAAc,CAAC,WAAgD;gBAC7D,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAA;gBAC5B,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;iBAChD;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,CACvD,CAAA;gBACD,IAAI,OAAO,EAAE;oBACX,OAAO,OAAO,CAAA;iBACf;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAClC,CAAC;SACF,CAAC;KACH,CACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-sequence",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "JBrowse 2 sequence 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/sequence",
|
|
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",
|
|
@@ -43,9 +47,10 @@
|
|
|
43
47
|
"@jbrowse/core": "^1.0.0",
|
|
44
48
|
"@jbrowse/plugin-linear-genome-view": "^1.0.0",
|
|
45
49
|
"@jbrowse/plugin-wiggle": "^1.0.0",
|
|
46
|
-
"@material
|
|
47
|
-
"mobx
|
|
48
|
-
"mobx-
|
|
50
|
+
"@mui/material": "^5.0.0",
|
|
51
|
+
"mobx": "^6.0.0",
|
|
52
|
+
"mobx-react": "^7.0.0",
|
|
53
|
+
"mobx-state-tree": "^5.0.0",
|
|
49
54
|
"prop-types": "^15.0.0",
|
|
50
55
|
"react": ">=16.8.0",
|
|
51
56
|
"rxjs": "^6.0.0"
|
|
@@ -53,5 +58,8 @@
|
|
|
53
58
|
"publishConfig": {
|
|
54
59
|
"access": "public"
|
|
55
60
|
},
|
|
56
|
-
"
|
|
61
|
+
"distModule": "esm/index.js",
|
|
62
|
+
"srcModule": "src/index.ts",
|
|
63
|
+
"module": "esm/index.js",
|
|
64
|
+
"gitHead": "ecc7f5d47351a5ea04bc00f3a6eb6dfb607342e6"
|
|
57
65
|
}
|
|
@@ -4,7 +4,7 @@ import { render } from '@testing-library/react'
|
|
|
4
4
|
import { createJBrowseTheme } from '@jbrowse/core/ui'
|
|
5
5
|
import PrecomputedLayout from '@jbrowse/core/util/layouts/PrecomputedLayout'
|
|
6
6
|
import SimpleFeature from '@jbrowse/core/util/simpleFeature'
|
|
7
|
-
import { ThemeProvider } from '@material
|
|
7
|
+
import { ThemeProvider } from '@mui/material'
|
|
8
8
|
import DivSequenceRendering from './DivSequenceRendering'
|
|
9
9
|
import DivRenderingConfigSchema from '../configSchema'
|
|
10
10
|
|
|
@@ -3,8 +3,10 @@ import {
|
|
|
3
3
|
BaseLinearDisplay,
|
|
4
4
|
LinearGenomeViewModel,
|
|
5
5
|
} from '@jbrowse/plugin-linear-genome-view'
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
AnyConfigurationSchemaType,
|
|
8
|
+
ConfigurationReference,
|
|
9
|
+
} from '@jbrowse/core/configuration'
|
|
8
10
|
import { getContainingView } from '@jbrowse/core/util'
|
|
9
11
|
|
|
10
12
|
export function modelFactory(configSchema: AnyConfigurationSchemaType) {
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
-
|
|
7
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
-
|
|
9
|
-
var _operators = require("rxjs/operators");
|
|
10
|
-
|
|
11
|
-
var _BgzipFastaAdapter = _interopRequireDefault(require("./BgzipFastaAdapter"));
|
|
12
|
-
|
|
13
|
-
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
14
|
-
|
|
15
|
-
test('can use a indexed fasta with gzi', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
16
|
-
var adapter, features, featuresArray, features2, featuresArray2;
|
|
17
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
18
|
-
while (1) {
|
|
19
|
-
switch (_context.prev = _context.next) {
|
|
20
|
-
case 0:
|
|
21
|
-
adapter = new _BgzipFastaAdapter.default(_configSchema.default.create({
|
|
22
|
-
fastaLocation: {
|
|
23
|
-
localPath: require.resolve('../../test_data/volvox.fa.gz'),
|
|
24
|
-
locationType: 'LocalPathLocation'
|
|
25
|
-
},
|
|
26
|
-
faiLocation: {
|
|
27
|
-
localPath: require.resolve('../../test_data/volvox.fa.gz.fai'),
|
|
28
|
-
locationType: 'LocalPathLocation'
|
|
29
|
-
},
|
|
30
|
-
gziLocation: {
|
|
31
|
-
localPath: require.resolve('../../test_data/volvox.fa.gz.gzi'),
|
|
32
|
-
locationType: 'LocalPathLocation'
|
|
33
|
-
}
|
|
34
|
-
}));
|
|
35
|
-
features = adapter.getFeatures({
|
|
36
|
-
refName: 'ctgA',
|
|
37
|
-
start: 0,
|
|
38
|
-
end: 20000
|
|
39
|
-
});
|
|
40
|
-
_context.next = 4;
|
|
41
|
-
return features.pipe((0, _operators.toArray)()).toPromise();
|
|
42
|
-
|
|
43
|
-
case 4:
|
|
44
|
-
featuresArray = _context.sent;
|
|
45
|
-
expect(featuresArray).toMatchSnapshot();
|
|
46
|
-
features2 = adapter.getFeatures({
|
|
47
|
-
refName: 'ctgC',
|
|
48
|
-
start: 0,
|
|
49
|
-
end: 20000
|
|
50
|
-
});
|
|
51
|
-
_context.next = 9;
|
|
52
|
-
return features2.pipe((0, _operators.toArray)()).toPromise();
|
|
53
|
-
|
|
54
|
-
case 9:
|
|
55
|
-
featuresArray2 = _context.sent;
|
|
56
|
-
expect(featuresArray2).toMatchSnapshot();
|
|
57
|
-
|
|
58
|
-
case 11:
|
|
59
|
-
case "end":
|
|
60
|
-
return _context.stop();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}, _callee);
|
|
64
|
-
})));
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
-
|
|
7
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
-
|
|
9
|
-
var _ChromSizesAdapter = _interopRequireDefault(require("./ChromSizesAdapter"));
|
|
10
|
-
|
|
11
|
-
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
12
|
-
|
|
13
|
-
test('adapter can fetch sequence from volvox.chrom.sizes', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
14
|
-
var adapter, regions;
|
|
15
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
-
while (1) {
|
|
17
|
-
switch (_context.prev = _context.next) {
|
|
18
|
-
case 0:
|
|
19
|
-
adapter = new _ChromSizesAdapter.default(_configSchema.default.create({
|
|
20
|
-
chromSizesLocation: {
|
|
21
|
-
localPath: require.resolve('./test_data/volvox.chrom.sizes'),
|
|
22
|
-
locationType: 'LocalPathLocation'
|
|
23
|
-
}
|
|
24
|
-
}));
|
|
25
|
-
_context.next = 3;
|
|
26
|
-
return adapter.getRegions();
|
|
27
|
-
|
|
28
|
-
case 3:
|
|
29
|
-
regions = _context.sent;
|
|
30
|
-
expect(regions).toEqual([{
|
|
31
|
-
refName: 'ctgA',
|
|
32
|
-
start: 0,
|
|
33
|
-
end: 50001
|
|
34
|
-
}, {
|
|
35
|
-
refName: 'ctgB',
|
|
36
|
-
start: 0,
|
|
37
|
-
end: 6079
|
|
38
|
-
}]);
|
|
39
|
-
|
|
40
|
-
case 5:
|
|
41
|
-
case "end":
|
|
42
|
-
return _context.stop();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}, _callee);
|
|
46
|
-
})));
|