@jbrowse/bandage-core 9.6.0 → 9.8.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 (34) hide show
  1. package/dist/chunks/{chunk-CVYDR2OP.js → chunk-373Y3KUJ.js} +1 -1
  2. package/dist/chunks/{chunk-LFKMASER.js → chunk-3FVITQAJ.js} +1 -1
  3. package/dist/chunks/chunk-5QOMIEHX.js +81 -0
  4. package/dist/chunks/{chunk-INJ2UVOT.js → chunk-6N7H22SS.js} +6 -2
  5. package/dist/chunks/{chunk-XPT66H6H.js → chunk-AM3P3WWO.js} +1 -1
  6. package/dist/chunks/{chunk-BR25DGIJ.js → chunk-BOHK5BD3.js} +3 -3
  7. package/dist/chunks/{chunk-WVPC3JVY.js → chunk-CG77WIFD.js} +6 -6
  8. package/dist/chunks/{chunk-GFRPX6M2.js → chunk-EPREHMKU.js} +2 -2
  9. package/dist/chunks/{chunk-YSQMOOHY.js → chunk-JEF73V3A.js} +1 -1
  10. package/dist/chunks/{chunk-OXTR3BVF.js → chunk-QG5IVMRS.js} +1 -1
  11. package/dist/chunks/{chunk-UD5FOCI2.js → chunk-QMJXHYVQ.js} +1 -1
  12. package/dist/chunks/{chunk-M7SRZJ32.js → chunk-Z7UWHVOM.js} +1 -1
  13. package/dist/chunks/{chunk-A4MYLGKG.js → chunk-ZBWMTXTM.js} +1 -1
  14. package/dist/cli/figure.js +10 -10
  15. package/dist/figure.js +8 -8
  16. package/dist/index.js +26 -22
  17. package/dist/layout/tubeMapLayout.js +1 -1
  18. package/dist/layout/walkRowDraw.js +3 -3
  19. package/dist/layout/walkStrip.js +4 -4
  20. package/dist/layoutModes.js +2 -2
  21. package/dist/referenceRampCss.js +2 -2
  22. package/dist/referenceStrip.js +2 -2
  23. package/dist/renderer/GeometryBuilder.js +1 -1
  24. package/dist/tubeMap/bundle.js +19 -0
  25. package/dist/tubeMap/coarsen.js +1 -1
  26. package/dist/tubeMap/nodeColors.js +2 -2
  27. package/dist/types/index.d.ts +1 -0
  28. package/dist/types/tubeMap/bundle.d.ts +2 -0
  29. package/dist/types/types.d.ts +1 -0
  30. package/dist/types/version.d.ts +1 -1
  31. package/dist/version.js +1 -1
  32. package/dist/walkEncoding.js +2 -2
  33. package/dist/walkHighlight.js +3 -3
  34. package/package.json +2 -2
@@ -2,7 +2,7 @@ import {
2
2
  LIFT_BACKDROP_CSS,
3
3
  computeColorSchemeRange,
4
4
  getNodeColor
5
- } from "./chunk-BR25DGIJ.js";
5
+ } from "./chunk-BOHK5BD3.js";
6
6
  import {
7
7
  abgrToCssRgba
8
8
  } from "./chunk-G2FD7S3C.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  encodedColor,
3
3
  resolveEncoding
4
- } from "./chunk-XPT66H6H.js";
4
+ } from "./chunk-AM3P3WWO.js";
5
5
  import {
6
6
  pathOrigin
7
7
  } from "./chunk-ST2IBUAN.js";
@@ -0,0 +1,81 @@
1
+ import {
2
+ pathSteps
3
+ } from "./chunk-6N7H22SS.js";
4
+ import {
5
+ pathOrigin
6
+ } from "./chunk-ST2IBUAN.js";
7
+
8
+ // src/tubeMap/bundle.ts
9
+ function bundleRoutes(graph, groupOf = () => "", merge = true) {
10
+ const paths = graph.paths ?? [];
11
+ const steps = pathSteps(graph);
12
+ const routes = /* @__PURE__ */ new Map();
13
+ paths.forEach((path, i) => {
14
+ const walk = pathOrigin(path.name).name;
15
+ const route = steps[i].map((s) => `${s.node.id}${s.strand}`).join(",");
16
+ const pieces = routes.get(walk);
17
+ if (pieces) {
18
+ pieces.push(route);
19
+ } else {
20
+ routes.set(walk, [route]);
21
+ }
22
+ });
23
+ const routeRank = /* @__PURE__ */ new Map();
24
+ const bundles = /* @__PURE__ */ new Map();
25
+ for (const [walk, pieces] of routes) {
26
+ const route = walk === graph.referencePath ? `\0${walk}` : pieces.join("|");
27
+ const group = groupOf(walk);
28
+ const rank = routeRank.get(route) ?? routeRank.size;
29
+ routeRank.set(route, rank);
30
+ const key = `${route} ${group}`;
31
+ const bundle = bundles.get(key);
32
+ if (bundle) {
33
+ bundle.walks.push(walk);
34
+ } else {
35
+ bundles.set(key, { rank, group, walks: [walk] });
36
+ }
37
+ }
38
+ if (merge && bundles.size === routes.size) {
39
+ return graph;
40
+ }
41
+ const ordered = [...bundles.values()].sort(
42
+ (a, b) => a.rank - b.rank || a.group.localeCompare(b.group)
43
+ );
44
+ const recordsOf = /* @__PURE__ */ new Map();
45
+ for (const path of paths) {
46
+ const walk = pathOrigin(path.name).name;
47
+ const records = recordsOf.get(walk);
48
+ if (records) {
49
+ records.push(path);
50
+ } else {
51
+ recordsOf.set(walk, [path]);
52
+ }
53
+ }
54
+ if (!merge) {
55
+ return {
56
+ ...graph,
57
+ paths: ordered.flatMap(
58
+ ({ walks }) => walks.flatMap((walk) => recordsOf.get(walk))
59
+ )
60
+ };
61
+ }
62
+ const kept = ordered.flatMap(
63
+ ({ walks }) => recordsOf.get(walks[0]).map((path) => walks.length > 1 ? { ...path, members: walks } : path)
64
+ );
65
+ const keptWalks = new Set(ordered.map((b) => b.walks[0]));
66
+ return {
67
+ ...graph,
68
+ paths: kept,
69
+ anchorPaths: graph.anchorPaths?.filter((p) => keptWalks.has(p.name)),
70
+ pathVisits: graph.pathVisits ? new Map(
71
+ [...graph.pathVisits].map(([segment, visits]) => [
72
+ segment,
73
+ visits.filter((v) => keptWalks.has(v.path))
74
+ ])
75
+ ) : void 0
76
+ };
77
+ }
78
+
79
+ export {
80
+ bundleRoutes
81
+ };
@@ -59,7 +59,8 @@ function tubeMapTracks(graph) {
59
59
  name: path.name,
60
60
  sequence,
61
61
  sourceTrackID: 0,
62
- type: "haplotype"
62
+ type: "haplotype",
63
+ ...path.members ? { freq: path.members.length } : {}
63
64
  }
64
65
  ] : [];
65
66
  });
@@ -218,9 +219,12 @@ function runTubeMap(graph) {
218
219
  const reads = graph.reads ? tubeMapReads(graph, graph.reads, paths.length) : [];
219
220
  const tubeColor = reads.length > 0 ? pathGreyCssColor : pathCssColor;
220
221
  const pathColors = paths.map((_, i) => tubeColor(i, paths.length));
222
+ const bundled = paths.some((p) => p.members);
223
+ const walks = paths.reduce((n, p) => n + (p.members?.length ?? 1), 0);
221
224
  const layout = layoutTubeMap(tubeMapNodes(graph), tracks, reads, {
222
225
  nodeWidthOption: "compressed",
223
- trackWidth: tubeWidth(tracks.length)
226
+ trackWidth: tubeWidth(bundled ? walks : tracks.length),
227
+ ...bundled ? { freqWidth: "linear" } : {}
224
228
  });
225
229
  if (!layout) {
226
230
  return void 0;
@@ -2,7 +2,7 @@ import {
2
2
  REFERENCE_RAMP_ALT_COLOR,
3
3
  REFERENCE_RAMP_MAX_HUE,
4
4
  hslToRgb
5
- } from "./chunk-BR25DGIJ.js";
5
+ } from "./chunk-BOHK5BD3.js";
6
6
  import {
7
7
  packAbgr
8
8
  } from "./chunk-G2FD7S3C.js";
@@ -579,7 +579,7 @@ function buildGeometry(options) {
579
579
  };
580
580
  const edgeCurveStart = edgeCurves.length;
581
581
  const arrowStart = arrows.length;
582
- const laneWalks = highlight && onWalk && !ribbons ? highlight.walks : void 0;
582
+ const laneWalks = highlight?.walks.length && onWalk && !ribbons ? highlight.walks : void 0;
583
583
  if (laneWalks) {
584
584
  const fromNode = nodeById.get(edge.from);
585
585
  const width = fromNode ? nodeWidthPx(fromNode, contigThickness, nodeWidth, depthNorm) : contigThickness;
@@ -627,7 +627,7 @@ function buildGeometry(options) {
627
627
  buildSingleEdge(
628
628
  offset.x,
629
629
  offset.y,
630
- highlight && !highlight.names.has(edge.pathIds[pathIdx]) ? fadeAbgr(ribbonColor, FADED_ALPHA) : ribbonColor,
630
+ highlight && (highlight.walks.length ? !highlight.names.has(edge.pathIds[pathIdx]) : !onWalk) ? fadeAbgr(ribbonColor, FADED_ALPHA) : ribbonColor,
631
631
  pathIdx === arrowRibbon ? edgeColor : void 0
632
632
  );
633
633
  }
@@ -663,7 +663,7 @@ function buildGeometry(options) {
663
663
  const slots = nodePathSlots.get(nodeId);
664
664
  const slotWidth = width / pathCount;
665
665
  const drawable = segments.length >= 2;
666
- const lanes = highlight && !faded && !slots?.length ? highlight.walks : void 0;
666
+ const lanes = highlight?.walks.length && !faded && !slots?.length ? highlight.walks : void 0;
667
667
  if (drawable && lanes) {
668
668
  const laneWidth = Math.max(width / lanes.length, MIN_WALK_LANE_PX);
669
669
  const normals = pointNormalsOf(segments, yToX);
@@ -2,7 +2,7 @@ import {
2
2
  stripGeneGaps,
3
3
  walkStripFrame,
4
4
  walkStripLabelsTree
5
- } from "./chunk-UD5FOCI2.js";
5
+ } from "./chunk-QMJXHYVQ.js";
6
6
  import {
7
7
  Canvas2DRenderer
8
8
  } from "./chunk-WBCOREDZ.js";
@@ -16,7 +16,7 @@ import {
16
16
  walkRowsKey,
17
17
  walkRowsKeyTree,
18
18
  walkRowsTree
19
- } from "./chunk-GFRPX6M2.js";
19
+ } from "./chunk-EPREHMKU.js";
20
20
  import {
21
21
  genePins
22
22
  } from "./chunk-BUBZ32IC.js";
@@ -31,10 +31,10 @@ import {
31
31
  import {
32
32
  facetLifts,
33
33
  walkLift
34
- } from "./chunk-LFKMASER.js";
34
+ } from "./chunk-3FVITQAJ.js";
35
35
  import {
36
36
  encodingStops
37
- } from "./chunk-XPT66H6H.js";
37
+ } from "./chunk-AM3P3WWO.js";
38
38
  import {
39
39
  rangeText,
40
40
  walkKey
@@ -42,10 +42,10 @@ import {
42
42
  import {
43
43
  buildGeometry,
44
44
  computeReferenceRamp
45
- } from "./chunk-BR25DGIJ.js";
45
+ } from "./chunk-BOHK5BD3.js";
46
46
  import {
47
47
  version
48
- } from "./chunk-YSQMOOHY.js";
48
+ } from "./chunk-JEF73V3A.js";
49
49
  import {
50
50
  walkRowLabels,
51
51
  walkRowsExtent
@@ -3,10 +3,10 @@ import {
3
3
  RAMP_GRADIENT_STOPS,
4
4
  rampHueCss,
5
5
  rampStops
6
- } from "./chunk-OXTR3BVF.js";
6
+ } from "./chunk-QG5IVMRS.js";
7
7
  import {
8
8
  REFERENCE_RAMP_ALT_CSS
9
- } from "./chunk-BR25DGIJ.js";
9
+ } from "./chunk-BOHK5BD3.js";
10
10
  import {
11
11
  LABEL_CHAR_PX
12
12
  } from "./chunk-AB35TJST.js";
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var version = "9.6.0";
2
+ var version = "9.8.0";
3
3
 
4
4
  export {
5
5
  version
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  REFERENCE_RAMP_MAX_HUE
3
- } from "./chunk-BR25DGIJ.js";
3
+ } from "./chunk-BOHK5BD3.js";
4
4
 
5
5
  // src/referenceRampCss.ts
6
6
  function rampHueCss(hue) {
@@ -2,7 +2,7 @@ import {
2
2
  alongRow,
3
3
  boxesGenes,
4
4
  rowPitch
5
- } from "./chunk-GFRPX6M2.js";
5
+ } from "./chunk-EPREHMKU.js";
6
6
  import {
7
7
  LABEL_CHAR_PX
8
8
  } from "./chunk-AB35TJST.js";
@@ -6,7 +6,7 @@ import {
6
6
  hasTubeMapPaths,
7
7
  tubeMapLayout,
8
8
  tubeMapReferenceLayout
9
- } from "./chunk-INJ2UVOT.js";
9
+ } from "./chunk-6N7H22SS.js";
10
10
  import {
11
11
  anchoredLayout
12
12
  } from "./chunk-L3O7AWLI.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  computeColorSchemeRange,
3
3
  getNodeColor
4
- } from "./chunk-BR25DGIJ.js";
4
+ } from "./chunk-BOHK5BD3.js";
5
5
  import {
6
6
  abgrToCssRgba
7
7
  } from "./chunk-G2FD7S3C.js";
@@ -14,9 +14,9 @@ import "../chunks/chunk-LYJ4US66.js";
14
14
  import {
15
15
  LAYOUT_MODES,
16
16
  layoutModeByValue
17
- } from "../chunks/chunk-M7SRZJ32.js";
17
+ } from "../chunks/chunk-Z7UWHVOM.js";
18
18
  import "../chunks/chunk-LOEA5IHZ.js";
19
- import "../chunks/chunk-INJ2UVOT.js";
19
+ import "../chunks/chunk-6N7H22SS.js";
20
20
  import "../chunks/chunk-CWFNEKST.js";
21
21
  import "../chunks/chunk-L3O7AWLI.js";
22
22
  import "../chunks/chunk-TZFWUT2C.js";
@@ -35,8 +35,8 @@ import "../chunks/chunk-LTUWJKHD.js";
35
35
  import "../chunks/chunk-WSIFAZU7.js";
36
36
  import {
37
37
  figureSvg
38
- } from "../chunks/chunk-WVPC3JVY.js";
39
- import "../chunks/chunk-UD5FOCI2.js";
38
+ } from "../chunks/chunk-CG77WIFD.js";
39
+ import "../chunks/chunk-QMJXHYVQ.js";
40
40
  import "../chunks/chunk-WBCOREDZ.js";
41
41
  import "../chunks/chunk-4BYTEJGW.js";
42
42
  import "../chunks/chunk-LOCJN3BZ.js";
@@ -44,17 +44,17 @@ import "../chunks/chunk-47DYCZOK.js";
44
44
  import {
45
45
  genesOnRow,
46
46
  placeRowGenes
47
- } from "../chunks/chunk-GFRPX6M2.js";
47
+ } from "../chunks/chunk-EPREHMKU.js";
48
48
  import "../chunks/chunk-BUBZ32IC.js";
49
49
  import "../chunks/chunk-3S3YVOJ7.js";
50
50
  import "../chunks/chunk-XKM5OHQQ.js";
51
- import "../chunks/chunk-LFKMASER.js";
52
- import "../chunks/chunk-XPT66H6H.js";
51
+ import "../chunks/chunk-3FVITQAJ.js";
52
+ import "../chunks/chunk-AM3P3WWO.js";
53
53
  import "../chunks/chunk-2LQ5BWT7.js";
54
- import "../chunks/chunk-OXTR3BVF.js";
55
- import "../chunks/chunk-BR25DGIJ.js";
54
+ import "../chunks/chunk-QG5IVMRS.js";
55
+ import "../chunks/chunk-BOHK5BD3.js";
56
56
  import "../chunks/chunk-G2FD7S3C.js";
57
- import "../chunks/chunk-YSQMOOHY.js";
57
+ import "../chunks/chunk-JEF73V3A.js";
58
58
  import "../chunks/chunk-3C5UXR2U.js";
59
59
  import {
60
60
  filterSamples,
package/dist/figure.js CHANGED
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  figureSvg
3
- } from "./chunks/chunk-WVPC3JVY.js";
4
- import "./chunks/chunk-UD5FOCI2.js";
3
+ } from "./chunks/chunk-CG77WIFD.js";
4
+ import "./chunks/chunk-QMJXHYVQ.js";
5
5
  import "./chunks/chunk-WBCOREDZ.js";
6
6
  import "./chunks/chunk-4BYTEJGW.js";
7
7
  import "./chunks/chunk-LOCJN3BZ.js";
8
8
  import "./chunks/chunk-47DYCZOK.js";
9
- import "./chunks/chunk-GFRPX6M2.js";
9
+ import "./chunks/chunk-EPREHMKU.js";
10
10
  import "./chunks/chunk-BUBZ32IC.js";
11
11
  import "./chunks/chunk-3S3YVOJ7.js";
12
12
  import "./chunks/chunk-XKM5OHQQ.js";
13
- import "./chunks/chunk-LFKMASER.js";
14
- import "./chunks/chunk-XPT66H6H.js";
13
+ import "./chunks/chunk-3FVITQAJ.js";
14
+ import "./chunks/chunk-AM3P3WWO.js";
15
15
  import "./chunks/chunk-2LQ5BWT7.js";
16
- import "./chunks/chunk-OXTR3BVF.js";
17
- import "./chunks/chunk-BR25DGIJ.js";
16
+ import "./chunks/chunk-QG5IVMRS.js";
17
+ import "./chunks/chunk-BOHK5BD3.js";
18
18
  import "./chunks/chunk-G2FD7S3C.js";
19
- import "./chunks/chunk-YSQMOOHY.js";
19
+ import "./chunks/chunk-JEF73V3A.js";
20
20
  import "./chunks/chunk-3C5UXR2U.js";
21
21
  import "./chunks/chunk-MAUEPAMG.js";
22
22
  import "./chunks/chunk-7GBL7SJY.js";
package/dist/index.js CHANGED
@@ -1,15 +1,28 @@
1
1
  import {
2
2
  wheelZoomFactor
3
3
  } from "./chunks/chunk-TDQLINVI.js";
4
+ import {
5
+ drawTubeMapGenes,
6
+ tubeMapGenes
7
+ } from "./chunks/chunk-WEDZ76AK.js";
4
8
  import {
5
9
  tubeMapNodeColors
6
- } from "./chunks/chunk-A4MYLGKG.js";
10
+ } from "./chunks/chunk-ZBWMTXTM.js";
11
+ import {
12
+ bundleRoutes
13
+ } from "./chunks/chunk-5QOMIEHX.js";
7
14
  import {
8
15
  connectorAt,
9
16
  drawLitConnector,
10
17
  drawTubeMapConnectors,
11
18
  tubeMapConnectors
12
19
  } from "./chunks/chunk-2ZT7ZF7A.js";
20
+ import {
21
+ drawTubeMapRuler,
22
+ referenceBoxes,
23
+ rulerBoxes,
24
+ tubeX
25
+ } from "./chunks/chunk-BPRXQ2SS.js";
13
26
  import {
14
27
  drawTubeMap,
15
28
  drawTubeMapHighlight,
@@ -26,16 +39,6 @@ import {
26
39
  referenceKnots,
27
40
  warpX
28
41
  } from "./chunks/chunk-KQFOCDFY.js";
29
- import {
30
- drawTubeMapGenes,
31
- tubeMapGenes
32
- } from "./chunks/chunk-WEDZ76AK.js";
33
- import {
34
- drawTubeMapRuler,
35
- referenceBoxes,
36
- rulerBoxes,
37
- tubeX
38
- } from "./chunks/chunk-BPRXQ2SS.js";
39
42
  import {
40
43
  createForceLayoutCache
41
44
  } from "./chunks/chunk-BV64PQ2C.js";
@@ -70,7 +73,7 @@ import {
70
73
  drawReferenceStrip,
71
74
  referenceStripBlocks,
72
75
  stripBlockAt
73
- } from "./chunks/chunk-CVYDR2OP.js";
76
+ } from "./chunks/chunk-373Y3KUJ.js";
74
77
  import {
75
78
  LAYOUT_ENGINES,
76
79
  layoutEngine
@@ -84,9 +87,9 @@ import {
84
87
  LAYOUT_MODES,
85
88
  layoutModeByValue,
86
89
  modeUsesLayoutEngine
87
- } from "./chunks/chunk-M7SRZJ32.js";
90
+ } from "./chunks/chunk-Z7UWHVOM.js";
88
91
  import "./chunks/chunk-LOEA5IHZ.js";
89
- import "./chunks/chunk-INJ2UVOT.js";
92
+ import "./chunks/chunk-6N7H22SS.js";
90
93
  import "./chunks/chunk-CWFNEKST.js";
91
94
  import "./chunks/chunk-L3O7AWLI.js";
92
95
  import "./chunks/chunk-TZFWUT2C.js";
@@ -119,7 +122,7 @@ import {
119
122
  } from "./chunks/chunk-AZFVORTC.js";
120
123
  import {
121
124
  figureSvg
122
- } from "./chunks/chunk-WVPC3JVY.js";
125
+ } from "./chunks/chunk-CG77WIFD.js";
123
126
  import {
124
127
  WALK_STRIP_CEILING_PX,
125
128
  cutsWholeWalks,
@@ -131,7 +134,7 @@ import {
131
134
  walkStripApplies,
132
135
  walkStripFrame,
133
136
  walkStripLabelsTree
134
- } from "./chunks/chunk-UD5FOCI2.js";
137
+ } from "./chunks/chunk-QMJXHYVQ.js";
135
138
  import {
136
139
  Canvas2DRenderer
137
140
  } from "./chunks/chunk-WBCOREDZ.js";
@@ -170,7 +173,7 @@ import {
170
173
  walkRowsKey,
171
174
  walkRowsKeyTree,
172
175
  walkRowsTree
173
- } from "./chunks/chunk-GFRPX6M2.js";
176
+ } from "./chunks/chunk-EPREHMKU.js";
174
177
  import {
175
178
  genePins
176
179
  } from "./chunks/chunk-BUBZ32IC.js";
@@ -191,7 +194,7 @@ import {
191
194
  facetLifts,
192
195
  walkHighlight,
193
196
  walkLift
194
- } from "./chunks/chunk-LFKMASER.js";
197
+ } from "./chunks/chunk-3FVITQAJ.js";
195
198
  import {
196
199
  WALK_FIELDS,
197
200
  WALK_SCHEMES,
@@ -199,7 +202,7 @@ import {
199
202
  encodingSwatchCss,
200
203
  resolveEncoding,
201
204
  schemeCss
202
- } from "./chunks/chunk-XPT66H6H.js";
205
+ } from "./chunks/chunk-AM3P3WWO.js";
203
206
  import {
204
207
  rangeText,
205
208
  walkKey,
@@ -210,16 +213,16 @@ import {
210
213
  rampHue,
211
214
  rampHueCss,
212
215
  rampStops
213
- } from "./chunks/chunk-OXTR3BVF.js";
216
+ } from "./chunks/chunk-QG5IVMRS.js";
214
217
  import {
215
218
  REFERENCE_RAMP_MAX_HUE,
216
219
  buildGeometry,
217
220
  computeReferenceRamp
218
- } from "./chunks/chunk-BR25DGIJ.js";
221
+ } from "./chunks/chunk-BOHK5BD3.js";
219
222
  import "./chunks/chunk-G2FD7S3C.js";
220
223
  import {
221
224
  version
222
- } from "./chunks/chunk-YSQMOOHY.js";
225
+ } from "./chunks/chunk-JEF73V3A.js";
223
226
  import {
224
227
  walkRowLabels,
225
228
  walkRowsExtent
@@ -387,6 +390,7 @@ export {
387
390
  bubbleSubgraph,
388
391
  bubblesFromGraph,
389
392
  buildGeometry,
393
+ bundleRoutes,
390
394
  callTickInk,
391
395
  clampZoom,
392
396
  classifyBubble,
@@ -8,7 +8,7 @@ import {
8
8
  tubeMapReferenceLayout,
9
9
  tubeMapTracks,
10
10
  tubeWidth
11
- } from "../chunks/chunk-INJ2UVOT.js";
11
+ } from "../chunks/chunk-6N7H22SS.js";
12
12
  import "../chunks/chunk-CWFNEKST.js";
13
13
  import "../chunks/chunk-C44YRP5F.js";
14
14
  import "../chunks/chunk-7GBL7SJY.js";
@@ -26,9 +26,9 @@ import {
26
26
  walkRowsKey,
27
27
  walkRowsKeyTree,
28
28
  walkRowsTree
29
- } from "../chunks/chunk-GFRPX6M2.js";
30
- import "../chunks/chunk-OXTR3BVF.js";
31
- import "../chunks/chunk-BR25DGIJ.js";
29
+ } from "../chunks/chunk-EPREHMKU.js";
30
+ import "../chunks/chunk-QG5IVMRS.js";
31
+ import "../chunks/chunk-BOHK5BD3.js";
32
32
  import "../chunks/chunk-G2FD7S3C.js";
33
33
  import "../chunks/chunk-7GBL7SJY.js";
34
34
  import "../chunks/chunk-PBENCR5L.js";
@@ -9,12 +9,12 @@ import {
9
9
  walkStripApplies,
10
10
  walkStripFrame,
11
11
  walkStripLabelsTree
12
- } from "../chunks/chunk-UD5FOCI2.js";
12
+ } from "../chunks/chunk-QMJXHYVQ.js";
13
13
  import {
14
14
  LABELLED_ROW_PX
15
- } from "../chunks/chunk-GFRPX6M2.js";
16
- import "../chunks/chunk-OXTR3BVF.js";
17
- import "../chunks/chunk-BR25DGIJ.js";
15
+ } from "../chunks/chunk-EPREHMKU.js";
16
+ import "../chunks/chunk-QG5IVMRS.js";
17
+ import "../chunks/chunk-BOHK5BD3.js";
18
18
  import "../chunks/chunk-G2FD7S3C.js";
19
19
  import "../chunks/chunk-7GBL7SJY.js";
20
20
  import "../chunks/chunk-PBENCR5L.js";
@@ -4,9 +4,9 @@ import {
4
4
  LAYOUT_MODE_VALUES,
5
5
  layoutModeByValue,
6
6
  modeUsesLayoutEngine
7
- } from "./chunks/chunk-M7SRZJ32.js";
7
+ } from "./chunks/chunk-Z7UWHVOM.js";
8
8
  import "./chunks/chunk-LOEA5IHZ.js";
9
- import "./chunks/chunk-INJ2UVOT.js";
9
+ import "./chunks/chunk-6N7H22SS.js";
10
10
  import "./chunks/chunk-CWFNEKST.js";
11
11
  import "./chunks/chunk-L3O7AWLI.js";
12
12
  import "./chunks/chunk-TZFWUT2C.js";
@@ -4,8 +4,8 @@ import {
4
4
  rampHue,
5
5
  rampHueCss,
6
6
  rampStops
7
- } from "./chunks/chunk-OXTR3BVF.js";
8
- import "./chunks/chunk-BR25DGIJ.js";
7
+ } from "./chunks/chunk-QG5IVMRS.js";
8
+ import "./chunks/chunk-BOHK5BD3.js";
9
9
  import "./chunks/chunk-G2FD7S3C.js";
10
10
  import "./chunks/chunk-7GBL7SJY.js";
11
11
  import "./chunks/chunk-PBENCR5L.js";
@@ -7,8 +7,8 @@ import {
7
7
  stripBlockAt,
8
8
  stripOverhang,
9
9
  stripPixels
10
- } from "./chunks/chunk-CVYDR2OP.js";
11
- import "./chunks/chunk-BR25DGIJ.js";
10
+ } from "./chunks/chunk-373Y3KUJ.js";
11
+ import "./chunks/chunk-BOHK5BD3.js";
12
12
  import "./chunks/chunk-G2FD7S3C.js";
13
13
  import "./chunks/chunk-7GBL7SJY.js";
14
14
  import "./chunks/chunk-PBENCR5L.js";
@@ -11,7 +11,7 @@ import {
11
11
  endTangent,
12
12
  getNodeColor,
13
13
  hslToRgb
14
- } from "../chunks/chunk-BR25DGIJ.js";
14
+ } from "../chunks/chunk-BOHK5BD3.js";
15
15
  import "../chunks/chunk-G2FD7S3C.js";
16
16
  import "../chunks/chunk-7GBL7SJY.js";
17
17
  import "../chunks/chunk-PBENCR5L.js";
@@ -0,0 +1,19 @@
1
+ import {
2
+ bundleRoutes
3
+ } from "../chunks/chunk-5QOMIEHX.js";
4
+ import "../chunks/chunk-6N7H22SS.js";
5
+ import "../chunks/chunk-CWFNEKST.js";
6
+ import "../chunks/chunk-C44YRP5F.js";
7
+ import "../chunks/chunk-7GBL7SJY.js";
8
+ import "../chunks/chunk-3ZZSX5HN.js";
9
+ import "../chunks/chunk-AB35TJST.js";
10
+ import "../chunks/chunk-ST2IBUAN.js";
11
+ import "../chunks/chunk-BPLIXMH7.js";
12
+ import "../chunks/chunk-TAMCZHLW.js";
13
+ import "../chunks/chunk-N6FECAXP.js";
14
+ import "../chunks/chunk-2CVHXFK7.js";
15
+ import "../chunks/chunk-CPMHA4W5.js";
16
+ import "../chunks/chunk-FYQWPEEY.js";
17
+ export {
18
+ bundleRoutes
19
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pathSteps
3
- } from "../chunks/chunk-INJ2UVOT.js";
3
+ } from "../chunks/chunk-6N7H22SS.js";
4
4
  import "../chunks/chunk-CWFNEKST.js";
5
5
  import "../chunks/chunk-C44YRP5F.js";
6
6
  import "../chunks/chunk-7GBL7SJY.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  tubeMapNodeColors
3
- } from "../chunks/chunk-A4MYLGKG.js";
4
- import "../chunks/chunk-BR25DGIJ.js";
3
+ } from "../chunks/chunk-ZBWMTXTM.js";
4
+ import "../chunks/chunk-BOHK5BD3.js";
5
5
  import "../chunks/chunk-G2FD7S3C.js";
6
6
  import "../chunks/chunk-7GBL7SJY.js";
7
7
  import "../chunks/chunk-PBENCR5L.js";
@@ -43,6 +43,7 @@ export { drawTubeMapGenes, tubeMapGenes } from './tubeMap/genes.js';
43
43
  export type { TubeMapGene } from './tubeMap/genes.js';
44
44
  export { connectorAt, drawLitConnector, drawTubeMapConnectors, tubeMapConnectors, } from './tubeMap/connectors.js';
45
45
  export type { Connector } from './tubeMap/connectors.js';
46
+ export { bundleRoutes } from './tubeMap/bundle.js';
46
47
  export type { TubeMapColumn, TubeMapDrawing } from './layout/tubeMapLayout.js';
47
48
  export { deletionDrawing, deletionEdges } from './deletionEdges.js';
48
49
  export type { DeletionDrawing, DeletionEdge } from './deletionEdges.js';
@@ -0,0 +1,2 @@
1
+ import type { Graph } from '../types.js';
2
+ export declare function bundleRoutes(graph: Graph, groupOf?: (walk: string) => string, merge?: boolean): Graph;
@@ -23,6 +23,7 @@ export interface GraphPath {
23
23
  sample?: string;
24
24
  haplotype?: number;
25
25
  contig?: string;
26
+ members?: string[];
26
27
  }
27
28
  export interface PathOrigin {
28
29
  name: string;
@@ -1 +1 @@
1
- export declare const version = "9.6.0";
1
+ export declare const version = "9.8.0";
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  version
3
- } from "./chunks/chunk-YSQMOOHY.js";
3
+ } from "./chunks/chunk-JEF73V3A.js";
4
4
  export {
5
5
  version
6
6
  };
@@ -9,8 +9,8 @@ import {
9
9
  schemeColor,
10
10
  schemeCss,
11
11
  schemeRgb
12
- } from "./chunks/chunk-XPT66H6H.js";
13
- import "./chunks/chunk-BR25DGIJ.js";
12
+ } from "./chunks/chunk-AM3P3WWO.js";
13
+ import "./chunks/chunk-BOHK5BD3.js";
14
14
  import "./chunks/chunk-G2FD7S3C.js";
15
15
  import "./chunks/chunk-7GBL7SJY.js";
16
16
  import "./chunks/chunk-PBENCR5L.js";
@@ -2,9 +2,9 @@ import {
2
2
  facetLifts,
3
3
  walkHighlight,
4
4
  walkLift
5
- } from "./chunks/chunk-LFKMASER.js";
6
- import "./chunks/chunk-XPT66H6H.js";
7
- import "./chunks/chunk-BR25DGIJ.js";
5
+ } from "./chunks/chunk-3FVITQAJ.js";
6
+ import "./chunks/chunk-AM3P3WWO.js";
7
+ import "./chunks/chunk-BOHK5BD3.js";
8
8
  import "./chunks/chunk-G2FD7S3C.js";
9
9
  import "./chunks/chunk-7GBL7SJY.js";
10
10
  import "./chunks/chunk-PBENCR5L.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/bandage-core",
3
- "version": "9.6.0",
3
+ "version": "9.8.0",
4
4
  "description": "Pangenome graph layout and drawing with no host: GFA in, the Bandage force-directed engine and reference-anchored layouts, a Canvas2D renderer, hit testing and labels out",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": {
@@ -37,7 +37,7 @@
37
37
  "dependencies": {
38
38
  "@gmod/gbz-base": "^7.0.0",
39
39
  "@gmod/tabix": "^3.9.1",
40
- "@jbrowse/tubemap-core": "^0.2.1"
40
+ "@jbrowse/tubemap-core": "^0.2.2"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@eslint/js": "^10.0.1",