@jbrowse/bandage-core 8.1.0 → 9.0.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 (45) hide show
  1. package/dist/chunks/{chunk-MP7LXLWV.js → chunk-3C5UXR2U.js} +1 -1
  2. package/dist/chunks/{chunk-T4SQ5QGM.js → chunk-AMS3MAFP.js} +1 -1
  3. package/dist/chunks/{chunk-DRA7733Q.js → chunk-BPRXQ2SS.js} +8 -3
  4. package/dist/chunks/{chunk-TEDQJPMI.js → chunk-CWFNEKST.js} +22 -7
  5. package/dist/chunks/chunk-INJ2UVOT.js +370 -0
  6. package/dist/chunks/{chunk-KCRL5JB2.js → chunk-LLP3FXPM.js} +31 -10
  7. package/dist/chunks/{chunk-SZNZ2T6D.js → chunk-MAUEPAMG.js} +37 -9
  8. package/dist/chunks/{chunk-V3MD3IZB.js → chunk-MIW3HYPE.js} +13 -4
  9. package/dist/chunks/{chunk-DYYIHN3P.js → chunk-TLQ7F2ZT.js} +4 -4
  10. package/dist/chunks/{chunk-O2ANJQVH.js → chunk-WDTXW7T2.js} +1 -1
  11. package/dist/chunks/{chunk-OWFPAIJI.js → chunk-WEDZ76AK.js} +1 -1
  12. package/dist/chunks/{chunk-3PYY7OIP.js → chunk-WNUZP3WQ.js} +3 -3
  13. package/dist/chunks/{chunk-733L2TS6.js → chunk-XXT2JCAC.js} +10 -7
  14. package/dist/chunks/{chunk-GQ2AOHU4.js → chunk-YOYLCLIG.js} +7 -29
  15. package/dist/cli/figure.js +9 -9
  16. package/dist/figure.js +6 -6
  17. package/dist/index.js +19 -17
  18. package/dist/layout/tubeMapLayout.js +12 -6
  19. package/dist/layout/walkRowDraw.js +1 -1
  20. package/dist/layout/walkRowLayout.js +2 -2
  21. package/dist/layout/walkRows.js +1 -1
  22. package/dist/layout/walkStrip.js +2 -2
  23. package/dist/layoutModes.js +5 -5
  24. package/dist/tubeMap/axis.js +1 -1
  25. package/dist/tubeMap/coarsen.js +11 -23
  26. package/dist/tubeMap/connectors.js +1 -4
  27. package/dist/tubeMap/deviations.js +15 -19
  28. package/dist/tubeMap/draw.js +9 -5
  29. package/dist/tubeMap/genes.js +2 -2
  30. package/dist/tubeMap/mismatches.js +1 -1
  31. package/dist/tubeMap/reads.js +1 -1
  32. package/dist/types/index.d.ts +5 -5
  33. package/dist/types/layout/tubeMapLayout.d.ts +15 -2
  34. package/dist/types/layout/walkRowDraw.d.ts +1 -1
  35. package/dist/types/layout/walkRows.d.ts +5 -0
  36. package/dist/types/layoutModes.d.ts +5 -5
  37. package/dist/types/tubeMap/axis.d.ts +6 -3
  38. package/dist/types/tubeMap/connectors.d.ts +2 -11
  39. package/dist/types/tubeMap/deviations.d.ts +2 -3
  40. package/dist/types/tubeMap/draw.d.ts +4 -1
  41. package/dist/types/tubeMap/mismatches.d.ts +1 -1
  42. package/dist/types/version.d.ts +1 -1
  43. package/dist/version.js +1 -1
  44. package/package.json +1 -1
  45. package/dist/chunks/chunk-W2I4DOL4.js +0 -230
@@ -8,12 +8,12 @@ import {
8
8
  stripGeneGaps,
9
9
  walkStripFrame,
10
10
  walkStripLabelsTree
11
- } from "./chunk-O2ANJQVH.js";
11
+ } from "./chunk-WDTXW7T2.js";
12
12
  import {
13
13
  walkRowsKey,
14
14
  walkRowsKeyTree,
15
15
  walkRowsTree
16
- } from "./chunk-V3MD3IZB.js";
16
+ } from "./chunk-MIW3HYPE.js";
17
17
  import {
18
18
  Canvas2DRenderer
19
19
  } from "./chunk-2WNBVB55.js";
@@ -42,14 +42,14 @@ import {
42
42
  } from "./chunk-HBEKUQO4.js";
43
43
  import {
44
44
  version
45
- } from "./chunk-T4SQ5QGM.js";
45
+ } from "./chunk-AMS3MAFP.js";
46
46
  import {
47
47
  axisScaleOf
48
48
  } from "./chunk-TL4B342F.js";
49
49
  import {
50
50
  walkRowLabels,
51
51
  walkRowsExtent
52
- } from "./chunk-MP7LXLWV.js";
52
+ } from "./chunk-3C5UXR2U.js";
53
53
  import {
54
54
  nodeInk
55
55
  } from "./chunk-PBENCR5L.js";
@@ -2,7 +2,7 @@ import {
2
2
  alongRow,
3
3
  boxesGenes,
4
4
  rowPitch
5
- } from "./chunk-V3MD3IZB.js";
5
+ } from "./chunk-MIW3HYPE.js";
6
6
  import {
7
7
  LABEL_CHAR_PX
8
8
  } from "./chunk-AB35TJST.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  tubeSpan
3
- } from "./chunk-DRA7733Q.js";
3
+ } from "./chunk-BPRXQ2SS.js";
4
4
 
5
5
  // src/tubeMap/genes.ts
6
6
  function tubeMapGenes(byRefName, genes) {
@@ -1,8 +1,9 @@
1
1
  import {
2
+ hasTubeMapBackbone,
2
3
  hasTubeMapPaths,
3
4
  tubeMapLayout,
4
5
  tubeMapReferenceLayout
5
- } from "./chunk-W2I4DOL4.js";
6
+ } from "./chunk-INJ2UVOT.js";
6
7
  import {
7
8
  sampleRowLayout
8
9
  } from "./chunk-LOEA5IHZ.js";
@@ -14,7 +15,7 @@ import {
14
15
  } from "./chunk-HNQPEMYE.js";
15
16
  import {
16
17
  walkRowLayout
17
- } from "./chunk-MP7LXLWV.js";
18
+ } from "./chunk-3C5UXR2U.js";
18
19
  import {
19
20
  isBackbone,
20
21
  isOffReference
@@ -24,7 +25,6 @@ import {
24
25
  var FORCE_LAYOUT_LABEL = "Force-directed layout";
25
26
  var hasBackbone = (graph) => graph.nodes.some(isBackbone);
26
27
  var hasWalks = (graph) => hasBackbone(graph) && (graph.paths?.length ?? 0) > 1;
27
- var hasTubeMapBackbone = (graph) => hasBackbone(graph) && hasTubeMapPaths(graph);
28
28
  var hasAlleles = (graph) => hasBackbone(graph) && graph.nodes.some(isOffReference);
29
29
  var LAYOUT_MODES = [
30
30
  {
@@ -3,16 +3,13 @@ import { forward, getXCoordinateOfBaseWithinNode } from "@jbrowse/tubemap-core";
3
3
  function readMismatches(read, layout) {
4
4
  const marks = [];
5
5
  const entries = read.sequenceNew ?? [];
6
+ const visits = read.path.filter((segment) => segment.node !== null);
6
7
  entries.forEach((entry, i) => {
7
8
  const nodeIndex = layout.nodeMap.get(forward(entry.nodeName));
8
9
  const node = nodeIndex === void 0 ? void 0 : layout.nodes[nodeIndex];
9
- let pathIndex = i;
10
- while (pathIndex < read.path.length && read.path[pathIndex].node !== nodeIndex) {
11
- pathIndex += 1;
12
- }
13
- const y = read.path[pathIndex]?.y;
10
+ const y = visits[i]?.y;
14
11
  if (node && y !== void 0) {
15
- const base = { readId: read.id, y, height: read.width, nodeY: node.y };
12
+ const base = { readId: read.id, y, height: read.width };
16
13
  const at = (pos) => getXCoordinateOfBaseWithinNode(node, pos);
17
14
  for (const mm of entry.mismatches) {
18
15
  const x0 = at(mm.pos);
@@ -29,7 +26,13 @@ function readMismatches(read, layout) {
29
26
  } else if (mm.type === "deletion" && mm.length !== void 0) {
30
27
  const x1 = at(mm.pos + mm.length);
31
28
  if (x1 !== null) {
32
- marks.push({ ...base, kind: "deletion", x0, x1 });
29
+ marks.push({
30
+ ...base,
31
+ kind: "deletion",
32
+ x0,
33
+ x1,
34
+ length: mm.length
35
+ });
33
36
  }
34
37
  } else if (mm.type === "substitution" && mm.seq !== void 0) {
35
38
  const x1 = at(mm.pos + mm.seq.length);
@@ -1,35 +1,14 @@
1
- import {
2
- isBackbone
3
- } from "./chunk-FYQWPEEY.js";
4
-
5
1
  // src/tubeMap/connectors.ts
6
- function referenceNodes(graph, layout) {
7
- const nodeById = new Map(graph.nodes.map((n) => [n.id, n]));
8
- const out = [];
9
- layout.nodes.forEach((node) => {
10
- const graphNode = nodeById.get(node.name);
11
- if (node.order >= 0 && graphNode && isBackbone(graphNode)) {
12
- out.push({
13
- node: node.name,
14
- bp0: graphNode.stable.start,
15
- bp1: graphNode.stable.start + node.sequenceLength,
16
- x0: node.x,
17
- x1: node.x + node.pixelWidth
18
- });
19
- }
20
- });
21
- return out;
22
- }
23
- function tubeMapConnectors(nodes, bpToScreen, tubeToScreen, width) {
2
+ function tubeMapConnectors(boxes, bpToScreen, tubeToScreen, width) {
24
3
  const out = [];
25
- for (const n of nodes) {
26
- const bottom0 = tubeToScreen(n.x0);
27
- const bottom1 = tubeToScreen(n.x1);
4
+ for (const box of boxes) {
5
+ const bottom0 = tubeToScreen(box.x0);
6
+ const bottom1 = tubeToScreen(box.x1);
28
7
  if (bottom1 >= 0 && bottom0 <= width) {
29
8
  out.push({
30
- node: n.node,
31
- top0: bpToScreen(n.bp0),
32
- top1: bpToScreen(n.bp1),
9
+ node: box.name,
10
+ top0: bpToScreen(box.bp0),
11
+ top1: bpToScreen(box.bp1),
33
12
  bottom0,
34
13
  bottom1
35
14
  });
@@ -105,7 +84,6 @@ function drawTubeMapConnectors(ctx, connectors, bottom, {
105
84
  }
106
85
 
107
86
  export {
108
- referenceNodes,
109
87
  tubeMapConnectors,
110
88
  connectorAt,
111
89
  drawTubeMapConnectors
@@ -7,9 +7,9 @@ import {
7
7
  import {
8
8
  LAYOUT_MODES,
9
9
  layoutModeByValue
10
- } from "../chunks/chunk-3PYY7OIP.js";
11
- import "../chunks/chunk-W2I4DOL4.js";
12
- import "../chunks/chunk-TEDQJPMI.js";
10
+ } from "../chunks/chunk-WNUZP3WQ.js";
11
+ import "../chunks/chunk-INJ2UVOT.js";
12
+ import "../chunks/chunk-CWFNEKST.js";
13
13
  import "../chunks/chunk-LOEA5IHZ.js";
14
14
  import "../chunks/chunk-L3O7AWLI.js";
15
15
  import "../chunks/chunk-TZFWUT2C.js";
@@ -35,14 +35,14 @@ import "../chunks/chunk-LYJ4US66.js";
35
35
  import "../chunks/chunk-7XHHVYG7.js";
36
36
  import {
37
37
  figureSvg
38
- } from "../chunks/chunk-DYYIHN3P.js";
38
+ } from "../chunks/chunk-TLQ7F2ZT.js";
39
39
  import "../chunks/chunk-LOCJN3BZ.js";
40
40
  import "../chunks/chunk-47DYCZOK.js";
41
- import "../chunks/chunk-O2ANJQVH.js";
41
+ import "../chunks/chunk-WDTXW7T2.js";
42
42
  import {
43
43
  genesOnRow,
44
44
  placeRowGenes
45
- } from "../chunks/chunk-V3MD3IZB.js";
45
+ } from "../chunks/chunk-MIW3HYPE.js";
46
46
  import "../chunks/chunk-2WNBVB55.js";
47
47
  import "../chunks/chunk-4BYTEJGW.js";
48
48
  import "../chunks/chunk-3S3YVOJ7.js";
@@ -53,13 +53,13 @@ import "../chunks/chunk-2LQ5BWT7.js";
53
53
  import "../chunks/chunk-6ZNQJ5ZD.js";
54
54
  import "../chunks/chunk-HBEKUQO4.js";
55
55
  import "../chunks/chunk-G2FD7S3C.js";
56
- import "../chunks/chunk-T4SQ5QGM.js";
56
+ import "../chunks/chunk-AMS3MAFP.js";
57
57
  import "../chunks/chunk-TL4B342F.js";
58
- import "../chunks/chunk-MP7LXLWV.js";
58
+ import "../chunks/chunk-3C5UXR2U.js";
59
59
  import {
60
60
  filterSamples,
61
61
  walkRows
62
- } from "../chunks/chunk-SZNZ2T6D.js";
62
+ } from "../chunks/chunk-MAUEPAMG.js";
63
63
  import "../chunks/chunk-PBENCR5L.js";
64
64
  import "../chunks/chunk-7GBL7SJY.js";
65
65
  import {
package/dist/figure.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  figureSvg
3
- } from "./chunks/chunk-DYYIHN3P.js";
3
+ } from "./chunks/chunk-TLQ7F2ZT.js";
4
4
  import "./chunks/chunk-LOCJN3BZ.js";
5
5
  import "./chunks/chunk-47DYCZOK.js";
6
- import "./chunks/chunk-O2ANJQVH.js";
7
- import "./chunks/chunk-V3MD3IZB.js";
6
+ import "./chunks/chunk-WDTXW7T2.js";
7
+ import "./chunks/chunk-MIW3HYPE.js";
8
8
  import "./chunks/chunk-2WNBVB55.js";
9
9
  import "./chunks/chunk-4BYTEJGW.js";
10
10
  import "./chunks/chunk-3S3YVOJ7.js";
@@ -15,10 +15,10 @@ import "./chunks/chunk-2LQ5BWT7.js";
15
15
  import "./chunks/chunk-6ZNQJ5ZD.js";
16
16
  import "./chunks/chunk-HBEKUQO4.js";
17
17
  import "./chunks/chunk-G2FD7S3C.js";
18
- import "./chunks/chunk-T4SQ5QGM.js";
18
+ import "./chunks/chunk-AMS3MAFP.js";
19
19
  import "./chunks/chunk-TL4B342F.js";
20
- import "./chunks/chunk-MP7LXLWV.js";
21
- import "./chunks/chunk-SZNZ2T6D.js";
20
+ import "./chunks/chunk-3C5UXR2U.js";
21
+ import "./chunks/chunk-MAUEPAMG.js";
22
22
  import "./chunks/chunk-PBENCR5L.js";
23
23
  import "./chunks/chunk-7GBL7SJY.js";
24
24
  import "./chunks/chunk-RAKOB6IV.js";
package/dist/index.js CHANGED
@@ -3,8 +3,10 @@ import {
3
3
  } from "./chunks/chunk-TDQLINVI.js";
4
4
  import {
5
5
  drawTubeMap,
6
- tubeMapPicture
7
- } from "./chunks/chunk-KCRL5JB2.js";
6
+ tubeMapMismatchAt,
7
+ tubeMapPicture,
8
+ tubeMapTrackAt
9
+ } from "./chunks/chunk-LLP3FXPM.js";
8
10
  import {
9
11
  tubeMapFrame,
10
12
  tubeMapNodeAt
@@ -12,8 +14,8 @@ import {
12
14
  import {
13
15
  drawTubeMapGenes,
14
16
  tubeMapGenes
15
- } from "./chunks/chunk-OWFPAIJI.js";
16
- import "./chunks/chunk-733L2TS6.js";
17
+ } from "./chunks/chunk-WEDZ76AK.js";
18
+ import "./chunks/chunk-XXT2JCAC.js";
17
19
  import {
18
20
  tubeMapNodeColors
19
21
  } from "./chunks/chunk-FFFQNQUI.js";
@@ -26,13 +28,12 @@ import {
26
28
  referenceBoxes,
27
29
  rulerBoxes,
28
30
  tubeX
29
- } from "./chunks/chunk-DRA7733Q.js";
31
+ } from "./chunks/chunk-BPRXQ2SS.js";
30
32
  import {
31
33
  connectorAt,
32
34
  drawTubeMapConnectors,
33
- referenceNodes,
34
35
  tubeMapConnectors
35
- } from "./chunks/chunk-GQ2AOHU4.js";
36
+ } from "./chunks/chunk-YOYLCLIG.js";
36
37
  import {
37
38
  createForceLayoutCache
38
39
  } from "./chunks/chunk-SKKYLBRA.js";
@@ -69,9 +70,9 @@ import {
69
70
  LAYOUT_MODES,
70
71
  layoutModeByValue,
71
72
  modeUsesLayoutEngine
72
- } from "./chunks/chunk-3PYY7OIP.js";
73
- import "./chunks/chunk-W2I4DOL4.js";
74
- import "./chunks/chunk-TEDQJPMI.js";
73
+ } from "./chunks/chunk-WNUZP3WQ.js";
74
+ import "./chunks/chunk-INJ2UVOT.js";
75
+ import "./chunks/chunk-CWFNEKST.js";
75
76
  import "./chunks/chunk-LOEA5IHZ.js";
76
77
  import "./chunks/chunk-L3O7AWLI.js";
77
78
  import "./chunks/chunk-TZFWUT2C.js";
@@ -112,7 +113,7 @@ import {
112
113
  } from "./chunks/chunk-7XHHVYG7.js";
113
114
  import {
114
115
  figureSvg
115
- } from "./chunks/chunk-DYYIHN3P.js";
116
+ } from "./chunks/chunk-TLQ7F2ZT.js";
116
117
  import {
117
118
  layoutGeometryInputs
118
119
  } from "./chunks/chunk-LOCJN3BZ.js";
@@ -130,7 +131,7 @@ import {
130
131
  walkStripApplies,
131
132
  walkStripFrame,
132
133
  walkStripLabelsTree
133
- } from "./chunks/chunk-O2ANJQVH.js";
134
+ } from "./chunks/chunk-WDTXW7T2.js";
134
135
  import {
135
136
  BAR_PX,
136
137
  CALL_TICK,
@@ -157,7 +158,7 @@ import {
157
158
  walkRowsKey,
158
159
  walkRowsKeyTree,
159
160
  walkRowsTree
160
- } from "./chunks/chunk-V3MD3IZB.js";
161
+ } from "./chunks/chunk-MIW3HYPE.js";
161
162
  import {
162
163
  Canvas2DRenderer
163
164
  } from "./chunks/chunk-2WNBVB55.js";
@@ -204,7 +205,7 @@ import {
204
205
  import "./chunks/chunk-G2FD7S3C.js";
205
206
  import {
206
207
  version
207
- } from "./chunks/chunk-T4SQ5QGM.js";
208
+ } from "./chunks/chunk-AMS3MAFP.js";
208
209
  import {
209
210
  axisScaleOf,
210
211
  contains,
@@ -216,11 +217,11 @@ import {
216
217
  import {
217
218
  walkRowLabels,
218
219
  walkRowsExtent
219
- } from "./chunks/chunk-MP7LXLWV.js";
220
+ } from "./chunks/chunk-3C5UXR2U.js";
220
221
  import {
221
222
  filterSamples,
222
223
  walkRows
223
- } from "./chunks/chunk-SZNZ2T6D.js";
224
+ } from "./chunks/chunk-MAUEPAMG.js";
224
225
  import {
225
226
  NODE_WIDTHS,
226
227
  maxNodeWidthPx,
@@ -463,7 +464,6 @@ export {
463
464
  referenceBoxes,
464
465
  referenceKnots,
465
466
  referenceLabel,
466
- referenceNodes,
467
467
  referencePathQuery,
468
468
  referenceSamplesOf,
469
469
  referenceStripBlocks,
@@ -489,9 +489,11 @@ export {
489
489
  tubeMapConnectors,
490
490
  tubeMapFrame,
491
491
  tubeMapGenes,
492
+ tubeMapMismatchAt,
492
493
  tubeMapNodeAt,
493
494
  tubeMapNodeColors,
494
495
  tubeMapPicture,
496
+ tubeMapTrackAt,
495
497
  tubeX,
496
498
  unitTicks,
497
499
  version,
@@ -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
  };
@@ -26,7 +26,7 @@ import {
26
26
  walkRowsKey,
27
27
  walkRowsKeyTree,
28
28
  walkRowsTree
29
- } from "../chunks/chunk-V3MD3IZB.js";
29
+ } from "../chunks/chunk-MIW3HYPE.js";
30
30
  import "../chunks/chunk-6ZNQJ5ZD.js";
31
31
  import "../chunks/chunk-HBEKUQO4.js";
32
32
  import "../chunks/chunk-G2FD7S3C.js";
@@ -2,8 +2,8 @@ import {
2
2
  walkRowLabels,
3
3
  walkRowLayout,
4
4
  walkRowsExtent
5
- } from "../chunks/chunk-MP7LXLWV.js";
6
- import "../chunks/chunk-SZNZ2T6D.js";
5
+ } from "../chunks/chunk-3C5UXR2U.js";
6
+ import "../chunks/chunk-MAUEPAMG.js";
7
7
  import "../chunks/chunk-ST2IBUAN.js";
8
8
  import "../chunks/chunk-BPLIXMH7.js";
9
9
  import "../chunks/chunk-CPMHA4W5.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  filterSamples,
3
3
  walkRows
4
- } from "../chunks/chunk-SZNZ2T6D.js";
4
+ } from "../chunks/chunk-MAUEPAMG.js";
5
5
  import "../chunks/chunk-ST2IBUAN.js";
6
6
  import "../chunks/chunk-BPLIXMH7.js";
7
7
  import "../chunks/chunk-FYQWPEEY.js";
@@ -9,10 +9,10 @@ import {
9
9
  walkStripApplies,
10
10
  walkStripFrame,
11
11
  walkStripLabelsTree
12
- } from "../chunks/chunk-O2ANJQVH.js";
12
+ } from "../chunks/chunk-WDTXW7T2.js";
13
13
  import {
14
14
  LABELLED_ROW_PX
15
- } from "../chunks/chunk-V3MD3IZB.js";
15
+ } from "../chunks/chunk-MIW3HYPE.js";
16
16
  import "../chunks/chunk-6ZNQJ5ZD.js";
17
17
  import "../chunks/chunk-HBEKUQO4.js";
18
18
  import "../chunks/chunk-G2FD7S3C.js";
@@ -4,17 +4,17 @@ import {
4
4
  LAYOUT_MODE_VALUES,
5
5
  layoutModeByValue,
6
6
  modeUsesLayoutEngine
7
- } from "./chunks/chunk-3PYY7OIP.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";
13
13
  import "./chunks/chunk-C44YRP5F.js";
14
14
  import "./chunks/chunk-RVS2QCOX.js";
15
15
  import "./chunks/chunk-HNQPEMYE.js";
16
- import "./chunks/chunk-MP7LXLWV.js";
17
- import "./chunks/chunk-SZNZ2T6D.js";
16
+ import "./chunks/chunk-3C5UXR2U.js";
17
+ import "./chunks/chunk-MAUEPAMG.js";
18
18
  import "./chunks/chunk-7GBL7SJY.js";
19
19
  import "./chunks/chunk-3ZZSX5HN.js";
20
20
  import "./chunks/chunk-AB35TJST.js";
@@ -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,10 @@
1
1
  import {
2
2
  connectorAt,
3
3
  drawTubeMapConnectors,
4
- referenceNodes,
5
4
  tubeMapConnectors
6
- } from "../chunks/chunk-GQ2AOHU4.js";
7
- import "../chunks/chunk-FYQWPEEY.js";
5
+ } from "../chunks/chunk-YOYLCLIG.js";
8
6
  export {
9
7
  connectorAt,
10
8
  drawTubeMapConnectors,
11
- referenceNodes,
12
9
  tubeMapConnectors
13
10
  };
@@ -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
  }
@@ -4,10 +4,12 @@ import {
4
4
  mismatchesLegible,
5
5
  parsePath,
6
6
  trackColors,
7
- tubeMapPicture
8
- } from "../chunks/chunk-KCRL5JB2.js";
9
- import "../chunks/chunk-733L2TS6.js";
10
- import "../chunks/chunk-TEDQJPMI.js";
7
+ tubeMapMismatchAt,
8
+ tubeMapPicture,
9
+ tubeMapTrackAt
10
+ } from "../chunks/chunk-LLP3FXPM.js";
11
+ import "../chunks/chunk-XXT2JCAC.js";
12
+ import "../chunks/chunk-CWFNEKST.js";
11
13
  import "../chunks/chunk-C44YRP5F.js";
12
14
  export {
13
15
  drawTubeMap,
@@ -15,5 +17,7 @@ export {
15
17
  mismatchesLegible,
16
18
  parsePath,
17
19
  trackColors,
18
- tubeMapPicture
20
+ tubeMapMismatchAt,
21
+ tubeMapPicture,
22
+ tubeMapTrackAt
19
23
  };
@@ -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
  };