@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/dist/query.js CHANGED
@@ -1,26 +1,16 @@
1
- import { GENERIC_SAMPLE } from "./db.js";
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
- subgraph.limit = opts.limit;
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
- subgraph.limit = opts.limit;
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":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
@@ -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>;
@@ -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: view.getUint16(start + 3),
19
- rightChild: interior ? view.getUint32(start + 8) : 0,
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
- const view = new DataView(page.buffer, page.byteOffset, page.byteLength);
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
- async indexCell(page, header, index) {
147
- const offset = cellOffset(page, header, index);
148
- const interior = header.type === INTERIOR_INDEX;
149
- const [size, afterSize] = readVarint(page, interior ? offset + 4 : offset);
150
- const values = decodeRecord(await this.payload(page, afterSize, size, true));
151
- return { values, leftChild: interior ? readUint32(page, offset) : 0 };
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;
@@ -1 +1 @@
1
- {"version":3,"file":"btree.js","sourceRoot":"","sources":["../../src/sqlite/btree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAKtD,MAAM,cAAc,GAAG,IAAI,CAAA;AAC3B,MAAM,cAAc,GAAG,IAAI,CAAA;AAC3B,MAAM,UAAU,GAAG,IAAI,CAAA;AACvB,MAAM,UAAU,GAAG,IAAI,CAAA;AASvB,SAAS,UAAU,CAAC,IAAgB,EAAE,KAAa;IACjD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,IACE,IAAI,KAAK,cAAc;QACvB,IAAI,KAAK,cAAc;QACvB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,UAAU,EACnB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAA;IAChE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,cAAc,CAAA;IACnE,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,YAAY,EAAE,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,MAAkB,EAAE,KAAa;IACrE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,MAAc;IAClD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,OAAO,KAAK;IACC,MAAM,CAAQ;IACvB,KAAK,CAAO;IAEpB,YAAY,KAAY,EAAE,aAAqB;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAA;IAC9C,CAAC;IAEO,gBAAgB,CAAC,KAAa,EAAE,OAAgB;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE;YAC7C,CAAC,CAAC,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QAC5D,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAC5D,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC7C,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAgB,EAChB,MAAc,EACd,KAAa,EACb,OAAgB;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACnD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;QAC9C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACpD,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;QAC3C,OAAO,IAAI,KAAK,CAAC,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAC7B,CAAC,EACD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAC9C,CAAA;YACD,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;YACtB,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,UAAkB;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAAY,EACZ,KAAa;QAEb,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACtD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,GAAG,GAAG,CAAC,CAAA;gBACX,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAA;gBAC3B,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;oBAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;oBAC5C,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBAClD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;oBACnD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;wBAClB,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;oBACtE,CAAC;oBACD,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;wBAChB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;oBACf,CAAC;yBAAM,CAAC;wBACN,IAAI,GAAG,GAAG,CAAA;oBACZ,CAAC;gBACH,CAAC;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;YAC/D,CAAC;YACD,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAA;YAC3B,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;gBAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC1C,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;oBAChB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;gBACf,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,GAAG,CAAA;gBACZ,CAAC;YACH,CAAC;YACD,UAAU;gBACR,GAAG,KAAK,MAAM,CAAC,SAAS;oBACtB,CAAC,CAAC,MAAM,CAAC,UAAU;oBACnB,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,SAAS,CACd,IAAY;QAEZ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;gBAC1C,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBACrD,MAAM;oBACJ,KAAK;oBACL,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;iBACtE,CAAA;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAa,EAAE,CAAA;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAgB,EAAE,MAAkB,EAAE,KAAa;QACzE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,cAAc,CAAA;QAC/C,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAC1E,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC5E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAClB,IAAY,EACZ,GAAa;QAEb,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAA;QAC3B,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;YACpD,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,CAAA;YACZ,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;YAClD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAChD,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,CAAA;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,GAAa;QAEb,IAAI,IAA4B,CAAA;QAChC,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACtD,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAA;YAC3B,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;gBACpD,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAA;oBAClB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;gBACf,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;oBACtB,IAAI,GAAG,GAAG,CAAA;gBACZ,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAA;YACb,CAAC;YACD,UAAU,GAAG,GAAG,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAA;QACnE,CAAC;IACH,CAAC;CACF;AAED,SAAS,UAAU,CAAC,MAAkB,EAAE,GAAa;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"btree.js","sourceRoot":"","sources":["../../src/sqlite/btree.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type { GBZBase, PathName } from './db.ts';
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 HaplotypeAlignment {
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 interface ToJsonOptions {
60
- names?: 'anonymous' | 'resolved';
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
- constructor(db: GBZBase);
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(cigar: boolean, opts?: ToJsonOptions): Promise<string>;
131
- toJSON(cigar: boolean, opts?: ToJsonOptions): SubgraphJson;
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
- constructor(db) {
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 strand = info.path.some(handle => isReverse(handle)) &&
894
+ const walkStrand = info.path.some(handle => isReverse(handle)) &&
890
895
  !info.path.some(handle => !isReverse(handle))
891
896
  ? '-'
892
897
  : '+';
893
- result.push({
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
- : strand,
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(cigar, opts = {}) {
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
- toJSON(cigar, opts = {}) {
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))