@gmod/hic 1.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.
Files changed (88) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +91 -0
  3. package/dist/binWindow.d.ts +24 -0
  4. package/dist/binWindow.js +32 -0
  5. package/dist/binWindow.js.map +1 -0
  6. package/dist/binary.d.ts +15 -0
  7. package/dist/binary.js +67 -0
  8. package/dist/binary.js.map +1 -0
  9. package/dist/bufferedFile.d.ts +13 -0
  10. package/dist/bufferedFile.js +78 -0
  11. package/dist/bufferedFile.js.map +1 -0
  12. package/dist/contactRecords.d.ts +25 -0
  13. package/dist/contactRecords.js +3 -0
  14. package/dist/contactRecords.js.map +1 -0
  15. package/dist/hicFile.d.ts +94 -0
  16. package/dist/hicFile.js +769 -0
  17. package/dist/hicFile.js.map +1 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.js +9 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/lru.d.ts +29 -0
  22. package/dist/lru.js +55 -0
  23. package/dist/lru.js.map +1 -0
  24. package/dist/matrix.d.ts +9 -0
  25. package/dist/matrix.js +41 -0
  26. package/dist/matrix.js.map +1 -0
  27. package/dist/matrixZoomData.d.ts +14 -0
  28. package/dist/matrixZoomData.js +96 -0
  29. package/dist/matrixZoomData.js.map +1 -0
  30. package/dist/normalizationVector.d.ts +10 -0
  31. package/dist/normalizationVector.js +51 -0
  32. package/dist/normalizationVector.js.map +1 -0
  33. package/dist/package.json +1 -0
  34. package/dist/reader.d.ts +3 -0
  35. package/dist/reader.js +12 -0
  36. package/dist/reader.js.map +1 -0
  37. package/dist/types.d.ts +35 -0
  38. package/dist/types.js +3 -0
  39. package/dist/types.js.map +1 -0
  40. package/esm/binWindow.d.ts +24 -0
  41. package/esm/binWindow.js +29 -0
  42. package/esm/binWindow.js.map +1 -0
  43. package/esm/binary.d.ts +15 -0
  44. package/esm/binary.js +64 -0
  45. package/esm/binary.js.map +1 -0
  46. package/esm/bufferedFile.d.ts +13 -0
  47. package/esm/bufferedFile.js +75 -0
  48. package/esm/bufferedFile.js.map +1 -0
  49. package/esm/contactRecords.d.ts +25 -0
  50. package/esm/contactRecords.js +2 -0
  51. package/esm/contactRecords.js.map +1 -0
  52. package/esm/hicFile.d.ts +94 -0
  53. package/esm/hicFile.js +762 -0
  54. package/esm/hicFile.js.map +1 -0
  55. package/esm/index.d.ts +5 -0
  56. package/esm/index.js +3 -0
  57. package/esm/index.js.map +1 -0
  58. package/esm/lru.d.ts +29 -0
  59. package/esm/lru.js +52 -0
  60. package/esm/lru.js.map +1 -0
  61. package/esm/matrix.d.ts +9 -0
  62. package/esm/matrix.js +35 -0
  63. package/esm/matrix.js.map +1 -0
  64. package/esm/matrixZoomData.d.ts +14 -0
  65. package/esm/matrixZoomData.js +93 -0
  66. package/esm/matrixZoomData.js.map +1 -0
  67. package/esm/normalizationVector.d.ts +10 -0
  68. package/esm/normalizationVector.js +45 -0
  69. package/esm/normalizationVector.js.map +1 -0
  70. package/esm/reader.d.ts +3 -0
  71. package/esm/reader.js +9 -0
  72. package/esm/reader.js.map +1 -0
  73. package/esm/types.d.ts +35 -0
  74. package/esm/types.js +2 -0
  75. package/esm/types.js.map +1 -0
  76. package/package.json +73 -0
  77. package/src/binWindow.ts +30 -0
  78. package/src/binary.ts +72 -0
  79. package/src/bufferedFile.ts +74 -0
  80. package/src/contactRecords.ts +25 -0
  81. package/src/hicFile.ts +943 -0
  82. package/src/index.ts +12 -0
  83. package/src/lru.ts +77 -0
  84. package/src/matrix.ts +43 -0
  85. package/src/matrixZoomData.ts +133 -0
  86. package/src/normalizationVector.ts +58 -0
  87. package/src/reader.ts +11 -0
  88. package/src/types.ts +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hicFile.js","sourceRoot":"","sources":["../src/hicFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { HicFile, NO_DATA_FOR_RESOLUTION } from './hicFile.ts';
2
+ export { readerFromFilehandle } from './reader.ts';
3
+ export type { HicConfig } from './hicFile.ts';
4
+ export type { ContactRecords } from './contactRecords.ts';
5
+ export type { Chromosome, HicMetadata, HicRegion, Reader, Zoom, } from './types.ts';
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readerFromFilehandle = exports.NO_DATA_FOR_RESOLUTION = exports.HicFile = void 0;
4
+ var hicFile_ts_1 = require("./hicFile.js");
5
+ Object.defineProperty(exports, "HicFile", { enumerable: true, get: function () { return hicFile_ts_1.HicFile; } });
6
+ Object.defineProperty(exports, "NO_DATA_FOR_RESOLUTION", { enumerable: true, get: function () { return hicFile_ts_1.NO_DATA_FOR_RESOLUTION; } });
7
+ var reader_ts_1 = require("./reader.js");
8
+ Object.defineProperty(exports, "readerFromFilehandle", { enumerable: true, get: function () { return reader_ts_1.readerFromFilehandle; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAArD,qGAAA,OAAO,OAAA;AAAE,oHAAA,sBAAsB,OAAA;AACxC,yCAAkD;AAAzC,iHAAA,oBAAoB,OAAA"}
package/dist/lru.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Optional second bound, for a cache whose entries differ wildly in size.
3
+ *
4
+ * An entry cap is a memory bound only while entries are interchangeable, and the
5
+ * block cache's are not: a block holds every contact in its bin square, so one
6
+ * can be a few thousand contacts or a few hundred thousand depending on binsize
7
+ * and distance from the diagonal. Capping entries therefore forced one number to
8
+ * answer two questions — how many blocks a fetch needs at once, and how much
9
+ * memory the biggest of them may hold — and the memory question won, which is
10
+ * what left the cache too small to serve a multi-region fetch (see hicFile.ts).
11
+ *
12
+ * Splitting them lets the entry cap track the working set while `maxBytes`
13
+ * stays the backstop it was standing in for.
14
+ */
15
+ interface WeightOpts<V> {
16
+ maxBytes: number;
17
+ weigh: (value: V) => number;
18
+ }
19
+ export default class LRU<K, V> {
20
+ private max;
21
+ private map;
22
+ private weight;
23
+ private weightOpts;
24
+ constructor(max?: number, weightOpts?: WeightOpts<V>);
25
+ get(key: K): V | undefined;
26
+ set(key: K, val: V): void;
27
+ delete(key: K): void;
28
+ }
29
+ export {};
package/dist/lru.js ADDED
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class LRU {
4
+ max;
5
+ map = new Map();
6
+ weight = 0;
7
+ weightOpts;
8
+ constructor(max = 10, weightOpts) {
9
+ this.max = max;
10
+ this.weightOpts = weightOpts;
11
+ }
12
+ get(key) {
13
+ const item = this.map.get(key);
14
+ if (item !== undefined) {
15
+ // refresh key
16
+ this.map.delete(key);
17
+ this.map.set(key, item);
18
+ }
19
+ return item;
20
+ }
21
+ set(key, val) {
22
+ if (this.map.has(key)) {
23
+ // refresh key, and drop its old weight — `set` on an existing key
24
+ // replaces the value, so the weight it contributed goes with it
25
+ this.delete(key);
26
+ }
27
+ this.map.set(key, val);
28
+ this.weight += this.weightOpts?.weigh(val) ?? 0;
29
+ // Entry cap first, then the byte budget. `size > 1` keeps a single entry
30
+ // larger than the whole budget rather than evicting it and looping forever
31
+ // on an empty map — a cache that can't hold the thing just asked for should
32
+ // still answer the caller that asked.
33
+ while (this.map.size > this.max ||
34
+ (this.weightOpts !== undefined &&
35
+ this.weight > this.weightOpts.maxBytes &&
36
+ this.map.size > 1)) {
37
+ const oldest = this.map.keys().next().value;
38
+ if (oldest === undefined) {
39
+ break;
40
+ }
41
+ this.delete(oldest);
42
+ }
43
+ }
44
+ // Used to evict a rejected in-flight promise so the next caller retries
45
+ // rather than resolving against a cached failure forever.
46
+ delete(key) {
47
+ const existing = this.map.get(key);
48
+ if (existing !== undefined) {
49
+ this.weight -= this.weightOpts?.weigh(existing) ?? 0;
50
+ }
51
+ this.map.delete(key);
52
+ }
53
+ }
54
+ exports.default = LRU;
55
+ //# sourceMappingURL=lru.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lru.js","sourceRoot":"","sources":["../src/lru.ts"],"names":[],"mappings":";;AAmBA,MAAqB,GAAG;IACd,GAAG,CAAQ;IACX,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;IACrB,MAAM,GAAG,CAAC,CAAA;IACV,UAAU,CAA2B;IAE7C,YAAY,GAAG,GAAG,EAAE,EAAE,UAA0B;QAC9C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,cAAc;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,GAAM;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,kEAAkE;YAClE,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE/C,yEAAyE;QACzE,2EAA2E;QAC3E,4EAA4E;QAC5E,sCAAsC;QACtC,OACE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;YACxB,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS;gBAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;gBACtC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EACpB,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;YAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAK;YACP,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,CAAC,GAAM;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;CACF;AAzDD,sBAyDC"}
@@ -0,0 +1,9 @@
1
+ import MatrixZoomData from './matrixZoomData.ts';
2
+ import type { Chromosome } from './types.ts';
3
+ export default class Matrix {
4
+ private bpZoomData;
5
+ constructor(zoomDataList: MatrixZoomData[]);
6
+ getZoomData(binSize: number): MatrixZoomData | undefined;
7
+ static getKey(chrIdx1: number, chrIdx2: number): string;
8
+ static parseMatrix(data: ArrayBuffer, chromosomes: Chromosome[]): Matrix;
9
+ }
package/dist/matrix.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const binary_ts_1 = __importDefault(require("./binary.js"));
7
+ const matrixZoomData_ts_1 = __importDefault(require("./matrixZoomData.js"));
8
+ class Matrix {
9
+ // BP levels only. The FRAG code paths were dropped in this fork, so a
10
+ // matrix's FRAG zoom levels are parsed off the wire and discarded rather than
11
+ // kept in a second list nothing can reach.
12
+ bpZoomData;
13
+ constructor(zoomDataList) {
14
+ this.bpZoomData = zoomDataList.filter(zd => zd.zoom.unit === 'BP');
15
+ }
16
+ // Fetch zoom data by bin size. If no matching level exists return undefined.
17
+ getZoomData(binSize) {
18
+ return this.bpZoomData.find(zd => binSize === zd.zoom.binSize);
19
+ }
20
+ static getKey(chrIdx1, chrIdx2) {
21
+ const lo = Math.min(chrIdx1, chrIdx2);
22
+ const hi = Math.max(chrIdx1, chrIdx2);
23
+ return `${lo}_${hi}`;
24
+ }
25
+ static parseMatrix(data, chromosomes) {
26
+ const dis = new binary_ts_1.default(new DataView(data));
27
+ const c1 = dis.getInt(); // Should equal chrIdx1
28
+ const c2 = dis.getInt(); // Should equal chrIdx2
29
+ const chr1 = chromosomes[c1];
30
+ const chr2 = chromosomes[c2];
31
+ // # of resolution levels (bp and frags)
32
+ let nResolutions = dis.getInt();
33
+ const zdList = [];
34
+ while (nResolutions-- > 0) {
35
+ zdList.push(matrixZoomData_ts_1.default.parseMatrixZoomData(chr1, chr2, dis));
36
+ }
37
+ return new Matrix(zdList);
38
+ }
39
+ }
40
+ exports.default = Matrix;
41
+ //# sourceMappingURL=matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../src/matrix.ts"],"names":[],"mappings":";;;;;AAAA,4DAAsC;AACtC,4EAAgD;AAIhD,MAAqB,MAAM;IACzB,sEAAsE;IACtE,8EAA8E;IAC9E,2CAA2C;IACnC,UAAU,CAAkB;IAEpC,YAAY,YAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACpE,CAAC;IAED,6EAA6E;IAC7E,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACrC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,CAAA;IACtB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAiB,EAAE,WAAyB;QAC7D,MAAM,GAAG,GAAG,IAAI,mBAAY,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA,CAAC,uBAAuB;QAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA,CAAC,uBAAuB;QAE/C,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAE,CAAA;QAE7B,wCAAwC;QACxC,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;QAC/B,MAAM,MAAM,GAAqB,EAAE,CAAA;QACnC,OAAO,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,2BAAc,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;CACF;AArCD,yBAqCC"}
@@ -0,0 +1,14 @@
1
+ import type BinaryParser from './binary.ts';
2
+ import type { BlockIndexEntry, Chromosome, HicRegion, Zoom } from './types.ts';
3
+ export default class MatrixZoomData {
4
+ chr1: Chromosome;
5
+ chr2: Chromosome;
6
+ zoom: Zoom;
7
+ blockBinCount: number;
8
+ blockColumnCount: number;
9
+ blockIndex: Record<number, BlockIndexEntry>;
10
+ constructor(chr1: Chromosome, chr2: Chromosome, zoom: Zoom, blockBinCount: number, blockColumnCount: number, blockIndex: Record<number, BlockIndexEntry>);
11
+ getKey(): string;
12
+ getBlockNumbers(region1: HicRegion, region2: HicRegion, version: number): number[];
13
+ static parseMatrixZoomData(chr1: Chromosome, chr2: Chromosome, dis: BinaryParser): MatrixZoomData;
14
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const binWindow_ts_1 = require("./binWindow.js");
4
+ class MatrixZoomData {
5
+ chr1;
6
+ chr2;
7
+ zoom;
8
+ blockBinCount;
9
+ blockColumnCount;
10
+ blockIndex;
11
+ constructor(chr1, chr2, zoom, blockBinCount, blockColumnCount, blockIndex) {
12
+ this.chr1 = chr1;
13
+ this.chr2 = chr2;
14
+ this.zoom = zoom;
15
+ this.blockBinCount = blockBinCount;
16
+ this.blockColumnCount = blockColumnCount;
17
+ this.blockIndex = blockIndex;
18
+ }
19
+ getKey() {
20
+ return `${this.chr1.name}_${this.chr2.name}_${this.zoom.unit}_${this.zoom.binSize}`;
21
+ }
22
+ getBlockNumbers(region1, region2, version) {
23
+ const sameChr = this.chr1 === this.chr2;
24
+ const binsize = this.zoom.binSize;
25
+ const blockBinCount = this.blockBinCount;
26
+ const blockColumnCount = this.blockColumnCount;
27
+ // Integer bin bounds, not the raw fractional quotients upstream used: the
28
+ // blocks selected here must cover every bin the record filter will accept,
29
+ // and `binWindow` widens that to any bin overlapping the region. Selecting
30
+ // too many blocks only costs a read the filter then discards; selecting too
31
+ // few silently drops records (see binWindow.ts).
32
+ const [x1, x2] = (0, binWindow_ts_1.binWindow)(region1, binsize);
33
+ const [y1, y2] = (0, binWindow_ts_1.binWindow)(region2, binsize);
34
+ // A Set dedups the block numbers that transposition can collide on the
35
+ // same-chr diagonal, and keeps both branches uniform.
36
+ const blockNumbers = new Set();
37
+ if (version < 9 || !sameChr) {
38
+ const col1 = Math.floor(x1 / blockBinCount);
39
+ const col2 = Math.floor((x2 - 1) / blockBinCount);
40
+ const row1 = Math.floor(y1 / blockBinCount);
41
+ const row2 = Math.floor((y2 - 1) / blockBinCount);
42
+ for (let row = row1; row <= row2; row++) {
43
+ for (let column = col1; column <= col2; column++) {
44
+ blockNumbers.add(sameChr && row < column
45
+ ? column * blockColumnCount + row
46
+ : row * blockColumnCount + column);
47
+ }
48
+ }
49
+ }
50
+ else {
51
+ // PAD = positionAlongDiagonal (~projected). Depth is the axis
52
+ // perpendicular to the diagonal; nearer means closer to the diagonal.
53
+ // Widening stays safe here too: overlapping regions take the
54
+ // `containsDiagonal` branch (nearerDepth 0) and disjoint ones only see
55
+ // the near-corner gap shrink, so no depth level is lost.
56
+ const translatedLowerPAD = Math.floor((x1 + y1) / 2 / blockBinCount);
57
+ const translatedHigherPAD = Math.floor((x2 + y2) / 2 / blockBinCount);
58
+ const translatedNearerDepth = Math.floor(Math.log2(1 + Math.abs(x1 - y2) / Math.sqrt(2) / blockBinCount));
59
+ const translatedFurtherDepth = Math.floor(Math.log2(1 + Math.abs(x2 - y1) / Math.sqrt(2) / blockBinCount));
60
+ // code above assumes above diagonal, but we could be below it
61
+ const containsDiagonal = (x2 - y1) * (x1 - y2) < 0;
62
+ const nearerDepth = containsDiagonal
63
+ ? 0
64
+ : Math.min(translatedNearerDepth, translatedFurtherDepth);
65
+ const furtherDepth = Math.max(translatedNearerDepth, translatedFurtherDepth);
66
+ for (let depth = nearerDepth; depth <= furtherDepth; depth++) {
67
+ for (let pad = translatedLowerPAD; pad <= translatedHigherPAD; pad++) {
68
+ blockNumbers.add(depth * blockColumnCount + pad);
69
+ }
70
+ }
71
+ }
72
+ return [...blockNumbers];
73
+ }
74
+ static parseMatrixZoomData(chr1, chr2, dis) {
75
+ const unit = dis.getString();
76
+ const zoomIndex = dis.getInt();
77
+ dis.getFloat(); // sumCounts
78
+ dis.getFloat(); // occupiedCellCount
79
+ dis.getFloat(); // stdDev
80
+ dis.getFloat(); // percent95
81
+ const binSize = dis.getInt();
82
+ const blockBinCount = dis.getInt();
83
+ const blockColumnCount = dis.getInt();
84
+ let nBlocks = dis.getInt();
85
+ const blockIndex = {};
86
+ while (nBlocks-- > 0) {
87
+ const blockNumber = dis.getInt();
88
+ const filePosition = dis.getLong();
89
+ const size = dis.getInt();
90
+ blockIndex[blockNumber] = { filePosition, size };
91
+ }
92
+ return new MatrixZoomData(chr1, chr2, { index: zoomIndex, unit, binSize }, blockBinCount, blockColumnCount, blockIndex);
93
+ }
94
+ }
95
+ exports.default = MatrixZoomData;
96
+ //# sourceMappingURL=matrixZoomData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrixZoomData.js","sourceRoot":"","sources":["../src/matrixZoomData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Reader } from './types.ts';
2
+ export default class NormalizationVector {
3
+ private cache;
4
+ private file;
5
+ private filePosition;
6
+ private nValues;
7
+ private dataType;
8
+ constructor(file: Reader, filePosition: number, nValues: number, dataType: number);
9
+ getValues(start: number, end: number): Promise<Float64Array<ArrayBufferLike>>;
10
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const binary_ts_1 = __importDefault(require("./binary.js"));
7
+ const DOUBLE = 8;
8
+ class NormalizationVector {
9
+ cache;
10
+ file;
11
+ filePosition;
12
+ nValues;
13
+ dataType;
14
+ constructor(file, filePosition, nValues, dataType) {
15
+ this.file = file;
16
+ this.filePosition = filePosition;
17
+ this.nValues = nValues;
18
+ this.dataType = dataType;
19
+ }
20
+ async getValues(start, end) {
21
+ // The read below clamps to `nValues`, so the cache can never cover past it.
22
+ // Compare against the clamped bound or a request that runs off the end of
23
+ // the vector — reachable when the assembly's refseq is longer than the size
24
+ // the `.hic` recorded for that chromosome — leaves `end > cache.end` true
25
+ // forever, and every call re-reads the same range from the file.
26
+ const wanted = Math.min(end, this.nValues);
27
+ if (!this.cache || start < this.cache.start || wanted > this.cache.end) {
28
+ const adjustedStart = Math.max(0, start - 1000);
29
+ const adjustedEnd = Math.min(this.nValues, end + 1000);
30
+ const startPosition = this.filePosition + adjustedStart * this.dataType;
31
+ const n = adjustedEnd - adjustedStart;
32
+ const data = await this.file.read(startPosition, n * this.dataType);
33
+ const parser = new binary_ts_1.default(new DataView(data));
34
+ const values = new Float64Array(n);
35
+ for (let i = 0; i < n; i++) {
36
+ values[i] =
37
+ this.dataType === DOUBLE ? parser.getDouble() : parser.getFloat();
38
+ }
39
+ this.cache = { start: adjustedStart, end: adjustedEnd, values };
40
+ }
41
+ // A view, not a copy: the caller only reads it, and a fetch asks for one of
42
+ // these per chromosome per region pair. Both this and `slice` clamp a
43
+ // request running past the end to what exists, which the caller already
44
+ // handles — an out-of-range index reads undefined, making the product NaN,
45
+ // which the record filter drops.
46
+ const sliceStart = start - this.cache.start;
47
+ return this.cache.values.subarray(sliceStart, sliceStart + (end - start));
48
+ }
49
+ }
50
+ exports.default = NormalizationVector;
51
+ //# sourceMappingURL=normalizationVector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizationVector.js","sourceRoot":"","sources":["../src/normalizationVector.ts"],"names":[],"mappings":";;;;;AAAA,4DAAsC;AAItC,MAAM,MAAM,GAAG,CAAC,CAAA;AAEhB,MAAqB,mBAAmB;IAC9B,KAAK,CACqD;IAE1D,IAAI,CAAQ;IACZ,YAAY,CAAQ;IACpB,OAAO,CAAQ;IACf,QAAQ,CAAQ;IAExB,YACE,IAAY,EACZ,YAAoB,EACpB,OAAe,EACf,QAAgB;QAEhB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,GAAW;QACxC,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,0EAA0E;QAC1E,iEAAiE;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAA;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;YACtD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAA;YACvE,MAAM,CAAC,GAAG,WAAW,GAAG,aAAa,CAAA;YACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;YACnE,MAAM,MAAM,GAAG,IAAI,mBAAY,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;YACnD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,CAAC,CAAC,CAAC;oBACP,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YACrE,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA;QACjE,CAAC;QAED,4EAA4E;QAC5E,sEAAsE;QACtE,wEAAwE;QACxE,2EAA2E;QAC3E,iCAAiC;QACjC,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAA;IAC3E,CAAC;CACF;AAnDD,sCAmDC"}
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,3 @@
1
+ import type { Reader } from './types.ts';
2
+ import type { GenericFilehandle } from 'generic-filehandle2';
3
+ export declare function readerFromFilehandle(filehandle: GenericFilehandle): Reader;
package/dist/reader.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readerFromFilehandle = readerFromFilehandle;
4
+ function readerFromFilehandle(filehandle) {
5
+ return {
6
+ async read(position, length) {
7
+ const buf = await filehandle.read(length, position);
8
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
9
+ },
10
+ };
11
+ }
12
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":";;AAGA,oDAOC;AAPD,SAAgB,oBAAoB,CAAC,UAA6B;IAChE,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAAc;YACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;QAC1E,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The only read this parser needs: `length` bytes at `position`, coming back
3
+ * SHORT at end-of-file rather than throwing — the header walk deliberately
4
+ * reads past the end to discover whether a file carries normalization data at
5
+ * all. `generic-filehandle2` handles behave this way (a remote 416 included),
6
+ * and `readerFromFilehandle` adapts one to this shape.
7
+ */
8
+ export interface Reader {
9
+ read: (position: number, length: number) => Promise<ArrayBuffer>;
10
+ }
11
+ export interface Chromosome {
12
+ index: number;
13
+ name: string;
14
+ size: number;
15
+ }
16
+ export interface HicRegion {
17
+ chr: string;
18
+ start: number;
19
+ end: number;
20
+ }
21
+ export interface Zoom {
22
+ index: number;
23
+ unit: string;
24
+ binSize: number;
25
+ }
26
+ export interface BlockIndexEntry {
27
+ filePosition: number;
28
+ size: number;
29
+ }
30
+ export interface HicMetadata {
31
+ version: number;
32
+ genome: string;
33
+ chromosomes: Chromosome[];
34
+ resolutions: number[];
35
+ }
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import type { HicRegion } from './types.ts';
2
+ /**
3
+ * Half-open `[first, last+1)` range of bin indices **overlapping** a region.
4
+ *
5
+ * Upstream hic-straw compares bin indices against the raw fractional quotients
6
+ * `start/binsize` and `end/binsize`, which is exact only for the
7
+ * chromosome-aligned queries juicebox issues. A genome browser queries
8
+ * arbitrary viewport windows, where `start % binsize !== 0` essentially always
9
+ * holds, and the raw quotient then (a) drops the bin straddling the region's
10
+ * start — a missing column at the left edge of every block, jittering as the
11
+ * user pans — while keeping the one straddling the end, and (b) selects
12
+ * *nothing at all* for a region narrower than one bin, which is reachable by
13
+ * locking a coarse binsize while zoomed in.
14
+ *
15
+ * Flooring/ceiling also matches `getNormVectors`, which already builds its
16
+ * vector slice over `[floor(start/binsize), ceil(end/binsize))` — so
17
+ * `rec.bin1 - norm.offset1` indexes exactly the values that were fetched.
18
+ *
19
+ * Lives in its own module because both the record filter (`hicFile`) and the
20
+ * block-number selection (`matrixZoomData`) must agree on the window: widening
21
+ * only one of them still drops records, since a bin can sit in a block the
22
+ * other never asked for.
23
+ */
24
+ export declare function binWindow(region: HicRegion, binsize: number): readonly [number, number];
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Half-open `[first, last+1)` range of bin indices **overlapping** a region.
3
+ *
4
+ * Upstream hic-straw compares bin indices against the raw fractional quotients
5
+ * `start/binsize` and `end/binsize`, which is exact only for the
6
+ * chromosome-aligned queries juicebox issues. A genome browser queries
7
+ * arbitrary viewport windows, where `start % binsize !== 0` essentially always
8
+ * holds, and the raw quotient then (a) drops the bin straddling the region's
9
+ * start — a missing column at the left edge of every block, jittering as the
10
+ * user pans — while keeping the one straddling the end, and (b) selects
11
+ * *nothing at all* for a region narrower than one bin, which is reachable by
12
+ * locking a coarse binsize while zoomed in.
13
+ *
14
+ * Flooring/ceiling also matches `getNormVectors`, which already builds its
15
+ * vector slice over `[floor(start/binsize), ceil(end/binsize))` — so
16
+ * `rec.bin1 - norm.offset1` indexes exactly the values that were fetched.
17
+ *
18
+ * Lives in its own module because both the record filter (`hicFile`) and the
19
+ * block-number selection (`matrixZoomData`) must agree on the window: widening
20
+ * only one of them still drops records, since a bin can sit in a block the
21
+ * other never asked for.
22
+ */
23
+ export function binWindow(region, binsize) {
24
+ return [
25
+ Math.floor(region.start / binsize),
26
+ Math.ceil(region.end / binsize),
27
+ ];
28
+ }
29
+ //# sourceMappingURL=binWindow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binWindow.js","sourceRoot":"","sources":["../src/binWindow.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,SAAS,CAAC,MAAiB,EAAE,OAAe;IAC1D,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC;KACvB,CAAA;AACZ,CAAC"}
@@ -0,0 +1,15 @@
1
+ export default class BinaryParser {
2
+ position: number;
3
+ private view;
4
+ private length;
5
+ private littleEndian;
6
+ constructor(dataView: DataView, littleEndian?: boolean);
7
+ available(): number;
8
+ getByte(): number;
9
+ getShort(): number;
10
+ getInt(): number;
11
+ getLong(): number;
12
+ getString(): string;
13
+ getFloat(): number;
14
+ getDouble(): number;
15
+ }
package/esm/binary.js ADDED
@@ -0,0 +1,64 @@
1
+ export default class BinaryParser {
2
+ position = 0;
3
+ view;
4
+ length;
5
+ littleEndian;
6
+ constructor(dataView, littleEndian = true) {
7
+ this.view = dataView;
8
+ this.length = dataView.byteLength;
9
+ this.littleEndian = littleEndian;
10
+ }
11
+ available() {
12
+ return this.length - this.position;
13
+ }
14
+ getByte() {
15
+ const ret = this.view.getUint8(this.position);
16
+ this.position += 1;
17
+ return ret;
18
+ }
19
+ getShort() {
20
+ const ret = this.view.getInt16(this.position, this.littleEndian);
21
+ this.position += 2;
22
+ return ret;
23
+ }
24
+ getInt() {
25
+ const ret = this.view.getInt32(this.position, this.littleEndian);
26
+ this.position += 4;
27
+ return ret;
28
+ }
29
+ // No native 64-bit read that lands in a `number`, so compose two 32-bit words
30
+ // (deliberately not getBigUint64 — every caller is a file offset or a count
31
+ // that stays well inside Number.MAX_SAFE_INTEGER, and a BigInt would have to
32
+ // be converted back at each use site). hic-straw accumulated byte-by-byte
33
+ // through a throwaway 8-element array, which is a per-entry allocation in the
34
+ // block-index parse loop.
35
+ getLong() {
36
+ const p = this.position;
37
+ const le = this.littleEndian;
38
+ const first = this.view.getUint32(p, le);
39
+ const second = this.view.getUint32(p + 4, le);
40
+ this.position += 8;
41
+ // little-endian puts the low word first, big-endian the high word
42
+ return le ? second * 0x1_0000_0000 + first : first * 0x1_0000_0000 + second;
43
+ }
44
+ getString() {
45
+ let s = '';
46
+ let c = this.view.getUint8(this.position++);
47
+ while (c !== 0) {
48
+ s += String.fromCharCode(c);
49
+ c = this.view.getUint8(this.position++);
50
+ }
51
+ return s;
52
+ }
53
+ getFloat() {
54
+ const ret = this.view.getFloat32(this.position, this.littleEndian);
55
+ this.position += 4;
56
+ return ret;
57
+ }
58
+ getDouble() {
59
+ const ret = this.view.getFloat64(this.position, this.littleEndian);
60
+ this.position += 8;
61
+ return ret;
62
+ }
63
+ }
64
+ //# sourceMappingURL=binary.js.map