@jbrowse/bandage-core 9.6.0 → 9.7.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.
- package/dist/chunks/chunk-5QOMIEHX.js +81 -0
- package/dist/chunks/{chunk-INJ2UVOT.js → chunk-6N7H22SS.js} +6 -2
- package/dist/chunks/{chunk-WVPC3JVY.js → chunk-7FARTP3U.js} +1 -1
- package/dist/chunks/{chunk-YSQMOOHY.js → chunk-ESRCSSS2.js} +1 -1
- package/dist/chunks/{chunk-M7SRZJ32.js → chunk-Z7UWHVOM.js} +1 -1
- package/dist/cli/figure.js +4 -4
- package/dist/figure.js +2 -2
- package/dist/index.js +18 -14
- package/dist/layout/tubeMapLayout.js +1 -1
- package/dist/layoutModes.js +2 -2
- package/dist/tubeMap/bundle.js +19 -0
- package/dist/tubeMap/coarsen.js +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/tubeMap/bundle.d.ts +2 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -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;
|
package/dist/cli/figure.js
CHANGED
|
@@ -14,9 +14,9 @@ import "../chunks/chunk-LYJ4US66.js";
|
|
|
14
14
|
import {
|
|
15
15
|
LAYOUT_MODES,
|
|
16
16
|
layoutModeByValue
|
|
17
|
-
} from "../chunks/chunk-
|
|
17
|
+
} from "../chunks/chunk-Z7UWHVOM.js";
|
|
18
18
|
import "../chunks/chunk-LOEA5IHZ.js";
|
|
19
|
-
import "../chunks/chunk-
|
|
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,7 +35,7 @@ import "../chunks/chunk-LTUWJKHD.js";
|
|
|
35
35
|
import "../chunks/chunk-WSIFAZU7.js";
|
|
36
36
|
import {
|
|
37
37
|
figureSvg
|
|
38
|
-
} from "../chunks/chunk-
|
|
38
|
+
} from "../chunks/chunk-7FARTP3U.js";
|
|
39
39
|
import "../chunks/chunk-UD5FOCI2.js";
|
|
40
40
|
import "../chunks/chunk-WBCOREDZ.js";
|
|
41
41
|
import "../chunks/chunk-4BYTEJGW.js";
|
|
@@ -54,7 +54,7 @@ import "../chunks/chunk-2LQ5BWT7.js";
|
|
|
54
54
|
import "../chunks/chunk-OXTR3BVF.js";
|
|
55
55
|
import "../chunks/chunk-BR25DGIJ.js";
|
|
56
56
|
import "../chunks/chunk-G2FD7S3C.js";
|
|
57
|
-
import "../chunks/chunk-
|
|
57
|
+
import "../chunks/chunk-ESRCSSS2.js";
|
|
58
58
|
import "../chunks/chunk-3C5UXR2U.js";
|
|
59
59
|
import {
|
|
60
60
|
filterSamples,
|
package/dist/figure.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
figureSvg
|
|
3
|
-
} from "./chunks/chunk-
|
|
3
|
+
} from "./chunks/chunk-7FARTP3U.js";
|
|
4
4
|
import "./chunks/chunk-UD5FOCI2.js";
|
|
5
5
|
import "./chunks/chunk-WBCOREDZ.js";
|
|
6
6
|
import "./chunks/chunk-4BYTEJGW.js";
|
|
@@ -16,7 +16,7 @@ import "./chunks/chunk-2LQ5BWT7.js";
|
|
|
16
16
|
import "./chunks/chunk-OXTR3BVF.js";
|
|
17
17
|
import "./chunks/chunk-BR25DGIJ.js";
|
|
18
18
|
import "./chunks/chunk-G2FD7S3C.js";
|
|
19
|
-
import "./chunks/chunk-
|
|
19
|
+
import "./chunks/chunk-ESRCSSS2.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
10
|
} from "./chunks/chunk-A4MYLGKG.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";
|
|
@@ -84,9 +87,9 @@ import {
|
|
|
84
87
|
LAYOUT_MODES,
|
|
85
88
|
layoutModeByValue,
|
|
86
89
|
modeUsesLayoutEngine
|
|
87
|
-
} from "./chunks/chunk-
|
|
90
|
+
} from "./chunks/chunk-Z7UWHVOM.js";
|
|
88
91
|
import "./chunks/chunk-LOEA5IHZ.js";
|
|
89
|
-
import "./chunks/chunk-
|
|
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-
|
|
125
|
+
} from "./chunks/chunk-7FARTP3U.js";
|
|
123
126
|
import {
|
|
124
127
|
WALK_STRIP_CEILING_PX,
|
|
125
128
|
cutsWholeWalks,
|
|
@@ -219,7 +222,7 @@ import {
|
|
|
219
222
|
import "./chunks/chunk-G2FD7S3C.js";
|
|
220
223
|
import {
|
|
221
224
|
version
|
|
222
|
-
} from "./chunks/chunk-
|
|
225
|
+
} from "./chunks/chunk-ESRCSSS2.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-
|
|
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";
|
package/dist/layoutModes.js
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
LAYOUT_MODE_VALUES,
|
|
5
5
|
layoutModeByValue,
|
|
6
6
|
modeUsesLayoutEngine
|
|
7
|
-
} from "./chunks/chunk-
|
|
7
|
+
} from "./chunks/chunk-Z7UWHVOM.js";
|
|
8
8
|
import "./chunks/chunk-LOEA5IHZ.js";
|
|
9
|
-
import "./chunks/chunk-
|
|
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";
|
|
@@ -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
|
+
};
|
package/dist/tubeMap/coarsen.js
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/types/types.d.ts
CHANGED
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "9.
|
|
1
|
+
export declare const version = "9.7.0";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/bandage-core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.7.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.
|
|
40
|
+
"@jbrowse/tubemap-core": "^0.2.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@eslint/js": "^10.0.1",
|