@jbrowse/bandage-core 8.2.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/bubbles/bubbleHalos.js +9 -5
  2. package/dist/bubbles/bubbleLine.js +3 -1
  3. package/dist/bubbles/bubblesFromGraph.js +8 -4
  4. package/dist/bubbles/classifyBubble.js +2 -2
  5. package/dist/bubbles/superbubbles.js +21 -0
  6. package/dist/chunks/{chunk-ISEI2FH3.js → chunk-2AWUWGAD.js} +10 -4
  7. package/dist/chunks/{chunk-GQ2AOHU4.js → chunk-2ZT7ZF7A.js} +13 -31
  8. package/dist/chunks/{chunk-DE4UFDUZ.js → chunk-3TGUKQWQ.js} +4 -4
  9. package/dist/chunks/{chunk-KCRL5JB2.js → chunk-75HR3756.js} +55 -17
  10. package/dist/chunks/{chunk-DRA7733Q.js → chunk-BPRXQ2SS.js} +8 -3
  11. package/dist/chunks/{chunk-TEDQJPMI.js → chunk-CWFNEKST.js} +22 -7
  12. package/dist/chunks/chunk-FUVI4WQP.js +273 -0
  13. package/dist/chunks/{chunk-MFKORG3F.js → chunk-FX4RDMDN.js} +5 -1
  14. package/dist/chunks/{chunk-4S47XRYA.js → chunk-GOZYKNQ2.js} +16 -11
  15. package/dist/chunks/chunk-INJ2UVOT.js +370 -0
  16. package/dist/chunks/{chunk-TL4B342F.js → chunk-MXDQGA7A.js} +1 -1
  17. package/dist/chunks/{chunk-SKKYLBRA.js → chunk-RRZMMYBG.js} +1 -1
  18. package/dist/chunks/{chunk-3FXPFVKJ.js → chunk-UID3QBWH.js} +1 -1
  19. package/dist/chunks/{chunk-2WNBVB55.js → chunk-WBCOREDZ.js} +121 -74
  20. package/dist/chunks/{chunk-OWFPAIJI.js → chunk-WEDZ76AK.js} +1 -1
  21. package/dist/chunks/{chunk-CF62U3QS.js → chunk-WNUZP3WQ.js} +2 -2
  22. package/dist/chunks/{chunk-WOO7QYKB.js → chunk-XKWD2RY3.js} +8 -2
  23. package/dist/chunks/{chunk-6VBDMZBZ.js → chunk-XLCTQHBE.js} +1 -1
  24. package/dist/chunks/{chunk-733L2TS6.js → chunk-XXT2JCAC.js} +10 -7
  25. package/dist/cli/figure.js +9 -9
  26. package/dist/figure.js +6 -6
  27. package/dist/figureSettings.js +3 -3
  28. package/dist/index.js +45 -33
  29. package/dist/layout/forceCache.js +3 -3
  30. package/dist/layout/tubeMapLayout.js +12 -6
  31. package/dist/layoutModes.js +3 -3
  32. package/dist/pipeline.js +2 -2
  33. package/dist/renderer/Canvas2DRenderer.js +1 -1
  34. package/dist/renderer/recordingCanvas.js +12 -1
  35. package/dist/tubeMap/axis.js +1 -1
  36. package/dist/tubeMap/coarsen.js +11 -23
  37. package/dist/tubeMap/connectors.js +3 -4
  38. package/dist/tubeMap/deviations.js +15 -19
  39. package/dist/tubeMap/draw.js +11 -5
  40. package/dist/tubeMap/genes.js +2 -2
  41. package/dist/tubeMap/mismatches.js +1 -1
  42. package/dist/tubeMap/reads.js +1 -1
  43. package/dist/types/bubbles/bubbleHalos.d.ts +2 -0
  44. package/dist/types/bubbles/bubbleLine.d.ts +3 -0
  45. package/dist/types/bubbles/bubblesFromGraph.d.ts +12 -2
  46. package/dist/types/bubbles/superbubbles.d.ts +5 -0
  47. package/dist/types/index.d.ts +5 -4
  48. package/dist/types/layout/tubeMapLayout.d.ts +15 -2
  49. package/dist/types/layoutModes.d.ts +5 -5
  50. package/dist/types/renderer/Canvas2DRenderer.d.ts +6 -3
  51. package/dist/types/tubeMap/axis.d.ts +6 -3
  52. package/dist/types/tubeMap/connectors.d.ts +3 -11
  53. package/dist/types/tubeMap/deviations.d.ts +2 -3
  54. package/dist/types/tubeMap/draw.d.ts +5 -1
  55. package/dist/types/tubeMap/mismatches.d.ts +1 -1
  56. package/dist/types/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/dist/viewport.js +3 -3
  59. package/package.json +1 -1
  60. package/dist/chunks/chunk-W2I4DOL4.js +0 -230
  61. package/dist/chunks/{chunk-5OIVTEF7.js → chunk-OOXIMURX.js} +3 -3
package/dist/index.js CHANGED
@@ -1,41 +1,48 @@
1
1
  import {
2
2
  wheelZoomFactor
3
3
  } from "./chunks/chunk-TDQLINVI.js";
4
+ import {
5
+ connectorAt,
6
+ drawLitConnector,
7
+ drawTubeMapConnectors,
8
+ tubeMapConnectors
9
+ } from "./chunks/chunk-2ZT7ZF7A.js";
4
10
  import {
5
11
  drawTubeMap,
6
- tubeMapPicture
7
- } from "./chunks/chunk-KCRL5JB2.js";
12
+ drawTubeMapHighlight,
13
+ tubeMapMismatchAt,
14
+ tubeMapPicture,
15
+ tubeMapTrackAt
16
+ } from "./chunks/chunk-75HR3756.js";
8
17
  import {
9
18
  tubeMapFrame,
10
19
  tubeMapNodeAt
11
20
  } from "./chunks/chunk-VZQ4FKLR.js";
21
+ import {
22
+ referenceKnots,
23
+ warpX
24
+ } from "./chunks/chunk-KQFOCDFY.js";
12
25
  import {
13
26
  drawTubeMapGenes,
14
27
  tubeMapGenes
15
- } from "./chunks/chunk-OWFPAIJI.js";
16
- import "./chunks/chunk-733L2TS6.js";
28
+ } from "./chunks/chunk-WEDZ76AK.js";
29
+ import "./chunks/chunk-XXT2JCAC.js";
17
30
  import {
18
31
  tubeMapNodeColors
19
32
  } from "./chunks/chunk-FFFQNQUI.js";
20
- import {
21
- referenceKnots,
22
- warpX
23
- } from "./chunks/chunk-KQFOCDFY.js";
24
33
  import {
25
34
  drawTubeMapRuler,
26
35
  referenceBoxes,
27
36
  rulerBoxes,
28
37
  tubeX
29
- } from "./chunks/chunk-DRA7733Q.js";
30
- import {
31
- connectorAt,
32
- drawTubeMapConnectors,
33
- referenceNodes,
34
- tubeMapConnectors
35
- } from "./chunks/chunk-GQ2AOHU4.js";
38
+ } from "./chunks/chunk-BPRXQ2SS.js";
36
39
  import {
37
40
  createForceLayoutCache
38
- } from "./chunks/chunk-SKKYLBRA.js";
41
+ } from "./chunks/chunk-RRZMMYBG.js";
42
+ import {
43
+ graphBubbles,
44
+ superbubblesFromGraph
45
+ } from "./chunks/chunk-FUVI4WQP.js";
39
46
  import {
40
47
  bubbleSubgraph
41
48
  } from "./chunks/chunk-VHW7FDHU.js";
@@ -47,17 +54,17 @@ import {
47
54
  } from "./chunks/chunk-BXEPA4KS.js";
48
55
  import {
49
56
  bubbleHalos
50
- } from "./chunks/chunk-ISEI2FH3.js";
57
+ } from "./chunks/chunk-2AWUWGAD.js";
51
58
  import {
52
59
  bubblesFromGraph
53
- } from "./chunks/chunk-4S47XRYA.js";
60
+ } from "./chunks/chunk-GOZYKNQ2.js";
54
61
  import {
55
62
  BUBBLE_KIND_COLORS,
56
63
  BUBBLE_KIND_NAMES,
57
64
  bubbleSegmentIds,
58
65
  classifyBubble
59
- } from "./chunks/chunk-WOO7QYKB.js";
60
- import "./chunks/chunk-MFKORG3F.js";
66
+ } from "./chunks/chunk-XKWD2RY3.js";
67
+ import "./chunks/chunk-FX4RDMDN.js";
61
68
  import {
62
69
  REFERENCE_STRIP_ZONE_PX,
63
70
  drawReferenceStrip,
@@ -69,9 +76,9 @@ import {
69
76
  LAYOUT_MODES,
70
77
  layoutModeByValue,
71
78
  modeUsesLayoutEngine
72
- } from "./chunks/chunk-CF62U3QS.js";
73
- import "./chunks/chunk-W2I4DOL4.js";
74
- import "./chunks/chunk-TEDQJPMI.js";
79
+ } from "./chunks/chunk-WNUZP3WQ.js";
80
+ import "./chunks/chunk-INJ2UVOT.js";
81
+ import "./chunks/chunk-CWFNEKST.js";
75
82
  import "./chunks/chunk-LOEA5IHZ.js";
76
83
  import "./chunks/chunk-L3O7AWLI.js";
77
84
  import "./chunks/chunk-TZFWUT2C.js";
@@ -112,7 +119,7 @@ import {
112
119
  } from "./chunks/chunk-7XHHVYG7.js";
113
120
  import {
114
121
  figureSvg
115
- } from "./chunks/chunk-DE4UFDUZ.js";
122
+ } from "./chunks/chunk-3TGUKQWQ.js";
116
123
  import {
117
124
  layoutGeometryInputs
118
125
  } from "./chunks/chunk-LOCJN3BZ.js";
@@ -160,7 +167,7 @@ import {
160
167
  } from "./chunks/chunk-MIW3HYPE.js";
161
168
  import {
162
169
  Canvas2DRenderer
163
- } from "./chunks/chunk-2WNBVB55.js";
170
+ } from "./chunks/chunk-WBCOREDZ.js";
164
171
  import {
165
172
  getDpr
166
173
  } from "./chunks/chunk-4BYTEJGW.js";
@@ -204,7 +211,7 @@ import {
204
211
  import "./chunks/chunk-G2FD7S3C.js";
205
212
  import {
206
213
  version
207
- } from "./chunks/chunk-3FXPFVKJ.js";
214
+ } from "./chunks/chunk-UID3QBWH.js";
208
215
  import {
209
216
  axisScaleOf,
210
217
  contains,
@@ -212,7 +219,7 @@ import {
212
219
  screenToLayout,
213
220
  viewportOf,
214
221
  zoomAbout
215
- } from "./chunks/chunk-TL4B342F.js";
222
+ } from "./chunks/chunk-MXDQGA7A.js";
216
223
  import {
217
224
  walkRowLabels,
218
225
  walkRowsExtent
@@ -283,7 +290,7 @@ import {
283
290
  import {
284
291
  FIGURE_DEFAULTS,
285
292
  figureSpecSettings
286
- } from "./chunks/chunk-6VBDMZBZ.js";
293
+ } from "./chunks/chunk-XLCTQHBE.js";
287
294
  import {
288
295
  ENGINE_DEFAULTS,
289
296
  FIT_PADDING,
@@ -296,16 +303,16 @@ import {
296
303
  forceLayout,
297
304
  layoutExtent,
298
305
  loadGraph
299
- } from "./chunks/chunk-5OIVTEF7.js";
306
+ } from "./chunks/chunk-OOXIMURX.js";
300
307
  import "./chunks/chunk-PUG7LXDF.js";
301
308
  import "./chunks/chunk-IGVV37VI.js";
302
- import "./chunks/chunk-OCMBULGN.js";
303
- import "./chunks/chunk-QYBZZI5H.js";
304
- import "./chunks/chunk-CDLPYR5O.js";
305
309
  import {
306
310
  graphFromTables,
307
311
  graphTablesGFA
308
312
  } from "./chunks/chunk-OA7RIMZ2.js";
313
+ import "./chunks/chunk-OCMBULGN.js";
314
+ import "./chunks/chunk-QYBZZI5H.js";
315
+ import "./chunks/chunk-CDLPYR5O.js";
309
316
  import "./chunks/chunk-ES2N6V56.js";
310
317
  import "./chunks/chunk-ST2IBUAN.js";
311
318
  import {
@@ -393,10 +400,12 @@ export {
393
400
  cutsWholeWalks,
394
401
  deletionDrawing,
395
402
  deletionEdges,
403
+ drawLitConnector,
396
404
  drawReferenceStrip,
397
405
  drawTubeMap,
398
406
  drawTubeMapConnectors,
399
407
  drawTubeMapGenes,
408
+ drawTubeMapHighlight,
400
409
  drawTubeMapRuler,
401
410
  drawingBounds,
402
411
  edgeHoverText,
@@ -429,6 +438,7 @@ export {
429
438
  genesOnRow,
430
439
  getDpr,
431
440
  graphBackbone,
441
+ graphBubbles,
432
442
  graphFromTables,
433
443
  graphTablesGFA,
434
444
  haplotypeWanted,
@@ -463,7 +473,6 @@ export {
463
473
  referenceBoxes,
464
474
  referenceKnots,
465
475
  referenceLabel,
466
- referenceNodes,
467
476
  referencePathQuery,
468
477
  referenceSamplesOf,
469
478
  referenceStripBlocks,
@@ -485,13 +494,16 @@ export {
485
494
  stripGeneGaps,
486
495
  stripMarks,
487
496
  stripRowAt,
497
+ superbubblesFromGraph,
488
498
  svgCanvas,
489
499
  tubeMapConnectors,
490
500
  tubeMapFrame,
491
501
  tubeMapGenes,
502
+ tubeMapMismatchAt,
492
503
  tubeMapNodeAt,
493
504
  tubeMapNodeColors,
494
505
  tubeMapPicture,
506
+ tubeMapTrackAt,
495
507
  tubeX,
496
508
  unitTicks,
497
509
  version,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createForceLayoutCache
3
- } from "../chunks/chunk-SKKYLBRA.js";
4
- import "../chunks/chunk-5OIVTEF7.js";
3
+ } from "../chunks/chunk-RRZMMYBG.js";
4
+ import "../chunks/chunk-OOXIMURX.js";
5
5
  import "../chunks/chunk-PUG7LXDF.js";
6
6
  import "../chunks/chunk-IGVV37VI.js";
7
+ import "../chunks/chunk-OA7RIMZ2.js";
7
8
  import "../chunks/chunk-OCMBULGN.js";
8
9
  import "../chunks/chunk-QYBZZI5H.js";
9
10
  import "../chunks/chunk-CDLPYR5O.js";
10
- import "../chunks/chunk-OA7RIMZ2.js";
11
11
  import "../chunks/chunk-ES2N6V56.js";
12
12
  import "../chunks/chunk-ST2IBUAN.js";
13
13
  import "../chunks/chunk-BPLIXMH7.js";
@@ -1,12 +1,15 @@
1
1
  import {
2
+ boxGraph,
3
+ hasTubeMapBackbone,
2
4
  hasTubeMapPaths,
5
+ mergedRuns,
6
+ pathSteps,
3
7
  tubeMapLayout,
4
8
  tubeMapReferenceLayout,
5
9
  tubeMapTracks,
6
- tubeWidth,
7
- visitStrands
8
- } from "../chunks/chunk-W2I4DOL4.js";
9
- import "../chunks/chunk-TEDQJPMI.js";
10
+ tubeWidth
11
+ } from "../chunks/chunk-INJ2UVOT.js";
12
+ import "../chunks/chunk-CWFNEKST.js";
10
13
  import "../chunks/chunk-C44YRP5F.js";
11
14
  import "../chunks/chunk-7GBL7SJY.js";
12
15
  import "../chunks/chunk-3ZZSX5HN.js";
@@ -19,10 +22,13 @@ import "../chunks/chunk-2CVHXFK7.js";
19
22
  import "../chunks/chunk-CPMHA4W5.js";
20
23
  import "../chunks/chunk-FYQWPEEY.js";
21
24
  export {
25
+ boxGraph,
26
+ hasTubeMapBackbone,
22
27
  hasTubeMapPaths,
28
+ mergedRuns,
29
+ pathSteps,
23
30
  tubeMapLayout,
24
31
  tubeMapReferenceLayout,
25
32
  tubeMapTracks,
26
- tubeWidth,
27
- visitStrands
33
+ tubeWidth
28
34
  };
@@ -4,9 +4,9 @@ import {
4
4
  LAYOUT_MODE_VALUES,
5
5
  layoutModeByValue,
6
6
  modeUsesLayoutEngine
7
- } from "./chunks/chunk-CF62U3QS.js";
8
- import "./chunks/chunk-W2I4DOL4.js";
9
- import "./chunks/chunk-TEDQJPMI.js";
7
+ } from "./chunks/chunk-WNUZP3WQ.js";
8
+ import "./chunks/chunk-INJ2UVOT.js";
9
+ import "./chunks/chunk-CWFNEKST.js";
10
10
  import "./chunks/chunk-LOEA5IHZ.js";
11
11
  import "./chunks/chunk-L3O7AWLI.js";
12
12
  import "./chunks/chunk-TZFWUT2C.js";
package/dist/pipeline.js CHANGED
@@ -11,13 +11,13 @@ import {
11
11
  forceLayout,
12
12
  layoutExtent,
13
13
  loadGraph
14
- } from "./chunks/chunk-5OIVTEF7.js";
14
+ } from "./chunks/chunk-OOXIMURX.js";
15
15
  import "./chunks/chunk-PUG7LXDF.js";
16
16
  import "./chunks/chunk-IGVV37VI.js";
17
+ import "./chunks/chunk-OA7RIMZ2.js";
17
18
  import "./chunks/chunk-OCMBULGN.js";
18
19
  import "./chunks/chunk-QYBZZI5H.js";
19
20
  import "./chunks/chunk-CDLPYR5O.js";
20
- import "./chunks/chunk-OA7RIMZ2.js";
21
21
  import "./chunks/chunk-ES2N6V56.js";
22
22
  import "./chunks/chunk-ST2IBUAN.js";
23
23
  import "./chunks/chunk-BPLIXMH7.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Canvas2DRenderer,
3
3
  arrowheadOutline
4
- } from "../chunks/chunk-2WNBVB55.js";
4
+ } from "../chunks/chunk-WBCOREDZ.js";
5
5
  import "../chunks/chunk-4BYTEJGW.js";
6
6
  import "../chunks/chunk-G2FD7S3C.js";
7
7
  export {
@@ -4,6 +4,7 @@ function recordingCanvas() {
4
4
  const fills = [];
5
5
  const lineWidths = [];
6
6
  const points = [];
7
+ let clears = 0;
7
8
  const at = (x, y) => {
8
9
  points.push({ x, y });
9
10
  };
@@ -27,6 +28,9 @@ function recordingCanvas() {
27
28
  },
28
29
  fillRect: () => {
29
30
  },
31
+ clearRect: () => {
32
+ clears++;
33
+ },
30
34
  stroke: () => {
31
35
  strokes.push(ctx.strokeStyle);
32
36
  lineWidths.push(ctx.lineWidth);
@@ -37,7 +41,14 @@ function recordingCanvas() {
37
41
  };
38
42
  const canvas = document.createElement("canvas");
39
43
  canvas.getContext = () => ctx;
40
- return { canvas, strokes, fills, lineWidths, points };
44
+ return {
45
+ canvas,
46
+ strokes,
47
+ fills,
48
+ lineWidths,
49
+ points,
50
+ clears: () => clears
51
+ };
41
52
  }
42
53
  export {
43
54
  recordingCanvas
@@ -6,7 +6,7 @@ import {
6
6
  rulerMarks,
7
7
  tubeSpan,
8
8
  tubeX
9
- } from "../chunks/chunk-DRA7733Q.js";
9
+ } from "../chunks/chunk-BPRXQ2SS.js";
10
10
  import "../chunks/chunk-3ZZSX5HN.js";
11
11
  import "../chunks/chunk-AB35TJST.js";
12
12
  import "../chunks/chunk-TAMCZHLW.js";
@@ -1,9 +1,7 @@
1
1
  import {
2
- visitStrands
3
- } from "../chunks/chunk-W2I4DOL4.js";
4
- import {
5
- canonicalStrand
6
- } from "../chunks/chunk-TEDQJPMI.js";
2
+ pathSteps
3
+ } from "../chunks/chunk-INJ2UVOT.js";
4
+ import "../chunks/chunk-CWFNEKST.js";
7
5
  import "../chunks/chunk-C44YRP5F.js";
8
6
  import "../chunks/chunk-7GBL7SJY.js";
9
7
  import "../chunks/chunk-3ZZSX5HN.js";
@@ -21,20 +19,11 @@ import {
21
19
  } from "../chunks/chunk-FYQWPEEY.js";
22
20
 
23
21
  // src/tubeMap/coarsen.ts
24
- function readWalk(path, nodeById, strands) {
25
- const visitName = pathOrigin(path.name).name;
26
- const seen = /* @__PURE__ */ new Map();
22
+ function readWalk(path, steps) {
27
23
  const runs = [];
28
24
  const open = () => ({ a: -Infinity, b: Infinity, detour: [], bp: 0 });
29
25
  const gaps = [open()];
30
- for (const id of path.nodeIds) {
31
- const node = nodeById.get(id);
32
- if (!node) {
33
- continue;
34
- }
35
- const k = seen.get(node.name) ?? 0;
36
- seen.set(node.name, k + 1);
37
- const strand = strands.get(`${visitName} ${node.name}`)?.[k] ?? canonicalStrand(node);
26
+ for (const { node, strand } of steps) {
38
27
  const gap = gaps.at(-1);
39
28
  const last = runs.at(-1);
40
29
  if (isBackbone(node)) {
@@ -119,13 +108,13 @@ function findCuts(walks, sigma, cuts) {
119
108
  }
120
109
  }
121
110
  }
111
+ const spans = walks.flatMap(({ runs, gaps }) => [
112
+ ...gaps.filter((g) => isSmall(g, sigma)).map((g) => [g.a, g.b]),
113
+ ...runs.filter((r) => r.inverted && r.end - r.start < sigma).map((r) => [r.start, r.end])
114
+ ]);
122
115
  for (let changed = true; changed; ) {
123
116
  changed = false;
124
117
  const sorted = [...cuts.keys()].sort((x, y) => x - y);
125
- const spans = walks.flatMap(({ runs, gaps }) => [
126
- ...gaps.filter((g) => isSmall(g, sigma)).map((g) => [g.a, g.b]),
127
- ...runs.filter((r) => r.inverted && r.end - r.start < sigma).map((r) => [r.start, r.end])
128
- ]);
129
118
  for (const [a, b] of spans) {
130
119
  if (strictlyInside(sorted, a, b)) {
131
120
  changed ||= !cuts.has(a) || !cuts.has(b);
@@ -179,9 +168,8 @@ function coarsenTubeMap(graph, sigma) {
179
168
  if (backbone.length === 0 || paths.length === 0) {
180
169
  return void 0;
181
170
  }
182
- const nodeById = new Map(graph.nodes.map((n) => [n.id, n]));
183
- const strands = visitStrands(graph);
184
- const walks = paths.map((p) => readWalk(p, nodeById, strands));
171
+ const stepsOf = pathSteps(graph);
172
+ const walks = paths.map((p, i) => readWalk(p, stepsOf[i]));
185
173
  const cuts = findCuts(walks, sigma, referenceGaps(backbone));
186
174
  const sortedCuts = [...cuts.keys()].sort((x, y) => x - y);
187
175
  const merged = mergeReference(backbone, cuts);
@@ -1,13 +1,12 @@
1
1
  import {
2
2
  connectorAt,
3
+ drawLitConnector,
3
4
  drawTubeMapConnectors,
4
- referenceNodes,
5
5
  tubeMapConnectors
6
- } from "../chunks/chunk-GQ2AOHU4.js";
7
- import "../chunks/chunk-FYQWPEEY.js";
6
+ } from "../chunks/chunk-2ZT7ZF7A.js";
8
7
  export {
9
8
  connectorAt,
9
+ drawLitConnector,
10
10
  drawTubeMapConnectors,
11
- referenceNodes,
12
11
  tubeMapConnectors
13
12
  };
@@ -1,20 +1,15 @@
1
1
  import {
2
- isBackbone
3
- } from "../chunks/chunk-FYQWPEEY.js";
2
+ referenceBoxes
3
+ } from "../chunks/chunk-BPRXQ2SS.js";
4
+ import "../chunks/chunk-3ZZSX5HN.js";
5
+ import "../chunks/chunk-AB35TJST.js";
6
+ import "../chunks/chunk-TAMCZHLW.js";
7
+ import "../chunks/chunk-N6FECAXP.js";
8
+ import "../chunks/chunk-2CVHXFK7.js";
9
+ import "../chunks/chunk-CPMHA4W5.js";
10
+ import "../chunks/chunk-FYQWPEEY.js";
4
11
 
5
12
  // src/tubeMap/deviations.ts
6
- function boxesOf(graph, layout) {
7
- const nodeById = new Map(graph.nodes.map((n) => [n.id, n]));
8
- const boxes = [];
9
- layout.nodes.forEach((node, index) => {
10
- const g = nodeById.get(node.name);
11
- if (node.order >= 0 && g && isBackbone(g)) {
12
- const bp0 = g.stable.start;
13
- boxes.push({ bp0, bp1: bp0 + node.sequenceLength, index, node });
14
- }
15
- });
16
- return boxes.sort((a, b) => a.bp0 - b.bp0);
17
- }
18
13
  function boxAt(boxes, bp, visited) {
19
14
  let lo = 0;
20
15
  let hi = boxes.length - 1;
@@ -30,8 +25,9 @@ function boxAt(boxes, bp, visited) {
30
25
  (box) => box && visited.has(box.index) && box.bp0 <= bp && bp <= box.bp1
31
26
  );
32
27
  }
33
- function deviationMarks(graph, layout, deviations) {
34
- const boxes = boxesOf(graph, layout);
28
+ function deviationMarks(drawing, deviations) {
29
+ const { layout } = drawing;
30
+ const boxes = [...referenceBoxes(drawing).values()].flat().sort((a, b) => a.bp0 - b.bp0);
35
31
  const marks = [];
36
32
  for (const track of layout.tracks) {
37
33
  const devs = track.name ? deviations.get(track.name) : void 0;
@@ -45,12 +41,12 @@ function deviationMarks(graph, layout, deviations) {
45
41
  for (const d of devs) {
46
42
  const box = boxAt(boxes, d.start, visited);
47
43
  if (box) {
48
- const { node, bp0, bp1 } = box;
49
- const at = (bp) => node.x + (Math.min(bp, bp1) - bp0) / (bp1 - bp0) * node.pixelWidth;
44
+ const { bp0, bp1, x0, x1, index } = box;
45
+ const at = (bp) => x0 + (Math.min(bp, bp1) - bp0) / (bp1 - bp0) * (x1 - x0);
50
46
  marks.push({
51
47
  x0: at(d.start),
52
48
  x1: at(d.end),
53
- y: visited.get(box.index),
49
+ y: visited.get(index),
54
50
  height: track.width
55
51
  });
56
52
  }
@@ -1,19 +1,25 @@
1
1
  import {
2
2
  drawTubeMap,
3
+ drawTubeMapHighlight,
3
4
  mismatchOnScreen,
4
5
  mismatchesLegible,
5
6
  parsePath,
6
7
  trackColors,
7
- tubeMapPicture
8
- } from "../chunks/chunk-KCRL5JB2.js";
9
- import "../chunks/chunk-733L2TS6.js";
10
- import "../chunks/chunk-TEDQJPMI.js";
8
+ tubeMapMismatchAt,
9
+ tubeMapPicture,
10
+ tubeMapTrackAt
11
+ } from "../chunks/chunk-75HR3756.js";
12
+ import "../chunks/chunk-XXT2JCAC.js";
13
+ import "../chunks/chunk-CWFNEKST.js";
11
14
  import "../chunks/chunk-C44YRP5F.js";
12
15
  export {
13
16
  drawTubeMap,
17
+ drawTubeMapHighlight,
14
18
  mismatchOnScreen,
15
19
  mismatchesLegible,
16
20
  parsePath,
17
21
  trackColors,
18
- tubeMapPicture
22
+ tubeMapMismatchAt,
23
+ tubeMapPicture,
24
+ tubeMapTrackAt
19
25
  };
@@ -3,8 +3,8 @@ import {
3
3
  drawTubeMapGenes,
4
4
  tubeMapGeneRows,
5
5
  tubeMapGenes
6
- } from "../chunks/chunk-OWFPAIJI.js";
7
- import "../chunks/chunk-DRA7733Q.js";
6
+ } from "../chunks/chunk-WEDZ76AK.js";
7
+ import "../chunks/chunk-BPRXQ2SS.js";
8
8
  import "../chunks/chunk-3ZZSX5HN.js";
9
9
  import "../chunks/chunk-AB35TJST.js";
10
10
  import "../chunks/chunk-TAMCZHLW.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  tubeMapMismatches
3
- } from "../chunks/chunk-733L2TS6.js";
3
+ } from "../chunks/chunk-XXT2JCAC.js";
4
4
  export {
5
5
  tubeMapMismatches
6
6
  };
@@ -5,7 +5,7 @@ import {
5
5
  readColor,
6
6
  stepName,
7
7
  tubeMapReads
8
- } from "../chunks/chunk-TEDQJPMI.js";
8
+ } from "../chunks/chunk-CWFNEKST.js";
9
9
  import "../chunks/chunk-C44YRP5F.js";
10
10
  export {
11
11
  FORWARD_READ_COLORS,
@@ -17,4 +17,6 @@ export interface RouteLabel {
17
17
  at: NodeSegment;
18
18
  text: string;
19
19
  }
20
+ export declare const WHOLE_FRACTION = 0.9;
21
+ export declare function coversGraph(members: number, nodes: number): boolean;
20
22
  export declare function bubbleHalos(graph: Graph, bubbles: MinigraphBubble[], positions: Record<string, NodeSegment[]>, walkLabel?: (name: string) => string, repeats?: readonly RepeatSpan[]): BubbleHalo[];
@@ -12,6 +12,8 @@ export interface MinigraphBubble {
12
12
  longestAllele: string | undefined;
13
13
  partial?: boolean;
14
14
  routes?: BubbleRoute[];
15
+ key?: string;
16
+ offReference?: true;
15
17
  }
16
18
  export interface BubbleRoute {
17
19
  steps: string[];
@@ -20,6 +22,7 @@ export interface BubbleRoute {
20
22
  }
21
23
  export declare function parseBubbleLine(line: string): MinigraphBubble;
22
24
  export declare function sameBubble(a: MinigraphBubble, b: MinigraphBubble): boolean;
25
+ export declare function bubbleKey(b: MinigraphBubble): string;
23
26
  export declare function bubbleLabel(bubble: MinigraphBubble): string;
24
27
  export declare const SATURATED_PATH_COUNT = 2147483647;
25
28
  export declare function bubbleDescription(bubble: MinigraphBubble): string;
@@ -1,3 +1,13 @@
1
- import type { MinigraphBubble } from './bubbleLine.js';
2
- import type { Graph } from '../types.js';
1
+ import type { BubbleRoute, MinigraphBubble } from './bubbleLine.js';
2
+ import type { Graph, GraphNode } from '../types.js';
3
+ export interface Routes {
4
+ min: number;
5
+ max: number;
6
+ n: number;
7
+ }
3
8
  export declare function bubblesFromGraph(graph: Graph): MinigraphBubble[];
9
+ export declare function walkIndexOf(graph: Graph): Map<string, number>[] | undefined;
10
+ export declare function walkRoutes(graph: Graph, byId: Map<string, GraphNode>, walkIndex: Map<string, number>[], startId: string, endId: string): (Routes & {
11
+ left: number;
12
+ routes: BubbleRoute[];
13
+ }) | undefined;
@@ -0,0 +1,5 @@
1
+ import type { MinigraphBubble } from './bubbleLine.js';
2
+ import type { Graph } from '../types.js';
3
+ export declare const MAX_SUPERBUBBLES = 50;
4
+ export declare function superbubblesFromGraph(graph: Graph, span?: MinigraphBubble): MinigraphBubble[];
5
+ export declare function graphBubbles(graph: Graph, span?: MinigraphBubble): MinigraphBubble[];
@@ -31,18 +31,18 @@ export type { AxisScale } from './util/geometry.js';
31
31
  export { wheelZoomFactor } from './util/wheelZoom.js';
32
32
  export { REFERENCE_STRIP_ZONE_PX, drawReferenceStrip, referenceStripBlocks, stripBlockAt, } from './referenceStrip.js';
33
33
  export type { StripBlock } from './referenceStrip.js';
34
- export { drawTubeMap, tubeMapPicture } from './tubeMap/draw.js';
34
+ export { drawTubeMap, drawTubeMapHighlight, tubeMapMismatchAt, tubeMapPicture, tubeMapTrackAt, } from './tubeMap/draw.js';
35
35
  export type { TubeMapFrame, TubeMapPicture } from './tubeMap/draw.js';
36
36
  export { tubeMapNodeColors } from './tubeMap/nodeColors.js';
37
37
  export { referenceKnots, warpX } from './tubeMap/warp.js';
38
38
  export { tubeMapFrame, tubeMapNodeAt } from './tubeMap/frame.js';
39
39
  export type { TubeMapTransform, TubeMapView } from './tubeMap/frame.js';
40
40
  export { drawTubeMapRuler, referenceBoxes, rulerBoxes, tubeX, } from './tubeMap/axis.js';
41
- export type { Box as TubeMapBox, ReferenceBoxes } from './tubeMap/axis.js';
41
+ export type { Box as TubeMapBox, ReferenceBox, ReferenceBoxes, } from './tubeMap/axis.js';
42
42
  export { drawTubeMapGenes, tubeMapGenes } from './tubeMap/genes.js';
43
43
  export type { TubeMapGene } from './tubeMap/genes.js';
44
- export { connectorAt, drawTubeMapConnectors, referenceNodes, tubeMapConnectors, } from './tubeMap/connectors.js';
45
- export type { Connector, ReferenceNode } from './tubeMap/connectors.js';
44
+ export { connectorAt, drawLitConnector, drawTubeMapConnectors, tubeMapConnectors, } from './tubeMap/connectors.js';
45
+ export type { Connector } from './tubeMap/connectors.js';
46
46
  export type { TubeMapColumn, TubeMapDrawing } from './layout/tubeMapLayout.js';
47
47
  export { deletionDrawing, deletionEdges } from './deletionEdges.js';
48
48
  export type { DeletionDrawing, DeletionEdge } from './deletionEdges.js';
@@ -62,6 +62,7 @@ export { WALK_FIELDS, WALK_SCHEMES, encodingStops, encodingSwatchCss, resolveEnc
62
62
  export type { WalkEncoding, WalkField, WalkLayer, WalkScheme, } from './walkEncoding.js';
63
63
  export { pathColorsLegible, pathLegend, walkLabelsOf } from './pathColors.js';
64
64
  export { bubblesFromGraph } from './bubbles/bubblesFromGraph.js';
65
+ export { graphBubbles, superbubblesFromGraph } from './bubbles/superbubbles.js';
65
66
  export { bubbleHalos } from './bubbles/bubbleHalos.js';
66
67
  export type { BubbleHalo } from './bubbles/bubbleHalos.js';
67
68
  export { BUBBLE_KIND_COLORS, BUBBLE_KIND_NAMES, bubbleSegmentIds, classifyBubble, } from './bubbles/classifyBubble.js';
@@ -1,5 +1,5 @@
1
1
  import type { Coarsened } from '../tubeMap/coarsen.js';
2
- import type { Graph, LayoutResult } from '../types.js';
2
+ import type { Graph, GraphNode, LayoutResult } from '../types.js';
3
3
  import type { InputTrack, TubeMapLayout } from '@jbrowse/tubemap-core';
4
4
  export interface TubeMapColumn {
5
5
  order: number;
@@ -14,10 +14,23 @@ export interface TubeMapDrawing {
14
14
  yOffset: number;
15
15
  columns?: TubeMapColumn[];
16
16
  coarse?: Coarsened;
17
+ graph: Graph;
18
+ members: Map<string, string[]>;
17
19
  }
18
- export declare function visitStrands(graph: Graph): Map<string, ("+" | "-")[]>;
20
+ export interface PathStep {
21
+ node: GraphNode;
22
+ strand: '+' | '-';
23
+ }
24
+ export declare function pathSteps(graph: Graph): PathStep[][];
19
25
  export declare function tubeMapTracks(graph: Graph): InputTrack[];
20
26
  export declare function hasTubeMapPaths(graph: Graph): boolean;
21
27
  export declare function tubeWidth(trackCount: number): number;
28
+ export interface MergedRuns {
29
+ members: Map<string, string[]>;
30
+ flipped: Set<string>;
31
+ }
32
+ export declare function mergedRuns(graph: Graph, layout: TubeMapLayout, walks: readonly InputTrack[]): MergedRuns;
33
+ export declare function boxGraph(graph: Graph, { members, flipped }: MergedRuns): Graph;
22
34
  export declare function tubeMapLayout(graph: Graph): LayoutResult | undefined;
35
+ export declare function hasTubeMapBackbone(graph: Graph): boolean;
23
36
  export declare function tubeMapReferenceLayout(graph: Graph): LayoutResult | undefined;