@gmod/hic 1.0.0 → 1.2.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 CHANGED
@@ -37,6 +37,18 @@ records.bin2 // Int32Array of bin indices along region2
37
37
  records.counts // Float32Array of contact counts
38
38
  ```
39
39
 
40
+ Both reading methods take an optional trailing `{ onProgress }`, called
41
+ `(current, total)` as the work lands, so a loading indicator can show a bar
42
+ rather than a spinner. The unit is the block for a contact fetch and the
43
+ expected-value chunk for the normalization-index walk — the slow part of opening
44
+ a pre-v9 file. See [docs/api.md](docs/api.md#progress).
45
+
46
+ ```js
47
+ await hic.getContactRecords('KR', region, region, 'BP', 2_500_000, {
48
+ onProgress: (current, total) => showBar(current / total),
49
+ })
50
+ ```
51
+
40
52
  In the browser, or for a file over HTTP, pass a `filehandle` from
41
53
  [`generic-filehandle2`](https://www.npmjs.com/package/generic-filehandle2)
42
54
  instead of a `path`:
@@ -49,6 +61,25 @@ const hic = new HicFile({
49
61
  })
50
62
  ```
51
63
 
64
+ **Over HTTP, put a byte-range cache underneath. It is worth more than every
65
+ other optimization in this package combined.** A contact-matrix query reads many
66
+ small blocks scattered through the file — a whole-genome view of the test file
67
+ issues over a thousand of them — and a browser runs about six requests per
68
+ origin at a time, so the request count sets the wall clock.
69
+ [`@gmod/range-cache-filehandle`](https://github.com/GMOD/range-cache-filehandle)
70
+ is a drop-in for `RemoteFile` that coalesces those reads into one request per
71
+ contiguous run. Measured in headless Chrome against a real 69 GB ENCODE file,
72
+ whole chr1 at 5 kb: **24.0 s and 225 requests becomes 1.8 s and 45**, for
73
+ byte-identical output.
74
+
75
+ ```js
76
+ import { RemoteFileWithRangeCache } from '@gmod/range-cache-filehandle'
77
+
78
+ const hic = new HicFile({
79
+ filehandle: new RemoteFileWithRangeCache('https://example.com/file.hic'),
80
+ })
81
+ ```
82
+
52
83
  Anything that can read `length` bytes at `position` works too, which is the
53
84
  hook for a caller with its own IO layer or cache:
54
85
 
@@ -64,13 +95,27 @@ See [docs/api.md](docs/api.md) for the full API reference.
64
95
 
65
96
  - Bin indices are **absolute for their chromosome**, not relative to the
66
97
  requested region.
67
- - A `.hic` stores only the `bin1 <= bin2` half of the matrix, so a query whose
68
- x window sits left of its y window is swapped before it is issued;
98
+ - A `.hic` stores only the `bin1 <= bin2` half of the matrix, so a query whose x
99
+ window sits right of its y window gets swapped before it goes out;
69
100
  `transposed` says so, and `bin1` then runs along `region2`.
70
- - `appliedNormalization` is what was actually applied, which is not always what
71
- was asked for — normalization vectors are stored per (type, chromosome, unit,
72
- binsize), so a file can offer KR at 5 kb and nothing at 2.5 Mb.
73
- - `BP` is the only unit supported; the FRAG code paths were dropped.
101
+ - `appliedNormalization` names the normalization the file actually applied,
102
+ which is not always the one you asked for — a `.hic` carries normalization
103
+ vectors per (type, chromosome, unit, binsize), so it can offer KR at 5 kb and
104
+ nothing at 2.5 Mb.
105
+ - `BP` is the only unit this fork supports; it drops the FRAG code paths.
106
+ - Each `HicFile` caches up to 128 MB of decompressed contacts. Pass
107
+ `blockCacheMaxBytes` to change that ceiling.
108
+ - Record order is unspecified — the result concatenates whole blocks, cached
109
+ ones first.
110
+
111
+ ## Docs
112
+
113
+ - [docs/api.md](docs/api.md) — every constructor option, method and return shape
114
+ - [docs/dataflow.md](docs/dataflow.md) — how a fetch flows, and why the path
115
+ forks into two chains
116
+ - [docs/optimizations.md](docs/optimizations.md) — what this fork changed
117
+ against hic-straw, and what measured it
118
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — development and release steps
74
119
 
75
120
  ## Academic use
76
121
 
package/dist/hicFile.d.ts CHANGED
@@ -1,9 +1,8 @@
1
- import BinaryParser from './binary.ts';
2
1
  import Matrix from './matrix.ts';
3
2
  import NormalizationVector from './normalizationVector.ts';
4
3
  import type { ContactRecords } from './contactRecords.ts';
5
4
  import type MatrixZoomData from './matrixZoomData.ts';
6
- import type { BlockIndexEntry, HicMetadata, HicRegion, Reader } from './types.ts';
5
+ import type { BlockIndexEntry, HicMetadata, HicRegion, ProgressOpts, Reader } from './types.ts';
7
6
  import type { GenericFilehandle } from 'generic-filehandle2';
8
7
  /**
9
8
  * Prefix of the error thrown when a region pair has no matrix at the requested
@@ -25,6 +24,13 @@ export interface HicConfig {
25
24
  * costs on a pre-v9 file.
26
25
  */
27
26
  nvi?: string;
27
+ /**
28
+ * Ceiling on the decompressed contacts the block cache holds, in bytes.
29
+ * Defaults to 128 MB. Lower it where the budget is tight and re-reading is
30
+ * cheaper than the memory; raising it buys nothing once a fetch's working set
31
+ * fits, since the entry cap bounds the cache too.
32
+ */
33
+ blockCacheMaxBytes?: number;
28
34
  }
29
35
  interface Block {
30
36
  blockNumber: number;
@@ -55,17 +61,17 @@ export declare class HicFile {
55
61
  constructor(config: HicConfig);
56
62
  init(): Promise<void>;
57
63
  getMetaData(): Promise<HicMetadata>;
58
- readHeaderAndFooter(): Promise<void>;
59
- readFooter(): Promise<void>;
64
+ private readHeaderAndFooter;
65
+ private readFooter;
60
66
  getMatrix(chrIdx1: number, chrIdx2: number): Promise<Matrix | undefined>;
61
- readMatrix(chrIdx1: number, chrIdx2: number): Promise<Matrix | undefined>;
62
- getContactRecords(normalization: string, region1: HicRegion, region2: HicRegion, units: string, binsize: number): Promise<{
67
+ private readMatrix;
68
+ getContactRecords(normalization: string, region1: HicRegion, region2: HicRegion, units: string, binsize: number, opts?: ProgressOpts): Promise<{
63
69
  records: ContactRecords;
64
70
  appliedNormalization: string;
65
71
  transposed: boolean;
66
72
  }>;
67
73
  private getNormVectors;
68
- getBlocks(region1: HicRegion, region2: HicRegion, binSize: number): Promise<(Block | undefined)[]>;
74
+ getBlocks(region1: HicRegion, region2: HicRegion, binSize: number, opts?: ProgressOpts): Promise<(Block | undefined)[]>;
69
75
  readBlock(blockNumber: number, zd: MatrixZoomData): Promise<Block | undefined>;
70
76
  /**
71
77
  * Decode one block's records straight into typed arrays.
@@ -79,16 +85,13 @@ export declare class HicFile {
79
85
  private parseBlockRecords;
80
86
  getNormalizationVector(type: string, chr: string, unit: string, binSize: number): Promise<NormalizationVector | undefined>;
81
87
  private readNormalizationVector;
82
- getNormVectorIndex(): Promise<Record<string, BlockIndexEntry> | undefined>;
88
+ getNormVectorIndex(opts?: ProgressOpts): Promise<Record<string, BlockIndexEntry> | undefined>;
83
89
  private loadNormVectorIndex;
84
- getNormalizationOptions(): Promise<string[]>;
85
- readNormVectorIndex(range: {
86
- start: number;
87
- size: number;
88
- }): Promise<Record<string, BlockIndexEntry>>;
89
- readNormExpectedValuesAndNormVectorIndex(): Promise<void>;
90
- skipExpectedValues(start: number): Promise<number>;
91
- parseNormVectorEntry(binaryParser: BinaryParser): void;
90
+ getNormalizationOptions(opts?: ProgressOpts): Promise<string[]>;
91
+ private readNormVectorIndex;
92
+ private readNormExpectedValuesAndNormVectorIndex;
93
+ private skipExpectedValues;
94
+ private parseNormVectorEntry;
92
95
  getFileChrName(chrAlias: string): string;
93
96
  }
94
97
  export {};
package/dist/hicFile.js CHANGED
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.HicFile = exports.NO_DATA_FOR_RESOLUTION = void 0;
7
+ const inflate_1 = require("@gmod/inflate");
7
8
  const generic_filehandle2_1 = require("generic-filehandle2");
8
- const pako_esm2_1 = require("pako-esm2");
9
9
  const binWindow_ts_1 = require("./binWindow.js");
10
10
  const binary_ts_1 = __importDefault(require("./binary.js"));
11
11
  const bufferedFile_ts_1 = __importDefault(require("./bufferedFile.js"));
@@ -73,6 +73,11 @@ const BLOCK_CACHE_MAX_ENTRIES = 1024;
73
73
  // binsize. Measured on the file above: 0.05 MB at 2.5 Mb, 0.23 MB at 100 kb. So
74
74
  // the entry cap now tracks the working set and this tracks the memory, instead
75
75
  // of one number answering both badly. See LRU's WeightOpts.
76
+ //
77
+ // This is the one capacity here a caller can override (`blockCacheMaxBytes`),
78
+ // because it is the only one that bounds MEMORY. The two entry caps below are
79
+ // working-set sizes derived from how many region pairs a fetch runs at once,
80
+ // which the library knows and the caller would only have to rederive.
76
81
  const BLOCK_CACHE_MAX_BYTES = 128 * 1024 * 1024;
77
82
  // One entry per (chrIdx1, chrIdx2), so the working set is the pair count.
78
83
  // 512 covers a 31-region view; human whole-genome is 300. A matrix holds the
@@ -106,10 +111,9 @@ class HicFile {
106
111
  normVectorCache = new lru_ts_1.default(NORM_VECTOR_CACHE_SIZE);
107
112
  normalizationTypes = ['NONE'];
108
113
  matrixCache = new lru_ts_1.default(MATRIX_CACHE_SIZE);
109
- blockCache = new lru_ts_1.default(BLOCK_CACHE_MAX_ENTRIES, {
110
- maxBytes: BLOCK_CACHE_MAX_BYTES,
111
- weigh: blockCacheWeight,
112
- });
114
+ // Assigned in the constructor rather than here, since its byte budget is
115
+ // configurable and a field initializer cannot see `config`.
116
+ blockCache;
113
117
  normVectorIndexPosition = -1;
114
118
  normVectorIndexSize = -1;
115
119
  initPromise;
@@ -129,8 +133,12 @@ class HicFile {
129
133
  masterIndex = {};
130
134
  meta;
131
135
  constructor(config) {
132
- const { filehandle, path, reader } = config;
136
+ const { filehandle, path, reader, blockCacheMaxBytes } = config;
133
137
  this.config = config;
138
+ this.blockCache = new lru_ts_1.default(BLOCK_CACHE_MAX_ENTRIES, {
139
+ maxBytes: blockCacheMaxBytes ?? BLOCK_CACHE_MAX_BYTES,
140
+ weigh: blockCacheWeight,
141
+ });
134
142
  if (reader) {
135
143
  this.file = reader;
136
144
  }
@@ -278,7 +286,7 @@ class HicFile {
278
286
  }
279
287
  return matrix;
280
288
  }
281
- async getContactRecords(normalization, region1, region2, units, binsize) {
289
+ async getContactRecords(normalization, region1, region2, units, binsize, opts) {
282
290
  await this.init();
283
291
  const idx1 = this.chromosomeIndexMap[this.getFileChrName(region1.chr)];
284
292
  const idx2 = this.chromosomeIndexMap[this.getFileChrName(region2.chr)];
@@ -318,7 +326,10 @@ class HicFile {
318
326
  // offset its values start at.
319
327
  const [norm, blocks] = await Promise.all([
320
328
  this.getNormVectors(normalization, r1, r2, units, binsize),
321
- this.getBlocks(r1, r2, binsize),
329
+ // The measurable half of the pair: blocks are counted and the two norm
330
+ // vectors are not, because the vector chain is two hops whatever the
331
+ // query and the block chain is the one that grows with the region.
332
+ this.getBlocks(r1, r2, binsize, opts),
322
333
  ]);
323
334
  // Sum of the blocks' record counts bounds the survivors, so the output is
324
335
  // allocated once and filled by a write cursor. Blocks overlap the window
@@ -419,7 +430,7 @@ class HicFile {
419
430
  }
420
431
  return result;
421
432
  }
422
- async getBlocks(region1, region2, binSize) {
433
+ async getBlocks(region1, region2, binSize, opts) {
423
434
  const blockKey = (blockNumber, zd) => `${zd.getKey()}_${blockNumber}`;
424
435
  await this.init();
425
436
  const chr1 = this.getFileChrName(region1.chr);
@@ -455,7 +466,27 @@ class HicFile {
455
466
  blockNumbersToQuery.push(num);
456
467
  }
457
468
  }
458
- const newBlocks = await Promise.all(blockNumbersToQuery.map(blockNumber => this.readBlock(blockNumber, zd)));
469
+ // Cached blocks are already done, not absent: a pan that reuses most
470
+ // of its blocks reads most of the way along rather than restarting at
471
+ // zero, which is what the bar should say — the work left is the reads.
472
+ //
473
+ // A query covering no blocks at all reports nothing rather than `0, 0`:
474
+ // there is no fraction in it, and a caller dividing would get NaN.
475
+ const { onProgress } = opts ?? {};
476
+ let done = blocks.length;
477
+ if (blockNumbers.length > 0) {
478
+ onProgress?.(done, blockNumbers.length);
479
+ }
480
+ // Still one `Promise.all`, so every block is still issued in one wave:
481
+ // what a remote file pays is round-trip DEPTH, and counting the
482
+ // completions must not turn one wave into a queue. `readChainDepth`
483
+ // pins that.
484
+ const newBlocks = await Promise.all(blockNumbersToQuery.map(async (blockNumber) => {
485
+ const block = await this.readBlock(blockNumber, zd);
486
+ done++;
487
+ onProgress?.(done, blockNumbers.length);
488
+ return block;
489
+ }));
459
490
  for (const block of newBlocks) {
460
491
  if (block) {
461
492
  this.blockCache.set(blockKey(block.blockNumber, zd), block);
@@ -471,7 +502,12 @@ class HicFile {
471
502
  let block;
472
503
  if (idx) {
473
504
  const data = await this.file.read(idx.filePosition, idx.size);
474
- const plain = (0, pako_esm2_1.inflate)(new Uint8Array(data), {});
505
+ // `.subarray(2)` drops the zlib header: libdeflate's raw-deflate path is
506
+ // the fast one, and a `.hic` records only a block's *compressed* size, so
507
+ // there is no known output size to hand the exact-size entry point.
508
+ // `inflateRawUnknownSize` guesses 4x the input, which clears this
509
+ // format's ~2.3x ratio in one pass.
510
+ const plain = await (0, inflate_1.inflateRawUnknownSize)(new Uint8Array(data).subarray(2));
475
511
  const parser = new binary_ts_1.default(new DataView(plain.buffer, plain.byteOffset, plain.byteLength));
476
512
  // Total records in the block, whatever encoding follows — so every branch
477
513
  // below knows its exact (or, for the dense encoding, upper-bound) size
@@ -601,7 +637,7 @@ class HicFile {
601
637
  const filePosition = this.version < 9 ? idx.filePosition + 4 : idx.filePosition + 8;
602
638
  return new normalizationVector_ts_1.default(this.file, filePosition, nValues, dataType);
603
639
  }
604
- async getNormVectorIndex() {
640
+ async getNormVectorIndex(opts) {
605
641
  // Before the version gate, not after it: `version` is 0 until the header is
606
642
  // parsed, so calling this first — which `getNormalizationOptions` on its own
607
643
  // does — answered "no index" for every file rather than for a v5 one. A
@@ -616,7 +652,10 @@ class HicFile {
616
652
  // sequential range reads, only to rediscover there is nothing there.
617
653
  // Cleared on failure (like `init`) so a transient read error retries
618
654
  // rather than caching a rejection forever.
619
- this.normVectorIndexP ??= this.loadNormVectorIndex().catch((e) => {
655
+ // The walk runs once, so its progress belongs to the call that performs
656
+ // it: a caller joining an in-flight or finished load is not waiting on
657
+ // reads and is told nothing, which is the truth rather than a silence.
658
+ this.normVectorIndexP ??= this.loadNormVectorIndex(opts?.onProgress).catch((e) => {
620
659
  this.normVectorIndexP = undefined;
621
660
  throw e;
622
661
  });
@@ -624,7 +663,7 @@ class HicFile {
624
663
  }
625
664
  return this.normVectorIndex;
626
665
  }
627
- async loadNormVectorIndex() {
666
+ async loadNormVectorIndex(onProgress) {
628
667
  // If we know the position of the norm vector index, read it directly.
629
668
  // This is the case for hic v9 files.
630
669
  if (this.normVectorIndexPosition > 0 && this.normVectorIndexSize > 0) {
@@ -642,7 +681,7 @@ class HicFile {
642
681
  }
643
682
  else {
644
683
  try {
645
- await this.readNormExpectedValuesAndNormVectorIndex();
684
+ await this.readNormExpectedValuesAndNormVectorIndex(onProgress);
646
685
  }
647
686
  catch (e) {
648
687
  // Not "expected if the file has no norm vectors" — that case never
@@ -656,10 +695,10 @@ class HicFile {
656
695
  }
657
696
  }
658
697
  }
659
- async getNormalizationOptions() {
698
+ async getNormalizationOptions(opts) {
660
699
  // Normalization options are computed as a side effect of loading the
661
700
  // index. A bit ugly but alternatives are worse.
662
- await this.getNormVectorIndex();
701
+ await this.getNormVectorIndex(opts);
663
702
  return this.normalizationTypes;
664
703
  }
665
704
  async readNormVectorIndex(range) {
@@ -675,10 +714,10 @@ class HicFile {
675
714
  }
676
715
  // Used when the position of the norm vector index is unknown: read through
677
716
  // the expected values to find the index.
678
- async readNormExpectedValuesAndNormVectorIndex() {
717
+ async readNormExpectedValuesAndNormVectorIndex(onProgress) {
679
718
  await this.init();
680
719
  if (this.normExpectedValueVectorsPosition !== undefined) {
681
- const nviStart = await this.skipExpectedValues(this.normExpectedValueVectorsPosition);
720
+ const nviStart = await this.skipExpectedValues(this.normExpectedValueVectorsPosition, onProgress);
682
721
  let byteCount = INT;
683
722
  let data = await this.file.read(nviStart, INT);
684
723
  // Possible if there are no norm vectors. A legal v8 file, though uncommon.
@@ -711,7 +750,7 @@ class HicFile {
711
750
  }
712
751
  // Used when the position of the norm vector index is unknown: skip the
713
752
  // normalized expected values to find the index.
714
- async skipExpectedValues(start) {
753
+ async skipExpectedValues(start, onProgress) {
715
754
  const version = this.version;
716
755
  const file = new bufferedFile_ts_1.default({ file: this.file, size: 256000 });
717
756
  const data = await file.read(start, INT);
@@ -727,9 +766,17 @@ class HicFile {
727
766
  }
728
767
  const binaryParser = new binary_ts_1.default(new DataView(data));
729
768
  const nEntries = binaryParser.getInt(); // Total # of expected value chunks
730
- const parseNext = async (chunkStart, remaining) => {
769
+ // Skip one chunk, answering where the next one starts.
770
+ //
771
+ // Its two reads land a whole expected-value vector apart — one per bin of
772
+ // the genome, so tens of MB at a fine binsize — which is further than the
773
+ // buffer reaches. On a remote file that is two round trips per chunk that
774
+ // nothing can merge, and it is why this walk, not the index it is looking
775
+ // for, is the slow part of opening a pre-v9 file. It is also why the chunk
776
+ // is the unit worth counting: `nEntries` of them, known before the first
777
+ // read, each costing about the same.
778
+ const skipChunk = async (chunkStart) => {
731
779
  let chunkSize = 0;
732
- const p0 = chunkStart;
733
780
  let buf = await file.read(chunkStart, 500);
734
781
  let parser = new binary_ts_1.default(new DataView(buf));
735
782
  parser.getString(); // type
@@ -742,11 +789,22 @@ class HicFile {
742
789
  const nChrScaleFactors = parser.getInt();
743
790
  chunkSize +=
744
791
  INT + nChrScaleFactors * (INT + (version < 9 ? DOUBLE : FLOAT));
745
- return remaining - 1 === 0
746
- ? p0 + chunkSize
747
- : parseNext(p0 + chunkSize, remaining - 1);
792
+ return chunkStart + chunkSize;
748
793
  };
749
- return nEntries === 0 ? start + INT : parseNext(start + INT, nEntries);
794
+ // A loop rather than the tail recursion this was, because the position is
795
+ // the only thing carried between chunks and a counter now rides along with
796
+ // it. Chunks must be walked in order — each one's size is only known once
797
+ // the one before it has been parsed — so the awaits are sequential by
798
+ // nature, not by oversight.
799
+ if (nEntries > 0) {
800
+ onProgress?.(0, nEntries);
801
+ }
802
+ let position = start + INT;
803
+ for (let done = 0; done < nEntries; done++) {
804
+ position = await skipChunk(position);
805
+ onProgress?.(done + 1, nEntries);
806
+ }
807
+ return position;
750
808
  }
751
809
  parseNormVectorEntry(binaryParser) {
752
810
  const type = binaryParser.getString(); // 15
@@ -1 +1 @@
1
- {"version":3,"file":"hicFile.js","sourceRoot":"","sources":["../src/hicFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hicFile.js","sourceRoot":"","sources":["../src/hicFile.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,4 +2,4 @@ export { HicFile, NO_DATA_FOR_RESOLUTION } from './hicFile.ts';
2
2
  export { readerFromFilehandle } from './reader.ts';
3
3
  export type { HicConfig } from './hicFile.ts';
4
4
  export type { ContactRecords } from './contactRecords.ts';
5
- export type { Chromosome, HicMetadata, HicRegion, Reader, Zoom, } from './types.ts';
5
+ export type { Chromosome, HicMetadata, HicRegion, ProgressCallback, ProgressOpts, Reader, Zoom, } from './types.ts';
package/dist/types.d.ts CHANGED
@@ -8,6 +8,29 @@
8
8
  export interface Reader {
9
9
  read: (position: number, length: number) => Promise<ArrayBuffer>;
10
10
  }
11
+ /**
12
+ * Progress within one phase: `current` of `total` units done, called as the
13
+ * phase advances and once with `current` 0 before it starts, so a caller can
14
+ * show a determinate bar from the first moment rather than after the first
15
+ * unit lands.
16
+ *
17
+ * The unit is whatever that phase measures — expected-value chunks for the
18
+ * normalization-index walk, blocks for a contact fetch — and a caller renders
19
+ * `current / total` without needing to know which. `total` never changes within
20
+ * a call, and `current` never goes backwards.
21
+ *
22
+ * A phase with nothing to do does not call this at all, rather than calling it
23
+ * with a `total` of 0 that a caller could only divide by.
24
+ */
25
+ export type ProgressCallback = (current: number, total: number) => void;
26
+ /**
27
+ * Progress reporting for one call. Per call rather than per file: progress
28
+ * belongs to the operation a caller is waiting on, and a file-wide callback
29
+ * could not say which of several concurrent fetches it was describing.
30
+ */
31
+ export interface ProgressOpts {
32
+ onProgress?: ProgressCallback;
33
+ }
11
34
  export interface Chromosome {
12
35
  index: number;
13
36
  name: string;
package/esm/hicFile.d.ts CHANGED
@@ -1,9 +1,8 @@
1
- import BinaryParser from './binary.ts';
2
1
  import Matrix from './matrix.ts';
3
2
  import NormalizationVector from './normalizationVector.ts';
4
3
  import type { ContactRecords } from './contactRecords.ts';
5
4
  import type MatrixZoomData from './matrixZoomData.ts';
6
- import type { BlockIndexEntry, HicMetadata, HicRegion, Reader } from './types.ts';
5
+ import type { BlockIndexEntry, HicMetadata, HicRegion, ProgressOpts, Reader } from './types.ts';
7
6
  import type { GenericFilehandle } from 'generic-filehandle2';
8
7
  /**
9
8
  * Prefix of the error thrown when a region pair has no matrix at the requested
@@ -25,6 +24,13 @@ export interface HicConfig {
25
24
  * costs on a pre-v9 file.
26
25
  */
27
26
  nvi?: string;
27
+ /**
28
+ * Ceiling on the decompressed contacts the block cache holds, in bytes.
29
+ * Defaults to 128 MB. Lower it where the budget is tight and re-reading is
30
+ * cheaper than the memory; raising it buys nothing once a fetch's working set
31
+ * fits, since the entry cap bounds the cache too.
32
+ */
33
+ blockCacheMaxBytes?: number;
28
34
  }
29
35
  interface Block {
30
36
  blockNumber: number;
@@ -55,17 +61,17 @@ export declare class HicFile {
55
61
  constructor(config: HicConfig);
56
62
  init(): Promise<void>;
57
63
  getMetaData(): Promise<HicMetadata>;
58
- readHeaderAndFooter(): Promise<void>;
59
- readFooter(): Promise<void>;
64
+ private readHeaderAndFooter;
65
+ private readFooter;
60
66
  getMatrix(chrIdx1: number, chrIdx2: number): Promise<Matrix | undefined>;
61
- readMatrix(chrIdx1: number, chrIdx2: number): Promise<Matrix | undefined>;
62
- getContactRecords(normalization: string, region1: HicRegion, region2: HicRegion, units: string, binsize: number): Promise<{
67
+ private readMatrix;
68
+ getContactRecords(normalization: string, region1: HicRegion, region2: HicRegion, units: string, binsize: number, opts?: ProgressOpts): Promise<{
63
69
  records: ContactRecords;
64
70
  appliedNormalization: string;
65
71
  transposed: boolean;
66
72
  }>;
67
73
  private getNormVectors;
68
- getBlocks(region1: HicRegion, region2: HicRegion, binSize: number): Promise<(Block | undefined)[]>;
74
+ getBlocks(region1: HicRegion, region2: HicRegion, binSize: number, opts?: ProgressOpts): Promise<(Block | undefined)[]>;
69
75
  readBlock(blockNumber: number, zd: MatrixZoomData): Promise<Block | undefined>;
70
76
  /**
71
77
  * Decode one block's records straight into typed arrays.
@@ -79,16 +85,13 @@ export declare class HicFile {
79
85
  private parseBlockRecords;
80
86
  getNormalizationVector(type: string, chr: string, unit: string, binSize: number): Promise<NormalizationVector | undefined>;
81
87
  private readNormalizationVector;
82
- getNormVectorIndex(): Promise<Record<string, BlockIndexEntry> | undefined>;
88
+ getNormVectorIndex(opts?: ProgressOpts): Promise<Record<string, BlockIndexEntry> | undefined>;
83
89
  private loadNormVectorIndex;
84
- getNormalizationOptions(): Promise<string[]>;
85
- readNormVectorIndex(range: {
86
- start: number;
87
- size: number;
88
- }): Promise<Record<string, BlockIndexEntry>>;
89
- readNormExpectedValuesAndNormVectorIndex(): Promise<void>;
90
- skipExpectedValues(start: number): Promise<number>;
91
- parseNormVectorEntry(binaryParser: BinaryParser): void;
90
+ getNormalizationOptions(opts?: ProgressOpts): Promise<string[]>;
91
+ private readNormVectorIndex;
92
+ private readNormExpectedValuesAndNormVectorIndex;
93
+ private skipExpectedValues;
94
+ private parseNormVectorEntry;
92
95
  getFileChrName(chrAlias: string): string;
93
96
  }
94
97
  export {};