jbrowse-plugin-mafviewer 1.4.2 → 1.4.5
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/README.md +1 -1
- package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.d.ts +14 -0
- package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js +69 -0
- package/dist/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.js.map +1 -0
- package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js +4 -4
- package/dist/LinearMafDisplay/components/LinearMafDisplayComponent.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/ColorLegend.js +2 -2
- package/dist/LinearMafDisplay/components/Sidebar/ColorLegend.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/RectBg.d.ts +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/RectBg.js +2 -3
- package/dist/LinearMafDisplay/components/Sidebar/RectBg.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/SvgWrapper.js +81 -11
- package/dist/LinearMafDisplay/components/Sidebar/SvgWrapper.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/Tree.js +30 -9
- package/dist/LinearMafDisplay/components/Sidebar/Tree.js.map +1 -1
- package/dist/LinearMafDisplay/components/Sidebar/YScaleBars.d.ts +0 -1
- package/dist/LinearMafDisplay/components/Sidebar/YScaleBars.js.map +1 -1
- package/dist/LinearMafDisplay/renderSvg.js +1 -1
- package/dist/LinearMafDisplay/renderSvg.js.map +1 -1
- package/dist/LinearMafDisplay/stateModel.d.ts +69 -3
- package/dist/LinearMafDisplay/stateModel.js +96 -1
- package/dist/LinearMafDisplay/stateModel.js.map +1 -1
- package/dist/LinearMafDisplay/util.d.ts +1 -0
- package/dist/LinearMafDisplay/util.js +3 -2
- package/dist/LinearMafDisplay/util.js.map +1 -1
- package/dist/LinearMafRenderer/LinearMafRenderer.d.ts +4 -7
- package/dist/LinearMafRenderer/LinearMafRenderer.js.map +1 -1
- package/dist/LinearMafRenderer/components/LinearMafRendering.d.ts +1 -1
- package/dist/LinearMafRenderer/components/LinearMafRendering.js +27 -9
- package/dist/LinearMafRenderer/components/LinearMafRendering.js.map +1 -1
- package/dist/LinearMafRenderer/makeImageData.js +13 -9
- package/dist/LinearMafRenderer/makeImageData.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/features.d.ts +0 -1
- package/dist/LinearMafRenderer/rendering/features.js +1 -14
- package/dist/LinearMafRenderer/rendering/features.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/insertions.js +8 -6
- package/dist/LinearMafRenderer/rendering/insertions.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/matches.d.ts +1 -1
- package/dist/LinearMafRenderer/rendering/matches.js +3 -15
- package/dist/LinearMafRenderer/rendering/matches.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/spatialIndex.js +8 -2
- package/dist/LinearMafRenderer/rendering/spatialIndex.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/text.js +1 -3
- package/dist/LinearMafRenderer/rendering/text.js.map +1 -1
- package/dist/LinearMafRenderer/rendering/types.d.ts +5 -4
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js +7 -7
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js.map +4 -4
- package/dist/util/fastaUtils.js +23 -50
- package/dist/util/fastaUtils.js.map +1 -1
- package/package.json +9 -9
- package/src/LinearMafDisplay/components/InsertionSequenceDialog/InsertionSequenceDialog.tsx +105 -0
- package/src/LinearMafDisplay/components/LinearMafDisplayComponent.tsx +4 -4
- package/src/LinearMafDisplay/components/Sidebar/ColorLegend.tsx +2 -6
- package/src/LinearMafDisplay/components/Sidebar/RectBg.tsx +8 -3
- package/src/LinearMafDisplay/components/Sidebar/SvgWrapper.tsx +117 -15
- package/src/LinearMafDisplay/components/Sidebar/Tree.tsx +53 -8
- package/src/LinearMafDisplay/components/Sidebar/YScaleBars.tsx +0 -1
- package/src/LinearMafDisplay/renderSvg.tsx +1 -1
- package/src/LinearMafDisplay/stateModel.ts +109 -1
- package/src/LinearMafDisplay/util.ts +4 -2
- package/src/LinearMafRenderer/LinearMafRenderer.ts +2 -4
- package/src/LinearMafRenderer/components/LinearMafRendering.tsx +51 -30
- package/src/LinearMafRenderer/makeImageData.ts +21 -27
- package/src/LinearMafRenderer/rendering/features.ts +2 -36
- package/src/LinearMafRenderer/rendering/insertions.ts +11 -6
- package/src/LinearMafRenderer/rendering/matches.ts +2 -27
- package/src/LinearMafRenderer/rendering/spatialIndex.ts +9 -2
- package/src/LinearMafRenderer/rendering/text.ts +1 -2
- package/src/LinearMafRenderer/rendering/types.ts +7 -4
- package/src/util/fastaUtils.ts +28 -54
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.d.ts +0 -30
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.js +0 -253
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.js.map +0 -1
- package/dist/BgzipTaffyAdapter/configSchema.d.ts +0 -44
- package/dist/BgzipTaffyAdapter/configSchema.js +0 -53
- package/dist/BgzipTaffyAdapter/configSchema.js.map +0 -1
- package/dist/BgzipTaffyAdapter/index.d.ts +0 -2
- package/dist/BgzipTaffyAdapter/index.js +0 -11
- package/dist/BgzipTaffyAdapter/index.js.map +0 -1
- package/dist/BgzipTaffyAdapter/rowInstructions.d.ts +0 -35
- package/dist/BgzipTaffyAdapter/rowInstructions.js +0 -55
- package/dist/BgzipTaffyAdapter/rowInstructions.js.map +0 -1
- package/dist/BgzipTaffyAdapter/types.d.ts +0 -13
- package/dist/BgzipTaffyAdapter/types.js +0 -2
- package/dist/BgzipTaffyAdapter/types.js.map +0 -1
- package/dist/BgzipTaffyAdapter/util.d.ts +0 -1
- package/dist/BgzipTaffyAdapter/util.js +0 -22
- package/dist/BgzipTaffyAdapter/util.js.map +0 -1
- package/dist/BgzipTaffyAdapter/virtualOffset.d.ts +0 -8
- package/dist/BgzipTaffyAdapter/virtualOffset.js +0 -23
- package/dist/BgzipTaffyAdapter/virtualOffset.js.map +0 -1
- package/dist/LinearMafRenderer/components/ReactComponent.d.ts +0 -9
- package/dist/LinearMafRenderer/components/ReactComponent.js +0 -47
- package/dist/LinearMafRenderer/components/ReactComponent.js.map +0 -1
- package/dist/LinearMafRenderer/components/util.d.ts +0 -1
- package/dist/LinearMafRenderer/components/util.js +0 -13
- package/dist/LinearMafRenderer/components/util.js.map +0 -1
- package/dist/out.js +0 -32303
- package/dist/out.js.map +0 -7
- package/src/LinearMafRenderer/components/util.ts +0 -13
|
@@ -10,6 +10,7 @@ import { addDisposer, isAlive, types } from 'mobx-state-tree';
|
|
|
10
10
|
import { maxLength, setBrLength } from './util';
|
|
11
11
|
import { normalize } from '../util';
|
|
12
12
|
const SetRowHeightDialog = lazy(() => import('./components/SetRowHeightDialog/SetRowHeightDialog'));
|
|
13
|
+
const InsertionSequenceDialog = lazy(() => import('./components/InsertionSequenceDialog/InsertionSequenceDialog'));
|
|
13
14
|
/**
|
|
14
15
|
* #stateModel LinearMafDisplay
|
|
15
16
|
* extends LinearBasicDisplay
|
|
@@ -55,6 +56,10 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
55
56
|
* #property
|
|
56
57
|
*/
|
|
57
58
|
showAsUpperCase: true,
|
|
59
|
+
/**
|
|
60
|
+
* #property
|
|
61
|
+
*/
|
|
62
|
+
showSidebar: true,
|
|
58
63
|
}))
|
|
59
64
|
.volatile(() => ({
|
|
60
65
|
/**
|
|
@@ -73,6 +78,14 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
73
78
|
* #volatile
|
|
74
79
|
*/
|
|
75
80
|
volatileTree: undefined,
|
|
81
|
+
/**
|
|
82
|
+
* #volatile
|
|
83
|
+
*/
|
|
84
|
+
highlightedRowNames: undefined,
|
|
85
|
+
/**
|
|
86
|
+
* #volatile
|
|
87
|
+
*/
|
|
88
|
+
hoveredTreeNode: undefined,
|
|
76
89
|
}))
|
|
77
90
|
.actions(self => ({
|
|
78
91
|
/**
|
|
@@ -122,6 +135,38 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
122
135
|
setShowAsUpperCase(arg) {
|
|
123
136
|
self.showAsUpperCase = arg;
|
|
124
137
|
},
|
|
138
|
+
/**
|
|
139
|
+
* #action
|
|
140
|
+
*/
|
|
141
|
+
setTreeAreaWidth(width) {
|
|
142
|
+
self.treeAreaWidth = width;
|
|
143
|
+
},
|
|
144
|
+
/**
|
|
145
|
+
* #action
|
|
146
|
+
*/
|
|
147
|
+
setShowSidebar(arg) {
|
|
148
|
+
self.showSidebar = arg;
|
|
149
|
+
},
|
|
150
|
+
/**
|
|
151
|
+
* #action
|
|
152
|
+
*/
|
|
153
|
+
setHighlightedRowNames(names, nodePosition) {
|
|
154
|
+
self.highlightedRowNames = names;
|
|
155
|
+
self.hoveredTreeNode = nodePosition;
|
|
156
|
+
},
|
|
157
|
+
/**
|
|
158
|
+
* #action
|
|
159
|
+
*/
|
|
160
|
+
showInsertionSequenceDialog(insertionData) {
|
|
161
|
+
getSession(self).queueDialog(handleClose => [
|
|
162
|
+
InsertionSequenceDialog,
|
|
163
|
+
{
|
|
164
|
+
model: self,
|
|
165
|
+
onClose: handleClose,
|
|
166
|
+
insertionData,
|
|
167
|
+
},
|
|
168
|
+
]);
|
|
169
|
+
},
|
|
125
170
|
}))
|
|
126
171
|
.views(self => ({
|
|
127
172
|
/**
|
|
@@ -164,10 +209,16 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
164
209
|
const r = self.root;
|
|
165
210
|
if (r) {
|
|
166
211
|
const width = self.treeAreaWidth;
|
|
212
|
+
// Use totalHeight - rowHeight so leaves are centered in rows
|
|
213
|
+
// (first leaf at rowHeight/2, last at totalHeight - rowHeight/2)
|
|
167
214
|
const clust = cluster()
|
|
168
|
-
.size([this.totalHeight, width])
|
|
215
|
+
.size([this.totalHeight - self.rowHeight, width])
|
|
169
216
|
.separation(() => 1);
|
|
170
217
|
clust(r);
|
|
218
|
+
// Offset all nodes by rowHeight/2 to center in rows
|
|
219
|
+
for (const node of r.descendants()) {
|
|
220
|
+
node.x = node.x + self.rowHeight / 2;
|
|
221
|
+
}
|
|
171
222
|
setBrLength(r, (r.data.length = 0), width / maxLength(r));
|
|
172
223
|
return r;
|
|
173
224
|
}
|
|
@@ -205,6 +256,36 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
205
256
|
get leaves() {
|
|
206
257
|
return self.root?.leaves();
|
|
207
258
|
},
|
|
259
|
+
/**
|
|
260
|
+
* #getter
|
|
261
|
+
*/
|
|
262
|
+
get leafMap() {
|
|
263
|
+
return new Map(this.leaves?.map(leaf => [leaf.data.name, leaf]));
|
|
264
|
+
},
|
|
265
|
+
/**
|
|
266
|
+
* #getter
|
|
267
|
+
* Precomputed map from hierarchy node to its descendant leaf names
|
|
268
|
+
*/
|
|
269
|
+
get nodeDescendantNames() {
|
|
270
|
+
const map = new Map();
|
|
271
|
+
function computeDescendants(node) {
|
|
272
|
+
if (!node.children || node.children.length === 0) {
|
|
273
|
+
const names = [node.data.name];
|
|
274
|
+
map.set(node, names);
|
|
275
|
+
return names;
|
|
276
|
+
}
|
|
277
|
+
const names = [];
|
|
278
|
+
for (const child of node.children) {
|
|
279
|
+
names.push(...computeDescendants(child));
|
|
280
|
+
}
|
|
281
|
+
map.set(node, names);
|
|
282
|
+
return names;
|
|
283
|
+
}
|
|
284
|
+
if (this.hierarchy) {
|
|
285
|
+
computeDescendants(this.hierarchy);
|
|
286
|
+
}
|
|
287
|
+
return map;
|
|
288
|
+
},
|
|
208
289
|
/**
|
|
209
290
|
* #getter
|
|
210
291
|
*/
|
|
@@ -305,6 +386,14 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
305
386
|
self.setMismatchRendering(!self.mismatchRendering);
|
|
306
387
|
},
|
|
307
388
|
},
|
|
389
|
+
{
|
|
390
|
+
label: 'Show sidebar',
|
|
391
|
+
type: 'checkbox',
|
|
392
|
+
checked: self.showSidebar,
|
|
393
|
+
onClick: () => {
|
|
394
|
+
self.setShowSidebar(!self.showSidebar);
|
|
395
|
+
},
|
|
396
|
+
},
|
|
308
397
|
];
|
|
309
398
|
},
|
|
310
399
|
};
|
|
@@ -331,6 +420,12 @@ export default function stateModelFactory(configSchema, pluginManager) {
|
|
|
331
420
|
?.map(s => measureText(s.label, this.svgFontSize))
|
|
332
421
|
.map(width => (this.canDisplayLabel ? width : minWidth)) || [], 0);
|
|
333
422
|
},
|
|
423
|
+
/**
|
|
424
|
+
* #getter
|
|
425
|
+
*/
|
|
426
|
+
get sidebarWidth() {
|
|
427
|
+
return self.showSidebar ? this.labelWidth + 5 + self.treeWidth : 0;
|
|
428
|
+
},
|
|
334
429
|
}))
|
|
335
430
|
.actions(self => ({
|
|
336
431
|
afterCreate() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateModel.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/stateModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stateModel.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/stateModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAE7D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAYnC,MAAM,kBAAkB,GAAG,IAAI,CAC7B,GAAG,EAAE,CAAC,MAAM,CAAC,oDAAoD,CAAC,CACnE,CAAA;AAED,MAAM,uBAAuB,GAAG,IAAI,CAClC,GAAG,EAAE,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAC7E,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,YAAwC,EACxC,aAA4B;IAE5B,MAAM,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAChD,wBAAwB,CAC+B,CAAA;IACzD,MAAM,EAAE,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAA;IAExD,OAAO,KAAK;SACT,OAAO,CACN,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,CAAC,KAAK,CAAC;QACV;;WAEG;QACH,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACvC;;WAEG;QACH,aAAa,EAAE,sBAAsB,CAAC,YAAY,CAAC;QACnD;;WAEG;QACH,SAAS,EAAE,EAAE;QACb;;WAEG;QACH,aAAa,EAAE,GAAG;QAClB;;WAEG;QACH,cAAc,EAAE,KAAK;QACrB;;WAEG;QACH,iBAAiB,EAAE,IAAI;QAEvB;;WAEG;QACH,aAAa,EAAE,KAAK;QAEpB;;WAEG;QACH,aAAa,EAAE,EAAE;QACjB;;WAEG;QACH,eAAe,EAAE,IAAI;QACrB;;WAEG;QACH,WAAW,EAAE,IAAI;KAClB,CAAC,CACH;SACA,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACf;;WAEG;QACH,WAAW,EAAE,SAAgD;QAC7D;;WAEG;QACH,aAAa,EAAE,IAAI;QACnB;;WAEG;QACH,eAAe,EAAE,SAAiC;QAClD;;WAEG;QACH,YAAY,EAAE,SAAgB;QAC9B;;WAEG;QACH,mBAAmB,EAAE,SAAiC;QACtD;;WAEG;QACH,eAAe,EAAE,SAAiD;KACnE,CAAC,CAAC;SACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;WAEG;QACH,cAAc,CAAC,GAA6B;YAC1C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAA;QACxB,CAAC;QACD;;WAEG;QACH,YAAY,CAAC,CAAS;YACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QACpB,CAAC;QACD;;WAEG;QACH,gBAAgB,CAAC,CAAS;YACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACxB,CAAC;QACD;;WAEG;QACH,iBAAiB,CAAC,CAAU;YAC1B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACzB,CAAC;QACD;;WAEG;QACH,oBAAoB,CAAC,CAAU;YAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAC5B,CAAC;QACD;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAwC;YAChE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAA;YAChC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YAC1B,CAAC;QACH,CAAC;QACD;;WAEG;QACH,kBAAkB,CAAC,GAAY;YAC7B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAA;QAC5B,CAAC;QACD;;WAEG;QACH,gBAAgB,CAAC,KAAa;YAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;QAC5B,CAAC;QACD;;WAEG;QACH,cAAc,CAAC,GAAY;YACzB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAA;QACxB,CAAC;QACD;;WAEG;QACH,sBAAsB,CACpB,KAAgB,EAChB,YAAuC;YAEvC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAChC,IAAI,CAAC,eAAe,GAAG,YAAY,CAAA;QACrC,CAAC;QACD;;WAEG;QACH,2BAA2B,CAAC,aAK3B;YACC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,uBAAuB;gBACvB;oBACE,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,WAAW;oBACpB,aAAa;iBACd;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAC;SACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd;;WAEG;QACH,IAAI,gBAAgB;YAClB,OAAO,mBAAmB,CAAA;QAC5B,CAAC;QAED;;WAEG;QACH,IAAI,cAAc;YAChB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;YACpD,MAAM,MAAM,GAAG,UAA6C,CAAA;YAE5D,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAC1C;gBACE,GAAG,MAAM;gBACT,IAAI,EAAE,mBAAmB;aAC1B,EACD,MAAM,CAAC,IAAI,CAAC,CACb,CAAA;QACH,CAAC;KACF,CAAC,CAAC;SAEF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd;;WAEG;QACH,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,YAAY;gBACtB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC3C,yEAAyE;qBACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,SAAS,CAAA;QACf,CAAC;KACF,CAAC,CAAC;SACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd;;;WAGG;QACH,IAAI,SAAS;YACX,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA;YACnB,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;gBAChC,6DAA6D;gBAC7D,iEAAiE;gBACjE,MAAM,KAAK,GAAG,OAAO,EAAe;qBACjC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;qBAChD,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;gBACtB,KAAK,CAAC,CAAC,CAAC,CAAA;gBACR,oDAAoD;gBACpD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACnC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAE,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;gBACvC,CAAC;gBACD,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzD,OAAO,CAAwC,CAAA;YACjD,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAA;YAClB,CAAC;QACH,CAAC;QACD;;WAEG;QACH,IAAI,OAAO;YACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe;oBAC7C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,SAAS,CAAA;gBACb,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACxC,GAAG,CAAC;oBACJ,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK;oBACnD,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK;iBACpD,CAAC,CAAC,CAAA;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,eAAe,CAAA;YAC7B,CAAC;QACH,CAAC;QAED;;WAEG;QACH,IAAI,WAAW;YACb,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,CAAC;QACD;;WAEG;QACH,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAA;QAC5B,CAAC;QACD;;WAEG;QACH,IAAI,OAAO;YACT,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAClE,CAAC;QACD;;;WAGG;QACH,IAAI,mBAAmB;YACrB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAA;YACxC,SAAS,kBAAkB,CACzB,IAAyC;gBAEzC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;oBACpB,OAAO,KAAK,CAAA;gBACd,CAAC;gBACD,MAAM,KAAK,GAAa,EAAE,CAAA;gBAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC1C,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACpB,OAAO,KAAK,CAAA;YACd,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACpC,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD;;WAEG;QACH,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;KACF,CAAC,CAAC;SACF,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM;QACJ,6DAA6D;QAC7D,cAAc,EAAE,mBAAmB;QACnC,6DAA6D;QAC7D,WAAW,EAAE,gBAAgB,GAC9B,GAAG,IAAI,CAAA;QACR,OAAO;YACL;;eAEG;YACH,IAAI,SAAS;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;YAChD,CAAC;YACD;;eAEG;YACH,WAAW;gBACT,MAAM,EACJ,cAAc,EACd,cAAc,EACd,OAAO,EACP,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,GAAG,IAAI,CAAA;gBACR,MAAM,CAAC,GAAG,gBAAgB,EAAE,CAAA;gBAC5B,OAAO;oBACL,GAAG,CAAC;oBACJ,QAAQ,EACN,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ;oBACjE,MAAM,EAAE,cAAc;oBACtB,OAAO;oBACP,SAAS;oBACT,aAAa;oBACb,cAAc;oBACd,iBAAiB;oBACjB,eAAe;iBAChB,CAAA;YACH,CAAC;YACD;;eAEG;YACH,cAAc;gBACZ,OAAO;oBACL,GAAG,mBAAmB,EAAE;oBACxB;wBACE,KAAK,EAAE,oBAAoB;wBAC3B,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE;4BACP;gCACE,KAAK,EAAE,QAAQ;gCACf,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;oCACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;gCAC5B,CAAC;6BACF;4BACD;gCACE,KAAK,EAAE,SAAS;gCAChB,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;oCACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;gCAC5B,CAAC;6BACF;4BACD;gCACE,KAAK,EAAE,qBAAqB;gCAC5B,OAAO,EAAE,GAAG,EAAE;oCACZ,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;wCAC1C,kBAAkB;wCAClB;4CACE,KAAK,EAAE,IAAI;4CACX,WAAW;yCACZ;qCACF,CAAC,CAAA;gCACJ,CAAC;6BACF;yBACF;qBACF;oBACD;wBACE,KAAK,EAAE,gBAAgB;wBACvB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,IAAI,CAAC,eAAe;wBAC7B,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;wBAChD,CAAC;qBACF;oBACD;wBACE,KAAK,EAAE,kBAAkB;wBACzB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,IAAI,CAAC,cAAc;wBAC5B,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;wBAC9C,CAAC;qBACF;oBACD;wBACE,KAAK,EAAE,iCAAiC;wBACxC,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB;wBAChC,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;wBACpD,CAAC;qBACF;oBACD;wBACE,KAAK,EAAE,cAAc;wBACrB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;wBACxC,CAAC;qBACF;iBACF,CAAA;YACH,CAAC;SACF,CAAA;IACH,CAAC,CAAC;SACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd;;WAEG;QACH,IAAI,WAAW;YACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAClD,CAAC;QACD;;WAEG;QACH,IAAI,eAAe;YACjB,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAA;QAC5B,CAAC;QACD;;WAEG;QACH,IAAI,UAAU;YACZ,MAAM,QAAQ,GAAG,EAAE,CAAA;YACnB,OAAO,GAAG,CACR,IAAI,CAAC,OAAO;gBACV,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;iBACjD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAChE,CAAC,CACF,CAAA;QACH,CAAC;QACD;;WAEG;QACH,IAAI,YAAY;YACd,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,CAAC;KACF,CAAC,CAAC;SACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,WAAW;YACT,WAAW,CACT,IAAI,EACJ,OAAO,CAAC,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;oBACvC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;oBACvC,IAAI,CAAC,UAAU,CACb,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE;wBACjD,SAAS;wBACT,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,cAAc,EAAE,CAAC,OAAe,EAAE,EAAE;4BAClC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gCAClB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;4BAC1B,CAAC;wBACH,CAAC;qBACF,CAAC,CAAyC,CAC5C,CAAA;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAChB,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBACzC,CAAC;YACH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC,CAAC;SACF,OAAO,CAAC,IAAI,CAAC,EAAE;QACd,6DAA6D;QAC7D,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;QAC1C,OAAO;YACL;;eAEG;YACH,KAAK,CAAC,SAAS,CAAC,IAA6B;gBAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;gBACjD,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;YAC9C,CAAC;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -18,12 +18,13 @@ export function generateTooltipContent(hoveredInfo, p1, p2) {
|
|
|
18
18
|
// Single position mode
|
|
19
19
|
contentLines.push(`Ref: ${p2.refName}:${toLocale(p2.coord)}`);
|
|
20
20
|
if (hoveredInfo) {
|
|
21
|
-
const { base,
|
|
21
|
+
const { base, sampleLabel, pos, chr, isInsertion } = hoveredInfo;
|
|
22
22
|
const thresh = 20;
|
|
23
23
|
const len = base.length;
|
|
24
24
|
const lengthSuffix = len > 1 ? ` ${len}bp` : '';
|
|
25
25
|
const baseDisplay = base.length > thresh ? base.slice(0, thresh) + '...' : base;
|
|
26
|
-
|
|
26
|
+
const insertionLabel = isInsertion ? ' Insertion' : '';
|
|
27
|
+
contentLines.push(`Alt ${sampleLabel}: ${chr}:${pos.toLocaleString('en-US')} (${baseDisplay}${lengthSuffix}${insertionLabel})`);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
return contentLines.filter(line => !!line).join('<br/>');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LinearMafDisplay/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAmB9B;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAoC,EACpC,EAA+B,EAC/B,EAAmB;IAEnB,MAAM,YAAY,GAAa,EAAE,CAAA;IAEjC,IAAI,EAAE,EAAE,CAAC;QACP,uBAAuB;QACvB,YAAY,CAAC,IAAI,CACf,UAAU,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAC5C,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAC1C,WAAW,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAC5D,CAAA;IACH,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAE7D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,WAAW,CAAA;YAChE,MAAM,MAAM,GAAG,EAAE,CAAA;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;YACvB,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/C,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;YAC7D,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;YAEtD,YAAY,CAAC,IAAI,CACf,OAAO,WAAW,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,CAC7G,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,CAA6B;IACrD,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACzB,CAA6B,EAC7B,EAAU,EACV,CAAS;IAET,mBAAmB;IACnB,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEnD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACrB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { FeatureRendererType } from '@jbrowse/core/pluggableElementTypes';
|
|
2
2
|
import { RenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
|
|
3
3
|
import { Region } from '@jbrowse/core/util';
|
|
4
|
-
|
|
5
|
-
id: string;
|
|
6
|
-
color?: string;
|
|
7
|
-
}
|
|
4
|
+
import type { Sample } from '../LinearMafDisplay/types';
|
|
8
5
|
interface RenderArgs extends RenderArgsDeserialized {
|
|
9
6
|
samples: Sample[];
|
|
10
7
|
rowHeight: number;
|
|
@@ -27,7 +24,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
27
24
|
width: number;
|
|
28
25
|
height: number;
|
|
29
26
|
containsNoTransferables: boolean;
|
|
30
|
-
samples:
|
|
27
|
+
samples: Sample[];
|
|
31
28
|
flatbush: ArrayBufferLike;
|
|
32
29
|
items: import("./rendering").RenderedBase[];
|
|
33
30
|
canvasRecordedData: Record<string, unknown>;
|
|
@@ -38,7 +35,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
38
35
|
width: number;
|
|
39
36
|
height: number;
|
|
40
37
|
containsNoTransferables: boolean;
|
|
41
|
-
samples:
|
|
38
|
+
samples: Sample[];
|
|
42
39
|
flatbush: ArrayBufferLike;
|
|
43
40
|
items: import("./rendering").RenderedBase[];
|
|
44
41
|
imageData: any;
|
|
@@ -49,7 +46,7 @@ export default class LinearMafRenderer extends FeatureRendererType {
|
|
|
49
46
|
width: number;
|
|
50
47
|
height: number;
|
|
51
48
|
containsNoTransferables: boolean;
|
|
52
|
-
samples:
|
|
49
|
+
samples: Sample[];
|
|
53
50
|
flatbush: ArrayBufferLike;
|
|
54
51
|
items: import("./rendering").RenderedBase[];
|
|
55
52
|
reactElement: React.ReactElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinearMafRenderer.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/LinearMafRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EAEL,sBAAsB,EACtB,YAAY,GACb,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"LinearMafRenderer.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/LinearMafRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,OAAO,EAEL,sBAAsB,EACtB,YAAY,GACb,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAc/C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,mBAAmB;IAChE,iBAAiB,CAAC,MAAc;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;QAC7B,MAAM,WAAW,GAAG,CAAC,CAAA;QAErB,OAAO;YACL,sEAAsE;YACtE,GAAI,MAAsC;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;YACnD,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC;SAClC,CAAA;IACH,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,WAAuB;QAClC,MAAM,EACJ,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,EACzB,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,GACV,GAAG,WAAW,CAAA;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAA;QAC/C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE,cAAc,EAAE,GAAG,EAAE,CACzE,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE;YACvD,OAAO,aAAa,CAAC;gBACnB,GAAG;gBACH,UAAU,EAAE;oBACV,GAAG,WAAW;oBACd,QAAQ;iBACT;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YACjC,GAAG,WAAW;YACd,GAAG,GAAG;YACN,KAAK;YACL,MAAM;SACP,CAAC,CAAA;QACF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,GAAG;YACN,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,KAAK;YACL,MAAM;YACN,uBAAuB,EAAE,IAAI;SAC9B,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { RenderedBase } from '../rendering';
|
|
3
2
|
import { Sample } from '../../LinearMafDisplay/types';
|
|
3
|
+
import { RenderedBase } from '../rendering';
|
|
4
4
|
type SerializedRBush = any;
|
|
5
5
|
declare const LinearMafRendering: (props: {
|
|
6
6
|
width: number;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React, { useMemo, useRef } from 'react';
|
|
1
|
+
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { PrerenderedCanvas } from '@jbrowse/core/ui';
|
|
3
3
|
import Flatbush from 'flatbush';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
const LinearMafRendering = observer(function (props) {
|
|
6
6
|
const { items, displayModel, height, samples, flatbush } = props;
|
|
7
7
|
const ref = useRef(null);
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const flatbush2 = useMemo(() => Flatbush.from(flatbush), [flatbush]);
|
|
9
|
+
const [isOverLargeInsertion, setIsOverLargeInsertion] = useState(false);
|
|
10
|
+
const getFeatureUnderMouse = useCallback((eventClientX, eventClientY) => {
|
|
10
11
|
let offsetX = 0;
|
|
11
12
|
let offsetY = 0;
|
|
12
13
|
if (ref.current) {
|
|
@@ -14,28 +15,45 @@ const LinearMafRendering = observer(function (props) {
|
|
|
14
15
|
offsetX = eventClientX - r.left;
|
|
15
16
|
offsetY = eventClientY - r.top;
|
|
16
17
|
}
|
|
17
|
-
const x =
|
|
18
|
+
const x = flatbush2.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
|
|
18
19
|
if (x.length) {
|
|
19
20
|
const elt = x.find(idx => items[idx]?.isInsertion);
|
|
20
21
|
const r = elt !== undefined ? items[elt] : items[x[0]];
|
|
21
22
|
const s = samples[r.sampleId];
|
|
22
23
|
return {
|
|
23
24
|
...r,
|
|
24
|
-
sampleId: s?.
|
|
25
|
+
sampleId: s?.id ?? 'unknown',
|
|
26
|
+
sampleLabel: s?.label || s?.id || 'unknown',
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
else {
|
|
28
30
|
return undefined;
|
|
29
31
|
}
|
|
30
|
-
}
|
|
31
|
-
return (React.createElement("div", { ref: ref,
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
}, [flatbush2, items, samples]);
|
|
33
|
+
return (React.createElement("div", { ref: ref, onClick: e => {
|
|
34
|
+
const feature = getFeatureUnderMouse(e.clientX, e.clientY);
|
|
35
|
+
if (feature?.isLargeInsertion) {
|
|
36
|
+
displayModel.showInsertionSequenceDialog?.({
|
|
37
|
+
sequence: feature.base,
|
|
38
|
+
sampleLabel: feature.sampleLabel,
|
|
39
|
+
chr: feature.chr,
|
|
40
|
+
pos: feature.pos,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}, onMouseMove: e => {
|
|
44
|
+
const feature = getFeatureUnderMouse(e.clientX, e.clientY);
|
|
45
|
+
displayModel.setHoveredInfo?.(feature);
|
|
46
|
+
displayModel.setHighlightedRowNames?.(feature?.sampleId ? [feature.sampleId] : undefined);
|
|
47
|
+
setIsOverLargeInsertion(!!feature?.isLargeInsertion);
|
|
48
|
+
}, onMouseLeave: () => {
|
|
34
49
|
displayModel.setHoveredInfo?.(undefined);
|
|
50
|
+
displayModel.setHighlightedRowNames?.(undefined);
|
|
51
|
+
setIsOverLargeInsertion(false);
|
|
35
52
|
}, style: {
|
|
36
53
|
overflow: 'visible',
|
|
37
54
|
position: 'relative',
|
|
38
55
|
height,
|
|
56
|
+
cursor: isOverLargeInsertion ? 'pointer' : 'default',
|
|
39
57
|
} },
|
|
40
58
|
React.createElement(PrerenderedCanvas, { ...props, style: {
|
|
41
59
|
position: 'absolute',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createJBrowseTheme } from '@jbrowse/core/ui';
|
|
2
2
|
import Flatbush from 'flatbush';
|
|
3
|
-
import { FONT_CONFIG, processFeatureAlignment,
|
|
4
|
-
import { getColorBaseMap, getContrastBaseMap } from './util';
|
|
3
|
+
import { FONT_CONFIG, processFeatureAlignment, } from './rendering';
|
|
4
|
+
import { getCharWidthHeight, getColorBaseMap, getContrastBaseMap } from './util';
|
|
5
5
|
export function makeImageData({ ctx, renderArgs, }) {
|
|
6
6
|
const { regions, bpPerPx, rowHeight, showAllLetters, theme: configTheme, mismatchRendering, samples, rowProportion, features, showAsUpperCase, } = renderArgs;
|
|
7
7
|
const region = regions[0];
|
|
@@ -14,10 +14,12 @@ export function makeImageData({ ctx, renderArgs, }) {
|
|
|
14
14
|
const scale = 1 / bpPerPx;
|
|
15
15
|
const hp2 = h / 2;
|
|
16
16
|
const offset = (rowHeight - h) / 2;
|
|
17
|
+
const { charWidth, charHeight } = getCharWidthHeight();
|
|
17
18
|
ctx.font = FONT_CONFIG;
|
|
18
19
|
const renderingContext = {
|
|
19
20
|
ctx,
|
|
20
21
|
scale,
|
|
22
|
+
bpPerPx,
|
|
21
23
|
canvasWidth,
|
|
22
24
|
rowHeight,
|
|
23
25
|
h,
|
|
@@ -28,21 +30,23 @@ export function makeImageData({ ctx, renderArgs, }) {
|
|
|
28
30
|
showAllLetters,
|
|
29
31
|
mismatchRendering,
|
|
30
32
|
showAsUpperCase,
|
|
33
|
+
charWidth,
|
|
34
|
+
charHeight,
|
|
31
35
|
spatialIndex: [],
|
|
32
36
|
spatialIndexCoords: [],
|
|
33
37
|
lastInsertedX: -Infinity, // Start with -Infinity so first item is always inserted
|
|
34
38
|
};
|
|
35
|
-
// First pass: render alignments (gaps, matches, mismatches, text)
|
|
36
39
|
for (const feature of features.values()) {
|
|
37
40
|
processFeatureAlignment(feature, region, bpPerPx, sampleToRowMap, renderingContext);
|
|
38
41
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
const flatbush = new Flatbush(renderingContext.spatialIndex.length || 1);
|
|
43
|
+
if (renderingContext.spatialIndex.length === 0) {
|
|
44
|
+
flatbush.add(0, 0, 1, 1);
|
|
42
45
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
else {
|
|
47
|
+
for (let i = 0, l = renderingContext.spatialIndexCoords.length; i < l; i += 4) {
|
|
48
|
+
flatbush.add(renderingContext.spatialIndexCoords[i], renderingContext.spatialIndexCoords[i + 1], renderingContext.spatialIndexCoords[i + 2], renderingContext.spatialIndexCoords[i + 3]);
|
|
49
|
+
}
|
|
46
50
|
}
|
|
47
51
|
flatbush.finish();
|
|
48
52
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EACL,WAAW,EAGX,uBAAuB,
|
|
1
|
+
{"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { Feature } from '@jbrowse/core/util';
|
|
2
2
|
import type { GenomicRegion, RenderingContext } from './types';
|
|
3
3
|
export declare function processFeatureAlignment(feature: Feature, region: GenomicRegion, bpPerPx: number, sampleToRowMap: Map<string, number>, renderingContext: RenderingContext): void;
|
|
4
|
-
export declare function processFeatureInsertions(feature: Feature, region: GenomicRegion, bpPerPx: number, sampleToRowMap: Map<string, number>, renderingContext: RenderingContext): void;
|
|
@@ -17,22 +17,9 @@ export function processFeatureAlignment(feature, region, bpPerPx, sampleToRowMap
|
|
|
17
17
|
const alignment = originalAlignment.toLowerCase();
|
|
18
18
|
const rowTop = renderingContext.offset + renderingContext.rowHeight * row;
|
|
19
19
|
renderGaps(renderingContext, alignment, referenceSeq, leftPx, rowTop);
|
|
20
|
-
renderMatches(renderingContext, alignment, referenceSeq, leftPx, rowTop
|
|
20
|
+
renderMatches(renderingContext, alignment, referenceSeq, leftPx, rowTop);
|
|
21
21
|
renderMismatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, row, alignmentData.start, alignmentData.chr);
|
|
22
22
|
renderText(renderingContext, alignment, originalAlignment, referenceSeq, leftPx, rowTop);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export function processFeatureInsertions(feature, region, bpPerPx, sampleToRowMap, renderingContext) {
|
|
26
|
-
const [leftPx] = featureSpanPx(feature, region, bpPerPx);
|
|
27
|
-
const alignments = feature.get('alignments');
|
|
28
|
-
const referenceSeq = feature.get('seq').toLowerCase();
|
|
29
|
-
for (const [sampleId, alignmentData] of Object.entries(alignments)) {
|
|
30
|
-
const row = sampleToRowMap.get(sampleId);
|
|
31
|
-
if (row === undefined) {
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
const alignment = alignmentData.seq.toLowerCase();
|
|
35
|
-
const rowTop = renderingContext.offset + renderingContext.rowHeight * row;
|
|
36
23
|
renderInsertions(renderingContext, alignment, referenceSeq, leftPx, rowTop, bpPerPx, row, alignmentData.start, alignmentData.chr);
|
|
37
24
|
}
|
|
38
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAInC,MAAM,UAAU,uBAAuB,CACrC,OAAgB,EAChB,MAAqB,EACrB,OAAe,EACf,cAAmC,EACnC,gBAAkC;IAElC,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAG1C,CAAA;IACD,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAInC,MAAM,UAAU,uBAAuB,CACrC,OAAgB,EAChB,MAAqB,EACrB,OAAe,EACf,cAAmC,EACnC,gBAAkC;IAElC,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAG1C,CAAA;IACD,MAAM,YAAY,GAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,WAAW,EAAE,CAAA;IAEjE,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAA;QAC3C,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAA;QAEzE,UAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACrE,aAAa,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACxE,gBAAgB,CACd,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,GAAG,EACH,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;QACD,UAAU,CACR,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACN,MAAM,CACP,CAAA;QACD,gBAAgB,CACd,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,OAAO,EACP,GAAG,EACH,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { measureText } from '@jbrowse/core/util';
|
|
2
|
-
import { fillRect
|
|
2
|
+
import { fillRect } from '../util';
|
|
3
3
|
import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
|
|
4
4
|
import { CHAR_SIZE_WIDTH, HIGH_BP_PER_PX_THRESHOLD, HIGH_ZOOM_THRESHOLD, INSERTION_BORDER_HEIGHT, INSERTION_BORDER_WIDTH, INSERTION_LINE_WIDTH, INSERTION_PADDING, LARGE_INSERTION_THRESHOLD, MIN_ROW_HEIGHT_FOR_BORDERS, } from './types';
|
|
5
5
|
export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerPx, sampleId, alignmentStart, chr) {
|
|
6
|
-
const { ctx, scale, h, canvasWidth, rowHeight } = context;
|
|
7
|
-
const { charHeight } = getCharWidthHeight();
|
|
6
|
+
const { ctx, scale, h, canvasWidth, rowHeight, charHeight } = context;
|
|
8
7
|
for (let i = 0, genomicOffset = 0, seqLength = alignment.length; i < seqLength; i++) {
|
|
9
8
|
let insertionSequence = '';
|
|
10
9
|
while (seq[i] === '-') {
|
|
@@ -50,18 +49,20 @@ export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerP
|
|
|
50
49
|
actualXPos = xPos;
|
|
51
50
|
actualWidth = INSERTION_LINE_WIDTH;
|
|
52
51
|
fillRect(ctx, actualXPos, rowTop, actualWidth, h, canvasWidth, 'purple');
|
|
52
|
+
// Always use a wider hit box for spatial index, even if visual is 1px
|
|
53
|
+
const hitBoxPadding = 2;
|
|
54
|
+
actualXPos = xPos - hitBoxPadding;
|
|
55
|
+
actualWidth = INSERTION_LINE_WIDTH + 2 * hitBoxPadding;
|
|
53
56
|
if (bpPerPx < HIGH_ZOOM_THRESHOLD &&
|
|
54
57
|
rowHeight > MIN_ROW_HEIGHT_FOR_BORDERS) {
|
|
55
58
|
// Add horizontal borders for visibility at high zoom
|
|
56
|
-
// Note: borders extend the effective clickable area
|
|
57
|
-
actualXPos = xPos - INSERTION_BORDER_WIDTH;
|
|
58
|
-
actualWidth = INSERTION_BORDER_HEIGHT;
|
|
59
59
|
fillRect(ctx, xPos - INSERTION_BORDER_WIDTH, rowTop, INSERTION_BORDER_HEIGHT, INSERTION_LINE_WIDTH, canvasWidth);
|
|
60
60
|
fillRect(ctx, xPos - INSERTION_BORDER_WIDTH, rowTop + h - INSERTION_LINE_WIDTH, INSERTION_BORDER_HEIGHT, INSERTION_LINE_WIDTH, canvasWidth);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
// Add insertion to spatial index with actual rendered dimensions
|
|
64
64
|
// Insertions always bypass distance filter
|
|
65
|
+
const isLargeInsertion = insertionSequence.length > LARGE_INSERTION_THRESHOLD;
|
|
65
66
|
if (shouldAddToSpatialIndex(actualXPos, context, true)) {
|
|
66
67
|
addToSpatialIndex(context, actualXPos, rowTop, actualXPos + actualWidth, rowTop + context.h, {
|
|
67
68
|
pos: genomicOffset + alignmentStart,
|
|
@@ -69,6 +70,7 @@ export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerP
|
|
|
69
70
|
base: insertionSequence,
|
|
70
71
|
sampleId,
|
|
71
72
|
isInsertion: true,
|
|
73
|
+
isLargeInsertion,
|
|
72
74
|
});
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertions.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/insertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"insertions.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/insertions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { RenderingContext } from './types';
|
|
2
|
-
export declare function renderMatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number
|
|
2
|
+
export declare function renderMatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number): void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { fillRect } from '../util';
|
|
2
|
-
import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
|
|
3
2
|
import { GAP_STROKE_OFFSET } from './types';
|
|
4
|
-
export function renderMatches(context, alignment, seq, leftPx, rowTop
|
|
3
|
+
export function renderMatches(context, alignment, seq, leftPx, rowTop) {
|
|
5
4
|
if (context.showAllLetters) {
|
|
6
5
|
return;
|
|
7
6
|
}
|
|
@@ -12,20 +11,9 @@ export function renderMatches(context, alignment, seq, leftPx, rowTop, sampleId,
|
|
|
12
11
|
if (seq[i] !== '-') {
|
|
13
12
|
// Only process non-gap positions in reference
|
|
14
13
|
const currentChar = alignment[i];
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
currentChar !== '-' &&
|
|
18
|
-
currentChar !== ' ') {
|
|
14
|
+
if (seq[i] === currentChar && currentChar !== ' ') {
|
|
15
|
+
const xPos = leftPx + scale * genomicOffset;
|
|
19
16
|
fillRect(ctx, xPos, rowTop, scale + GAP_STROKE_OFFSET, h, canvasWidth);
|
|
20
|
-
// Add to spatial index if distance filter allows
|
|
21
|
-
if (shouldAddToSpatialIndex(xPos, context)) {
|
|
22
|
-
addToSpatialIndex(context, xPos, rowTop, xPos + context.scale + GAP_STROKE_OFFSET, rowTop + context.h, {
|
|
23
|
-
pos: genomicOffset + alignmentStart,
|
|
24
|
-
chr,
|
|
25
|
-
base: currentChar || '',
|
|
26
|
-
sampleId,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
17
|
}
|
|
30
18
|
genomicOffset++;
|
|
31
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/matches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/matches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc;IAEd,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;IAE3B,sDAAsD;IACtD,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8CAA8C;YAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAChC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;gBAC3C,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,iBAAiB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;YACxE,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -8,8 +8,14 @@ export function createRenderedBaseCoords(xPos, rowTop, context) {
|
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
export function shouldAddToSpatialIndex(xPos, context, bypassDistanceFilter = false) {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
if (bypassDistanceFilter) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
// Zoom-aware distance threshold: scale threshold based on zoom level
|
|
15
|
+
// At high zoom (small bpPerPx), use smaller threshold for more precision
|
|
16
|
+
// At low zoom (large bpPerPx), use larger threshold to reduce index size
|
|
17
|
+
return (Math.abs(xPos - context.lastInsertedX) >
|
|
18
|
+
MIN_X_DISTANCE * Math.max(1, context.bpPerPx));
|
|
13
19
|
}
|
|
14
20
|
export function addToSpatialIndex(context, minX, minY, maxX, maxY, renderedBase) {
|
|
15
21
|
context.spatialIndex.push(renderedBase);
|