@gmod/hic 1.3.1 → 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 +23 -35
- package/dist/bufferedFile.js +8 -25
- package/dist/bufferedFile.js.map +1 -1
- package/dist/hicFile.d.ts +4 -7
- package/dist/hicFile.js +89 -127
- package/dist/hicFile.js.map +1 -1
- package/dist/normalizationVector.d.ts +3 -1
- package/dist/normalizationVector.js +60 -39
- package/dist/normalizationVector.js.map +1 -1
- package/esm/bufferedFile.js +8 -25
- package/esm/bufferedFile.js.map +1 -1
- package/esm/hicFile.d.ts +4 -7
- package/esm/hicFile.js +89 -127
- package/esm/hicFile.js.map +1 -1
- package/esm/normalizationVector.d.ts +3 -1
- package/esm/normalizationVector.js +60 -39
- package/esm/normalizationVector.js.map +1 -1
- package/package.json +1 -1
- package/src/bufferedFile.ts +8 -22
- package/src/hicFile.ts +92 -161
- package/src/normalizationVector.ts +77 -43
- package/dist/lru.d.ts +0 -29
- package/dist/lru.js +0 -53
- package/dist/lru.js.map +0 -1
- package/esm/lru.d.ts +0 -29
- package/esm/lru.js +0 -50
- package/esm/lru.js.map +0 -1
- package/src/lru.ts +0 -75
package/esm/hicFile.js
CHANGED
|
@@ -4,7 +4,6 @@ import { LocalFile } from 'generic-filehandle2';
|
|
|
4
4
|
import { binWindow } from "./binWindow.js";
|
|
5
5
|
import BinaryParser from "./binary.js";
|
|
6
6
|
import BufferedFile from "./bufferedFile.js";
|
|
7
|
-
import LRU from "./lru.js";
|
|
8
7
|
import Matrix from "./matrix.js";
|
|
9
8
|
import NormalizationVector from "./normalizationVector.js";
|
|
10
9
|
import { readerFromFilehandle } from "./reader.js";
|
|
@@ -59,15 +58,13 @@ function truncateRecords(records, n) {
|
|
|
59
58
|
// The cliffs are exactly these three capacities. Note the first column: 41% of a
|
|
60
59
|
// cold whole-genome fetch's reads were re-reads of normalization vectors the
|
|
61
60
|
// same fetch had already fetched.
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
// the entry cap now tracks the working set and this tracks the memory, instead
|
|
70
|
-
// of one number answering both badly. See LRU's WeightOpts.
|
|
61
|
+
//
|
|
62
|
+
// Blocks became struct-of-arrays (see contactRecords.ts), so a cached contact is
|
|
63
|
+
// 12 bytes of untraced ArrayBuffer rather than ~55 on the GC-traced heap — but a
|
|
64
|
+
// block still holds every contact in its bin square, which is the one thing here
|
|
65
|
+
// that can hold real memory, and block sizes vary by more than an order of
|
|
66
|
+
// magnitude with binsize. Measured on the file above: 0.05 MB at 2.5 Mb, 0.23 MB
|
|
67
|
+
// at 100 kb. So the block cache's only bound is its byte budget.
|
|
71
68
|
//
|
|
72
69
|
// This is the one capacity here a caller can override (`blockCacheMaxBytes`),
|
|
73
70
|
// because it is the only one that bounds MEMORY. The two entry caps below are
|
|
@@ -89,6 +86,9 @@ const NORM_VECTOR_CACHE_SIZE = 64;
|
|
|
89
86
|
// hic-straw's extra `resolution` field only made the cache single-resolution
|
|
90
87
|
// (every zoom step threw the previous level away).
|
|
91
88
|
function blockCacheWeight(block) {
|
|
89
|
+
if (!block) {
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
92
|
const { bin1, bin2, counts } = block.records;
|
|
93
93
|
return bin1.byteLength + bin2.byteLength + counts.byteLength;
|
|
94
94
|
}
|
|
@@ -96,7 +96,7 @@ function getNormalizationVectorKey(type, chrIdx, unit, resolution) {
|
|
|
96
96
|
return `${type}_${chrIdx}_${unit}_${resolution}`;
|
|
97
97
|
}
|
|
98
98
|
export class HicFile {
|
|
99
|
-
|
|
99
|
+
nvi;
|
|
100
100
|
file;
|
|
101
101
|
// These caches share the in-flight read, not just its result. A
|
|
102
102
|
// multi-region fetch runs its region pairs concurrently and they share
|
|
@@ -123,17 +123,16 @@ export class HicFile {
|
|
|
123
123
|
// make that second shape.
|
|
124
124
|
normExpectedValueVectorsPosition;
|
|
125
125
|
chromosomes = [];
|
|
126
|
-
chromosomeIndexMap =
|
|
127
|
-
chrAliasTable = {};
|
|
126
|
+
chromosomeIndexMap = new Map();
|
|
128
127
|
bpResolutions = [];
|
|
129
128
|
masterIndex = {};
|
|
130
129
|
meta;
|
|
131
130
|
constructor(config) {
|
|
132
|
-
const { filehandle, path, reader, blockCacheMaxBytes } = config;
|
|
133
|
-
this.
|
|
134
|
-
this.blockCache = new
|
|
135
|
-
|
|
136
|
-
|
|
131
|
+
const { filehandle, path, reader, nvi, blockCacheMaxBytes } = config;
|
|
132
|
+
this.nvi = nvi;
|
|
133
|
+
this.blockCache = new SharedReadCache({
|
|
134
|
+
maxSize: blockCacheMaxBytes ?? BLOCK_CACHE_MAX_BYTES,
|
|
135
|
+
sizeOf: blockCacheWeight,
|
|
137
136
|
});
|
|
138
137
|
if (reader) {
|
|
139
138
|
this.file = reader;
|
|
@@ -188,7 +187,7 @@ export class HicFile {
|
|
|
188
187
|
binaryParser.getString(); // attribute value
|
|
189
188
|
}
|
|
190
189
|
const chromosomes = [];
|
|
191
|
-
const chromosomeIndexMap =
|
|
190
|
+
const chromosomeIndexMap = new Map();
|
|
192
191
|
let nChrs = binaryParser.getInt();
|
|
193
192
|
let i = 0;
|
|
194
193
|
while (nChrs-- > 0) {
|
|
@@ -198,7 +197,7 @@ export class HicFile {
|
|
|
198
197
|
size: version < 9 ? binaryParser.getInt() : binaryParser.getLong(),
|
|
199
198
|
};
|
|
200
199
|
chromosomes.push(chr);
|
|
201
|
-
chromosomeIndexMap
|
|
200
|
+
chromosomeIndexMap.set(chr.name, chr.index);
|
|
202
201
|
i++;
|
|
203
202
|
}
|
|
204
203
|
const bpResolutions = [];
|
|
@@ -206,18 +205,6 @@ export class HicFile {
|
|
|
206
205
|
while (nBpResolutions-- > 0) {
|
|
207
206
|
bpResolutions.push(binaryParser.getInt());
|
|
208
207
|
}
|
|
209
|
-
const chrAliasTable = {};
|
|
210
|
-
for (const chrName of Object.keys(chromosomeIndexMap)) {
|
|
211
|
-
if (chrName.startsWith('chr')) {
|
|
212
|
-
chrAliasTable[chrName.slice(3)] = chrName;
|
|
213
|
-
}
|
|
214
|
-
else if (chrName === 'MT') {
|
|
215
|
-
chrAliasTable.chrM = chrName;
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
chrAliasTable[`chr${chrName}`] = chrName;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
208
|
throwIfAborted(signal);
|
|
222
209
|
this.version = version;
|
|
223
210
|
this.footerPosition = footerPosition;
|
|
@@ -229,7 +216,6 @@ export class HicFile {
|
|
|
229
216
|
this.chromosomes = chromosomes;
|
|
230
217
|
this.chromosomeIndexMap = chromosomeIndexMap;
|
|
231
218
|
this.bpResolutions = bpResolutions;
|
|
232
|
-
this.chrAliasTable = chrAliasTable;
|
|
233
219
|
this.meta = {
|
|
234
220
|
version,
|
|
235
221
|
genome: genomeId,
|
|
@@ -273,10 +259,10 @@ export class HicFile {
|
|
|
273
259
|
}
|
|
274
260
|
return matrix;
|
|
275
261
|
}
|
|
276
|
-
async getContactRecords(normalization, region1, region2,
|
|
262
|
+
async getContactRecords(normalization, region1, region2, binsize, opts) {
|
|
277
263
|
await this.init(opts);
|
|
278
|
-
const idx1 = this.chromosomeIndexMap
|
|
279
|
-
const idx2 = this.chromosomeIndexMap
|
|
264
|
+
const idx1 = this.chromosomeIndexMap.get(region1.chr);
|
|
265
|
+
const idx2 = this.chromosomeIndexMap.get(region2.chr);
|
|
280
266
|
// A `.hic` stores only `bin1 <= bin2`, so a query whose x window sits to the
|
|
281
267
|
// right of its y window has to be swapped or it asks for the half of the
|
|
282
268
|
// matrix that does not exist. The same-chromosome test compares **starts**,
|
|
@@ -312,7 +298,7 @@ export class HicFile {
|
|
|
312
298
|
// resolved once per pair rather than per block, each paired with the bin
|
|
313
299
|
// offset its values start at.
|
|
314
300
|
const [norm, blocks] = await Promise.all([
|
|
315
|
-
this.getNormVectors(normalization, r1, r2,
|
|
301
|
+
this.getNormVectors(normalization, r1, r2, binsize, opts),
|
|
316
302
|
// The measurable half of the pair: blocks are counted and the two norm
|
|
317
303
|
// vectors are not, because the vector chain is two hops whatever the
|
|
318
304
|
// query and the block chain is the one that grows with the region.
|
|
@@ -387,45 +373,41 @@ export class HicFile {
|
|
|
387
373
|
//
|
|
388
374
|
// `transposed` says the query was swapped, so `bin1` runs along `region2`.
|
|
389
375
|
// Reported rather than left for the caller to re-derive: it is decided here
|
|
390
|
-
// from this file's
|
|
391
|
-
//
|
|
392
|
-
// wrong axis.
|
|
376
|
+
// from this file's chromosome indices, which a caller would otherwise have
|
|
377
|
+
// to look up again to know which axis to un-swap.
|
|
393
378
|
return {
|
|
394
379
|
records: contactRecords,
|
|
395
380
|
appliedNormalization: norm ? normalization : 'NONE',
|
|
396
381
|
transposed: transpose,
|
|
397
382
|
};
|
|
398
383
|
}
|
|
399
|
-
async getNormVectors(normalization, r1, r2,
|
|
384
|
+
async getNormVectors(normalization, r1, r2, binsize, opts) {
|
|
385
|
+
if (!normalization || normalization === 'NONE') {
|
|
386
|
+
return undefined;
|
|
387
|
+
}
|
|
400
388
|
const signalOpts = { signal: opts?.signal };
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
if (nv1 && nv2) {
|
|
412
|
-
result = {
|
|
413
|
-
v1: await nv1.getValues(offset1, Math.ceil(r1.end / binsize), signalOpts),
|
|
414
|
-
v2: await nv2.getValues(offset2, Math.ceil(r2.end / binsize), signalOpts),
|
|
415
|
-
offset1,
|
|
416
|
-
offset2,
|
|
417
|
-
};
|
|
418
|
-
}
|
|
389
|
+
const [offset1, end1] = binWindow(r1, binsize);
|
|
390
|
+
const [offset2, end2] = binWindow(r2, binsize);
|
|
391
|
+
// Awaited in sequence, an inter-chromosomal pair would pay four
|
|
392
|
+
// round-trip waves for what is two hops per vector.
|
|
393
|
+
const [nv1, nv2] = await Promise.all([
|
|
394
|
+
this.getNormalizationVector(normalization, r1.chr, binsize, signalOpts),
|
|
395
|
+
this.getNormalizationVector(normalization, r2.chr, binsize, signalOpts),
|
|
396
|
+
]);
|
|
397
|
+
if (!nv1 || !nv2) {
|
|
398
|
+
return undefined;
|
|
419
399
|
}
|
|
420
|
-
|
|
400
|
+
const [v1, v2] = await Promise.all([
|
|
401
|
+
nv1.getValues(offset1, end1, signalOpts),
|
|
402
|
+
nv2.getValues(offset2, end2, signalOpts),
|
|
403
|
+
]);
|
|
404
|
+
return { v1, v2, offset1, offset2 };
|
|
421
405
|
}
|
|
422
406
|
async getBlocks(region1, region2, binSize, opts) {
|
|
423
407
|
const blockKey = (blockNumber, zd) => `${zd.getKey()}_${blockNumber}`;
|
|
424
408
|
await this.init(opts);
|
|
425
|
-
const
|
|
426
|
-
const
|
|
427
|
-
const idx1 = this.chromosomeIndexMap[chr1];
|
|
428
|
-
const idx2 = this.chromosomeIndexMap[chr2];
|
|
409
|
+
const idx1 = this.chromosomeIndexMap.get(region1.chr);
|
|
410
|
+
const idx2 = this.chromosomeIndexMap.get(region2.chr);
|
|
429
411
|
let blocks = [];
|
|
430
412
|
if (idx1 === undefined) {
|
|
431
413
|
console.warn(`No chromosome named: ${region1.chr}`);
|
|
@@ -446,43 +428,37 @@ export class HicFile {
|
|
|
446
428
|
throw new Error(`${NO_DATA_FOR_RESOLUTION}: ${binSize} for map ${region1.chr}-${region2.chr}`);
|
|
447
429
|
}
|
|
448
430
|
const blockNumbers = zd.getBlockNumbers(region1, region2, this.version);
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
const cached = this.blockCache.get(blockKey(num, zd));
|
|
452
|
-
if (cached) {
|
|
453
|
-
blocks.push(cached);
|
|
454
|
-
}
|
|
455
|
-
else {
|
|
456
|
-
blockNumbersToQuery.push(num);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
431
|
+
const keys = blockNumbers.map(num => blockKey(num, zd));
|
|
432
|
+
const cached = keys.map(key => this.blockCache.has(key));
|
|
459
433
|
// Cached blocks are already done, not absent: a pan that reuses most
|
|
460
434
|
// of its blocks reads most of the way along rather than restarting at
|
|
461
435
|
// zero, which is what the bar should say — the work left is the reads.
|
|
436
|
+
// A block another fetch has in flight counts as cached too.
|
|
462
437
|
//
|
|
463
438
|
// A query covering no blocks at all reports nothing rather than `0, 0`:
|
|
464
439
|
// there is no fraction in it, and a caller dividing would get NaN.
|
|
465
440
|
const { onProgress } = opts ?? {};
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
441
|
+
const total = blockNumbers.length;
|
|
442
|
+
let done = cached.filter(Boolean).length;
|
|
443
|
+
if (total > 0) {
|
|
444
|
+
onProgress?.(done, total);
|
|
469
445
|
}
|
|
470
|
-
//
|
|
471
|
-
//
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
446
|
+
// One `Promise.all`, so every block is issued in one wave: what a
|
|
447
|
+
// remote file pays is round-trip DEPTH, and counting the completions
|
|
448
|
+
// must not turn one wave into a queue. `readChainDepth` pins that.
|
|
449
|
+
//
|
|
450
|
+
// A block number missing from the index has no data, so it skips the
|
|
451
|
+
// cache, which would otherwise keep a weightless entry for it forever.
|
|
452
|
+
blocks = await Promise.all(blockNumbers.map(async (num, i) => {
|
|
453
|
+
const block = zd.blockIndex[num]
|
|
454
|
+
? await this.blockCache.get(keys[i], opts?.signal, signal => this.readBlock(num, zd, { signal }))
|
|
455
|
+
: undefined;
|
|
456
|
+
if (!cached[i]) {
|
|
457
|
+
done++;
|
|
458
|
+
onProgress?.(done, total);
|
|
459
|
+
}
|
|
478
460
|
return block;
|
|
479
461
|
}));
|
|
480
|
-
for (const block of newBlocks) {
|
|
481
|
-
if (block) {
|
|
482
|
-
this.blockCache.set(blockKey(block.blockNumber, zd), block);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
blocks = blocks.concat(newBlocks);
|
|
486
462
|
}
|
|
487
463
|
}
|
|
488
464
|
return blocks;
|
|
@@ -589,13 +565,13 @@ export class HicFile {
|
|
|
589
565
|
}
|
|
590
566
|
throw new Error(`Unknown block type: ${type}`);
|
|
591
567
|
}
|
|
592
|
-
async getNormalizationVector(type, chr,
|
|
568
|
+
async getNormalizationVector(type, chr, binSize, opts) {
|
|
593
569
|
await this.init(opts);
|
|
594
|
-
const chrIdx = this.chromosomeIndexMap
|
|
570
|
+
const chrIdx = this.chromosomeIndexMap.get(chr);
|
|
595
571
|
if (chrIdx === undefined) {
|
|
596
572
|
return undefined;
|
|
597
573
|
}
|
|
598
|
-
const key = getNormalizationVectorKey(type, chrIdx,
|
|
574
|
+
const key = getNormalizationVectorKey(type, chrIdx, 'BP', binSize);
|
|
599
575
|
// Sharing the in-flight read is what keeps concurrent region pairs sharing
|
|
600
576
|
// one vector: a chromosome appears in every pair it takes part in, so with a
|
|
601
577
|
// result-only cache each of those pairs missed while the first was still in
|
|
@@ -652,8 +628,8 @@ export class HicFile {
|
|
|
652
628
|
size: this.normVectorIndexSize,
|
|
653
629
|
}, opts.signal);
|
|
654
630
|
}
|
|
655
|
-
else if (this.
|
|
656
|
-
const nviArray = decodeURIComponent(this.
|
|
631
|
+
else if (this.nvi) {
|
|
632
|
+
const nviArray = decodeURIComponent(this.nvi).split(',');
|
|
657
633
|
return this.readNormVectorIndex({
|
|
658
634
|
start: parseInt(nviArray[0]),
|
|
659
635
|
size: parseInt(nviArray[1]),
|
|
@@ -697,38 +673,27 @@ export class HicFile {
|
|
|
697
673
|
let index;
|
|
698
674
|
if (this.normExpectedValueVectorsPosition !== undefined) {
|
|
699
675
|
const nviStart = await this.skipExpectedValues(this.normExpectedValueVectorsPosition, opts);
|
|
700
|
-
|
|
701
|
-
let data = await this.file.read(nviStart, INT, { signal });
|
|
676
|
+
const data = await this.file.read(nviStart, INT, { signal });
|
|
702
677
|
// Possible if there are no norm vectors. A legal v8 file, though uncommon.
|
|
703
678
|
if (data.byteLength !== 0) {
|
|
704
|
-
const
|
|
705
|
-
const nEntries = binaryParser.getInt();
|
|
706
|
-
const sizeEstimate = nEntries * 30;
|
|
707
|
-
data = await this.file.read(nviStart + byteCount, sizeEstimate, {
|
|
708
|
-
signal,
|
|
709
|
-
});
|
|
679
|
+
const nEntries = new BinaryParser(new DataView(data)).getInt();
|
|
710
680
|
const found = { entries: {}, types: ['NONE'] };
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
return;
|
|
724
|
-
}
|
|
725
|
-
this.parseNormVectorEntry(parser, found);
|
|
681
|
+
let position = nviStart + INT;
|
|
682
|
+
let requested = nEntries * 30;
|
|
683
|
+
let buf = await this.file.read(position, requested, { signal });
|
|
684
|
+
let parser = new BinaryParser(new DataView(buf));
|
|
685
|
+
for (let n = nEntries; n > 0; n--) {
|
|
686
|
+
// A short read means the buffer already runs to EOF, and refilling
|
|
687
|
+
// it would only return the same bytes again.
|
|
688
|
+
if (parser.available() < 100 && buf.byteLength === requested) {
|
|
689
|
+
position += parser.position;
|
|
690
|
+
requested = Math.max(1000, n * 30);
|
|
691
|
+
buf = await this.file.read(position, requested, { signal });
|
|
692
|
+
parser = new BinaryParser(new DataView(buf));
|
|
726
693
|
}
|
|
727
|
-
|
|
728
|
-
}
|
|
729
|
-
await processEntries(nEntries, data);
|
|
694
|
+
this.parseNormVectorEntry(parser, found);
|
|
695
|
+
}
|
|
730
696
|
throwIfAborted(signal);
|
|
731
|
-
this.config.nvi = `${nviStart},${byteCount}`;
|
|
732
697
|
index = found;
|
|
733
698
|
}
|
|
734
699
|
}
|
|
@@ -800,14 +765,11 @@ export class HicFile {
|
|
|
800
765
|
const binSize = binaryParser.getInt(); // 4
|
|
801
766
|
const filePosition = binaryParser.getLong(); // 8
|
|
802
767
|
const sizeInBytes = this.version < 9 ? binaryParser.getInt() : binaryParser.getLong(); // 4:8
|
|
803
|
-
const key =
|
|
768
|
+
const key = getNormalizationVectorKey(type, chrIdx, unit, binSize);
|
|
804
769
|
if (!index.types.includes(type)) {
|
|
805
770
|
index.types.push(type);
|
|
806
771
|
}
|
|
807
772
|
index.entries[key] = { filePosition, size: sizeInBytes };
|
|
808
773
|
}
|
|
809
|
-
getFileChrName(chrAlias) {
|
|
810
|
-
return this.chrAliasTable[chrAlias] ?? chrAlias;
|
|
811
|
-
}
|
|
812
774
|
}
|
|
813
775
|
//# sourceMappingURL=hicFile.js.map
|
package/esm/hicFile.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -6,5 +6,7 @@ export default class NormalizationVector {
|
|
|
6
6
|
private nValues;
|
|
7
7
|
private dataType;
|
|
8
8
|
constructor(file: Reader, filePosition: number, nValues: number, dataType: number);
|
|
9
|
-
getValues(start: number, end: number, opts?: BaseOpts): Promise<Float64Array
|
|
9
|
+
getValues(start: number, end: number, opts?: BaseOpts): Promise<Float64Array>;
|
|
10
|
+
private readRange;
|
|
11
|
+
private readValues;
|
|
10
12
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import BinaryParser from "./binary.js";
|
|
2
2
|
const DOUBLE = 8;
|
|
3
3
|
export default class NormalizationVector {
|
|
4
|
+
// Holds the in-flight read, so the two concurrent `getValues` calls of a
|
|
5
|
+
// same-chromosome pair share one read instead of both missing.
|
|
4
6
|
cache;
|
|
5
7
|
file;
|
|
6
8
|
filePosition;
|
|
@@ -13,48 +15,67 @@ export default class NormalizationVector {
|
|
|
13
15
|
this.dataType = dataType;
|
|
14
16
|
}
|
|
15
17
|
async getValues(start, end, opts) {
|
|
16
|
-
// The read
|
|
17
|
-
//
|
|
18
|
-
// the vector
|
|
19
|
-
//
|
|
20
|
-
// forever, and every call re-reads the same range from the file.
|
|
18
|
+
// The read clamps to `nValues`, so the cache can never cover past it.
|
|
19
|
+
// Comparing against the clamped bound keeps a request running off the end
|
|
20
|
+
// of the vector (an assembly refseq longer than the `.hic` recorded) from
|
|
21
|
+
// missing forever.
|
|
21
22
|
const wanted = Math.min(end, this.nValues);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const parser = new BinaryParser(new DataView(data));
|
|
44
|
-
const values = new Float64Array(n);
|
|
45
|
-
for (let i = 0; i < n; i++) {
|
|
46
|
-
values[i] =
|
|
47
|
-
this.dataType === DOUBLE ? parser.getDouble() : parser.getFloat();
|
|
23
|
+
let cache = this.cache;
|
|
24
|
+
const joined = !!cache && start >= cache.start && wanted <= cache.end;
|
|
25
|
+
if (!cache || !joined) {
|
|
26
|
+
cache = this.readRange(start, end, opts);
|
|
27
|
+
this.cache = cache;
|
|
28
|
+
const pending = cache;
|
|
29
|
+
pending.values.catch(() => {
|
|
30
|
+
if (this.cache === pending) {
|
|
31
|
+
this.cache = undefined;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
let values;
|
|
36
|
+
try {
|
|
37
|
+
values = await cache.values;
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
// The pair that started a joined read passed its own signal, so that
|
|
41
|
+
// pair aborting says nothing about this caller.
|
|
42
|
+
if (!joined || opts?.signal?.aborted) {
|
|
43
|
+
throw e;
|
|
48
44
|
}
|
|
49
|
-
this.
|
|
45
|
+
return this.getValues(start, end, opts);
|
|
46
|
+
}
|
|
47
|
+
// A view, not a copy. Both this and `subarray` clamp a request running past
|
|
48
|
+
// the end; an out-of-range index reads undefined, the product goes NaN, and
|
|
49
|
+
// the record filter drops it.
|
|
50
|
+
const sliceStart = start - cache.start;
|
|
51
|
+
return values.subarray(sliceStart, sliceStart + (end - start));
|
|
52
|
+
}
|
|
53
|
+
readRange(start, end, opts) {
|
|
54
|
+
const adjustedEnd = Math.min(this.nValues, end + 1000);
|
|
55
|
+
// Clamped against `adjustedEnd` too, or a window starting past the vector
|
|
56
|
+
// gives a negative read length, which the reader turns into a RangeError
|
|
57
|
+
// instead of the empty answer the caller handles.
|
|
58
|
+
const adjustedStart = Math.min(Math.max(0, start - 1000), adjustedEnd);
|
|
59
|
+
const n = adjustedEnd - adjustedStart;
|
|
60
|
+
return {
|
|
61
|
+
start: adjustedStart,
|
|
62
|
+
end: adjustedEnd,
|
|
63
|
+
values: this.readValues(adjustedStart, n, opts),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async readValues(start, n, opts) {
|
|
67
|
+
// A zero-length range request on a remote file is still a round trip.
|
|
68
|
+
if (n <= 0) {
|
|
69
|
+
return new Float64Array(0);
|
|
70
|
+
}
|
|
71
|
+
const data = await this.file.read(this.filePosition + start * this.dataType, n * this.dataType, opts);
|
|
72
|
+
const parser = new BinaryParser(new DataView(data));
|
|
73
|
+
const values = new Float64Array(n);
|
|
74
|
+
for (let i = 0; i < n; i++) {
|
|
75
|
+
values[i] =
|
|
76
|
+
this.dataType === DOUBLE ? parser.getDouble() : parser.getFloat();
|
|
50
77
|
}
|
|
51
|
-
|
|
52
|
-
// these per chromosome per region pair. Both this and `slice` clamp a
|
|
53
|
-
// request running past the end to what exists, which the caller already
|
|
54
|
-
// handles — an out-of-range index reads undefined, making the product NaN,
|
|
55
|
-
// which the record filter drops.
|
|
56
|
-
const sliceStart = start - this.cache.start;
|
|
57
|
-
return this.cache.values.subarray(sliceStart, sliceStart + (end - start));
|
|
78
|
+
return values;
|
|
58
79
|
}
|
|
59
80
|
}
|
|
60
81
|
//# sourceMappingURL=normalizationVector.js.map
|