@gmod/gbz-base 1.1.0 → 2.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.
- package/README.md +123 -24
- package/dist/cli.js +12 -11
- package/dist/cli.js.map +1 -1
- package/dist/db.d.ts +18 -9
- package/dist/db.js +95 -4
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/pathName.d.ts +17 -0
- package/dist/pathName.js +33 -0
- package/dist/pathName.js.map +1 -0
- package/dist/query.d.ts +8 -10
- package/dist/query.js +7 -19
- package/dist/query.js.map +1 -1
- package/dist/sqlite/btree.d.ts +2 -0
- package/dist/sqlite/btree.js +48 -18
- package/dist/sqlite/btree.js.map +1 -1
- package/dist/subgraph.d.ts +25 -12
- package/dist/subgraph.js +33 -16
- package/dist/subgraph.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +19 -13
- package/src/db.ts +153 -13
- package/src/index.ts +12 -10
- package/src/pathName.ts +54 -0
- package/src/query.ts +17 -32
- package/src/sqlite/btree.ts +61 -17
- package/src/subgraph.ts +59 -30
- package/tools/haplotype-index/src/main.rs +13 -5
package/dist/query.js
CHANGED
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pathNameFor } from "./pathName.js";
|
|
2
2
|
import { Subgraph } from "./subgraph.js";
|
|
3
|
-
function pathName(query, fragment) {
|
|
4
|
-
return {
|
|
5
|
-
sample: query.sample ?? GENERIC_SAMPLE,
|
|
6
|
-
contig: query.contig,
|
|
7
|
-
haplotype: query.haplotype ?? 0,
|
|
8
|
-
fragment,
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
3
|
export async function subgraphAtOffset(db, query, offset, opts = {}) {
|
|
12
|
-
const subgraph = new Subgraph(db);
|
|
13
|
-
|
|
14
|
-
const reference = await subgraph.pathPosition(pathName(query, offset));
|
|
4
|
+
const subgraph = new Subgraph(db, opts);
|
|
5
|
+
const reference = await subgraph.pathPosition(pathNameFor(query, offset));
|
|
15
6
|
await subgraph.aroundPosition(reference.position.handle, reference.position.nodeOffset, opts.context ?? 100);
|
|
16
7
|
await subgraph.extractSnarls(opts.snarls ?? 'none');
|
|
17
8
|
subgraph.extractPaths(reference, opts.haplotypes ?? 'all');
|
|
18
9
|
return subgraph;
|
|
19
10
|
}
|
|
20
11
|
export async function subgraphInInterval(db, query, start, end, opts = {}) {
|
|
21
|
-
const subgraph = new Subgraph(db);
|
|
22
|
-
|
|
23
|
-
const reference = await subgraph.pathPosition(pathName(query, start));
|
|
12
|
+
const subgraph = new Subgraph(db, opts);
|
|
13
|
+
const reference = await subgraph.pathPosition(pathNameFor(query, start));
|
|
24
14
|
await subgraph.aroundInterval(reference.position, end - start, opts.context ?? 100);
|
|
25
15
|
await subgraph.extractSnarls(opts.snarls ?? 'none');
|
|
26
16
|
subgraph.extractPaths(reference, opts.haplotypes ?? 'all');
|
|
@@ -35,8 +25,7 @@ export async function subgraphAroundNodes(db, nodes, opts = {}) {
|
|
|
35
25
|
if (snarls === 'overlapping' && nodes.length > 1) {
|
|
36
26
|
throw new Error('Overlapping snarls cannot be extracted for a node-based query with multiple nodes');
|
|
37
27
|
}
|
|
38
|
-
const subgraph = new Subgraph(db);
|
|
39
|
-
subgraph.limit = opts.limit;
|
|
28
|
+
const subgraph = new Subgraph(db, opts);
|
|
40
29
|
await subgraph.aroundNodes(nodes, opts.context ?? 100);
|
|
41
30
|
await subgraph.extractSnarls(snarls);
|
|
42
31
|
subgraph.extractPaths(undefined, haplotypes);
|
|
@@ -47,8 +36,7 @@ export async function subgraphBetween(db, start, end, opts = {}) {
|
|
|
47
36
|
if (haplotypes === 'reference-only') {
|
|
48
37
|
throw new Error('Cannot output a reference path in a node-based query');
|
|
49
38
|
}
|
|
50
|
-
const subgraph = new Subgraph(db);
|
|
51
|
-
subgraph.limit = opts.limit;
|
|
39
|
+
const subgraph = new Subgraph(db, opts);
|
|
52
40
|
await subgraph.betweenNodes(start, end);
|
|
53
41
|
subgraph.extractPaths(undefined, haplotypes);
|
|
54
42
|
return subgraph;
|
package/dist/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/sqlite/btree.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { SqlValue } from './record.ts';
|
|
|
3
3
|
export declare class BTree {
|
|
4
4
|
private readonly usable;
|
|
5
5
|
private pager;
|
|
6
|
+
private decodedIndexPages;
|
|
6
7
|
constructor(pager: Pager, reservedBytes: number);
|
|
7
8
|
private localPayloadSize;
|
|
8
9
|
private payload;
|
|
@@ -12,6 +13,7 @@ export declare class BTree {
|
|
|
12
13
|
rowid: number;
|
|
13
14
|
values: SqlValue[];
|
|
14
15
|
}>;
|
|
16
|
+
private decodedCells;
|
|
15
17
|
private indexCell;
|
|
16
18
|
indexScanFrom(root: number, low: number[]): AsyncGenerator<SqlValue[]>;
|
|
17
19
|
indexSeekLE(root: number, key: number[]): Promise<SqlValue[] | undefined>;
|
package/dist/sqlite/btree.js
CHANGED
|
@@ -3,8 +3,16 @@ const INTERIOR_INDEX = 0x02;
|
|
|
3
3
|
const INTERIOR_TABLE = 0x05;
|
|
4
4
|
const LEAF_INDEX = 0x0a;
|
|
5
5
|
const LEAF_TABLE = 0x0d;
|
|
6
|
+
function readUint16(page, offset) {
|
|
7
|
+
return page[offset] * 256 + page[offset + 1];
|
|
8
|
+
}
|
|
9
|
+
function readUint32(page, offset) {
|
|
10
|
+
return (page[offset] * 16777216 +
|
|
11
|
+
page[offset + 1] * 65536 +
|
|
12
|
+
page[offset + 2] * 256 +
|
|
13
|
+
page[offset + 3]);
|
|
14
|
+
}
|
|
6
15
|
function readHeader(page, start) {
|
|
7
|
-
const view = new DataView(page.buffer, page.byteOffset, page.byteLength);
|
|
8
16
|
const type = page[start];
|
|
9
17
|
if (type !== INTERIOR_INDEX &&
|
|
10
18
|
type !== INTERIOR_TABLE &&
|
|
@@ -15,22 +23,19 @@ function readHeader(page, start) {
|
|
|
15
23
|
const interior = type === INTERIOR_INDEX || type === INTERIOR_TABLE;
|
|
16
24
|
return {
|
|
17
25
|
type,
|
|
18
|
-
cellCount:
|
|
19
|
-
rightChild: interior ?
|
|
26
|
+
cellCount: readUint16(page, start + 3),
|
|
27
|
+
rightChild: interior ? readUint32(page, start + 8) : 0,
|
|
20
28
|
cellPointers: start + (interior ? 12 : 8),
|
|
21
29
|
};
|
|
22
30
|
}
|
|
23
31
|
function cellOffset(page, header, index) {
|
|
24
|
-
|
|
25
|
-
return view.getUint16(header.cellPointers + 2 * index);
|
|
26
|
-
}
|
|
27
|
-
function readUint32(page, offset) {
|
|
28
|
-
const view = new DataView(page.buffer, page.byteOffset, page.byteLength);
|
|
29
|
-
return view.getUint32(offset);
|
|
32
|
+
return readUint16(page, header.cellPointers + 2 * index);
|
|
30
33
|
}
|
|
34
|
+
const MAX_DECODED_INDEX_PAGES = 4096;
|
|
31
35
|
export class BTree {
|
|
32
36
|
usable;
|
|
33
37
|
pager;
|
|
38
|
+
decodedIndexPages = new Map();
|
|
34
39
|
constructor(pager, reservedBytes) {
|
|
35
40
|
this.pager = pager;
|
|
36
41
|
this.usable = pager.pageSize - reservedBytes;
|
|
@@ -143,12 +148,37 @@ export class BTree {
|
|
|
143
148
|
}
|
|
144
149
|
}
|
|
145
150
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
decodedCells(pageNumber, header) {
|
|
152
|
+
let cells = this.decodedIndexPages.get(pageNumber);
|
|
153
|
+
if (cells) {
|
|
154
|
+
this.decodedIndexPages.delete(pageNumber);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
cells = new Array(header.cellCount);
|
|
158
|
+
if (this.decodedIndexPages.size >= MAX_DECODED_INDEX_PAGES) {
|
|
159
|
+
const oldest = this.decodedIndexPages.keys().next().value;
|
|
160
|
+
if (oldest !== undefined) {
|
|
161
|
+
this.decodedIndexPages.delete(oldest);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
this.decodedIndexPages.set(pageNumber, cells);
|
|
166
|
+
return cells;
|
|
167
|
+
}
|
|
168
|
+
async indexCell(pageNumber, page, header, index) {
|
|
169
|
+
const cells = this.decodedCells(pageNumber, header);
|
|
170
|
+
let cell = cells[index];
|
|
171
|
+
if (!cell) {
|
|
172
|
+
const offset = cellOffset(page, header, index);
|
|
173
|
+
const interior = header.type === INTERIOR_INDEX;
|
|
174
|
+
const [size, afterSize] = readVarint(page, interior ? offset + 4 : offset);
|
|
175
|
+
cell = {
|
|
176
|
+
values: decodeRecord(await this.payload(page, afterSize, size, true)),
|
|
177
|
+
leftChild: interior ? readUint32(page, offset) : 0,
|
|
178
|
+
};
|
|
179
|
+
cells[index] = cell;
|
|
180
|
+
}
|
|
181
|
+
return cell;
|
|
152
182
|
}
|
|
153
183
|
async *indexScanFrom(root, low) {
|
|
154
184
|
const { page, header } = await this.pageAt(root);
|
|
@@ -156,7 +186,7 @@ export class BTree {
|
|
|
156
186
|
let high = header.cellCount;
|
|
157
187
|
while (first < high) {
|
|
158
188
|
const mid = (first + high) >> 1;
|
|
159
|
-
const cell = await this.indexCell(page, header, mid);
|
|
189
|
+
const cell = await this.indexCell(root, page, header, mid);
|
|
160
190
|
if (compareKey(cell.values, low) < 0) {
|
|
161
191
|
first = mid + 1;
|
|
162
192
|
}
|
|
@@ -165,7 +195,7 @@ export class BTree {
|
|
|
165
195
|
}
|
|
166
196
|
}
|
|
167
197
|
for (let i = first; i < header.cellCount; i++) {
|
|
168
|
-
const cell = await this.indexCell(page, header, i);
|
|
198
|
+
const cell = await this.indexCell(root, page, header, i);
|
|
169
199
|
if (header.type === INTERIOR_INDEX) {
|
|
170
200
|
yield* this.indexScanFrom(cell.leftChild, low);
|
|
171
201
|
}
|
|
@@ -185,7 +215,7 @@ export class BTree {
|
|
|
185
215
|
let child = 0;
|
|
186
216
|
while (low < high) {
|
|
187
217
|
const mid = (low + high) >> 1;
|
|
188
|
-
const cell = await this.indexCell(page, header, mid);
|
|
218
|
+
const cell = await this.indexCell(pageNumber, page, header, mid);
|
|
189
219
|
if (compareKey(cell.values, key) <= 0) {
|
|
190
220
|
best = cell.values;
|
|
191
221
|
low = mid + 1;
|
package/dist/sqlite/btree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"btree.js","sourceRoot":"","sources":["../../src/sqlite/btree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"btree.js","sourceRoot":"","sources":["../../src/sqlite/btree.ts"],"names":[],"mappings":"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"}
|
package/dist/subgraph.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { GBZBase
|
|
1
|
+
import type { GBZBase } from './db.ts';
|
|
2
2
|
import type { Orientation } from './gbwt/node.ts';
|
|
3
3
|
import type { Pos } from './gbwt/record.ts';
|
|
4
|
+
import type { PathName } from './pathName.ts';
|
|
4
5
|
export type HaplotypeOutput = 'all' | 'distinct' | 'reference-only' | 'none';
|
|
5
6
|
export type SnarlOutput = 'none' | 'contained' | 'overlapping';
|
|
6
7
|
export interface PathPosition {
|
|
@@ -43,12 +44,8 @@ export interface SubgraphJson {
|
|
|
43
44
|
}[];
|
|
44
45
|
paths: SubgraphPath[];
|
|
45
46
|
}
|
|
46
|
-
export interface
|
|
47
|
-
pathHandle: number | undefined;
|
|
48
|
-
name: PathName | undefined;
|
|
47
|
+
export interface AlignmentSpan {
|
|
49
48
|
strand: '+' | '-';
|
|
50
|
-
hapStart: number | undefined;
|
|
51
|
-
hapEnd: number | undefined;
|
|
52
49
|
refStart: number;
|
|
53
50
|
refEnd: number;
|
|
54
51
|
cigar: string;
|
|
@@ -56,8 +53,23 @@ export interface HaplotypeAlignment {
|
|
|
56
53
|
path: number[];
|
|
57
54
|
start: Pos;
|
|
58
55
|
}
|
|
59
|
-
export
|
|
60
|
-
|
|
56
|
+
export type HaplotypeAlignment = AlignmentSpan & ({
|
|
57
|
+
resolved: true;
|
|
58
|
+
name: PathName;
|
|
59
|
+
label: string;
|
|
60
|
+
pathHandle: number;
|
|
61
|
+
hapStart: number;
|
|
62
|
+
hapEnd: number;
|
|
63
|
+
} | {
|
|
64
|
+
resolved: false;
|
|
65
|
+
});
|
|
66
|
+
export interface SubgraphOutputOptions {
|
|
67
|
+
cigar?: boolean | undefined;
|
|
68
|
+
names?: 'anonymous' | 'resolved' | undefined;
|
|
69
|
+
}
|
|
70
|
+
export interface SubgraphOptions {
|
|
71
|
+
limit?: number | undefined;
|
|
72
|
+
signal?: AbortSignal | undefined;
|
|
61
73
|
}
|
|
62
74
|
export declare class Subgraph {
|
|
63
75
|
private records;
|
|
@@ -68,7 +80,6 @@ export declare class Subgraph {
|
|
|
68
80
|
private refInterval;
|
|
69
81
|
private refIndexCache;
|
|
70
82
|
private refPrefixCache;
|
|
71
|
-
limit: number | undefined;
|
|
72
83
|
readonly stats: {
|
|
73
84
|
orderedAlignments: number;
|
|
74
85
|
lcsAlignments: number;
|
|
@@ -76,7 +87,9 @@ export declare class Subgraph {
|
|
|
76
87
|
identificationFetches: number;
|
|
77
88
|
};
|
|
78
89
|
private db;
|
|
79
|
-
|
|
90
|
+
private readonly limit;
|
|
91
|
+
private readonly signal;
|
|
92
|
+
constructor(db: GBZBase, opts?: SubgraphOptions);
|
|
80
93
|
get nodeCount(): number;
|
|
81
94
|
get pathCount(): number;
|
|
82
95
|
get referenceInterval(): {
|
|
@@ -127,6 +140,6 @@ export declare class Subgraph {
|
|
|
127
140
|
alignments(): HaplotypeAlignment[];
|
|
128
141
|
private canonicalEdges;
|
|
129
142
|
stableName(): Promise<string>;
|
|
130
|
-
toGFA(
|
|
131
|
-
|
|
143
|
+
toGFA(opts?: SubgraphOutputOptions): Promise<string>;
|
|
144
|
+
toSubgraphJson(opts?: SubgraphOutputOptions): SubgraphJson;
|
|
132
145
|
}
|
package/dist/subgraph.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { formatPathName } from "./db.js";
|
|
2
1
|
import { ENDMARKER, edgeIsCanonical, encodeNode, entryOrientation, entrySide, exitOrientation, exitSide, flipNode, flipSide, isReverse, nodeId, nodeOrientation, pathIsCanonical, } from "./gbwt/node.js";
|
|
3
2
|
import { gfaHeaderLines, sha256Hex, subgraphName } from "./graphName.js";
|
|
4
3
|
import { weightedLcs } from "./lcs.js";
|
|
4
|
+
import { formatPathName } from "./pathName.js";
|
|
5
5
|
function sideBefore(a, b) {
|
|
6
6
|
return (a[0] < b[0] ||
|
|
7
7
|
(a[0] === b[0] && (a[1] < b[1] || (a[1] === b[1] && a[2] < b[2]))));
|
|
@@ -67,7 +67,6 @@ export class Subgraph {
|
|
|
67
67
|
refInterval;
|
|
68
68
|
refIndexCache;
|
|
69
69
|
refPrefixCache;
|
|
70
|
-
limit;
|
|
71
70
|
stats = {
|
|
72
71
|
orderedAlignments: 0,
|
|
73
72
|
lcsAlignments: 0,
|
|
@@ -75,8 +74,12 @@ export class Subgraph {
|
|
|
75
74
|
identificationFetches: 0,
|
|
76
75
|
};
|
|
77
76
|
db;
|
|
78
|
-
|
|
77
|
+
limit;
|
|
78
|
+
signal;
|
|
79
|
+
constructor(db, opts = {}) {
|
|
79
80
|
this.db = db;
|
|
81
|
+
this.limit = opts.limit;
|
|
82
|
+
this.signal = opts.signal;
|
|
80
83
|
}
|
|
81
84
|
get nodeCount() {
|
|
82
85
|
return this.records.size / 2;
|
|
@@ -110,6 +113,7 @@ export class Subgraph {
|
|
|
110
113
|
return [...this.records.keys()].sort((a, b) => a - b);
|
|
111
114
|
}
|
|
112
115
|
async addNode(id) {
|
|
116
|
+
this.signal?.throwIfAborted();
|
|
113
117
|
if (this.limit !== undefined && this.nodeCount >= this.limit) {
|
|
114
118
|
throw new Error(`Subgraph size limit of ${this.limit} nodes exceeded`);
|
|
115
119
|
}
|
|
@@ -608,6 +612,7 @@ export class Subgraph {
|
|
|
608
612
|
let current = start;
|
|
609
613
|
let pos;
|
|
610
614
|
while (anchor === undefined) {
|
|
615
|
+
this.signal?.throwIfAborted();
|
|
611
616
|
if (current !== undefined) {
|
|
612
617
|
if (visited.has(current)) {
|
|
613
618
|
break;
|
|
@@ -886,23 +891,16 @@ export class Subgraph {
|
|
|
886
891
|
last -= 1;
|
|
887
892
|
}
|
|
888
893
|
const identity = info.identity;
|
|
889
|
-
const
|
|
894
|
+
const walkStrand = info.path.some(handle => isReverse(handle)) &&
|
|
890
895
|
!info.path.some(handle => !isReverse(handle))
|
|
891
896
|
? '-'
|
|
892
897
|
: '+';
|
|
893
|
-
|
|
894
|
-
pathHandle: identity?.pathHandle,
|
|
895
|
-
name: identity?.name,
|
|
898
|
+
const span = {
|
|
896
899
|
strand: identity
|
|
897
900
|
? identity.orientation === 'forward'
|
|
898
901
|
? '+'
|
|
899
902
|
: '-'
|
|
900
|
-
:
|
|
901
|
-
hapStart: identity
|
|
902
|
-
? identity.name.fragment + identity.hapStart
|
|
903
|
-
: undefined,
|
|
904
|
-
hapEnd: identity ? identity.name.fragment + identity.hapEnd : undefined,
|
|
905
|
-
start: info.positions[0],
|
|
903
|
+
: walkStrand,
|
|
906
904
|
refStart: reference.start + leading,
|
|
907
905
|
refEnd: reference.start + refTotal - trailing,
|
|
908
906
|
cigar: edits
|
|
@@ -911,7 +909,24 @@ export class Subgraph {
|
|
|
911
909
|
.join(''),
|
|
912
910
|
weight: info.weight,
|
|
913
911
|
path: info.path,
|
|
914
|
-
|
|
912
|
+
start: info.positions[0],
|
|
913
|
+
};
|
|
914
|
+
if (identity) {
|
|
915
|
+
const hapStart = identity.name.fragment + identity.hapStart;
|
|
916
|
+
const hapEnd = identity.name.fragment + identity.hapEnd;
|
|
917
|
+
result.push({
|
|
918
|
+
...span,
|
|
919
|
+
resolved: true,
|
|
920
|
+
name: identity.name,
|
|
921
|
+
label: formatPathName({ ...identity.name, fragment: hapStart }, hapEnd),
|
|
922
|
+
pathHandle: identity.pathHandle,
|
|
923
|
+
hapStart,
|
|
924
|
+
hapEnd,
|
|
925
|
+
});
|
|
926
|
+
}
|
|
927
|
+
else {
|
|
928
|
+
result.push({ ...span, resolved: false });
|
|
929
|
+
}
|
|
915
930
|
});
|
|
916
931
|
return result;
|
|
917
932
|
}
|
|
@@ -950,7 +965,8 @@ export class Subgraph {
|
|
|
950
965
|
}
|
|
951
966
|
return sha256Hex(chunks);
|
|
952
967
|
}
|
|
953
|
-
async toGFA(
|
|
968
|
+
async toGFA(opts = {}) {
|
|
969
|
+
const cigar = opts.cigar ?? false;
|
|
954
970
|
const lines = [
|
|
955
971
|
this.refPath ? `H\tVN:Z:1.1\tRS:Z:${this.refPath.sample}` : 'H\tVN:Z:1.1',
|
|
956
972
|
...gfaHeaderLines(subgraphName(await this.stableName(), await this.db.graphName())),
|
|
@@ -1000,7 +1016,8 @@ export class Subgraph {
|
|
|
1000
1016
|
});
|
|
1001
1017
|
return `${lines.join('\n')}\n`;
|
|
1002
1018
|
}
|
|
1003
|
-
|
|
1019
|
+
toSubgraphJson(opts = {}) {
|
|
1020
|
+
const cigar = opts.cigar ?? false;
|
|
1004
1021
|
const handles = this.sortedHandles();
|
|
1005
1022
|
const nodes = handles
|
|
1006
1023
|
.filter(handle => !isReverse(handle))
|