@jbrowse/bandage-core 10.2.7 → 10.3.1
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/alleleProjection/projectAlleles.js +8 -4
- package/dist/anchoredNodes.js +2 -1
- package/dist/bubbleSpreads.js +2 -2
- package/dist/bubbles/bubbleHalos.js +10 -11
- package/dist/bubbles/bubblesFromGraph.js +8 -3
- package/dist/bubbles/classifyBubble.js +9 -6
- package/dist/bubbles/popBubble.js +7 -5
- package/dist/bubbles/superbubbles.js +18 -14
- package/dist/chunks/{chunk-RAKOB6IV.js → chunk-234NFZS4.js} +8 -6
- package/dist/chunks/{chunk-ABUIN5AK.js → chunk-2Q22S52W.js} +29 -24
- package/dist/chunks/{chunk-6JEWNXCQ.js → chunk-34BOZKIE.js} +0 -2
- package/dist/chunks/{chunk-RVS2QCOX.js → chunk-3GLG3ZLE.js} +2 -11
- package/dist/chunks/{chunk-3XSM4OZU.js → chunk-3GP3KT5L.js} +5 -5
- package/dist/chunks/{chunk-PUG7LXDF.js → chunk-3PZSBNLI.js} +4 -1
- package/dist/chunks/{chunk-JLSJMCDJ.js → chunk-3UST3ZQE.js} +3 -3
- package/dist/chunks/{chunk-KBEP7VYK.js → chunk-3VCKBSML.js} +4 -4
- package/dist/chunks/{chunk-BPLIXMH7.js → chunk-4XWZNPQ2.js} +14 -0
- package/dist/chunks/{chunk-4DRQTBBE.js → chunk-6EOB6ANX.js} +1 -1
- package/dist/chunks/{chunk-L2HDM2R3.js → chunk-A2TJ5UX6.js} +7 -7
- package/dist/chunks/{chunk-URZ3CH2R.js → chunk-A4JDEUAI.js} +1 -1
- package/dist/chunks/{chunk-CWFNEKST.js → chunk-A7H753BA.js} +3 -3
- package/dist/chunks/{chunk-CG35S2S2.js → chunk-AQCOIE5R.js} +1 -1
- package/dist/chunks/{chunk-TKIJ5535.js → chunk-AZ4EEF6Q.js} +6 -6
- package/dist/chunks/{chunk-M6LK4GII.js → chunk-B5X2RLJG.js} +17 -10
- package/dist/chunks/{chunk-A7CFWFQS.js → chunk-BKEZLETL.js} +1 -1
- package/dist/chunks/{chunk-RPRHR56C.js → chunk-BS6HPYCZ.js} +3 -3
- package/dist/chunks/chunk-BSOZW3FC.js +30 -0
- package/dist/chunks/{chunk-XXT2JCAC.js → chunk-BX4AUMZE.js} +11 -13
- package/dist/chunks/{chunk-N73TI3VG.js → chunk-BZFOFC4D.js} +6 -9
- package/dist/chunks/{chunk-4ETPXDO6.js → chunk-CGFPFBT2.js} +1 -1
- package/dist/chunks/{chunk-24WITXQY.js → chunk-CGMSKIEO.js} +9 -25
- package/dist/chunks/{chunk-VV6KGJ7M.js → chunk-CHNESV7L.js} +18 -27
- package/dist/chunks/{chunk-IGVV37VI.js → chunk-CKUVEHSS.js} +3 -3
- package/dist/chunks/{chunk-JBCZIBFC.js → chunk-CRCD3ODN.js} +0 -1
- package/dist/chunks/{chunk-AUFAPUO4.js → chunk-D7WIYPG3.js} +3 -1
- package/dist/chunks/{chunk-OIV2GBAJ.js → chunk-DBLV7PGG.js} +27 -17
- package/dist/chunks/{chunk-VQC7KELB.js → chunk-DO62DG26.js} +11 -3
- package/dist/chunks/{chunk-JA2HJIYS.js → chunk-E4ZM4OOJ.js} +3 -5
- package/dist/chunks/{chunk-QLWI2PZ3.js → chunk-EJRJAAN7.js} +24 -21
- package/dist/chunks/{chunk-QBHPHLAQ.js → chunk-EWLXU3UG.js} +41 -36
- package/dist/chunks/{chunk-XI3ZUTWF.js → chunk-FW2R7UDZ.js} +14 -20
- package/dist/chunks/{chunk-Q7LYHGGQ.js → chunk-GIHTHYXY.js} +5 -4
- package/dist/chunks/{chunk-L3O7AWLI.js → chunk-GJLZ2MKE.js} +2 -2
- package/dist/chunks/{chunk-LOEA5IHZ.js → chunk-GJU6BJJA.js} +8 -8
- package/dist/chunks/{chunk-XL472HHD.js → chunk-GQZVR5DW.js} +12 -7
- package/dist/chunks/{chunk-UVBGRJQX.js → chunk-HKYXWZQS.js} +1 -1
- package/dist/chunks/chunk-HMXCN6PG.js +17 -0
- package/dist/chunks/{chunk-WSIFAZU7.js → chunk-HNWJ4B7S.js} +12 -13
- package/dist/chunks/chunk-HOAIOEI7.js +18 -0
- package/dist/chunks/{chunk-XMW266WS.js → chunk-HSVFCA2J.js} +18 -20
- package/dist/chunks/{chunk-QXUEF3AJ.js → chunk-KMBE2Q42.js} +22 -17
- package/dist/chunks/{chunk-VQWHMWLF.js → chunk-M5NPD55W.js} +18 -14
- package/dist/chunks/chunk-MWOVW4AH.js +327 -0
- package/dist/chunks/{chunk-HK5Y2YWV.js → chunk-MYDHU2UV.js} +6 -11
- package/dist/chunks/{chunk-TZFWUT2C.js → chunk-MYLAJDKB.js} +2 -2
- package/dist/chunks/{chunk-AR4BUBMU.js → chunk-NZTYV3JL.js} +34 -35
- package/dist/chunks/{chunk-4HWM3FNK.js → chunk-OMUPUB4J.js} +39 -56
- package/dist/chunks/{chunk-LKW2TP4N.js → chunk-OOIOX36I.js} +18 -16
- package/dist/chunks/{chunk-EQ2NIFRH.js → chunk-OXRUPNSV.js} +1 -1
- package/dist/chunks/{chunk-PTABFYQ7.js → chunk-PFRQBCGC.js} +49 -60
- package/dist/chunks/{chunk-T6V4KI2L.js → chunk-PNMJFFNB.js} +1 -1
- package/dist/chunks/{chunk-KC7T5RWG.js → chunk-PSCSZSVK.js} +9 -16
- package/dist/chunks/{chunk-23YFB5BB.js → chunk-QH2MIXBA.js} +29 -13
- package/dist/chunks/{chunk-5GMFEPWR.js → chunk-R2PJKD3Y.js} +16 -28
- package/dist/chunks/{chunk-CQHUZHET.js → chunk-RFG42VIO.js} +46 -30
- package/dist/chunks/{chunk-FYQWPEEY.js → chunk-RJWPJCIB.js} +5 -11
- package/dist/chunks/{chunk-WBSWROE6.js → chunk-SFP3E4RI.js} +14 -18
- package/dist/chunks/{chunk-2CMYNW3E.js → chunk-SI3BB4DO.js} +1 -1
- package/dist/chunks/{chunk-DY3JCAMX.js → chunk-SOMZGDVS.js} +7 -16
- package/dist/chunks/{chunk-A4PFFC4Q.js → chunk-SWCULW6S.js} +60 -102
- package/dist/chunks/{chunk-XV4P5KEQ.js → chunk-TGUFT6KK.js} +6 -3
- package/dist/chunks/{chunk-CM6LO6OC.js → chunk-UAFATXYA.js} +10 -14
- package/dist/chunks/{chunk-7SRWJLSC.js → chunk-UBQSRCWR.js} +11 -8
- package/dist/chunks/{chunk-RUCH6ZFL.js → chunk-V4YML3GR.js} +2 -1
- package/dist/chunks/{chunk-ES2N6V56.js → chunk-VX656OAZ.js} +6 -11
- package/dist/chunks/chunk-WA5WNP6V.js +37 -0
- package/dist/chunks/{chunk-B6IW3IRE.js → chunk-WYJQIC75.js} +14 -15
- package/dist/chunks/{chunk-T2PCSAFY.js → chunk-XVS52NMZ.js} +2 -2
- package/dist/chunks/{chunk-CU6P5RUG.js → chunk-YZQI35UJ.js} +22 -16
- package/dist/chunks/{chunk-G45YY72K.js → chunk-Z6XZWPXK.js} +17 -25
- package/dist/chunks/{chunk-EFQLEGWM.js → chunk-ZJBOM73S.js} +7 -8
- package/dist/chunks/{chunk-RAEABQNW.js → chunk-ZPZ7GNBT.js} +1 -0
- package/dist/cli/figure.js +59 -56
- package/dist/cli/fold.js +19 -17
- package/dist/deletionEdges.js +5 -7
- package/dist/facetGrid.js +2 -1
- package/dist/figure.js +45 -42
- package/dist/figureData.js +48 -44
- package/dist/figureScene.js +34 -29
- package/dist/figureSettings.js +19 -17
- package/dist/foldVariants.js +5 -3
- package/dist/gbzCut.js +12 -7
- package/dist/gbzJoin.js +2 -1
- package/dist/gbzWindow.js +11 -6
- package/dist/genes/genePins.js +6 -4
- package/dist/gfa/gfaConverter.js +7 -5
- package/dist/gfa/gfaTables.js +2 -1
- package/dist/gfa/graphTables.js +3 -3
- package/dist/graphLabels.js +8 -5
- package/dist/index.js +88 -85
- package/dist/labelLayout.js +12 -9
- package/dist/layout/anchoredLayout.js +8 -5
- package/dist/layout/drawnScale.js +1 -5
- package/dist/layout/forceCache.js +19 -17
- package/dist/layout/mergeRuns.js +5 -3
- package/dist/layout/orderedLayout.js +5 -2
- package/dist/layout/orientToReference.js +3 -2
- package/dist/layout/placeOffReference.js +7 -4
- package/dist/layout/referenceSeeds.js +6 -4
- package/dist/layout/sampleRowLayout.js +8 -5
- package/dist/layout/trimToWindow.js +6 -4
- package/dist/layout/tubeMapLayout.js +17 -19
- package/dist/layout/walkRowDraw.js +18 -17
- package/dist/layout/walkRowLayout.js +10 -6
- package/dist/layout/walkRows.js +9 -5
- package/dist/layout/walkStrip.js +21 -18
- package/dist/layoutModes.js +23 -20
- package/dist/nodeWidths.js +1 -3
- package/dist/pansn.js +5 -1
- package/dist/pathAnchoring.js +6 -4
- package/dist/pathColors.js +12 -9
- package/dist/pathVisits.js +3 -1
- package/dist/pipeline.js +18 -16
- package/dist/reference.js +5 -3
- package/dist/referenceRampCss.js +9 -17
- package/dist/referenceSpan.js +4 -2
- package/dist/referenceStrip.js +18 -14
- package/dist/renderer/Canvas2DRenderer.js +1 -1
- package/dist/renderer/GeometryBuilder.js +19 -14
- package/dist/renderer/svgCanvas.js +1 -1
- package/dist/tubeMap/axis.js +11 -6
- package/dist/tubeMap/bundle.js +16 -12
- package/dist/tubeMap/coarsen.js +20 -345
- package/dist/tubeMap/deviations.js +53 -23
- package/dist/tubeMap/draw.js +11 -8
- package/dist/tubeMap/frame.js +3 -2
- package/dist/tubeMap/genes.js +10 -7
- package/dist/tubeMap/mismatches.js +1 -1
- package/dist/tubeMap/nodeColors.js +18 -14
- package/dist/tubeMap/reads.js +1 -1
- package/dist/tubeMap/warp.js +2 -1
- package/dist/types/alleleProjection/projectAlleles.d.ts +1 -4
- package/dist/types/bubbles/bubbleHalos.d.ts +0 -2
- package/dist/types/bubbles/bubblesFromGraph.d.ts +6 -4
- package/dist/types/bubbles/classifyBubble.d.ts +2 -1
- package/dist/types/deletionEdges.d.ts +0 -8
- package/dist/types/figureScene.d.ts +17 -7
- package/dist/types/figureSettings.d.ts +2 -0
- package/dist/types/gbzCut.d.ts +4 -0
- package/dist/types/gbzWindow.d.ts +1 -0
- package/dist/types/gfa-core/gfaParser.d.ts +1 -1
- package/dist/types/graphLabels.d.ts +2 -1
- package/dist/types/layout/drawnScale.d.ts +0 -2
- package/dist/types/layout/referenceSeeds.d.ts +2 -1
- package/dist/types/layout/tubeMapLayout.d.ts +0 -7
- package/dist/types/layout/walkRowDraw.d.ts +0 -1
- package/dist/types/layout/walkRowLayout.d.ts +1 -0
- package/dist/types/layout/walkRows.d.ts +1 -0
- package/dist/types/nodeWidths.d.ts +0 -1
- package/dist/types/pansn.d.ts +9 -0
- package/dist/types/pathVisits.d.ts +6 -0
- package/dist/types/referenceRampCss.d.ts +4 -0
- package/dist/types/renderer/Canvas2DRenderer.d.ts +1 -0
- package/dist/types/renderer/GeometryBuilder.d.ts +3 -2
- package/dist/types/tubeMap/axis.d.ts +3 -1
- package/dist/types/tubeMap/coarsen.d.ts +3 -1
- package/dist/types/tubeMap/deviations.d.ts +2 -1
- package/dist/types/tubeMap/mismatches.d.ts +0 -1
- package/dist/types/tubeMap/warp.d.ts +2 -1
- package/dist/types/util/SpatialIndex.d.ts +1 -1
- package/dist/types/util/geometry.d.ts +4 -0
- package/dist/types/util/groups.d.ts +3 -0
- package/dist/types/util/hitDetection.d.ts +2 -2
- package/dist/types/util/partitionPoint.d.ts +1 -0
- package/dist/types/util/weakMemo.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/util/SpatialIndex.js +8 -5
- package/dist/util/edgeCurves.js +7 -4
- package/dist/util/geometry.js +3 -1
- package/dist/util/groups.js +10 -0
- package/dist/util/hitDetection.js +9 -6
- package/dist/util/partitionPoint.js +6 -0
- package/dist/util/weakMemo.js +6 -0
- package/dist/version.js +1 -1
- package/dist/viewport.js +19 -17
- package/dist/walkEncoding.js +18 -14
- package/dist/walkHighlight.js +19 -15
- package/dist/walkKey.js +9 -6
- package/package.json +2 -2
- package/dist/chunks/chunk-ZY2AFL4Y.js +0 -43
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
svgCanvas
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-V4YML3GR.js";
|
|
4
4
|
import {
|
|
5
5
|
stripGeneGaps,
|
|
6
6
|
walkStripFrame,
|
|
7
7
|
walkStripLabelsTree
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SFP3E4RI.js";
|
|
9
9
|
import {
|
|
10
10
|
walkRowsKey,
|
|
11
11
|
walkRowsKeyTree,
|
|
12
12
|
walkRowsTree
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ZJBOM73S.js";
|
|
14
14
|
import {
|
|
15
15
|
Canvas2DRenderer
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EJRJAAN7.js";
|
|
17
17
|
import {
|
|
18
18
|
EXON_COLOR,
|
|
19
19
|
exonOutlineTree,
|
|
@@ -21,43 +21,45 @@ import {
|
|
|
21
21
|
} from "./chunk-JSUCGZ6K.js";
|
|
22
22
|
import {
|
|
23
23
|
genePins
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-BS6HPYCZ.js";
|
|
25
25
|
import {
|
|
26
26
|
geneLabelCandidates
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-PSCSZSVK.js";
|
|
28
28
|
import {
|
|
29
29
|
nodesUnderBox
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-OMUPUB4J.js";
|
|
31
31
|
import {
|
|
32
32
|
escapeAttr,
|
|
33
33
|
serializeEl
|
|
34
34
|
} from "./chunk-H2H4Y3TV.js";
|
|
35
35
|
import {
|
|
36
36
|
version
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-AQCOIE5R.js";
|
|
38
38
|
import {
|
|
39
39
|
axisScaleOf
|
|
40
|
-
} from "./chunk-
|
|
41
|
-
import {
|
|
42
|
-
rangeText,
|
|
43
|
-
walkKey
|
|
44
|
-
} from "./chunk-4ETPXDO6.js";
|
|
40
|
+
} from "./chunk-BKEZLETL.js";
|
|
45
41
|
import {
|
|
46
42
|
figureScene
|
|
47
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-QH2MIXBA.js";
|
|
48
44
|
import {
|
|
49
45
|
encodingStops
|
|
50
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-DO62DG26.js";
|
|
47
|
+
import {
|
|
48
|
+
rangeText
|
|
49
|
+
} from "./chunk-CGFPFBT2.js";
|
|
51
50
|
import {
|
|
52
51
|
walkRowLabels
|
|
53
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-A2TJ5UX6.js";
|
|
54
53
|
import {
|
|
55
54
|
nodeInk
|
|
56
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-CRCD3ODN.js";
|
|
56
|
+
import {
|
|
57
|
+
FIGURE_DEFAULTS
|
|
58
|
+
} from "./chunk-D7WIYPG3.js";
|
|
57
59
|
import {
|
|
58
60
|
FIT_PADDING,
|
|
59
61
|
fitTransform
|
|
60
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-KMBE2Q42.js";
|
|
61
63
|
import {
|
|
62
64
|
LABEL_CHAR_PX,
|
|
63
65
|
LABEL_PAD,
|
|
@@ -69,9 +71,8 @@ import {
|
|
|
69
71
|
FACET_GAP_PX,
|
|
70
72
|
FACET_PAD_PX,
|
|
71
73
|
FACET_TITLE_PX,
|
|
72
|
-
facetCells,
|
|
73
74
|
facetGrid
|
|
74
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-TGUFT6KK.js";
|
|
75
76
|
|
|
76
77
|
// src/figure.ts
|
|
77
78
|
var FONT = 'font-family="Helvetica, Arial, sans-serif" font-size="11"';
|
|
@@ -100,15 +101,14 @@ function exonKeySvg(x, y) {
|
|
|
100
101
|
markup: `<g transform="translate(${x} ${y})" ${FONT}><rect x="1" y="4" width="${SWATCH_PX - 2}" height="10" rx="4" fill="none" stroke="${EXON_COLOR}" stroke-width="2"/><text x="${SWATCH_PX + 5}" y="13">exon</text></g>`
|
|
101
102
|
};
|
|
102
103
|
}
|
|
103
|
-
function walkKeySvg(id, x, y, walk, label,
|
|
104
|
-
const key = walkKey(walk, reference);
|
|
104
|
+
function walkKeySvg(id, x, y, walk, label, key) {
|
|
105
105
|
return keySvg(
|
|
106
106
|
id,
|
|
107
107
|
x,
|
|
108
108
|
y,
|
|
109
109
|
encodingStops(walk.encoding),
|
|
110
110
|
label,
|
|
111
|
-
key.
|
|
111
|
+
key.note,
|
|
112
112
|
key.scale
|
|
113
113
|
);
|
|
114
114
|
}
|
|
@@ -122,8 +122,8 @@ function chip(x, y, w, name, note) {
|
|
|
122
122
|
return `<rect x="${x - w / 2}" y="${y - LABEL_PX - LABEL_PAD + 2}" width="${w}" height="${LABEL_PX + LABEL_PAD * 2 - 2}" rx="3" fill="#fff" fill-opacity="0.85" stroke="${EXON_COLOR}"/><text x="${x}" y="${y}" font-family="Helvetica, Arial, sans-serif" font-size="${LABEL_PX}" fill="${GENE_INK}" text-anchor="middle"><tspan font-style="italic" font-weight="600">${escapeAttr(name)}</tspan>${note ? escapeAttr(note) : ""}</text>`;
|
|
123
123
|
}
|
|
124
124
|
function figureSvg(graph, layout, o = {}) {
|
|
125
|
-
const width = o.width ??
|
|
126
|
-
const room = o.height ??
|
|
125
|
+
const width = o.width ?? FIGURE_DEFAULTS.width;
|
|
126
|
+
const room = o.height ?? FIGURE_DEFAULTS.height;
|
|
127
127
|
const rows = o.walkRows;
|
|
128
128
|
const {
|
|
129
129
|
bounds,
|
|
@@ -132,10 +132,10 @@ function figureSvg(graph, layout, o = {}) {
|
|
|
132
132
|
layers,
|
|
133
133
|
lift,
|
|
134
134
|
facet,
|
|
135
|
-
|
|
135
|
+
facets,
|
|
136
136
|
labelOf,
|
|
137
137
|
referenceName,
|
|
138
|
-
|
|
138
|
+
keyText,
|
|
139
139
|
contigThickness,
|
|
140
140
|
nodeWidth,
|
|
141
141
|
geometry
|
|
@@ -209,7 +209,7 @@ function figureSvg(graph, layout, o = {}) {
|
|
|
209
209
|
w,
|
|
210
210
|
h,
|
|
211
211
|
pixelRows,
|
|
212
|
-
|
|
212
|
+
facets ? {
|
|
213
213
|
padLeft: FACET_PAD_PX,
|
|
214
214
|
padTop: FACET_PAD_PX,
|
|
215
215
|
padRight: FACET_PAD_PX,
|
|
@@ -235,12 +235,8 @@ function figureSvg(graph, layout, o = {}) {
|
|
|
235
235
|
}
|
|
236
236
|
const parts = [];
|
|
237
237
|
let height;
|
|
238
|
-
if (
|
|
239
|
-
const place =
|
|
240
|
-
panels.map((p) => p.walks[0].name),
|
|
241
|
-
facet.field || "walk",
|
|
242
|
-
facet.domain
|
|
243
|
-
);
|
|
238
|
+
if (facets) {
|
|
239
|
+
const { panels, place } = facets;
|
|
244
240
|
const grid = facetGrid({
|
|
245
241
|
count: place.count,
|
|
246
242
|
bounds,
|
|
@@ -255,7 +251,14 @@ function figureSvg(graph, layout, o = {}) {
|
|
|
255
251
|
const y = Math.floor(cell / grid.columns) * (grid.height + FACET_TITLE_PX + FACET_GAP_PX);
|
|
256
252
|
const walk = panel.walks[0];
|
|
257
253
|
parts.push(
|
|
258
|
-
walkKeySvg(
|
|
254
|
+
walkKeySvg(
|
|
255
|
+
`key${i}`,
|
|
256
|
+
x + 6,
|
|
257
|
+
y + 2,
|
|
258
|
+
walk,
|
|
259
|
+
labelOf(walk.name),
|
|
260
|
+
keyText(walk)
|
|
261
|
+
).markup,
|
|
259
262
|
`<svg x="${x}" y="${y + FACET_TITLE_PX}" width="${grid.width}" height="${grid.height}">${drawing(panel, grid.width, grid.height)}</svg>`
|
|
260
263
|
);
|
|
261
264
|
});
|
|
@@ -268,7 +271,9 @@ function figureSvg(graph, layout, o = {}) {
|
|
|
268
271
|
};
|
|
269
272
|
if (lift) {
|
|
270
273
|
lift.walks.forEach((walk, i) => {
|
|
271
|
-
push(
|
|
274
|
+
push(
|
|
275
|
+
walkKeySvg(`key${i}`, x, 2, walk, labelOf(walk.name), keyText(walk))
|
|
276
|
+
);
|
|
272
277
|
});
|
|
273
278
|
push(
|
|
274
279
|
keySvg(
|
|
@@ -2,21 +2,27 @@ import {
|
|
|
2
2
|
canonicalStrand,
|
|
3
3
|
stepName,
|
|
4
4
|
tubeMapReads
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-A7H753BA.js";
|
|
6
|
+
import {
|
|
7
|
+
referenceWalkName
|
|
8
|
+
} from "./chunk-OOIOX36I.js";
|
|
6
9
|
import {
|
|
7
10
|
pathCssColor,
|
|
8
11
|
pathGreyCssColor
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-3GP3KT5L.js";
|
|
10
13
|
import {
|
|
11
14
|
pathOrigin
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-B5X2RLJG.js";
|
|
13
16
|
import {
|
|
14
17
|
ownStrand,
|
|
15
18
|
strandSides
|
|
16
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-UBQSRCWR.js";
|
|
20
|
+
import {
|
|
21
|
+
groupBy
|
|
22
|
+
} from "./chunk-BSOZW3FC.js";
|
|
17
23
|
import {
|
|
18
24
|
isBackbone
|
|
19
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-RJWPJCIB.js";
|
|
20
26
|
|
|
21
27
|
// src/layout/tubeMapLayout.ts
|
|
22
28
|
import { forward, isReverse, layoutTubeMap } from "@jbrowse/tubemap-core";
|
|
@@ -53,9 +59,8 @@ function tubeMapTracks(graph) {
|
|
|
53
59
|
}
|
|
54
60
|
] : [];
|
|
55
61
|
});
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
);
|
|
62
|
+
const name = referenceWalkName(graph);
|
|
63
|
+
const reference = tracks.findIndex((t) => pathOrigin(t.name).name === name);
|
|
59
64
|
if (reference > 0) {
|
|
60
65
|
tracks.unshift(...tracks.splice(reference, 1));
|
|
61
66
|
}
|
|
@@ -279,15 +284,7 @@ function tubeMapLayout(graph) {
|
|
|
279
284
|
}
|
|
280
285
|
function tubeMapColumns(graph, layout) {
|
|
281
286
|
const nodeById = new Map(graph.nodes.map((n) => [n.id, n]));
|
|
282
|
-
const byOrder =
|
|
283
|
-
for (const node of drawnNodes(layout)) {
|
|
284
|
-
const list = byOrder.get(node.order);
|
|
285
|
-
if (list) {
|
|
286
|
-
list.push(node);
|
|
287
|
-
} else {
|
|
288
|
-
byOrder.set(node.order, [node]);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
287
|
+
const byOrder = groupBy(drawnNodes(layout), (node) => node.order);
|
|
291
288
|
const columns = [];
|
|
292
289
|
let end = -Infinity;
|
|
293
290
|
for (const order of [...byOrder.keys()].sort((a, b) => a - b)) {
|
|
@@ -355,9 +352,6 @@ export {
|
|
|
355
352
|
pathSteps,
|
|
356
353
|
tubeMapTracks,
|
|
357
354
|
hasTubeMapPaths,
|
|
358
|
-
tubeWidth,
|
|
359
|
-
mergedRuns,
|
|
360
|
-
boxGraph,
|
|
361
355
|
tubeMapLayout,
|
|
362
356
|
hasTubeMapBackbone,
|
|
363
357
|
tubeMapReferenceLayout
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
joinCuts
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HNWJ4B7S.js";
|
|
4
4
|
import {
|
|
5
5
|
wellKnownSample
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-234NFZS4.js";
|
|
7
7
|
import {
|
|
8
8
|
gfaTables
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Z6XZWPXK.js";
|
|
10
10
|
import {
|
|
11
11
|
panSNMatchesPrefix,
|
|
12
12
|
panSNSample
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-4XWZNPQ2.js";
|
|
14
14
|
|
|
15
15
|
// src/gbzWindow.ts
|
|
16
16
|
import { isReverse, nodeId } from "@gmod/gbz-base";
|
|
@@ -210,6 +210,7 @@ export {
|
|
|
210
210
|
haplotypePrefix,
|
|
211
211
|
haplotypeWanted,
|
|
212
212
|
referenceSamplesOf,
|
|
213
|
+
aliasedSample,
|
|
213
214
|
resolveReferenceSample,
|
|
214
215
|
referencePathQuery,
|
|
215
216
|
nodeLimitError,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
placeOffReference
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MYLAJDKB.js";
|
|
4
4
|
import {
|
|
5
5
|
ROW_HEIGHT_PX
|
|
6
6
|
} from "./chunk-CPMHA4W5.js";
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
backboneNodes,
|
|
9
9
|
backbonePositions,
|
|
10
10
|
referenceSpan
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-RJWPJCIB.js";
|
|
12
12
|
|
|
13
13
|
// src/layout/anchoredLayout.ts
|
|
14
14
|
function rankRows(graph) {
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
placeOffReference
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
parsePanSN
|
|
6
|
-
} from "./chunk-RVS2QCOX.js";
|
|
3
|
+
} from "./chunk-MYLAJDKB.js";
|
|
7
4
|
import {
|
|
8
5
|
ROW_HEIGHT_PX
|
|
9
6
|
} from "./chunk-CPMHA4W5.js";
|
|
@@ -12,14 +9,17 @@ import {
|
|
|
12
9
|
backbonePositions,
|
|
13
10
|
isOffReference,
|
|
14
11
|
referenceSpan
|
|
15
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RJWPJCIB.js";
|
|
13
|
+
import {
|
|
14
|
+
panSNSample
|
|
15
|
+
} from "./chunk-4XWZNPQ2.js";
|
|
16
16
|
|
|
17
17
|
// src/layout/sampleRowLayout.ts
|
|
18
18
|
function contributingSamples(graph, keep) {
|
|
19
19
|
const carried = /* @__PURE__ */ new Map();
|
|
20
20
|
for (const node of graph.nodes) {
|
|
21
21
|
if (isOffReference(node)) {
|
|
22
|
-
const
|
|
22
|
+
const sample = panSNSample(node.stable.refName);
|
|
23
23
|
carried.set(sample, (carried.get(sample) ?? 0) + node.length);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -43,12 +43,12 @@ function sampleRowLayout(graph, region, keep = []) {
|
|
|
43
43
|
span,
|
|
44
44
|
rowY: (node) => {
|
|
45
45
|
const stable = node.stable;
|
|
46
|
-
const row = stable ? rowOf.get(
|
|
46
|
+
const row = stable ? rowOf.get(panSNSample(stable.refName)) : void 0;
|
|
47
47
|
return (row ?? spareRow) * ROW_HEIGHT_PX;
|
|
48
48
|
},
|
|
49
49
|
positions: nodePositions
|
|
50
50
|
});
|
|
51
|
-
const referenceSample =
|
|
51
|
+
const referenceSample = panSNSample(backbone[0].stable.refName);
|
|
52
52
|
const rowLabels = [
|
|
53
53
|
{ label: referenceSample, y: 0 },
|
|
54
54
|
...samples.map((sample) => ({
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
REFERENCE_RAMP_MAX_HUE
|
|
3
|
-
} from "./chunk-A4PFFC4Q.js";
|
|
4
|
-
|
|
5
1
|
// src/referenceRampCss.ts
|
|
2
|
+
var REFERENCE_RAMP_MAX_HUE = 300;
|
|
3
|
+
var REFERENCE_RAMP_SATURATION = 0.7;
|
|
4
|
+
var REFERENCE_RAMP_LIGHTNESS = 0.5;
|
|
6
5
|
function rampHueCss(hue) {
|
|
7
|
-
return `hsl(${hue},
|
|
6
|
+
return `hsl(${hue}, ${REFERENCE_RAMP_SATURATION * 100}%, ${REFERENCE_RAMP_LIGHTNESS * 100}%)`;
|
|
8
7
|
}
|
|
9
|
-
function
|
|
10
|
-
const frac = (bp - domain.start) / (domain.end - domain.start);
|
|
8
|
+
function rampHueAt(frac) {
|
|
11
9
|
return Math.max(0, Math.min(1, frac)) * REFERENCE_RAMP_MAX_HUE;
|
|
12
10
|
}
|
|
11
|
+
function rampHue(bp, domain) {
|
|
12
|
+
return rampHueAt((bp - domain.start) / (domain.end - domain.start));
|
|
13
|
+
}
|
|
13
14
|
var HUE_STOP_DEG = 30;
|
|
14
15
|
function rampStops({ start, bp, reversed }, domain) {
|
|
15
16
|
const low = rampHue(start, domain);
|
|
@@ -32,7 +33,11 @@ var RAMP_GRADIENT_CSS = `linear-gradient(to right, ${RAMP_GRADIENT_STOPS.map(
|
|
|
32
33
|
).join(", ")})`;
|
|
33
34
|
|
|
34
35
|
export {
|
|
36
|
+
REFERENCE_RAMP_MAX_HUE,
|
|
37
|
+
REFERENCE_RAMP_SATURATION,
|
|
38
|
+
REFERENCE_RAMP_LIGHTNESS,
|
|
35
39
|
rampHueCss,
|
|
40
|
+
rampHueAt,
|
|
36
41
|
rampHue,
|
|
37
42
|
rampStops,
|
|
38
43
|
RAMP_GRADIENT_STOPS,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/util/weakMemo.ts
|
|
2
|
+
function weakMemo() {
|
|
3
|
+
const cache = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
return (key, deps, compute) => {
|
|
5
|
+
const hit = cache.get(key);
|
|
6
|
+
if (hit?.deps.length === deps.length && hit.deps.every((d, i) => Object.is(d, deps[i]))) {
|
|
7
|
+
return hit.value;
|
|
8
|
+
}
|
|
9
|
+
const value = compute();
|
|
10
|
+
cache.set(key, { deps, value });
|
|
11
|
+
return value;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export {
|
|
16
|
+
weakMemo
|
|
17
|
+
};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
groupBy
|
|
3
|
+
} from "./chunk-BSOZW3FC.js";
|
|
4
|
+
|
|
1
5
|
// src/gbzJoin.ts
|
|
2
6
|
var UNKNOWN_SAMPLE = "unknown";
|
|
3
7
|
function parseWalk(line) {
|
|
@@ -18,7 +22,7 @@ function segmentLengths(lines) {
|
|
|
18
22
|
const ln = tags.find((tag) => tag.startsWith("LN:i:"));
|
|
19
23
|
lengths.set(
|
|
20
24
|
id,
|
|
21
|
-
sequence
|
|
25
|
+
sequence !== "*" ? sequence.length : ln ? +ln.slice("LN:i:".length) : 0
|
|
22
26
|
);
|
|
23
27
|
}
|
|
24
28
|
}
|
|
@@ -94,18 +98,13 @@ function joinCuts(gfas, startsPath) {
|
|
|
94
98
|
}
|
|
95
99
|
return walks2;
|
|
96
100
|
});
|
|
97
|
-
const byName =
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
pieces.push(walk);
|
|
105
|
-
} else {
|
|
106
|
-
byName.set(walk.name, [walk]);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
101
|
+
const byName = groupBy(
|
|
102
|
+
[
|
|
103
|
+
...walksByCut.flatMap((walks2) => walks2.slice(0, 1)),
|
|
104
|
+
...walksByCut.flatMap((walks2) => walks2.slice(1))
|
|
105
|
+
],
|
|
106
|
+
(walk) => walk.name
|
|
107
|
+
);
|
|
109
108
|
const walks = [...byName.values()].flatMap(
|
|
110
109
|
(pieces) => joinPieces(pieces, lengths, startsPath)
|
|
111
110
|
);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/util/partitionPoint.ts
|
|
2
|
+
function partitionPoint(n, pred) {
|
|
3
|
+
let lo = 0;
|
|
4
|
+
let hi = n;
|
|
5
|
+
while (lo < hi) {
|
|
6
|
+
const mid = lo + hi >> 1;
|
|
7
|
+
if (pred(mid)) {
|
|
8
|
+
lo = mid + 1;
|
|
9
|
+
} else {
|
|
10
|
+
hi = mid;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return lo;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
partitionPoint
|
|
18
|
+
};
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatBp
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PFRQBCGC.js";
|
|
4
|
+
import {
|
|
5
|
+
pushTo
|
|
6
|
+
} from "./chunk-BSOZW3FC.js";
|
|
4
7
|
import {
|
|
5
8
|
isBackbone
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RJWPJCIB.js";
|
|
10
|
+
import {
|
|
11
|
+
partitionPoint
|
|
12
|
+
} from "./chunk-HOAIOEI7.js";
|
|
7
13
|
|
|
8
14
|
// src/tubeMap/axis.ts
|
|
9
15
|
function referenceBoxes({
|
|
@@ -16,8 +22,7 @@ function referenceBoxes({
|
|
|
16
22
|
const graphNode = nodeById.get(node.name);
|
|
17
23
|
if (node.order >= 0 && graphNode && isBackbone(graphNode)) {
|
|
18
24
|
const { refName, start } = graphNode.stable;
|
|
19
|
-
|
|
20
|
-
boxes.push({
|
|
25
|
+
pushTo(byRefName, refName, {
|
|
21
26
|
name: node.name,
|
|
22
27
|
index,
|
|
23
28
|
bp0: start,
|
|
@@ -33,23 +38,15 @@ function referenceBoxes({
|
|
|
33
38
|
return byRefName;
|
|
34
39
|
}
|
|
35
40
|
function tubeX(boxes, bp, isEnd = false) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
} else {
|
|
44
|
-
hi = mid;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
const box = boxes[lo];
|
|
48
|
-
if (bp <= box.bp0) {
|
|
49
|
-
return box.x0;
|
|
50
|
-
}
|
|
41
|
+
const i = partitionPoint(
|
|
42
|
+
boxes.length - 1,
|
|
43
|
+
(j) => isEnd ? boxes[j].bp1 < bp : boxes[j].bp1 <= bp
|
|
44
|
+
);
|
|
45
|
+
return boxX(boxes[i], bp);
|
|
46
|
+
}
|
|
47
|
+
function boxX(box, bp) {
|
|
51
48
|
const span = box.bp1 - box.bp0;
|
|
52
|
-
return span
|
|
49
|
+
return bp <= box.bp0 || span <= 0 ? box.x0 : box.x0 + (Math.min(bp, box.bp1) - box.bp0) / span * (box.x1 - box.x0);
|
|
53
50
|
}
|
|
54
51
|
function tubeSpan(boxes, start, end) {
|
|
55
52
|
const a = tubeX(boxes, start);
|
|
@@ -199,6 +196,7 @@ function drawTubeMapRuler(ctx, boxes, frame, top, referenceAxis = false) {
|
|
|
199
196
|
export {
|
|
200
197
|
referenceBoxes,
|
|
201
198
|
tubeX,
|
|
199
|
+
boxX,
|
|
202
200
|
tubeSpan,
|
|
203
201
|
rulerBoxes,
|
|
204
202
|
rulerInk,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
orientToReference
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3PZSBNLI.js";
|
|
4
4
|
import {
|
|
5
5
|
seededNodes
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CKUVEHSS.js";
|
|
7
7
|
import {
|
|
8
8
|
smoothChain
|
|
9
9
|
} from "./chunk-OPPVSPEF.js";
|
|
@@ -14,38 +14,38 @@ import {
|
|
|
14
14
|
} from "./chunk-VPE4AYP7.js";
|
|
15
15
|
import {
|
|
16
16
|
convertGFAToGraph
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-NZTYV3JL.js";
|
|
18
18
|
import {
|
|
19
19
|
parseGFA
|
|
20
20
|
} from "./chunk-5I3K4R2G.js";
|
|
21
21
|
import {
|
|
22
22
|
graphFromTables
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-DBLV7PGG.js";
|
|
24
24
|
import {
|
|
25
25
|
anchorGraph
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-B5X2RLJG.js";
|
|
27
27
|
import {
|
|
28
28
|
gfaTables
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-Z6XZWPXK.js";
|
|
30
30
|
import {
|
|
31
31
|
mergeRuns,
|
|
32
32
|
splitRuns
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-BZFOFC4D.js";
|
|
34
34
|
import {
|
|
35
35
|
spreadFor
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-HKYXWZQS.js";
|
|
37
37
|
import {
|
|
38
38
|
drawnLengthOf,
|
|
39
39
|
drawnNodeLength,
|
|
40
40
|
layoutScaling
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-34BOZKIE.js";
|
|
42
42
|
import {
|
|
43
43
|
deletionDrawing,
|
|
44
44
|
deletionEdges
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-CGMSKIEO.js";
|
|
46
46
|
import {
|
|
47
47
|
isBackbone
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-RJWPJCIB.js";
|
|
49
49
|
|
|
50
50
|
// src/pipeline.ts
|
|
51
51
|
function graphOf(source, name) {
|
|
@@ -90,11 +90,12 @@ function engineSettingsOf(s = {}) {
|
|
|
90
90
|
var COMPONENT_SEPARATION = 15;
|
|
91
91
|
function engineRequest(graph, scaling, settings) {
|
|
92
92
|
const anchored = graph.nodes.some(isBackbone);
|
|
93
|
+
const s = engineSettingsOf(settings);
|
|
93
94
|
const spaced = {
|
|
94
95
|
...scaling,
|
|
95
96
|
opts: {
|
|
96
97
|
...scaling.opts,
|
|
97
|
-
edgeLength: scaling.opts.edgeLength *
|
|
98
|
+
edgeLength: scaling.opts.edgeLength * s.spacing
|
|
98
99
|
}
|
|
99
100
|
};
|
|
100
101
|
return {
|
|
@@ -103,18 +104,22 @@ function engineRequest(graph, scaling, settings) {
|
|
|
103
104
|
edges: graph.edges
|
|
104
105
|
},
|
|
105
106
|
options: {
|
|
106
|
-
quality:
|
|
107
|
-
linearLayout:
|
|
107
|
+
quality: s.quality,
|
|
108
|
+
linearLayout: s.linearLayout,
|
|
108
109
|
...spaced.opts,
|
|
109
|
-
componentSeparation: COMPONENT_SEPARATION *
|
|
110
|
+
componentSeparation: COMPONENT_SEPARATION * s.componentSeparation,
|
|
110
111
|
...anchored ? { rotateComponents: false } : {},
|
|
111
|
-
engine:
|
|
112
|
+
engine: s.engine
|
|
112
113
|
}
|
|
113
114
|
};
|
|
114
115
|
}
|
|
115
116
|
function engineKey(graph, settings) {
|
|
116
117
|
const anchored = graph.nodes.some(isBackbone);
|
|
117
|
-
return
|
|
118
|
+
return [
|
|
119
|
+
...Object.values(engineSettingsOf(settings)),
|
|
120
|
+
anchored,
|
|
121
|
+
graph.referencePath ?? ""
|
|
122
|
+
].join("|");
|
|
118
123
|
}
|
|
119
124
|
async function forceLayout(graph, settings, engine) {
|
|
120
125
|
const spread = spreadFor(settings.bubbleSpread);
|