@jbrowse/plugin-comparative-adapters 2.6.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/LICENSE +201 -0
- package/dist/ChainAdapter/ChainAdapter.d.ts +19 -0
- package/dist/ChainAdapter/ChainAdapter.js +22 -0
- package/dist/ChainAdapter/ChainAdapter.js.map +1 -0
- package/dist/ChainAdapter/configSchema.d.ts +39 -0
- package/dist/ChainAdapter/configSchema.js +45 -0
- package/dist/ChainAdapter/configSchema.js.map +1 -0
- package/dist/ChainAdapter/index.d.ts +3 -0
- package/dist/ChainAdapter/index.js +42 -0
- package/dist/ChainAdapter/index.js.map +1 -0
- package/dist/ChainAdapter/util.d.ts +16 -0
- package/dist/ChainAdapter/util.js +134 -0
- package/dist/ChainAdapter/util.js.map +1 -0
- package/dist/DeltaAdapter/DeltaAdapter.d.ts +20 -0
- package/dist/DeltaAdapter/DeltaAdapter.js +22 -0
- package/dist/DeltaAdapter/DeltaAdapter.js.map +1 -0
- package/dist/DeltaAdapter/configSchema.d.ts +39 -0
- package/dist/DeltaAdapter/configSchema.js +45 -0
- package/dist/DeltaAdapter/configSchema.js.map +1 -0
- package/dist/DeltaAdapter/index.d.ts +3 -0
- package/dist/DeltaAdapter/index.js +42 -0
- package/dist/DeltaAdapter/index.js.map +1 -0
- package/dist/DeltaAdapter/util.d.ts +17 -0
- package/dist/DeltaAdapter/util.js +152 -0
- package/dist/DeltaAdapter/util.js.map +1 -0
- package/dist/MCScanAnchorsAdapter/MCScanAnchorsAdapter.d.ts +33 -0
- package/dist/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js +96 -0
- package/dist/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js.map +1 -0
- package/dist/MCScanAnchorsAdapter/configSchema.d.ts +40 -0
- package/dist/MCScanAnchorsAdapter/configSchema.js +48 -0
- package/dist/MCScanAnchorsAdapter/configSchema.js.map +1 -0
- package/dist/MCScanAnchorsAdapter/index.d.ts +3 -0
- package/dist/MCScanAnchorsAdapter/index.js +42 -0
- package/dist/MCScanAnchorsAdapter/index.js.map +1 -0
- package/dist/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.d.ts +41 -0
- package/dist/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js +121 -0
- package/dist/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js.map +1 -0
- package/dist/MCScanSimpleAnchorsAdapter/configSchema.d.ts +40 -0
- package/dist/MCScanSimpleAnchorsAdapter/configSchema.js +48 -0
- package/dist/MCScanSimpleAnchorsAdapter/configSchema.js.map +1 -0
- package/dist/MCScanSimpleAnchorsAdapter/index.d.ts +3 -0
- package/dist/MCScanSimpleAnchorsAdapter/index.js +42 -0
- package/dist/MCScanSimpleAnchorsAdapter/index.js.map +1 -0
- package/dist/MashMapAdapter/MashMapAdapter.d.ts +5 -0
- package/dist/MashMapAdapter/MashMapAdapter.js +42 -0
- package/dist/MashMapAdapter/MashMapAdapter.js.map +1 -0
- package/dist/MashMapAdapter/configSchema.d.ts +37 -0
- package/dist/MashMapAdapter/configSchema.js +45 -0
- package/dist/MashMapAdapter/configSchema.js.map +1 -0
- package/dist/MashMapAdapter/index.d.ts +3 -0
- package/dist/MashMapAdapter/index.js +42 -0
- package/dist/MashMapAdapter/index.js.map +1 -0
- package/dist/PAFAdapter/PAFAdapter.d.ts +20 -0
- package/dist/PAFAdapter/PAFAdapter.js +152 -0
- package/dist/PAFAdapter/PAFAdapter.js.map +1 -0
- package/dist/PAFAdapter/SyntenyFeature.d.ts +4 -0
- package/dist/PAFAdapter/SyntenyFeature.js +17 -0
- package/dist/PAFAdapter/SyntenyFeature.js.map +1 -0
- package/dist/PAFAdapter/configSchema.d.ts +37 -0
- package/dist/PAFAdapter/configSchema.js +45 -0
- package/dist/PAFAdapter/configSchema.js.map +1 -0
- package/dist/PAFAdapter/index.d.ts +3 -0
- package/dist/PAFAdapter/index.js +42 -0
- package/dist/PAFAdapter/index.js.map +1 -0
- package/dist/PAFAdapter/util.d.ts +20 -0
- package/dist/PAFAdapter/util.js +134 -0
- package/dist/PAFAdapter/util.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/util.d.ts +16 -0
- package/dist/util.js +57 -0
- package/dist/util.js.map +1 -0
- package/esm/ChainAdapter/ChainAdapter.d.ts +19 -0
- package/esm/ChainAdapter/ChainAdapter.js +16 -0
- package/esm/ChainAdapter/ChainAdapter.js.map +1 -0
- package/esm/ChainAdapter/configSchema.d.ts +39 -0
- package/esm/ChainAdapter/configSchema.js +43 -0
- package/esm/ChainAdapter/configSchema.js.map +1 -0
- package/esm/ChainAdapter/index.d.ts +3 -0
- package/esm/ChainAdapter/index.js +14 -0
- package/esm/ChainAdapter/index.js.map +1 -0
- package/esm/ChainAdapter/util.d.ts +16 -0
- package/esm/ChainAdapter/util.js +130 -0
- package/esm/ChainAdapter/util.js.map +1 -0
- package/esm/DeltaAdapter/DeltaAdapter.d.ts +20 -0
- package/esm/DeltaAdapter/DeltaAdapter.js +16 -0
- package/esm/DeltaAdapter/DeltaAdapter.js.map +1 -0
- package/esm/DeltaAdapter/configSchema.d.ts +39 -0
- package/esm/DeltaAdapter/configSchema.js +43 -0
- package/esm/DeltaAdapter/configSchema.js.map +1 -0
- package/esm/DeltaAdapter/index.d.ts +3 -0
- package/esm/DeltaAdapter/index.js +14 -0
- package/esm/DeltaAdapter/index.js.map +1 -0
- package/esm/DeltaAdapter/util.d.ts +17 -0
- package/esm/DeltaAdapter/util.js +148 -0
- package/esm/DeltaAdapter/util.js.map +1 -0
- package/esm/MCScanAnchorsAdapter/MCScanAnchorsAdapter.d.ts +33 -0
- package/esm/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js +94 -0
- package/esm/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js.map +1 -0
- package/esm/MCScanAnchorsAdapter/configSchema.d.ts +40 -0
- package/esm/MCScanAnchorsAdapter/configSchema.js +46 -0
- package/esm/MCScanAnchorsAdapter/configSchema.js.map +1 -0
- package/esm/MCScanAnchorsAdapter/index.d.ts +3 -0
- package/esm/MCScanAnchorsAdapter/index.js +14 -0
- package/esm/MCScanAnchorsAdapter/index.js.map +1 -0
- package/esm/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.d.ts +41 -0
- package/esm/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js +116 -0
- package/esm/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js.map +1 -0
- package/esm/MCScanSimpleAnchorsAdapter/configSchema.d.ts +40 -0
- package/esm/MCScanSimpleAnchorsAdapter/configSchema.js +46 -0
- package/esm/MCScanSimpleAnchorsAdapter/configSchema.js.map +1 -0
- package/esm/MCScanSimpleAnchorsAdapter/index.d.ts +3 -0
- package/esm/MCScanSimpleAnchorsAdapter/index.js +14 -0
- package/esm/MCScanSimpleAnchorsAdapter/index.js.map +1 -0
- package/esm/MashMapAdapter/MashMapAdapter.d.ts +5 -0
- package/esm/MashMapAdapter/MashMapAdapter.js +36 -0
- package/esm/MashMapAdapter/MashMapAdapter.js.map +1 -0
- package/esm/MashMapAdapter/configSchema.d.ts +37 -0
- package/esm/MashMapAdapter/configSchema.js +43 -0
- package/esm/MashMapAdapter/configSchema.js.map +1 -0
- package/esm/MashMapAdapter/index.d.ts +3 -0
- package/esm/MashMapAdapter/index.js +14 -0
- package/esm/MashMapAdapter/index.js.map +1 -0
- package/esm/PAFAdapter/PAFAdapter.d.ts +20 -0
- package/esm/PAFAdapter/PAFAdapter.js +147 -0
- package/esm/PAFAdapter/PAFAdapter.js.map +1 -0
- package/esm/PAFAdapter/SyntenyFeature.d.ts +4 -0
- package/esm/PAFAdapter/SyntenyFeature.js +14 -0
- package/esm/PAFAdapter/SyntenyFeature.js.map +1 -0
- package/esm/PAFAdapter/configSchema.d.ts +37 -0
- package/esm/PAFAdapter/configSchema.js +43 -0
- package/esm/PAFAdapter/configSchema.js.map +1 -0
- package/esm/PAFAdapter/index.d.ts +3 -0
- package/esm/PAFAdapter/index.js +14 -0
- package/esm/PAFAdapter/index.js.map +1 -0
- package/esm/PAFAdapter/util.d.ts +20 -0
- package/esm/PAFAdapter/util.js +127 -0
- package/esm/PAFAdapter/util.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.js +45 -0
- package/esm/index.js.map +1 -0
- package/esm/util.d.ts +16 -0
- package/esm/util.js +49 -0
- package/esm/util.js.map +1 -0
- package/package.json +63 -0
- package/src/ChainAdapter/ChainAdapter.ts +18 -0
- package/src/ChainAdapter/configSchema.ts +50 -0
- package/src/ChainAdapter/index.ts +18 -0
- package/src/ChainAdapter/util.ts +170 -0
- package/src/DeltaAdapter/DeltaAdapter.ts +18 -0
- package/src/DeltaAdapter/configSchema.ts +50 -0
- package/src/DeltaAdapter/index.ts +18 -0
- package/src/DeltaAdapter/util.ts +149 -0
- package/src/MCScanAnchorsAdapter/MCScanAnchorsAdapter.test.ts +45 -0
- package/src/MCScanAnchorsAdapter/MCScanAnchorsAdapter.ts +134 -0
- package/src/MCScanAnchorsAdapter/configSchema.ts +52 -0
- package/src/MCScanAnchorsAdapter/index.ts +20 -0
- package/src/MCScanAnchorsAdapter/test_data/grape.bed.gz +0 -0
- package/src/MCScanAnchorsAdapter/test_data/grape.peach.anchors.gz +0 -0
- package/src/MCScanAnchorsAdapter/test_data/peach.bed.gz +0 -0
- package/src/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.ts +157 -0
- package/src/MCScanSimpleAnchorsAdapter/configSchema.ts +52 -0
- package/src/MCScanSimpleAnchorsAdapter/index.ts +19 -0
- package/src/MashMapAdapter/MashMapAdapter.ts +40 -0
- package/src/MashMapAdapter/configSchema.ts +51 -0
- package/src/MashMapAdapter/index.ts +18 -0
- package/src/PAFAdapter/PAFAdapter.test.ts +37 -0
- package/src/PAFAdapter/PAFAdapter.ts +181 -0
- package/src/PAFAdapter/SyntenyFeature.ts +15 -0
- package/src/PAFAdapter/configSchema.ts +50 -0
- package/src/PAFAdapter/index.ts +18 -0
- package/src/PAFAdapter/test_data/grape.peach.anchors +14966 -0
- package/src/PAFAdapter/test_data/peach_grape.paf +30 -0
- package/src/PAFAdapter/util.test.ts +7 -0
- package/src/PAFAdapter/util.ts +176 -0
- package/src/index.ts +62 -0
- package/src/util.ts +66 -0
|
@@ -0,0 +1,121 @@
|
|
|
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 BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
7
|
+
const io_1 = require("@jbrowse/core/util/io");
|
|
8
|
+
const util_1 = require("@jbrowse/core/util");
|
|
9
|
+
const rxjs_1 = require("@jbrowse/core/util/rxjs");
|
|
10
|
+
const simpleFeature_1 = __importDefault(require("@jbrowse/core/util/simpleFeature"));
|
|
11
|
+
const util_2 = require("../util");
|
|
12
|
+
class MCScanAnchorsAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
|
|
13
|
+
async setup(opts) {
|
|
14
|
+
if (!this.setupP) {
|
|
15
|
+
this.setupP = this.setupPre(opts).catch(e => {
|
|
16
|
+
this.setupP = undefined;
|
|
17
|
+
throw e;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return this.setupP;
|
|
21
|
+
}
|
|
22
|
+
async setupPre(opts) {
|
|
23
|
+
const assemblyNames = this.getConf('assemblyNames');
|
|
24
|
+
const pm = this.pluginManager;
|
|
25
|
+
const bed1 = (0, io_1.openLocation)(this.getConf('bed1Location'), pm);
|
|
26
|
+
const bed2 = (0, io_1.openLocation)(this.getConf('bed2Location'), pm);
|
|
27
|
+
const mcscan = (0, io_1.openLocation)(this.getConf('mcscanSimpleAnchorsLocation'), pm);
|
|
28
|
+
const [bed1text, bed2text, mcscantext] = await Promise.all([bed1, bed2, mcscan].map(r => (0, util_2.readFile)(r, opts)));
|
|
29
|
+
const bed1Map = (0, util_2.parseBed)(bed1text);
|
|
30
|
+
const bed2Map = (0, util_2.parseBed)(bed2text);
|
|
31
|
+
const feats = mcscantext
|
|
32
|
+
.split(/\n|\r\n|\r/)
|
|
33
|
+
.filter(f => !!f && f !== '###')
|
|
34
|
+
.map((line, index) => {
|
|
35
|
+
const [n11, n12, n21, n22, score, strand] = line.split('\t');
|
|
36
|
+
const r11 = bed1Map.get(n11);
|
|
37
|
+
const r12 = bed1Map.get(n12);
|
|
38
|
+
const r21 = bed2Map.get(n21);
|
|
39
|
+
const r22 = bed2Map.get(n22);
|
|
40
|
+
if (!r11 || !r12 || !r21 || !r22) {
|
|
41
|
+
throw new Error(`feature not found, ${n11} ${n12} ${n21} ${n22} ${r11} ${r12} ${r21} ${r22}`);
|
|
42
|
+
}
|
|
43
|
+
return [
|
|
44
|
+
r11,
|
|
45
|
+
r12,
|
|
46
|
+
r21,
|
|
47
|
+
r22,
|
|
48
|
+
+score,
|
|
49
|
+
strand === '-' ? -1 : 1,
|
|
50
|
+
index,
|
|
51
|
+
];
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
assemblyNames,
|
|
55
|
+
feats,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async hasDataForRefName() {
|
|
59
|
+
// determining this properly is basically a call to getFeatures
|
|
60
|
+
// so is not really that important, and has to be true or else
|
|
61
|
+
// getFeatures is never called (BaseFeatureDataAdapter filters it out)
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
async getRefNames() {
|
|
65
|
+
// we cannot determine this accurately
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
getFeatures(region, opts = {}) {
|
|
69
|
+
return (0, rxjs_1.ObservableCreate)(async (observer) => {
|
|
70
|
+
const { assemblyNames, feats } = await this.setup(opts);
|
|
71
|
+
// The index of the assembly name in the region list corresponds to
|
|
72
|
+
// the adapter in the subadapters list
|
|
73
|
+
const index = assemblyNames.indexOf(region.assemblyName);
|
|
74
|
+
if (index !== -1) {
|
|
75
|
+
const flip = index === 0;
|
|
76
|
+
feats.forEach(f => {
|
|
77
|
+
const [f11, f12, f21, f22, score, strand, rowNum] = f;
|
|
78
|
+
let r1 = {
|
|
79
|
+
refName: f11.refName,
|
|
80
|
+
start: Math.min(f11.start, f12.start),
|
|
81
|
+
end: Math.max(f11.end, f12.end),
|
|
82
|
+
};
|
|
83
|
+
let r2 = {
|
|
84
|
+
refName: f21.refName,
|
|
85
|
+
start: Math.min(f21.start, f22.start),
|
|
86
|
+
end: Math.max(f21.end, f22.end),
|
|
87
|
+
};
|
|
88
|
+
if (!flip) {
|
|
89
|
+
;
|
|
90
|
+
[r2, r1] = [r1, r2];
|
|
91
|
+
}
|
|
92
|
+
if (r1.refName === region.refName &&
|
|
93
|
+
(0, util_1.doesIntersect2)(r1.start, r1.end, region.start, region.end)) {
|
|
94
|
+
observer.next(new simpleFeature_1.default({
|
|
95
|
+
...r1,
|
|
96
|
+
uniqueId: `${rowNum}`,
|
|
97
|
+
syntenyId: rowNum,
|
|
98
|
+
assemblyName: assemblyNames[+!flip],
|
|
99
|
+
score,
|
|
100
|
+
strand,
|
|
101
|
+
mate: {
|
|
102
|
+
...r2,
|
|
103
|
+
assemblyName: assemblyNames[+flip],
|
|
104
|
+
},
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
observer.complete();
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* called to provide a hint that data tied to a certain region
|
|
114
|
+
* will not be needed for the foreseeable future and can be purged
|
|
115
|
+
* from caches, etc
|
|
116
|
+
*/
|
|
117
|
+
freeResources( /* { region } */) { }
|
|
118
|
+
}
|
|
119
|
+
MCScanAnchorsAdapter.capabilities = ['getFeatures', 'getRefNames'];
|
|
120
|
+
exports.default = MCScanAnchorsAdapter;
|
|
121
|
+
//# sourceMappingURL=MCScanSimpleAnchorsAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MCScanSimpleAnchorsAdapter.js","sourceRoot":"","sources":["../../src/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
declare const MCScanSimpleAnchorsAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
2
|
+
/**
|
|
3
|
+
* #slot
|
|
4
|
+
*/
|
|
5
|
+
mcscanSimpleAnchorsLocation: {
|
|
6
|
+
type: string;
|
|
7
|
+
defaultValue: {
|
|
8
|
+
uri: string;
|
|
9
|
+
locationType: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* #slot
|
|
14
|
+
*/
|
|
15
|
+
bed1Location: {
|
|
16
|
+
type: string;
|
|
17
|
+
defaultValue: {
|
|
18
|
+
uri: string;
|
|
19
|
+
locationType: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* #slot
|
|
24
|
+
*/
|
|
25
|
+
bed2Location: {
|
|
26
|
+
type: string;
|
|
27
|
+
defaultValue: {
|
|
28
|
+
uri: string;
|
|
29
|
+
locationType: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* #slot
|
|
34
|
+
*/
|
|
35
|
+
assemblyNames: {
|
|
36
|
+
type: string;
|
|
37
|
+
defaultValue: never[];
|
|
38
|
+
};
|
|
39
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
40
|
+
export default MCScanSimpleAnchorsAdapter;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
4
|
+
/**
|
|
5
|
+
* #config MCScanSimpleAnchorsAdapter
|
|
6
|
+
*/
|
|
7
|
+
function x() { } // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8
|
+
const MCScanSimpleAnchorsAdapter = (0, configuration_1.ConfigurationSchema)('MCScanSimpleAnchorsAdapter', {
|
|
9
|
+
/**
|
|
10
|
+
* #slot
|
|
11
|
+
*/
|
|
12
|
+
mcscanSimpleAnchorsLocation: {
|
|
13
|
+
type: 'fileLocation',
|
|
14
|
+
defaultValue: {
|
|
15
|
+
uri: '/path/to/mcscan.anchors.simple',
|
|
16
|
+
locationType: 'UriLocation',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
/**
|
|
20
|
+
* #slot
|
|
21
|
+
*/
|
|
22
|
+
bed1Location: {
|
|
23
|
+
type: 'fileLocation',
|
|
24
|
+
defaultValue: {
|
|
25
|
+
uri: '/path/to/file.bed',
|
|
26
|
+
locationType: 'UriLocation',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* #slot
|
|
31
|
+
*/
|
|
32
|
+
bed2Location: {
|
|
33
|
+
type: 'fileLocation',
|
|
34
|
+
defaultValue: {
|
|
35
|
+
uri: '/path/to/file.bed',
|
|
36
|
+
locationType: 'UriLocation',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
/**
|
|
40
|
+
* #slot
|
|
41
|
+
*/
|
|
42
|
+
assemblyNames: {
|
|
43
|
+
type: 'stringArray',
|
|
44
|
+
defaultValue: [],
|
|
45
|
+
},
|
|
46
|
+
}, { explicitlyTyped: true });
|
|
47
|
+
exports.default = MCScanSimpleAnchorsAdapter;
|
|
48
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/MCScanSimpleAnchorsAdapter/configSchema.ts"],"names":[],"mappings":";;AAAA,+DAAiE;AAEjE;;GAEG;AACH,SAAS,CAAC,KAAI,CAAC,CAAC,wDAAwD;AAExE,MAAM,0BAA0B,GAAG,IAAA,mCAAmB,EACpD,4BAA4B,EAC5B;IACE;;OAEG;IACH,2BAA2B,EAAE;QAC3B,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,gCAAgC;YACrC,YAAY,EAAE,aAAa;SAC5B;KACF;IACD;;OAEG;IACH,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,mBAAmB;YACxB,YAAY,EAAE,aAAa;SAC5B;KACF;IACD;;OAEG;IACH,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,mBAAmB;YACxB,YAAY,EAAE,aAAa;SAC5B;KACF;IAED;;OAEG;IACH,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;KACjB;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;AACD,kBAAe,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
|
|
30
|
+
const configSchema_1 = __importDefault(require("./configSchema"));
|
|
31
|
+
exports.default = (pluginManager) => {
|
|
32
|
+
pluginManager.addAdapterType(() => new AdapterType_1.default({
|
|
33
|
+
name: 'MCScanSimpleAnchorsAdapter',
|
|
34
|
+
displayName: 'MCScan anchors.simple adapter',
|
|
35
|
+
configSchema: configSchema_1.default,
|
|
36
|
+
adapterMetadata: {
|
|
37
|
+
hiddenFromGUI: true,
|
|
38
|
+
},
|
|
39
|
+
getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./MCScanSimpleAnchorsAdapter'))).then(r => r.default),
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MCScanSimpleAnchorsAdapter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kGAAyE;AACzE,kEAAyC;AAEzC,kBAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,qBAAW,CAAC;QACd,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,+BAA+B;QAC5C,YAAY,EAAZ,sBAAY;QACZ,eAAe,EAAE;YACf,aAAa,EAAE,IAAI;SACpB;QACD,eAAe,EAAE,GAAG,EAAE,CACpB,kDAAO,8BAA8B,IAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAC9D,CAAC,CACL,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 io_1 = require("@jbrowse/core/util/io");
|
|
7
|
+
const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
|
|
8
|
+
const PAFAdapter_1 = __importDefault(require("../PAFAdapter/PAFAdapter"));
|
|
9
|
+
const util_1 = require("../util");
|
|
10
|
+
function isGzip(buf) {
|
|
11
|
+
return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;
|
|
12
|
+
}
|
|
13
|
+
class MashMapAdapter extends PAFAdapter_1.default {
|
|
14
|
+
async setupPre(opts) {
|
|
15
|
+
const outLoc = (0, io_1.openLocation)(this.getConf('outLocation'), this.pluginManager);
|
|
16
|
+
const buffer = (await outLoc.readFile(opts));
|
|
17
|
+
const buf = isGzip(buffer) ? await (0, bgzf_filehandle_1.unzip)(buffer) : buffer;
|
|
18
|
+
return (0, util_1.parseLineByLine)(buf, parseMashMapLine);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = MashMapAdapter;
|
|
22
|
+
function parseMashMapLine(line) {
|
|
23
|
+
const fields = line.split(' ');
|
|
24
|
+
if (fields.length < 9) {
|
|
25
|
+
// xref https://github.com/marbl/MashMap/issues/38
|
|
26
|
+
throw new Error('improperly formatted line: ' + line);
|
|
27
|
+
}
|
|
28
|
+
const [qname, , qstart, qend, strand, tname, , tstart, tend, mq] = fields;
|
|
29
|
+
return {
|
|
30
|
+
tname,
|
|
31
|
+
tstart: +tstart,
|
|
32
|
+
tend: +tend,
|
|
33
|
+
qname,
|
|
34
|
+
qstart: +qstart,
|
|
35
|
+
qend: +qend,
|
|
36
|
+
strand: strand === '-' ? -1 : 1,
|
|
37
|
+
extra: {
|
|
38
|
+
mappingQual: +mq,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=MashMapAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MashMapAdapter.js","sourceRoot":"","sources":["../../src/MashMapAdapter/MashMapAdapter.ts"],"names":[],"mappings":";;;;;AACA,8CAAoD;AACpD,2DAA6C;AAC7C,0EAAiD;AACjD,kCAAyC;AAEzC,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,MAAqB,cAAe,SAAQ,oBAAU;IACpD,KAAK,CAAC,QAAQ,CAAC,IAAkB;QAC/B,MAAM,MAAM,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC5E,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAW,CAAA;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,uBAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACzD,OAAO,IAAA,sBAAe,EAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC/C,CAAC;CACF;AAPD,iCAOC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,kDAAkD;QAClD,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAA;KACtD;IACD,MAAM,CAAC,KAAK,EAAE,AAAD,EAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,AAAD,EAAG,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAA;IAEzE,OAAO;QACL,KAAK;QACL,MAAM,EAAE,CAAC,MAAM;QACf,IAAI,EAAE,CAAC,IAAI;QACX,KAAK;QACL,MAAM,EAAE,CAAC,MAAM;QACf,IAAI,EAAE,CAAC,IAAI;QACX,MAAM,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,EAAE;YACL,WAAW,EAAE,CAAC,EAAE;SACjB;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
declare const MashMapAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
2
|
+
/**
|
|
3
|
+
* #slot
|
|
4
|
+
*/
|
|
5
|
+
assemblyNames: {
|
|
6
|
+
type: string;
|
|
7
|
+
defaultValue: never[];
|
|
8
|
+
description: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* #slot
|
|
12
|
+
*/
|
|
13
|
+
targetAssembly: {
|
|
14
|
+
type: string;
|
|
15
|
+
defaultValue: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* #slot
|
|
20
|
+
*/
|
|
21
|
+
queryAssembly: {
|
|
22
|
+
type: string;
|
|
23
|
+
defaultValue: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* #slot
|
|
28
|
+
*/
|
|
29
|
+
outLocation: {
|
|
30
|
+
type: string;
|
|
31
|
+
defaultValue: {
|
|
32
|
+
uri: string;
|
|
33
|
+
locationType: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
37
|
+
export default MashMapAdapter;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
4
|
+
/**
|
|
5
|
+
* #config MashMapAdapter
|
|
6
|
+
*/
|
|
7
|
+
function x() { } // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8
|
+
const MashMapAdapter = (0, configuration_1.ConfigurationSchema)('MashMapAdapter', {
|
|
9
|
+
/**
|
|
10
|
+
* #slot
|
|
11
|
+
*/
|
|
12
|
+
assemblyNames: {
|
|
13
|
+
type: 'stringArray',
|
|
14
|
+
defaultValue: [],
|
|
15
|
+
description: 'Target is the first value in the array, query is the second',
|
|
16
|
+
},
|
|
17
|
+
/**
|
|
18
|
+
* #slot
|
|
19
|
+
*/
|
|
20
|
+
targetAssembly: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
defaultValue: '',
|
|
23
|
+
description: 'Alternative to assemblyNames array: the target assembly',
|
|
24
|
+
},
|
|
25
|
+
/**
|
|
26
|
+
* #slot
|
|
27
|
+
*/
|
|
28
|
+
queryAssembly: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
defaultValue: '',
|
|
31
|
+
description: 'Alternative to assemblyNames array: the query assembly',
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* #slot
|
|
35
|
+
*/
|
|
36
|
+
outLocation: {
|
|
37
|
+
type: 'fileLocation',
|
|
38
|
+
defaultValue: {
|
|
39
|
+
uri: '/path/to/mashmap.out',
|
|
40
|
+
locationType: 'UriLocation',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
}, { explicitlyTyped: true });
|
|
44
|
+
exports.default = MashMapAdapter;
|
|
45
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/MashMapAdapter/configSchema.ts"],"names":[],"mappings":";;AAAA,+DAAiE;AAEjE;;GAEG;AACH,SAAS,CAAC,KAAI,CAAC,CAAC,wDAAwD;AAExE,MAAM,cAAc,GAAG,IAAA,mCAAmB,EACxC,gBAAgB,EAChB;IACE;;OAEG;IACH,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EACT,6DAA6D;KAChE;IAED;;OAEG;IACH,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,yDAAyD;KACvE;IACD;;OAEG;IACH,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,wDAAwD;KACtE;IACD;;OAEG;IACH,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,sBAAsB;YAC3B,YAAY,EAAE,aAAa;SAC5B;KACF;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;AAED,kBAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
|
|
30
|
+
const configSchema_1 = __importDefault(require("./configSchema"));
|
|
31
|
+
exports.default = (pluginManager) => {
|
|
32
|
+
pluginManager.addAdapterType(() => new AdapterType_1.default({
|
|
33
|
+
name: 'MashMapAdapter',
|
|
34
|
+
displayName: 'MashMap adapter',
|
|
35
|
+
configSchema: configSchema_1.default,
|
|
36
|
+
adapterMetadata: {
|
|
37
|
+
hiddenFromGUI: true,
|
|
38
|
+
},
|
|
39
|
+
getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./MashMapAdapter'))).then(r => r.default),
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MashMapAdapter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kGAAyE;AACzE,kEAAyC;AAEzC,kBAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,qBAAW,CAAC;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAZ,sBAAY;QACZ,eAAe,EAAE;YACf,aAAa,EAAE,IAAI;SACpB;QACD,eAAe,EAAE,GAAG,EAAE,CAAC,kDAAO,kBAAkB,IAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KACvE,CAAC,CACL,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
|
+
import { Region } from '@jbrowse/core/util/types';
|
|
3
|
+
import { Feature } from '@jbrowse/core/util';
|
|
4
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
5
|
+
import { PAFRecord } from './util';
|
|
6
|
+
interface PAFOptions extends BaseOptions {
|
|
7
|
+
config?: AnyConfigurationModel;
|
|
8
|
+
}
|
|
9
|
+
export default class PAFAdapter extends BaseFeatureDataAdapter {
|
|
10
|
+
private setupP?;
|
|
11
|
+
static capabilities: string[];
|
|
12
|
+
setup(opts?: BaseOptions): Promise<PAFRecord[]>;
|
|
13
|
+
setupPre(opts?: BaseOptions): Promise<PAFRecord[]>;
|
|
14
|
+
hasDataForRefName(): Promise<boolean>;
|
|
15
|
+
getAssemblyNames(): string[];
|
|
16
|
+
getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
17
|
+
getFeatures(query: Region, opts?: PAFOptions): import("rxjs").Observable<Feature>;
|
|
18
|
+
freeResources(): void;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,152 @@
|
|
|
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 BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
7
|
+
const range_1 = require("@jbrowse/core/util/range");
|
|
8
|
+
const io_1 = require("@jbrowse/core/util/io");
|
|
9
|
+
const rxjs_1 = require("@jbrowse/core/util/rxjs");
|
|
10
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
11
|
+
const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
|
|
12
|
+
const plugin_alignments_1 = require("@jbrowse/plugin-alignments");
|
|
13
|
+
// locals
|
|
14
|
+
const SyntenyFeature_1 = __importDefault(require("./SyntenyFeature"));
|
|
15
|
+
const util_1 = require("../util");
|
|
16
|
+
const util_2 = require("./util");
|
|
17
|
+
const { parseCigar } = plugin_alignments_1.MismatchParser;
|
|
18
|
+
class PAFAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
|
|
19
|
+
async setup(opts) {
|
|
20
|
+
if (!this.setupP) {
|
|
21
|
+
this.setupP = this.setupPre(opts).catch(e => {
|
|
22
|
+
this.setupP = undefined;
|
|
23
|
+
throw e;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return this.setupP;
|
|
27
|
+
}
|
|
28
|
+
async setupPre(opts) {
|
|
29
|
+
const pm = this.pluginManager;
|
|
30
|
+
const pafLocation = (0, io_1.openLocation)(this.getConf('pafLocation'), pm);
|
|
31
|
+
const buffer = (await pafLocation.readFile(opts));
|
|
32
|
+
const buf = (0, util_1.isGzip)(buffer) ? await (0, bgzf_filehandle_1.unzip)(buffer) : buffer;
|
|
33
|
+
return (0, util_1.parseLineByLine)(buf, util_2.parsePAFLine);
|
|
34
|
+
}
|
|
35
|
+
async hasDataForRefName() {
|
|
36
|
+
// determining this properly is basically a call to getFeatures
|
|
37
|
+
// so is not really that important, and has to be true or else
|
|
38
|
+
// getFeatures is never called (BaseAdapter filters it out)
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
getAssemblyNames() {
|
|
42
|
+
const assemblyNames = this.getConf('assemblyNames');
|
|
43
|
+
if (assemblyNames.length === 0) {
|
|
44
|
+
const query = this.getConf('queryAssembly');
|
|
45
|
+
const target = this.getConf('targetAssembly');
|
|
46
|
+
return [query, target];
|
|
47
|
+
}
|
|
48
|
+
return assemblyNames;
|
|
49
|
+
}
|
|
50
|
+
async getRefNames(opts = {}) {
|
|
51
|
+
var _a;
|
|
52
|
+
// @ts-expect-error
|
|
53
|
+
const r1 = (_a = opts.regions) === null || _a === void 0 ? void 0 : _a[0].assemblyName;
|
|
54
|
+
const feats = await this.setup(opts);
|
|
55
|
+
const idx = this.getAssemblyNames().indexOf(r1);
|
|
56
|
+
if (idx !== -1) {
|
|
57
|
+
const set = new Set();
|
|
58
|
+
for (const feat of feats) {
|
|
59
|
+
set.add(idx === 0 ? feat.qname : feat.tname);
|
|
60
|
+
}
|
|
61
|
+
return [...set];
|
|
62
|
+
}
|
|
63
|
+
console.warn('Unable to do ref renaming on adapter');
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
getFeatures(query, opts = {}) {
|
|
67
|
+
return (0, rxjs_1.ObservableCreate)(async (observer) => {
|
|
68
|
+
let pafRecords = await this.setup(opts);
|
|
69
|
+
const { config } = opts;
|
|
70
|
+
// note: this is not the adapter config, it is responding to a display
|
|
71
|
+
// setting passed in via the opts parameter
|
|
72
|
+
if (config && (0, configuration_1.readConfObject)(config, 'colorBy') === 'meanQueryIdentity') {
|
|
73
|
+
pafRecords = (0, util_2.getWeightedMeans)(pafRecords);
|
|
74
|
+
}
|
|
75
|
+
const assemblyNames = this.getAssemblyNames();
|
|
76
|
+
// The index of the assembly name in the query list corresponds to the
|
|
77
|
+
// adapter in the subadapters list
|
|
78
|
+
const index = assemblyNames.indexOf(query.assemblyName);
|
|
79
|
+
const { start: qstart, end: qend, refName: qref, assemblyName } = query;
|
|
80
|
+
if (index === -1) {
|
|
81
|
+
console.warn(`${assemblyName} not found in this adapter`);
|
|
82
|
+
observer.complete();
|
|
83
|
+
}
|
|
84
|
+
for (let i = 0; i < pafRecords.length; i++) {
|
|
85
|
+
const r = pafRecords[i];
|
|
86
|
+
let start = 0;
|
|
87
|
+
let end = 0;
|
|
88
|
+
let refName = '';
|
|
89
|
+
let mateName = '';
|
|
90
|
+
let mateStart = 0;
|
|
91
|
+
let mateEnd = 0;
|
|
92
|
+
const flip = index === 0;
|
|
93
|
+
const assemblyName = assemblyNames[+!flip];
|
|
94
|
+
if (index === 0) {
|
|
95
|
+
start = r.qstart;
|
|
96
|
+
end = r.qend;
|
|
97
|
+
refName = r.qname;
|
|
98
|
+
mateName = r.tname;
|
|
99
|
+
mateStart = r.tstart;
|
|
100
|
+
mateEnd = r.tend;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
start = r.tstart;
|
|
104
|
+
end = r.tend;
|
|
105
|
+
refName = r.tname;
|
|
106
|
+
mateName = r.qname;
|
|
107
|
+
mateStart = r.qstart;
|
|
108
|
+
mateEnd = r.qend;
|
|
109
|
+
}
|
|
110
|
+
const { extra, strand } = r;
|
|
111
|
+
if (refName === qref && (0, range_1.doesIntersect2)(qstart, qend, start, end)) {
|
|
112
|
+
const { numMatches = 0, blockLen = 1, cg, ...rest } = extra;
|
|
113
|
+
let CIGAR = extra.cg;
|
|
114
|
+
if (extra.cg) {
|
|
115
|
+
if (flip && strand === -1) {
|
|
116
|
+
CIGAR = (0, util_2.flipCigar)(parseCigar(extra.cg)).join('');
|
|
117
|
+
}
|
|
118
|
+
else if (flip) {
|
|
119
|
+
CIGAR = (0, util_2.swapIndelCigar)(extra.cg);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
observer.next(new SyntenyFeature_1.default({
|
|
123
|
+
uniqueId: i + assemblyName,
|
|
124
|
+
assemblyName,
|
|
125
|
+
start,
|
|
126
|
+
end,
|
|
127
|
+
type: 'match',
|
|
128
|
+
refName,
|
|
129
|
+
strand,
|
|
130
|
+
...rest,
|
|
131
|
+
CIGAR,
|
|
132
|
+
syntenyId: i,
|
|
133
|
+
identity: numMatches / blockLen,
|
|
134
|
+
numMatches,
|
|
135
|
+
blockLen,
|
|
136
|
+
mate: {
|
|
137
|
+
start: mateStart,
|
|
138
|
+
end: mateEnd,
|
|
139
|
+
refName: mateName,
|
|
140
|
+
assemblyName: assemblyNames[+flip],
|
|
141
|
+
},
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
observer.complete();
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
freeResources( /* { query } */) { }
|
|
149
|
+
}
|
|
150
|
+
PAFAdapter.capabilities = ['getFeatures', 'getRefNames'];
|
|
151
|
+
exports.default = PAFAdapter;
|
|
152
|
+
//# sourceMappingURL=PAFAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PAFAdapter.js","sourceRoot":"","sources":["../../src/PAFAdapter/PAFAdapter.ts"],"names":[],"mappings":"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"}
|