@jbrowse/bandage-core 0.1.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/LICENSE +674 -0
- package/README.md +29 -0
- package/dist/chunks/bandage-layout-3AR6BCUD.js +4694 -0
- package/dist/index.js +5409 -0
- package/dist/types/alleleProjection/projectAlleles.d.ts +13 -0
- package/dist/types/anchoredNodes.d.ts +17 -0
- package/dist/types/bandage/bandage-layout.d.ts +14 -0
- package/dist/types/bubbleSpreads.d.ts +32 -0
- package/dist/types/bubbles/bubbleHalos.d.ts +20 -0
- package/dist/types/bubbles/bubbleLine.d.ts +24 -0
- package/dist/types/bubbles/bubblesFromGraph.d.ts +3 -0
- package/dist/types/bubbles/classifyBubble.d.ts +16 -0
- package/dist/types/bubbles/popBubble.d.ts +2 -0
- package/dist/types/colorSchemes.d.ts +33 -0
- package/dist/types/deletionEdges.d.ts +24 -0
- package/dist/types/gaf/parseGaf.d.ts +37 -0
- package/dist/types/gbzWindow.d.ts +27 -0
- package/dist/types/genes/genePins.d.ts +19 -0
- package/dist/types/gfa/gfaConverter.d.ts +11 -0
- package/dist/types/gfa-core/gfaParser.d.ts +48 -0
- package/dist/types/gfa-core/index.d.ts +2 -0
- package/dist/types/graphLabels.d.ts +46 -0
- package/dist/types/index.d.ts +50 -0
- package/dist/types/labelLayout.d.ts +59 -0
- package/dist/types/layout/anchoredLayout.d.ts +5 -0
- package/dist/types/layout/drawnScale.d.ts +28 -0
- package/dist/types/layout/mergeRuns.d.ts +9 -0
- package/dist/types/layout/orderedLayout.d.ts +9 -0
- package/dist/types/layout/orientToReference.d.ts +4 -0
- package/dist/types/layout/placeOffReference.d.ts +9 -0
- package/dist/types/layout/referenceSeeds.d.ts +12 -0
- package/dist/types/layout/rowSpacing.d.ts +1 -0
- package/dist/types/layout/sampleRowLayout.d.ts +5 -0
- package/dist/types/layout/tubeMapLayout.d.ts +19 -0
- package/dist/types/layout/variantMapLayout.d.ts +2 -0
- package/dist/types/layout/walkRowLayout.d.ts +10 -0
- package/dist/types/layout/walkRows.d.ts +25 -0
- package/dist/types/layoutModes.d.ts +153 -0
- package/dist/types/loadBandage.d.ts +3 -0
- package/dist/types/nodeWidths.d.ts +18 -0
- package/dist/types/overlayLabels.d.ts +29 -0
- package/dist/types/pansn.d.ts +8 -0
- package/dist/types/pathAnchoring.d.ts +20 -0
- package/dist/types/pathColors.d.ts +14 -0
- package/dist/types/pipeline.d.ts +79 -0
- package/dist/types/referenceSpan.d.ts +12 -0
- package/dist/types/renderer/Canvas2DRenderer.d.ts +32 -0
- package/dist/types/renderer/GeometryBuilder.d.ts +63 -0
- package/dist/types/renderer/colorBits.d.ts +2 -0
- package/dist/types/renderer/types.d.ts +50 -0
- package/dist/types/tubeMap/draw.d.ts +66 -0
- package/dist/types/tubeMap/frame.d.ts +15 -0
- package/dist/types/tubeMap/mismatches.d.ts +24 -0
- package/dist/types/tubeMap/reads.d.ts +10 -0
- package/dist/types/tubeMap/warp.d.ts +7 -0
- package/dist/types/types.d.ts +75 -0
- package/dist/types/util/SpatialIndex.d.ts +25 -0
- package/dist/types/util/edgeCurves.d.ts +4 -0
- package/dist/types/util/geometry.d.ts +46 -0
- package/dist/types/util/hitDetection.d.ts +10 -0
- package/dist/types/util/wheelZoom.d.ts +5 -0
- package/dist/types/viewport.d.ts +22 -0
- package/dist/types/walkHighlight.d.ts +10 -0
- package/package.json +43 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { GafRecord } from './gaf/parseGaf';
|
|
2
|
+
import type { StableCoordinate } from './gfa-core/index';
|
|
3
|
+
import type { TubeMapDrawing } from './layout/tubeMapLayout';
|
|
4
|
+
export interface GraphNode {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
length: number;
|
|
8
|
+
depth: number;
|
|
9
|
+
stable?: StableCoordinate;
|
|
10
|
+
samples?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface GraphEdge {
|
|
13
|
+
from: string;
|
|
14
|
+
to: string;
|
|
15
|
+
fromStrand?: '+' | '-';
|
|
16
|
+
toStrand?: '+' | '-';
|
|
17
|
+
pathIds?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface GraphPath {
|
|
20
|
+
name: string;
|
|
21
|
+
nodeIds: string[];
|
|
22
|
+
sample?: string;
|
|
23
|
+
haplotype?: number;
|
|
24
|
+
contig?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface PathOrigin {
|
|
27
|
+
name: string;
|
|
28
|
+
sample: string;
|
|
29
|
+
start: number;
|
|
30
|
+
length: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PathVisit {
|
|
33
|
+
path: string;
|
|
34
|
+
sample: string;
|
|
35
|
+
start: number;
|
|
36
|
+
strand: '+' | '-';
|
|
37
|
+
}
|
|
38
|
+
export interface Graph {
|
|
39
|
+
name: string;
|
|
40
|
+
nodes: GraphNode[];
|
|
41
|
+
edges: GraphEdge[];
|
|
42
|
+
paths?: GraphPath[];
|
|
43
|
+
anchorPaths?: PathOrigin[];
|
|
44
|
+
pathVisits?: Map<string, PathVisit[]>;
|
|
45
|
+
anchoredBy?: 'tags' | 'paths';
|
|
46
|
+
referencePath?: string;
|
|
47
|
+
reads?: GafRecord[];
|
|
48
|
+
}
|
|
49
|
+
export interface NodeSegment {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
}
|
|
53
|
+
export interface RowLabel {
|
|
54
|
+
label: string;
|
|
55
|
+
y: number;
|
|
56
|
+
}
|
|
57
|
+
export interface AlleleDeletion {
|
|
58
|
+
nodeIds: string[];
|
|
59
|
+
bp: number;
|
|
60
|
+
}
|
|
61
|
+
export interface LayoutResult {
|
|
62
|
+
nodePositions: Record<string, NodeSegment[]>;
|
|
63
|
+
rowLabels?: RowLabel[];
|
|
64
|
+
sampleRows?: string[];
|
|
65
|
+
alleleDeletions?: AlleleDeletion[];
|
|
66
|
+
referenceAxis?: boolean;
|
|
67
|
+
pixelRows?: boolean;
|
|
68
|
+
extent?: {
|
|
69
|
+
minX?: number;
|
|
70
|
+
minY?: number;
|
|
71
|
+
maxX?: number;
|
|
72
|
+
maxY?: number;
|
|
73
|
+
};
|
|
74
|
+
tubeMap?: TubeMapDrawing;
|
|
75
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Graph, NodeSegment } from '../types';
|
|
2
|
+
import type { AxisScale } from './geometry';
|
|
3
|
+
interface CellEntry {
|
|
4
|
+
nodeId: string;
|
|
5
|
+
segmentIdx: number;
|
|
6
|
+
}
|
|
7
|
+
export interface CellSize {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class SpatialIndex {
|
|
12
|
+
private cellSize;
|
|
13
|
+
private cells;
|
|
14
|
+
constructor(nodePositions: Record<string, NodeSegment[]>, cellSize?: number | CellSize);
|
|
15
|
+
query(x: number, y: number, radiusX: number, radiusY?: number): CellEntry[];
|
|
16
|
+
}
|
|
17
|
+
export declare class EdgeSpatialIndex {
|
|
18
|
+
private cellSize;
|
|
19
|
+
private cells;
|
|
20
|
+
private edgeCurves;
|
|
21
|
+
constructor(nodePositions: Record<string, NodeSegment[]>, graph: Graph, drawPaths: boolean, axis: AxisScale, cellSize?: number | CellSize, deletions?: Map<number, string[]>, version?: number);
|
|
22
|
+
getCurves(ei: number): import("./geometry").BezierCurve[] | undefined;
|
|
23
|
+
query(x: number, y: number, radiusX: number, radiusY?: number): number[];
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Graph, NodeSegment } from '../types';
|
|
2
|
+
import type { AxisScale, BezierCurve } from './geometry';
|
|
3
|
+
export type EdgeCurves = Map<number, BezierCurve[]>;
|
|
4
|
+
export declare function baseEdgeCurves(nodePositions: Record<string, NodeSegment[]>, graph: Graph, axis: AxisScale, deletions: Map<number, string[]> | undefined, version: number): EdgeCurves;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { GraphEdge, NodeSegment } from '../types';
|
|
2
|
+
export declare function svgPath(points: NodeSegment[]): string;
|
|
3
|
+
export declare function projectLine(x1: number, y1: number, x2: number, y2: number, distance: number): [number, number];
|
|
4
|
+
export interface BezierCurve {
|
|
5
|
+
x0: number;
|
|
6
|
+
y0: number;
|
|
7
|
+
cx0: number;
|
|
8
|
+
cy0: number;
|
|
9
|
+
cx1: number;
|
|
10
|
+
cy1: number;
|
|
11
|
+
x1: number;
|
|
12
|
+
y1: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function curvePointAt(c: BezierCurve, t: number): {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
};
|
|
18
|
+
export declare function curveMidpoint(curves: BezierCurve[]): {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
} | undefined;
|
|
22
|
+
export declare function curveBounds(curves: BezierCurve[]): {
|
|
23
|
+
minX: number;
|
|
24
|
+
minY: number;
|
|
25
|
+
maxX: number;
|
|
26
|
+
maxY: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function dashCurves(curves: BezierCurve[], dashWorld: number): BezierCurve[][];
|
|
29
|
+
export declare function translateCurves(curves: BezierCurve[], dx: number, dy: number): BezierCurve[];
|
|
30
|
+
type Side = 'start' | 'end';
|
|
31
|
+
export declare function bowAround(p1x: number, p1y: number, p2x: number, p2y: number, toward: NodeSegment[], maxBow?: number): number;
|
|
32
|
+
export interface AxisScale {
|
|
33
|
+
scaleX: number;
|
|
34
|
+
scaleY: number;
|
|
35
|
+
pixelRows?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare function yToXOf({ scaleX, scaleY }: AxisScale): number;
|
|
38
|
+
export declare const PATH_RIBBON_SPACING = 3;
|
|
39
|
+
export declare function pathRibbonOffsets(fromSegments: NodeSegment[], toSegments: NodeSegment[], count: number, axis: AxisScale, spacing?: number): {
|
|
40
|
+
x: number;
|
|
41
|
+
y: number;
|
|
42
|
+
}[];
|
|
43
|
+
export type SelfLink = boolean | Side;
|
|
44
|
+
export declare function selfLinkOf(edge: GraphEdge): SelfLink;
|
|
45
|
+
export declare function computeEdgeCurves(fromSegments: NodeSegment[], toSegments: NodeSegment[], selfLink: SelfLink, offsetX: number, offsetY: number, axis: AxisScale, bypassed?: NodeSegment[], maxBowIn?: number): BezierCurve[];
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Graph, NodeSegment } from '../types';
|
|
2
|
+
import type { AxisScale } from './geometry';
|
|
3
|
+
export declare function distanceToSegment(px: number, py: number, x1: number, y1: number, x2: number, y2: number): number;
|
|
4
|
+
export declare function distanceToCubicBezier(px: number, py: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number): number;
|
|
5
|
+
export interface NodeInk {
|
|
6
|
+
halfWidthPx: (nodeId: string) => number;
|
|
7
|
+
maxHalfWidthPx: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function findHoveredNode(nodePositions: Record<string, NodeSegment[]>, graphX: number, graphY: number, axis: AxisScale, version?: number, ink?: NodeInk): string | null;
|
|
10
|
+
export declare function findHoveredEdge(nodePositions: Record<string, NodeSegment[]>, graph: Graph, graphX: number, graphY: number, axis: AxisScale, drawPaths: boolean, version?: number, deletions?: Map<number, string[]>, hiddenEdges?: ReadonlySet<number>): number | null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Bounds } from './pipeline';
|
|
2
|
+
import type { AxisScale } from './util/geometry';
|
|
3
|
+
export interface PaneTransform {
|
|
4
|
+
scale: number;
|
|
5
|
+
translateX: number;
|
|
6
|
+
translateY: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function axisScaleOf(scale: number, pixelRows: boolean): AxisScale;
|
|
9
|
+
export declare function viewportOf(t: {
|
|
10
|
+
translateX: number;
|
|
11
|
+
translateY: number;
|
|
12
|
+
}, axis: AxisScale, width: number, height: number): Bounds;
|
|
13
|
+
export declare function padded(v: Bounds, panes: number): Bounds;
|
|
14
|
+
export declare function contains(outer: Bounds, inner: Bounds): boolean;
|
|
15
|
+
export declare function zoomAbout(t: PaneTransform, factor: number, centerX: number, centerY: number, pixelRows: boolean): PaneTransform;
|
|
16
|
+
export declare function screenToLayout(x: number, y: number, t: {
|
|
17
|
+
translateX: number;
|
|
18
|
+
translateY: number;
|
|
19
|
+
}, axis: AxisScale): {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Graph } from './types';
|
|
2
|
+
export interface WalkHighlight {
|
|
3
|
+
name: string;
|
|
4
|
+
nodeIds: Set<string>;
|
|
5
|
+
edgeIndexes: Set<number>;
|
|
6
|
+
steps: number;
|
|
7
|
+
bp: number;
|
|
8
|
+
referenceBp?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function walkHighlight(graph: Graph, name: string): WalkHighlight | undefined;
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jbrowse/bandage-core",
|
|
3
|
+
"version": "0.1.1",
|
|
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
|
+
"license": "GPL-3.0-or-later",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/GMOD/jbrowse-plugin-graphgenomeviewer.git",
|
|
9
|
+
"directory": "packages/core"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"pangenome",
|
|
13
|
+
"graph",
|
|
14
|
+
"gfa",
|
|
15
|
+
"bandage"
|
|
16
|
+
],
|
|
17
|
+
"type": "module",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/types/index.d.ts",
|
|
21
|
+
"default": "./dist/index.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist"
|
|
29
|
+
],
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@gmod/gbz-base": "^2.8.0",
|
|
32
|
+
"@gmod/tubemap-core": "^0.1.0",
|
|
33
|
+
"@jbrowse/core": "5.0.0-beta.9",
|
|
34
|
+
"@jbrowse/render-core": "5.0.0-beta.9"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"esbuild": "^0.28.2",
|
|
38
|
+
"typescript": "^6.0.3"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "node build.mjs"
|
|
42
|
+
}
|
|
43
|
+
}
|