@gmod/gbz-base 0.0.1 → 1.1.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 +45 -4
- package/bin/query.js +3 -1
- package/dist/cli.js +85 -19
- package/dist/cli.js.map +1 -0
- package/dist/db.d.ts +14 -6
- package/dist/db.js +92 -28
- package/dist/db.js.map +1 -0
- package/dist/filehandle.js +1 -0
- package/dist/filehandle.js.map +1 -0
- package/dist/gbwt/bytecode.d.ts +1 -1
- package/dist/gbwt/bytecode.js +7 -3
- package/dist/gbwt/bytecode.js.map +1 -0
- package/dist/gbwt/node.js +7 -2
- package/dist/gbwt/node.js.map +1 -0
- package/dist/gbwt/record.d.ts +4 -0
- package/dist/gbwt/record.js +30 -2
- package/dist/gbwt/record.js.map +1 -0
- package/dist/gbwt/sequence.js +8 -1
- package/dist/gbwt/sequence.js.map +1 -0
- package/dist/graphName.d.ts +9 -0
- package/dist/graphName.js +83 -0
- package/dist/graphName.js.map +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -0
- package/dist/lcs.js +32 -10
- package/dist/lcs.js.map +1 -0
- package/dist/query.d.ts +4 -2
- package/dist/query.js +19 -0
- package/dist/query.js.map +1 -0
- package/dist/sqlite/btree.d.ts +1 -1
- package/dist/sqlite/btree.js +24 -7
- package/dist/sqlite/btree.js.map +1 -0
- package/dist/sqlite/database.d.ts +1 -1
- package/dist/sqlite/database.js +12 -2
- package/dist/sqlite/database.js.map +1 -0
- package/dist/sqlite/pager.d.ts +8 -3
- package/dist/sqlite/pager.js +71 -12
- package/dist/sqlite/pager.js.map +1 -0
- package/dist/sqlite/record.js +3 -1
- package/dist/sqlite/record.js.map +1 -0
- package/dist/subgraph.d.ts +12 -2
- package/dist/subgraph.js +413 -84
- package/dist/subgraph.js.map +1 -0
- package/package.json +36 -11
- package/src/cli.ts +258 -0
- package/src/db.ts +374 -0
- package/src/filehandle.ts +4 -0
- package/src/gbwt/bytecode.ts +87 -0
- package/src/gbwt/node.ts +64 -0
- package/src/gbwt/record.ts +177 -0
- package/src/gbwt/sequence.ts +50 -0
- package/src/graphName.ts +94 -0
- package/src/index.ts +34 -0
- package/src/lcs.ts +282 -0
- package/src/query.ts +106 -0
- package/src/sqlite/btree.ts +260 -0
- package/src/sqlite/database.ts +117 -0
- package/src/sqlite/pager.ts +148 -0
- package/src/sqlite/record.ts +100 -0
- package/src/subgraph.ts +1353 -0
- package/tools/haplotype-index/src/main.rs +197 -163
package/dist/sqlite/pager.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export class Pager {
|
|
2
|
-
source;
|
|
3
|
-
pageSize;
|
|
4
|
-
fileSize;
|
|
5
2
|
blocks = new Map();
|
|
6
3
|
blockSize;
|
|
7
4
|
maxBlocks;
|
|
8
5
|
bytesFetched = 0;
|
|
9
6
|
fetches = 0;
|
|
7
|
+
source;
|
|
8
|
+
pageSize;
|
|
9
|
+
fileSize;
|
|
10
10
|
constructor(source, pageSize, fileSize, opts = {}) {
|
|
11
11
|
this.source = source;
|
|
12
12
|
this.pageSize = pageSize;
|
|
@@ -15,8 +15,26 @@ export class Pager {
|
|
|
15
15
|
this.blockSize = Math.max(pageSize, Math.ceil(requested / pageSize) * pageSize);
|
|
16
16
|
this.maxBlocks = opts.maxBlocks ?? 256;
|
|
17
17
|
}
|
|
18
|
+
async read(length, start) {
|
|
19
|
+
let attempt = 0;
|
|
20
|
+
for (;;) {
|
|
21
|
+
try {
|
|
22
|
+
const bytes = await this.source.read(length, start);
|
|
23
|
+
this.bytesFetched += bytes.length;
|
|
24
|
+
return bytes;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
attempt += 1;
|
|
28
|
+
if (attempt >= 3) {
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
await new Promise(resolve => setTimeout(resolve, 200 * attempt));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
18
35
|
seed(index, bytes) {
|
|
19
|
-
if (bytes.length ===
|
|
36
|
+
if (bytes.length ===
|
|
37
|
+
Math.min(this.blockSize, this.fileSize - index * this.blockSize)) {
|
|
20
38
|
this.blocks.set(index, Promise.resolve(bytes));
|
|
21
39
|
}
|
|
22
40
|
}
|
|
@@ -29,19 +47,59 @@ export class Pager {
|
|
|
29
47
|
}
|
|
30
48
|
const start = index * this.blockSize;
|
|
31
49
|
const length = Math.min(this.blockSize, this.fileSize - start);
|
|
32
|
-
const pending = this.
|
|
33
|
-
this.bytesFetched += bytes.length;
|
|
34
|
-
return bytes;
|
|
35
|
-
});
|
|
50
|
+
const pending = this.read(length, start);
|
|
36
51
|
this.fetches += 1;
|
|
37
52
|
this.blocks.set(index, pending);
|
|
38
|
-
|
|
53
|
+
this.forgetOnFailure(pending, [index]);
|
|
54
|
+
this.evict();
|
|
55
|
+
return pending;
|
|
56
|
+
}
|
|
57
|
+
prefetch(pageNumbers) {
|
|
58
|
+
const wanted = [
|
|
59
|
+
...new Set(pageNumbers.map(pageNumber => Math.floor(((pageNumber - 1) * this.pageSize) / this.blockSize))),
|
|
60
|
+
]
|
|
61
|
+
.filter(index => !this.blocks.has(index))
|
|
62
|
+
.sort((a, b) => a - b);
|
|
63
|
+
let runStart = 0;
|
|
64
|
+
while (runStart < wanted.length) {
|
|
65
|
+
let runEnd = runStart + 1;
|
|
66
|
+
while (runEnd < wanted.length &&
|
|
67
|
+
wanted[runEnd] === wanted[runEnd - 1] + 1) {
|
|
68
|
+
runEnd += 1;
|
|
69
|
+
}
|
|
70
|
+
this.fetchRun(wanted[runStart], runEnd - runStart);
|
|
71
|
+
runStart = runEnd;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
fetchRun(firstIndex, count) {
|
|
75
|
+
const start = firstIndex * this.blockSize;
|
|
76
|
+
const length = Math.min(count * this.blockSize, this.fileSize - start);
|
|
77
|
+
const pending = this.read(length, start);
|
|
78
|
+
this.fetches += 1;
|
|
79
|
+
const indexes = [];
|
|
80
|
+
for (let i = 0; i < count; i++) {
|
|
81
|
+
const within = i * this.blockSize;
|
|
82
|
+
indexes.push(firstIndex + i);
|
|
83
|
+
this.blocks.set(firstIndex + i, pending.then(bytes => bytes.subarray(within, within + this.blockSize)));
|
|
84
|
+
}
|
|
85
|
+
this.forgetOnFailure(pending, indexes);
|
|
86
|
+
this.evict();
|
|
87
|
+
}
|
|
88
|
+
forgetOnFailure(pending, indexes) {
|
|
89
|
+
pending.catch(() => {
|
|
90
|
+
for (const index of indexes) {
|
|
91
|
+
this.blocks.delete(index);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
evict() {
|
|
96
|
+
while (this.blocks.size > this.maxBlocks) {
|
|
39
97
|
const oldest = this.blocks.keys().next().value;
|
|
40
|
-
if (oldest
|
|
41
|
-
|
|
98
|
+
if (oldest === undefined) {
|
|
99
|
+
break;
|
|
42
100
|
}
|
|
101
|
+
this.blocks.delete(oldest);
|
|
43
102
|
}
|
|
44
|
-
return pending;
|
|
45
103
|
}
|
|
46
104
|
async page(pageNumber) {
|
|
47
105
|
const offset = (pageNumber - 1) * this.pageSize;
|
|
@@ -53,3 +111,4 @@ export class Pager {
|
|
|
53
111
|
return bytes.subarray(within, within + this.pageSize);
|
|
54
112
|
}
|
|
55
113
|
}
|
|
114
|
+
//# sourceMappingURL=pager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager.js","sourceRoot":"","sources":["../../src/sqlite/pager.ts"],"names":[],"mappings":"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"}
|
package/dist/sqlite/record.js
CHANGED
|
@@ -34,7 +34,8 @@ function readSignedInt(view, offset, width) {
|
|
|
34
34
|
return view.getInt16(offset) * 4294967296 + view.getUint32(offset + 2);
|
|
35
35
|
default: {
|
|
36
36
|
const big = view.getBigInt64(offset);
|
|
37
|
-
if (big > BigInt(Number.MAX_SAFE_INTEGER) ||
|
|
37
|
+
if (big > BigInt(Number.MAX_SAFE_INTEGER) ||
|
|
38
|
+
big < BigInt(Number.MIN_SAFE_INTEGER)) {
|
|
38
39
|
throw new Error(`SQLite integer ${big} exceeds the safe integer range`);
|
|
39
40
|
}
|
|
40
41
|
return Number(big);
|
|
@@ -83,3 +84,4 @@ export function decodeRecord(payload) {
|
|
|
83
84
|
throw new Error(`SQLite serial type ${type} is reserved`);
|
|
84
85
|
});
|
|
85
86
|
}
|
|
87
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/sqlite/record.ts"],"names":[],"mappings":"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"}
|
package/dist/subgraph.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { GBZBase, PathName } from './db.ts';
|
|
2
|
-
import type { Pos } from './gbwt/record.ts';
|
|
3
2
|
import type { Orientation } from './gbwt/node.ts';
|
|
3
|
+
import type { Pos } from './gbwt/record.ts';
|
|
4
4
|
export type HaplotypeOutput = 'all' | 'distinct' | 'reference-only' | 'none';
|
|
5
|
+
export type SnarlOutput = 'none' | 'contained' | 'overlapping';
|
|
5
6
|
export interface PathPosition {
|
|
6
7
|
seqOffset: number;
|
|
7
8
|
handle: number;
|
|
@@ -59,7 +60,6 @@ export interface ToJsonOptions {
|
|
|
59
60
|
names?: 'anonymous' | 'resolved';
|
|
60
61
|
}
|
|
61
62
|
export declare class Subgraph {
|
|
62
|
-
private db;
|
|
63
63
|
private records;
|
|
64
64
|
private paths;
|
|
65
65
|
private refId;
|
|
@@ -75,6 +75,7 @@ export declare class Subgraph {
|
|
|
75
75
|
identificationSteps: number;
|
|
76
76
|
identificationFetches: number;
|
|
77
77
|
};
|
|
78
|
+
private db;
|
|
78
79
|
constructor(db: GBZBase);
|
|
79
80
|
get nodeCount(): number;
|
|
80
81
|
get pathCount(): number;
|
|
@@ -105,6 +106,12 @@ export declare class Subgraph {
|
|
|
105
106
|
removed: number;
|
|
106
107
|
}>;
|
|
107
108
|
private insertContext;
|
|
109
|
+
betweenNodes(start: number, end: number): Promise<number>;
|
|
110
|
+
extractSnarls(snarls: SnarlOutput): Promise<number>;
|
|
111
|
+
private overlappingSnarls;
|
|
112
|
+
private isSnarlEntryInSubgraph;
|
|
113
|
+
private recordReader;
|
|
114
|
+
private findCoveringSnarl;
|
|
108
115
|
extractPaths(reference: ReferencePath | undefined, output: HaplotypeOutput): void;
|
|
109
116
|
private distinctPaths;
|
|
110
117
|
identifyPaths(): Promise<void>;
|
|
@@ -118,5 +125,8 @@ export declare class Subgraph {
|
|
|
118
125
|
private edits;
|
|
119
126
|
alignToRef(pathIndex: number): string | undefined;
|
|
120
127
|
alignments(): HaplotypeAlignment[];
|
|
128
|
+
private canonicalEdges;
|
|
129
|
+
stableName(): Promise<string>;
|
|
130
|
+
toGFA(cigar: boolean, opts?: ToJsonOptions): Promise<string>;
|
|
121
131
|
toJSON(cigar: boolean, opts?: ToJsonOptions): SubgraphJson;
|
|
122
132
|
}
|