@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.
Files changed (178) hide show
  1. package/LICENSE +201 -0
  2. package/dist/ChainAdapter/ChainAdapter.d.ts +19 -0
  3. package/dist/ChainAdapter/ChainAdapter.js +22 -0
  4. package/dist/ChainAdapter/ChainAdapter.js.map +1 -0
  5. package/dist/ChainAdapter/configSchema.d.ts +39 -0
  6. package/dist/ChainAdapter/configSchema.js +45 -0
  7. package/dist/ChainAdapter/configSchema.js.map +1 -0
  8. package/dist/ChainAdapter/index.d.ts +3 -0
  9. package/dist/ChainAdapter/index.js +42 -0
  10. package/dist/ChainAdapter/index.js.map +1 -0
  11. package/dist/ChainAdapter/util.d.ts +16 -0
  12. package/dist/ChainAdapter/util.js +134 -0
  13. package/dist/ChainAdapter/util.js.map +1 -0
  14. package/dist/DeltaAdapter/DeltaAdapter.d.ts +20 -0
  15. package/dist/DeltaAdapter/DeltaAdapter.js +22 -0
  16. package/dist/DeltaAdapter/DeltaAdapter.js.map +1 -0
  17. package/dist/DeltaAdapter/configSchema.d.ts +39 -0
  18. package/dist/DeltaAdapter/configSchema.js +45 -0
  19. package/dist/DeltaAdapter/configSchema.js.map +1 -0
  20. package/dist/DeltaAdapter/index.d.ts +3 -0
  21. package/dist/DeltaAdapter/index.js +42 -0
  22. package/dist/DeltaAdapter/index.js.map +1 -0
  23. package/dist/DeltaAdapter/util.d.ts +17 -0
  24. package/dist/DeltaAdapter/util.js +152 -0
  25. package/dist/DeltaAdapter/util.js.map +1 -0
  26. package/dist/MCScanAnchorsAdapter/MCScanAnchorsAdapter.d.ts +33 -0
  27. package/dist/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js +96 -0
  28. package/dist/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js.map +1 -0
  29. package/dist/MCScanAnchorsAdapter/configSchema.d.ts +40 -0
  30. package/dist/MCScanAnchorsAdapter/configSchema.js +48 -0
  31. package/dist/MCScanAnchorsAdapter/configSchema.js.map +1 -0
  32. package/dist/MCScanAnchorsAdapter/index.d.ts +3 -0
  33. package/dist/MCScanAnchorsAdapter/index.js +42 -0
  34. package/dist/MCScanAnchorsAdapter/index.js.map +1 -0
  35. package/dist/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.d.ts +41 -0
  36. package/dist/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js +121 -0
  37. package/dist/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js.map +1 -0
  38. package/dist/MCScanSimpleAnchorsAdapter/configSchema.d.ts +40 -0
  39. package/dist/MCScanSimpleAnchorsAdapter/configSchema.js +48 -0
  40. package/dist/MCScanSimpleAnchorsAdapter/configSchema.js.map +1 -0
  41. package/dist/MCScanSimpleAnchorsAdapter/index.d.ts +3 -0
  42. package/dist/MCScanSimpleAnchorsAdapter/index.js +42 -0
  43. package/dist/MCScanSimpleAnchorsAdapter/index.js.map +1 -0
  44. package/dist/MashMapAdapter/MashMapAdapter.d.ts +5 -0
  45. package/dist/MashMapAdapter/MashMapAdapter.js +42 -0
  46. package/dist/MashMapAdapter/MashMapAdapter.js.map +1 -0
  47. package/dist/MashMapAdapter/configSchema.d.ts +37 -0
  48. package/dist/MashMapAdapter/configSchema.js +45 -0
  49. package/dist/MashMapAdapter/configSchema.js.map +1 -0
  50. package/dist/MashMapAdapter/index.d.ts +3 -0
  51. package/dist/MashMapAdapter/index.js +42 -0
  52. package/dist/MashMapAdapter/index.js.map +1 -0
  53. package/dist/PAFAdapter/PAFAdapter.d.ts +20 -0
  54. package/dist/PAFAdapter/PAFAdapter.js +152 -0
  55. package/dist/PAFAdapter/PAFAdapter.js.map +1 -0
  56. package/dist/PAFAdapter/SyntenyFeature.d.ts +4 -0
  57. package/dist/PAFAdapter/SyntenyFeature.js +17 -0
  58. package/dist/PAFAdapter/SyntenyFeature.js.map +1 -0
  59. package/dist/PAFAdapter/configSchema.d.ts +37 -0
  60. package/dist/PAFAdapter/configSchema.js +45 -0
  61. package/dist/PAFAdapter/configSchema.js.map +1 -0
  62. package/dist/PAFAdapter/index.d.ts +3 -0
  63. package/dist/PAFAdapter/index.js +42 -0
  64. package/dist/PAFAdapter/index.js.map +1 -0
  65. package/dist/PAFAdapter/util.d.ts +20 -0
  66. package/dist/PAFAdapter/util.js +134 -0
  67. package/dist/PAFAdapter/util.js.map +1 -0
  68. package/dist/index.d.ts +6 -0
  69. package/dist/index.js +51 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/util.d.ts +16 -0
  72. package/dist/util.js +57 -0
  73. package/dist/util.js.map +1 -0
  74. package/esm/ChainAdapter/ChainAdapter.d.ts +19 -0
  75. package/esm/ChainAdapter/ChainAdapter.js +16 -0
  76. package/esm/ChainAdapter/ChainAdapter.js.map +1 -0
  77. package/esm/ChainAdapter/configSchema.d.ts +39 -0
  78. package/esm/ChainAdapter/configSchema.js +43 -0
  79. package/esm/ChainAdapter/configSchema.js.map +1 -0
  80. package/esm/ChainAdapter/index.d.ts +3 -0
  81. package/esm/ChainAdapter/index.js +14 -0
  82. package/esm/ChainAdapter/index.js.map +1 -0
  83. package/esm/ChainAdapter/util.d.ts +16 -0
  84. package/esm/ChainAdapter/util.js +130 -0
  85. package/esm/ChainAdapter/util.js.map +1 -0
  86. package/esm/DeltaAdapter/DeltaAdapter.d.ts +20 -0
  87. package/esm/DeltaAdapter/DeltaAdapter.js +16 -0
  88. package/esm/DeltaAdapter/DeltaAdapter.js.map +1 -0
  89. package/esm/DeltaAdapter/configSchema.d.ts +39 -0
  90. package/esm/DeltaAdapter/configSchema.js +43 -0
  91. package/esm/DeltaAdapter/configSchema.js.map +1 -0
  92. package/esm/DeltaAdapter/index.d.ts +3 -0
  93. package/esm/DeltaAdapter/index.js +14 -0
  94. package/esm/DeltaAdapter/index.js.map +1 -0
  95. package/esm/DeltaAdapter/util.d.ts +17 -0
  96. package/esm/DeltaAdapter/util.js +148 -0
  97. package/esm/DeltaAdapter/util.js.map +1 -0
  98. package/esm/MCScanAnchorsAdapter/MCScanAnchorsAdapter.d.ts +33 -0
  99. package/esm/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js +94 -0
  100. package/esm/MCScanAnchorsAdapter/MCScanAnchorsAdapter.js.map +1 -0
  101. package/esm/MCScanAnchorsAdapter/configSchema.d.ts +40 -0
  102. package/esm/MCScanAnchorsAdapter/configSchema.js +46 -0
  103. package/esm/MCScanAnchorsAdapter/configSchema.js.map +1 -0
  104. package/esm/MCScanAnchorsAdapter/index.d.ts +3 -0
  105. package/esm/MCScanAnchorsAdapter/index.js +14 -0
  106. package/esm/MCScanAnchorsAdapter/index.js.map +1 -0
  107. package/esm/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.d.ts +41 -0
  108. package/esm/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js +116 -0
  109. package/esm/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.js.map +1 -0
  110. package/esm/MCScanSimpleAnchorsAdapter/configSchema.d.ts +40 -0
  111. package/esm/MCScanSimpleAnchorsAdapter/configSchema.js +46 -0
  112. package/esm/MCScanSimpleAnchorsAdapter/configSchema.js.map +1 -0
  113. package/esm/MCScanSimpleAnchorsAdapter/index.d.ts +3 -0
  114. package/esm/MCScanSimpleAnchorsAdapter/index.js +14 -0
  115. package/esm/MCScanSimpleAnchorsAdapter/index.js.map +1 -0
  116. package/esm/MashMapAdapter/MashMapAdapter.d.ts +5 -0
  117. package/esm/MashMapAdapter/MashMapAdapter.js +36 -0
  118. package/esm/MashMapAdapter/MashMapAdapter.js.map +1 -0
  119. package/esm/MashMapAdapter/configSchema.d.ts +37 -0
  120. package/esm/MashMapAdapter/configSchema.js +43 -0
  121. package/esm/MashMapAdapter/configSchema.js.map +1 -0
  122. package/esm/MashMapAdapter/index.d.ts +3 -0
  123. package/esm/MashMapAdapter/index.js +14 -0
  124. package/esm/MashMapAdapter/index.js.map +1 -0
  125. package/esm/PAFAdapter/PAFAdapter.d.ts +20 -0
  126. package/esm/PAFAdapter/PAFAdapter.js +147 -0
  127. package/esm/PAFAdapter/PAFAdapter.js.map +1 -0
  128. package/esm/PAFAdapter/SyntenyFeature.d.ts +4 -0
  129. package/esm/PAFAdapter/SyntenyFeature.js +14 -0
  130. package/esm/PAFAdapter/SyntenyFeature.js.map +1 -0
  131. package/esm/PAFAdapter/configSchema.d.ts +37 -0
  132. package/esm/PAFAdapter/configSchema.js +43 -0
  133. package/esm/PAFAdapter/configSchema.js.map +1 -0
  134. package/esm/PAFAdapter/index.d.ts +3 -0
  135. package/esm/PAFAdapter/index.js +14 -0
  136. package/esm/PAFAdapter/index.js.map +1 -0
  137. package/esm/PAFAdapter/util.d.ts +20 -0
  138. package/esm/PAFAdapter/util.js +127 -0
  139. package/esm/PAFAdapter/util.js.map +1 -0
  140. package/esm/index.d.ts +6 -0
  141. package/esm/index.js +45 -0
  142. package/esm/index.js.map +1 -0
  143. package/esm/util.d.ts +16 -0
  144. package/esm/util.js +49 -0
  145. package/esm/util.js.map +1 -0
  146. package/package.json +63 -0
  147. package/src/ChainAdapter/ChainAdapter.ts +18 -0
  148. package/src/ChainAdapter/configSchema.ts +50 -0
  149. package/src/ChainAdapter/index.ts +18 -0
  150. package/src/ChainAdapter/util.ts +170 -0
  151. package/src/DeltaAdapter/DeltaAdapter.ts +18 -0
  152. package/src/DeltaAdapter/configSchema.ts +50 -0
  153. package/src/DeltaAdapter/index.ts +18 -0
  154. package/src/DeltaAdapter/util.ts +149 -0
  155. package/src/MCScanAnchorsAdapter/MCScanAnchorsAdapter.test.ts +45 -0
  156. package/src/MCScanAnchorsAdapter/MCScanAnchorsAdapter.ts +134 -0
  157. package/src/MCScanAnchorsAdapter/configSchema.ts +52 -0
  158. package/src/MCScanAnchorsAdapter/index.ts +20 -0
  159. package/src/MCScanAnchorsAdapter/test_data/grape.bed.gz +0 -0
  160. package/src/MCScanAnchorsAdapter/test_data/grape.peach.anchors.gz +0 -0
  161. package/src/MCScanAnchorsAdapter/test_data/peach.bed.gz +0 -0
  162. package/src/MCScanSimpleAnchorsAdapter/MCScanSimpleAnchorsAdapter.ts +157 -0
  163. package/src/MCScanSimpleAnchorsAdapter/configSchema.ts +52 -0
  164. package/src/MCScanSimpleAnchorsAdapter/index.ts +19 -0
  165. package/src/MashMapAdapter/MashMapAdapter.ts +40 -0
  166. package/src/MashMapAdapter/configSchema.ts +51 -0
  167. package/src/MashMapAdapter/index.ts +18 -0
  168. package/src/PAFAdapter/PAFAdapter.test.ts +37 -0
  169. package/src/PAFAdapter/PAFAdapter.ts +181 -0
  170. package/src/PAFAdapter/SyntenyFeature.ts +15 -0
  171. package/src/PAFAdapter/configSchema.ts +50 -0
  172. package/src/PAFAdapter/index.ts +18 -0
  173. package/src/PAFAdapter/test_data/grape.peach.anchors +14966 -0
  174. package/src/PAFAdapter/test_data/peach_grape.paf +30 -0
  175. package/src/PAFAdapter/util.test.ts +7 -0
  176. package/src/PAFAdapter/util.ts +176 -0
  177. package/src/index.ts +62 -0
  178. 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,3 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => void;
3
+ export default _default;
@@ -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,5 @@
1
+ import { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import PAFAdapter from '../PAFAdapter/PAFAdapter';
3
+ export default class MashMapAdapter extends PAFAdapter {
4
+ setupPre(opts?: BaseOptions): Promise<import("../PAFAdapter/util").PAFRecord[]>;
5
+ }
@@ -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,3 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => void;
3
+ export default _default;
@@ -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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"}