@jbrowse/plugin-sequence 2.1.7 → 2.2.1
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/configSchema.d.ts +2 -2
- package/dist/BgzipFastaAdapter/configSchema.js +18 -1
- package/dist/BgzipFastaAdapter/configSchema.js.map +1 -1
- package/dist/ChromSizesAdapter/configSchema.d.ts +2 -2
- package/dist/ChromSizesAdapter/configSchema.js +9 -1
- package/dist/ChromSizesAdapter/configSchema.js.map +1 -1
- package/dist/DivSequenceRenderer/configSchema.d.ts +2 -2
- package/dist/DivSequenceRenderer/configSchema.js +9 -1
- package/dist/DivSequenceRenderer/configSchema.js.map +1 -1
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +0 -4
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +2 -2
- package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -1
- package/dist/IndexedFastaAdapter/configSchema.d.ts +2 -2
- package/dist/IndexedFastaAdapter/configSchema.js +15 -1
- package/dist/IndexedFastaAdapter/configSchema.js.map +1 -1
- package/dist/LinearReferenceSequenceDisplay/configSchema.js +10 -1
- package/dist/LinearReferenceSequenceDisplay/configSchema.js.map +1 -1
- package/dist/LinearReferenceSequenceDisplay/model.d.ts +2 -2
- package/dist/ReferenceSequenceTrack/configSchema.js +33 -6
- package/dist/ReferenceSequenceTrack/configSchema.js.map +1 -1
- package/dist/SequenceSearchAdapter/configSchema.js +19 -0
- package/dist/SequenceSearchAdapter/configSchema.js.map +1 -1
- package/dist/TwoBitAdapter/TwoBitAdapter.js +7 -7
- package/dist/TwoBitAdapter/TwoBitAdapter.js.map +1 -1
- package/dist/TwoBitAdapter/configSchema.d.ts +2 -2
- package/dist/TwoBitAdapter/configSchema.js +12 -1
- package/dist/TwoBitAdapter/configSchema.js.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/esm/BgzipFastaAdapter/configSchema.d.ts +2 -2
- package/esm/BgzipFastaAdapter/configSchema.js +18 -1
- package/esm/BgzipFastaAdapter/configSchema.js.map +1 -1
- package/esm/ChromSizesAdapter/configSchema.d.ts +2 -2
- package/esm/ChromSizesAdapter/configSchema.js +9 -1
- package/esm/ChromSizesAdapter/configSchema.js.map +1 -1
- package/esm/DivSequenceRenderer/configSchema.d.ts +2 -2
- package/esm/DivSequenceRenderer/configSchema.js +9 -1
- package/esm/DivSequenceRenderer/configSchema.js.map +1 -1
- package/esm/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +0 -4
- package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js +2 -2
- package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -1
- package/esm/IndexedFastaAdapter/configSchema.d.ts +2 -2
- package/esm/IndexedFastaAdapter/configSchema.js +15 -1
- package/esm/IndexedFastaAdapter/configSchema.js.map +1 -1
- package/esm/LinearReferenceSequenceDisplay/configSchema.js +10 -1
- package/esm/LinearReferenceSequenceDisplay/configSchema.js.map +1 -1
- package/esm/LinearReferenceSequenceDisplay/model.d.ts +2 -2
- package/esm/ReferenceSequenceTrack/configSchema.js +33 -6
- package/esm/ReferenceSequenceTrack/configSchema.js.map +1 -1
- package/esm/SequenceSearchAdapter/configSchema.js +19 -0
- package/esm/SequenceSearchAdapter/configSchema.js.map +1 -1
- package/esm/TwoBitAdapter/TwoBitAdapter.js +7 -7
- package/esm/TwoBitAdapter/TwoBitAdapter.js.map +1 -1
- package/esm/TwoBitAdapter/configSchema.d.ts +2 -2
- package/esm/TwoBitAdapter/configSchema.js +12 -1
- package/esm/TwoBitAdapter/configSchema.js.map +1 -1
- package/esm/index.js +0 -2
- package/esm/index.js.map +1 -1
- package/package.json +2 -2
- package/src/BgzipFastaAdapter/__snapshots__/BgzipFastaAdapter.test.ts.snap +3 -3
- package/src/BgzipFastaAdapter/configSchema.ts +18 -1
- package/src/ChromSizesAdapter/configSchema.ts +11 -1
- package/src/DivSequenceRenderer/configSchema.ts +11 -1
- package/src/IndexedFastaAdapter/IndexedFastaAdapter.ts +0 -11
- package/src/IndexedFastaAdapter/__snapshots__/IndexedFastaAdapter.test.ts.snap +3 -3
- package/src/IndexedFastaAdapter/configSchema.ts +16 -1
- package/src/LinearReferenceSequenceDisplay/configSchema.ts +11 -1
- package/src/ReferenceSequenceTrack/configSchema.ts +40 -6
- package/src/SequenceSearchAdapter/configSchema.ts +20 -0
- package/src/TwoBitAdapter/__snapshots__/TwoBitAdapter.test.ts.snap +6 -6
- package/src/TwoBitAdapter/configSchema.ts +14 -1
- package/src/__snapshots__/index.test.js.snap +2 -2
- package/src/index.ts +0 -2
- package/dist/GCContentAdapter/GCContentAdapter.d.ts +0 -17
- package/dist/GCContentAdapter/GCContentAdapter.js +0 -89
- package/dist/GCContentAdapter/GCContentAdapter.js.map +0 -1
- package/dist/GCContentAdapter/configSchema.d.ts +0 -3
- package/dist/GCContentAdapter/configSchema.js +0 -9
- package/dist/GCContentAdapter/configSchema.js.map +0 -1
- package/dist/GCContentAdapter/index.d.ts +0 -3
- package/dist/GCContentAdapter/index.js +0 -44
- package/dist/GCContentAdapter/index.js.map +0 -1
- package/esm/GCContentAdapter/GCContentAdapter.d.ts +0 -17
- package/esm/GCContentAdapter/GCContentAdapter.js +0 -86
- package/esm/GCContentAdapter/GCContentAdapter.js.map +0 -1
- package/esm/GCContentAdapter/configSchema.d.ts +0 -3
- package/esm/GCContentAdapter/configSchema.js +0 -7
- package/esm/GCContentAdapter/configSchema.js.map +0 -1
- package/esm/GCContentAdapter/index.d.ts +0 -3
- package/esm/GCContentAdapter/index.js +0 -16
- package/esm/GCContentAdapter/index.js.map +0 -1
- package/src/GCContentAdapter/GCContentAdapter.ts +0 -99
- package/src/GCContentAdapter/configSchema.ts +0 -12
- package/src/GCContentAdapter/index.ts +0 -22
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
|
-
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
3
|
-
import { SimpleFeature } from '@jbrowse/core/util';
|
|
4
|
-
import { toArray } from 'rxjs/operators';
|
|
5
|
-
export default class default_1 extends BaseFeatureDataAdapter {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.windowSize = 1000;
|
|
9
|
-
this.windowDelta = 1000;
|
|
10
|
-
this.gcMode = 'content';
|
|
11
|
-
}
|
|
12
|
-
async configure() {
|
|
13
|
-
var _a;
|
|
14
|
-
const adapter = await ((_a = this.getSubAdapter) === null || _a === void 0 ? void 0 : _a.call(this, this.getConf('sequenceAdapter')));
|
|
15
|
-
if (!adapter) {
|
|
16
|
-
throw new Error('Error getting subadapter');
|
|
17
|
-
}
|
|
18
|
-
return adapter.dataAdapter;
|
|
19
|
-
}
|
|
20
|
-
async getRefNames() {
|
|
21
|
-
const adapter = await this.configure();
|
|
22
|
-
return adapter.getRefNames();
|
|
23
|
-
}
|
|
24
|
-
getFeatures(query, opts) {
|
|
25
|
-
return ObservableCreate(async (observer) => {
|
|
26
|
-
var _a;
|
|
27
|
-
const sequenceAdapter = await this.configure();
|
|
28
|
-
const hw = this.windowSize === 1 ? 1 : this.windowSize / 2; // Half the window size
|
|
29
|
-
const f = this.windowSize === 1;
|
|
30
|
-
let { start: queryStart, end: queryEnd } = query;
|
|
31
|
-
queryStart = Math.max(0, queryStart - hw);
|
|
32
|
-
queryEnd += hw;
|
|
33
|
-
if (queryEnd < 0 || queryStart > queryEnd) {
|
|
34
|
-
observer.complete();
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const ret = sequenceAdapter.getFeatures({
|
|
38
|
-
...query,
|
|
39
|
-
start: queryStart,
|
|
40
|
-
end: queryEnd,
|
|
41
|
-
}, opts);
|
|
42
|
-
const feats = await ret.pipe(toArray()).toPromise();
|
|
43
|
-
const residues = ((_a = feats[0]) === null || _a === void 0 ? void 0 : _a.get('seq')) || '';
|
|
44
|
-
for (let i = hw; i < residues.length - hw; i += this.windowDelta) {
|
|
45
|
-
const r = f ? residues[i] : residues.slice(i - hw, i + hw);
|
|
46
|
-
let nc = 0;
|
|
47
|
-
let ng = 0;
|
|
48
|
-
let len = 0;
|
|
49
|
-
for (let j = 0; j < r.length; j++) {
|
|
50
|
-
if (r[j] === 'c' || r[j] === 'C') {
|
|
51
|
-
nc++;
|
|
52
|
-
}
|
|
53
|
-
else if (r[j] === 'g' || r[j] === 'G') {
|
|
54
|
-
ng++;
|
|
55
|
-
}
|
|
56
|
-
if (r[j] !== 'N') {
|
|
57
|
-
len++;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const pos = queryStart;
|
|
61
|
-
let score;
|
|
62
|
-
if (this.gcMode === 'content') {
|
|
63
|
-
score = (ng + nc) / (len || 1);
|
|
64
|
-
}
|
|
65
|
-
else if (this.gcMode === 'skew') {
|
|
66
|
-
score = (ng - nc) / (ng + nc || 1);
|
|
67
|
-
}
|
|
68
|
-
observer.next(new SimpleFeature({
|
|
69
|
-
uniqueId: `${this.id}_${pos + i}`,
|
|
70
|
-
start: pos + i,
|
|
71
|
-
end: pos + i + this.windowDelta,
|
|
72
|
-
score,
|
|
73
|
-
}));
|
|
74
|
-
}
|
|
75
|
-
observer.complete();
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* called to provide a hint that data tied to a certain region
|
|
80
|
-
* will not be needed for the forseeable future and can be purged
|
|
81
|
-
* from caches, etc
|
|
82
|
-
*/
|
|
83
|
-
freeResources( /* { region } */) { }
|
|
84
|
-
}
|
|
85
|
-
default_1.capabilities = ['hasLocalStats'];
|
|
86
|
-
//# sourceMappingURL=GCContentAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GCContentAdapter.js","sourceRoot":"","sources":["../../src/GCContentAdapter/GCContentAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
-
export default (pluginManager) => {
|
|
3
|
-
return ConfigurationSchema('GCContentAdapter', {
|
|
4
|
-
sequenceAdapter: pluginManager.pluggableConfigSchemaType('adapter'),
|
|
5
|
-
}, { explicitlyTyped: true });
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=configSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/GCContentAdapter/configSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,OAAO,mBAAmB,CACxB,kBAAkB,EAClB;QACE,eAAe,EAAE,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC;KACpE,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
|
|
2
|
-
import configSchemaF from './configSchema';
|
|
3
|
-
export default (pluginManager) => {
|
|
4
|
-
pluginManager.addAdapterType(() => new AdapterType({
|
|
5
|
-
name: 'GCContentAdapter',
|
|
6
|
-
adapterMetadata: {
|
|
7
|
-
category: null,
|
|
8
|
-
hiddenFromGUI: true,
|
|
9
|
-
displayName: null,
|
|
10
|
-
description: null,
|
|
11
|
-
},
|
|
12
|
-
configSchema: configSchemaF(pluginManager),
|
|
13
|
-
getAdapterClass: () => import('./GCContentAdapter').then(r => r.default),
|
|
14
|
-
}));
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/GCContentAdapter/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,iDAAiD,CAAA;AAEzE,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAE1C,eAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,IAAI,EAAE,kBAAkB;QACxB,eAAe,EAAE;YACf,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI;SAClB;QACD,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC;QAC1C,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KACpD,CAAC,CACL,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BaseFeatureDataAdapter,
|
|
3
|
-
BaseOptions,
|
|
4
|
-
} from '@jbrowse/core/data_adapters/BaseAdapter'
|
|
5
|
-
import { ObservableCreate } from '@jbrowse/core/util/rxjs'
|
|
6
|
-
import { SimpleFeature, Feature, Region } from '@jbrowse/core/util'
|
|
7
|
-
import { toArray } from 'rxjs/operators'
|
|
8
|
-
|
|
9
|
-
export default class extends BaseFeatureDataAdapter {
|
|
10
|
-
private windowSize = 1000
|
|
11
|
-
|
|
12
|
-
private windowDelta = 1000
|
|
13
|
-
|
|
14
|
-
private gcMode = 'content'
|
|
15
|
-
|
|
16
|
-
public static capabilities = ['hasLocalStats']
|
|
17
|
-
|
|
18
|
-
public async configure() {
|
|
19
|
-
const adapter = await this.getSubAdapter?.(this.getConf('sequenceAdapter'))
|
|
20
|
-
if (!adapter) {
|
|
21
|
-
throw new Error('Error getting subadapter')
|
|
22
|
-
}
|
|
23
|
-
return adapter.dataAdapter as BaseFeatureDataAdapter
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public async getRefNames() {
|
|
27
|
-
const adapter = await this.configure()
|
|
28
|
-
return adapter.getRefNames()
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
public getFeatures(query: Region, opts: BaseOptions) {
|
|
32
|
-
return ObservableCreate<Feature>(async observer => {
|
|
33
|
-
const sequenceAdapter = await this.configure()
|
|
34
|
-
const hw = this.windowSize === 1 ? 1 : this.windowSize / 2 // Half the window size
|
|
35
|
-
const f = this.windowSize === 1
|
|
36
|
-
|
|
37
|
-
let { start: queryStart, end: queryEnd } = query
|
|
38
|
-
queryStart = Math.max(0, queryStart - hw)
|
|
39
|
-
queryEnd += hw
|
|
40
|
-
|
|
41
|
-
if (queryEnd < 0 || queryStart > queryEnd) {
|
|
42
|
-
observer.complete()
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const ret = sequenceAdapter.getFeatures(
|
|
47
|
-
{
|
|
48
|
-
...query,
|
|
49
|
-
start: queryStart,
|
|
50
|
-
end: queryEnd,
|
|
51
|
-
},
|
|
52
|
-
opts,
|
|
53
|
-
)
|
|
54
|
-
const feats = await ret.pipe(toArray()).toPromise()
|
|
55
|
-
const residues = feats[0]?.get('seq') || ''
|
|
56
|
-
|
|
57
|
-
for (let i = hw; i < residues.length - hw; i += this.windowDelta) {
|
|
58
|
-
const r = f ? residues[i] : residues.slice(i - hw, i + hw)
|
|
59
|
-
let nc = 0
|
|
60
|
-
let ng = 0
|
|
61
|
-
let len = 0
|
|
62
|
-
for (let j = 0; j < r.length; j++) {
|
|
63
|
-
if (r[j] === 'c' || r[j] === 'C') {
|
|
64
|
-
nc++
|
|
65
|
-
} else if (r[j] === 'g' || r[j] === 'G') {
|
|
66
|
-
ng++
|
|
67
|
-
}
|
|
68
|
-
if (r[j] !== 'N') {
|
|
69
|
-
len++
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const pos = queryStart
|
|
73
|
-
let score
|
|
74
|
-
if (this.gcMode === 'content') {
|
|
75
|
-
score = (ng + nc) / (len || 1)
|
|
76
|
-
} else if (this.gcMode === 'skew') {
|
|
77
|
-
score = (ng - nc) / (ng + nc || 1)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
observer.next(
|
|
81
|
-
new SimpleFeature({
|
|
82
|
-
uniqueId: `${this.id}_${pos + i}`,
|
|
83
|
-
start: pos + i,
|
|
84
|
-
end: pos + i + this.windowDelta,
|
|
85
|
-
score,
|
|
86
|
-
}),
|
|
87
|
-
)
|
|
88
|
-
}
|
|
89
|
-
observer.complete()
|
|
90
|
-
})
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* called to provide a hint that data tied to a certain region
|
|
95
|
-
* will not be needed for the forseeable future and can be purged
|
|
96
|
-
* from caches, etc
|
|
97
|
-
*/
|
|
98
|
-
public freeResources(/* { region } */) {}
|
|
99
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import PluginManager from '@jbrowse/core/PluginManager'
|
|
2
|
-
import { ConfigurationSchema } from '@jbrowse/core/configuration'
|
|
3
|
-
|
|
4
|
-
export default (pluginManager: PluginManager) => {
|
|
5
|
-
return ConfigurationSchema(
|
|
6
|
-
'GCContentAdapter',
|
|
7
|
-
{
|
|
8
|
-
sequenceAdapter: pluginManager.pluggableConfigSchemaType('adapter'),
|
|
9
|
-
},
|
|
10
|
-
{ explicitlyTyped: true },
|
|
11
|
-
)
|
|
12
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import PluginManager from '@jbrowse/core/PluginManager'
|
|
2
|
-
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
|
|
3
|
-
|
|
4
|
-
import configSchemaF from './configSchema'
|
|
5
|
-
|
|
6
|
-
export default (pluginManager: PluginManager) => {
|
|
7
|
-
pluginManager.addAdapterType(
|
|
8
|
-
() =>
|
|
9
|
-
new AdapterType({
|
|
10
|
-
name: 'GCContentAdapter',
|
|
11
|
-
adapterMetadata: {
|
|
12
|
-
category: null,
|
|
13
|
-
hiddenFromGUI: true,
|
|
14
|
-
displayName: null,
|
|
15
|
-
description: null,
|
|
16
|
-
},
|
|
17
|
-
configSchema: configSchemaF(pluginManager),
|
|
18
|
-
getAdapterClass: () =>
|
|
19
|
-
import('./GCContentAdapter').then(r => r.default),
|
|
20
|
-
}),
|
|
21
|
-
)
|
|
22
|
-
}
|