@gmod/bbi 7.1.0 → 8.0.1

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 (90) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +59 -0
  3. package/dist/bbi.d.ts +13 -3
  4. package/dist/bbi.js +80 -17
  5. package/dist/bbi.js.map +1 -1
  6. package/dist/bigbed.d.ts +14 -2
  7. package/dist/bigbed.js +116 -76
  8. package/dist/bigbed.js.map +1 -1
  9. package/dist/bigwig.js +1 -2
  10. package/dist/bigwig.js.map +1 -1
  11. package/dist/block-view.d.ts +13 -4
  12. package/dist/block-view.js +324 -148
  13. package/dist/block-view.js.map +1 -1
  14. package/dist/index.d.ts +2 -1
  15. package/dist/index.js +3 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/parse-bigwig.d.ts +3 -0
  18. package/dist/parse-bigwig.js +15 -0
  19. package/dist/parse-bigwig.js.map +1 -0
  20. package/dist/range.js +11 -24
  21. package/dist/range.js.map +1 -1
  22. package/dist/types.d.ts +14 -2
  23. package/dist/unzip.d.ts +18 -1
  24. package/dist/unzip.js +33 -4
  25. package/dist/unzip.js.map +1 -1
  26. package/dist/util.d.ts +2 -4
  27. package/dist/util.js +6 -5
  28. package/dist/util.js.map +1 -1
  29. package/dist/wasm/inflate-wasm-inlined.d.ts +18 -0
  30. package/dist/wasm/inflate-wasm-inlined.js +455 -0
  31. package/dist/wasm/inflate-wasm-inlined.js.map +1 -0
  32. package/dist/wasm/inflate_wasm.d.ts +1 -0
  33. package/dist/wasm/inflate_wasm.js +43 -0
  34. package/dist/wasm/inflate_wasm.js.map +1 -0
  35. package/dist/wasm/inflate_wasm_bg.d.ts +68 -0
  36. package/dist/wasm/inflate_wasm_bg.js +307 -0
  37. package/dist/wasm/inflate_wasm_bg.js.map +1 -0
  38. package/esm/bbi.d.ts +13 -3
  39. package/esm/bbi.js +80 -17
  40. package/esm/bbi.js.map +1 -1
  41. package/esm/bigbed.d.ts +14 -2
  42. package/esm/bigbed.js +116 -76
  43. package/esm/bigbed.js.map +1 -1
  44. package/esm/bigwig.js +1 -2
  45. package/esm/bigwig.js.map +1 -1
  46. package/esm/block-view.d.ts +13 -4
  47. package/esm/block-view.js +326 -150
  48. package/esm/block-view.js.map +1 -1
  49. package/esm/index.d.ts +2 -1
  50. package/esm/index.js +1 -0
  51. package/esm/index.js.map +1 -1
  52. package/esm/parse-bigwig.d.ts +3 -0
  53. package/esm/parse-bigwig.js +12 -0
  54. package/esm/parse-bigwig.js.map +1 -0
  55. package/esm/range.js +11 -24
  56. package/esm/range.js.map +1 -1
  57. package/esm/types.d.ts +14 -2
  58. package/esm/unzip.d.ts +18 -1
  59. package/esm/unzip.js +30 -3
  60. package/esm/unzip.js.map +1 -1
  61. package/esm/util.d.ts +2 -4
  62. package/esm/util.js +6 -5
  63. package/esm/util.js.map +1 -1
  64. package/esm/wasm/inflate-wasm-inlined.d.ts +18 -0
  65. package/esm/wasm/inflate-wasm-inlined.js +449 -0
  66. package/esm/wasm/inflate-wasm-inlined.js.map +1 -0
  67. package/esm/wasm/inflate_wasm.d.ts +1 -0
  68. package/esm/wasm/inflate_wasm.js +5 -0
  69. package/esm/wasm/inflate_wasm.js.map +1 -0
  70. package/esm/wasm/inflate_wasm_bg.d.ts +68 -0
  71. package/esm/wasm/inflate_wasm_bg.js +296 -0
  72. package/esm/wasm/inflate_wasm_bg.js.map +1 -0
  73. package/package.json +17 -12
  74. package/src/bbi.ts +102 -20
  75. package/src/bigbed.ts +157 -80
  76. package/src/bigwig.ts +1 -2
  77. package/src/block-view.ts +418 -156
  78. package/src/index.ts +8 -1
  79. package/src/parse-bigwig.ts +19 -0
  80. package/src/range.ts +13 -21
  81. package/src/types.ts +19 -2
  82. package/src/unzip.ts +86 -3
  83. package/src/util.ts +9 -10
  84. package/src/wasm/inflate-wasm-inlined.d.ts +49 -0
  85. package/src/wasm/inflate-wasm-inlined.js +547 -0
  86. package/src/wasm/inflate_wasm.d.ts +35 -0
  87. package/src/wasm/inflate_wasm.js +4 -0
  88. package/src/wasm/inflate_wasm_bg.js +309 -0
  89. package/src/wasm/inflate_wasm_bg.wasm +0 -0
  90. package/src/wasm/inflate_wasm_bg.wasm.d.ts +13 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const wasm = __importStar(require("./inflate_wasm_bg.wasm"));
40
+ __exportStar(require("./inflate_wasm_bg.js"), exports);
41
+ const inflate_wasm_bg_js_1 = require("./inflate_wasm_bg.js");
42
+ (0, inflate_wasm_bg_js_1.__wbg_set_wasm)(wasm);
43
+ //# sourceMappingURL=inflate_wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflate_wasm.js","sourceRoot":"","sources":["../../src/wasm/inflate_wasm.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA+C;AAC/C,uDAAqC;AACrC,6DAAsD;AACtD,IAAA,mCAAc,EAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,68 @@
1
+ export function __wbg_set_wasm(val: any): void;
2
+ /**
3
+ * Combined decompress + parse for BigWig blocks
4
+ * Returns same format as parse_bigwig_block but handles multiple compressed blocks
5
+ * @param {Uint8Array} inputs
6
+ * @param {Uint32Array} input_offsets
7
+ * @param {Uint32Array} input_lengths
8
+ * @param {number} max_block_size
9
+ * @param {number} req_start
10
+ * @param {number} req_end
11
+ * @returns {Uint8Array}
12
+ */
13
+ export function decompress_and_parse_bigwig(inputs: Uint8Array, input_offsets: Uint32Array, input_lengths: Uint32Array, max_block_size: number, req_start: number, req_end: number): Uint8Array;
14
+ /**
15
+ * Combined decompress + parse for summary blocks
16
+ * @param {Uint8Array} inputs
17
+ * @param {Uint32Array} input_offsets
18
+ * @param {Uint32Array} input_lengths
19
+ * @param {number} max_block_size
20
+ * @param {number} req_chr_id
21
+ * @param {number} req_start
22
+ * @param {number} req_end
23
+ * @returns {Uint8Array}
24
+ */
25
+ export function decompress_and_parse_summary(inputs: Uint8Array, input_offsets: Uint32Array, input_lengths: Uint32Array, max_block_size: number, req_chr_id: number, req_start: number, req_end: number): Uint8Array;
26
+ /**
27
+ * @param {Uint8Array} input
28
+ * @param {number} output_size
29
+ * @returns {Uint8Array}
30
+ */
31
+ export function inflate_raw(input: Uint8Array, output_size: number): Uint8Array;
32
+ /**
33
+ * @param {Uint8Array} inputs
34
+ * @param {Uint32Array} input_offsets
35
+ * @param {Uint32Array} input_lengths
36
+ * @param {number} max_block_size
37
+ * @returns {Uint8Array}
38
+ */
39
+ export function inflate_raw_batch(inputs: Uint8Array, input_offsets: Uint32Array, input_lengths: Uint32Array, max_block_size: number): Uint8Array;
40
+ /**
41
+ * @param {Uint8Array} input
42
+ * @returns {Uint8Array}
43
+ */
44
+ export function inflate_raw_unknown_size(input: Uint8Array): Uint8Array;
45
+ /**
46
+ * Parse a BigWig data block and return packed typed arrays
47
+ * Block types: 1 = bedGraph, 2 = varstep, 3 = fixedstep
48
+ *
49
+ * Returns packed binary: [count: u32][starts: i32*count][ends: i32*count][scores: f32*count]
50
+ * @param {Uint8Array} data
51
+ * @param {number} req_start
52
+ * @param {number} req_end
53
+ * @returns {Uint8Array}
54
+ */
55
+ export function parse_bigwig_block(data: Uint8Array, req_start: number, req_end: number): Uint8Array;
56
+ /**
57
+ * Parse a BigWig summary block and return packed typed arrays
58
+ * Summary blocks contain: chromId, start, end, validCnt, minScore, maxScore, sumData, sumSqData
59
+ *
60
+ * Returns: [count: u32][starts: i32*n][ends: i32*n][scores: f32*n][minScores: f32*n][maxScores: f32*n]
61
+ * @param {Uint8Array} data
62
+ * @param {number} req_chr_id
63
+ * @param {number} req_start
64
+ * @param {number} req_end
65
+ * @returns {Uint8Array}
66
+ */
67
+ export function parse_summary_block(data: Uint8Array, req_chr_id: number, req_start: number, req_end: number): Uint8Array;
68
+ export function __wbg_Error_52673b7de5a0ca89(arg0: any, arg1: any): number;
@@ -0,0 +1,307 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.__wbg_set_wasm = __wbg_set_wasm;
4
+ exports.decompress_and_parse_bigwig = decompress_and_parse_bigwig;
5
+ exports.decompress_and_parse_summary = decompress_and_parse_summary;
6
+ exports.inflate_raw = inflate_raw;
7
+ exports.inflate_raw_batch = inflate_raw_batch;
8
+ exports.inflate_raw_unknown_size = inflate_raw_unknown_size;
9
+ exports.parse_bigwig_block = parse_bigwig_block;
10
+ exports.parse_summary_block = parse_summary_block;
11
+ exports.__wbg_Error_52673b7de5a0ca89 = __wbg_Error_52673b7de5a0ca89;
12
+ let wasm;
13
+ function __wbg_set_wasm(val) {
14
+ wasm = val;
15
+ }
16
+ function addHeapObject(obj) {
17
+ if (heap_next === heap.length)
18
+ heap.push(heap.length + 1);
19
+ const idx = heap_next;
20
+ heap_next = heap[idx];
21
+ heap[idx] = obj;
22
+ return idx;
23
+ }
24
+ function dropObject(idx) {
25
+ if (idx < 132)
26
+ return;
27
+ heap[idx] = heap_next;
28
+ heap_next = idx;
29
+ }
30
+ function getArrayU8FromWasm0(ptr, len) {
31
+ ptr = ptr >>> 0;
32
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
33
+ }
34
+ let cachedDataViewMemory0 = null;
35
+ function getDataViewMemory0() {
36
+ if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
37
+ cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
38
+ }
39
+ return cachedDataViewMemory0;
40
+ }
41
+ function getStringFromWasm0(ptr, len) {
42
+ ptr = ptr >>> 0;
43
+ return decodeText(ptr, len);
44
+ }
45
+ let cachedUint32ArrayMemory0 = null;
46
+ function getUint32ArrayMemory0() {
47
+ if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {
48
+ cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);
49
+ }
50
+ return cachedUint32ArrayMemory0;
51
+ }
52
+ let cachedUint8ArrayMemory0 = null;
53
+ function getUint8ArrayMemory0() {
54
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
55
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
56
+ }
57
+ return cachedUint8ArrayMemory0;
58
+ }
59
+ function getObject(idx) { return heap[idx]; }
60
+ let heap = new Array(128).fill(undefined);
61
+ heap.push(undefined, null, true, false);
62
+ let heap_next = heap.length;
63
+ function passArray32ToWasm0(arg, malloc) {
64
+ const ptr = malloc(arg.length * 4, 4) >>> 0;
65
+ getUint32ArrayMemory0().set(arg, ptr / 4);
66
+ WASM_VECTOR_LEN = arg.length;
67
+ return ptr;
68
+ }
69
+ function passArray8ToWasm0(arg, malloc) {
70
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
71
+ getUint8ArrayMemory0().set(arg, ptr / 1);
72
+ WASM_VECTOR_LEN = arg.length;
73
+ return ptr;
74
+ }
75
+ function takeObject(idx) {
76
+ const ret = getObject(idx);
77
+ dropObject(idx);
78
+ return ret;
79
+ }
80
+ let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
81
+ cachedTextDecoder.decode();
82
+ const MAX_SAFARI_DECODE_BYTES = 2146435072;
83
+ let numBytesDecoded = 0;
84
+ function decodeText(ptr, len) {
85
+ numBytesDecoded += len;
86
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
87
+ cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
88
+ cachedTextDecoder.decode();
89
+ numBytesDecoded = len;
90
+ }
91
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
92
+ }
93
+ let WASM_VECTOR_LEN = 0;
94
+ /**
95
+ * Combined decompress + parse for BigWig blocks
96
+ * Returns same format as parse_bigwig_block but handles multiple compressed blocks
97
+ * @param {Uint8Array} inputs
98
+ * @param {Uint32Array} input_offsets
99
+ * @param {Uint32Array} input_lengths
100
+ * @param {number} max_block_size
101
+ * @param {number} req_start
102
+ * @param {number} req_end
103
+ * @returns {Uint8Array}
104
+ */
105
+ function decompress_and_parse_bigwig(inputs, input_offsets, input_lengths, max_block_size, req_start, req_end) {
106
+ try {
107
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
108
+ const ptr0 = passArray8ToWasm0(inputs, wasm.__wbindgen_export);
109
+ const len0 = WASM_VECTOR_LEN;
110
+ const ptr1 = passArray32ToWasm0(input_offsets, wasm.__wbindgen_export);
111
+ const len1 = WASM_VECTOR_LEN;
112
+ const ptr2 = passArray32ToWasm0(input_lengths, wasm.__wbindgen_export);
113
+ const len2 = WASM_VECTOR_LEN;
114
+ wasm.decompress_and_parse_bigwig(retptr, ptr0, len0, ptr1, len1, ptr2, len2, max_block_size, req_start, req_end);
115
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
116
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
117
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
118
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
119
+ if (r3) {
120
+ throw takeObject(r2);
121
+ }
122
+ var v4 = getArrayU8FromWasm0(r0, r1).slice();
123
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
124
+ return v4;
125
+ }
126
+ finally {
127
+ wasm.__wbindgen_add_to_stack_pointer(16);
128
+ }
129
+ }
130
+ /**
131
+ * Combined decompress + parse for summary blocks
132
+ * @param {Uint8Array} inputs
133
+ * @param {Uint32Array} input_offsets
134
+ * @param {Uint32Array} input_lengths
135
+ * @param {number} max_block_size
136
+ * @param {number} req_chr_id
137
+ * @param {number} req_start
138
+ * @param {number} req_end
139
+ * @returns {Uint8Array}
140
+ */
141
+ function decompress_and_parse_summary(inputs, input_offsets, input_lengths, max_block_size, req_chr_id, req_start, req_end) {
142
+ try {
143
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
144
+ const ptr0 = passArray8ToWasm0(inputs, wasm.__wbindgen_export);
145
+ const len0 = WASM_VECTOR_LEN;
146
+ const ptr1 = passArray32ToWasm0(input_offsets, wasm.__wbindgen_export);
147
+ const len1 = WASM_VECTOR_LEN;
148
+ const ptr2 = passArray32ToWasm0(input_lengths, wasm.__wbindgen_export);
149
+ const len2 = WASM_VECTOR_LEN;
150
+ wasm.decompress_and_parse_summary(retptr, ptr0, len0, ptr1, len1, ptr2, len2, max_block_size, req_chr_id, req_start, req_end);
151
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
152
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
153
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
154
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
155
+ if (r3) {
156
+ throw takeObject(r2);
157
+ }
158
+ var v4 = getArrayU8FromWasm0(r0, r1).slice();
159
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
160
+ return v4;
161
+ }
162
+ finally {
163
+ wasm.__wbindgen_add_to_stack_pointer(16);
164
+ }
165
+ }
166
+ /**
167
+ * @param {Uint8Array} input
168
+ * @param {number} output_size
169
+ * @returns {Uint8Array}
170
+ */
171
+ function inflate_raw(input, output_size) {
172
+ try {
173
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
174
+ const ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_export);
175
+ const len0 = WASM_VECTOR_LEN;
176
+ wasm.inflate_raw(retptr, ptr0, len0, output_size);
177
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
178
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
179
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
180
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
181
+ if (r3) {
182
+ throw takeObject(r2);
183
+ }
184
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
185
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
186
+ return v2;
187
+ }
188
+ finally {
189
+ wasm.__wbindgen_add_to_stack_pointer(16);
190
+ }
191
+ }
192
+ /**
193
+ * @param {Uint8Array} inputs
194
+ * @param {Uint32Array} input_offsets
195
+ * @param {Uint32Array} input_lengths
196
+ * @param {number} max_block_size
197
+ * @returns {Uint8Array}
198
+ */
199
+ function inflate_raw_batch(inputs, input_offsets, input_lengths, max_block_size) {
200
+ try {
201
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
202
+ const ptr0 = passArray8ToWasm0(inputs, wasm.__wbindgen_export);
203
+ const len0 = WASM_VECTOR_LEN;
204
+ const ptr1 = passArray32ToWasm0(input_offsets, wasm.__wbindgen_export);
205
+ const len1 = WASM_VECTOR_LEN;
206
+ const ptr2 = passArray32ToWasm0(input_lengths, wasm.__wbindgen_export);
207
+ const len2 = WASM_VECTOR_LEN;
208
+ wasm.inflate_raw_batch(retptr, ptr0, len0, ptr1, len1, ptr2, len2, max_block_size);
209
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
210
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
211
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
212
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
213
+ if (r3) {
214
+ throw takeObject(r2);
215
+ }
216
+ var v4 = getArrayU8FromWasm0(r0, r1).slice();
217
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
218
+ return v4;
219
+ }
220
+ finally {
221
+ wasm.__wbindgen_add_to_stack_pointer(16);
222
+ }
223
+ }
224
+ /**
225
+ * @param {Uint8Array} input
226
+ * @returns {Uint8Array}
227
+ */
228
+ function inflate_raw_unknown_size(input) {
229
+ try {
230
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
231
+ const ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_export);
232
+ const len0 = WASM_VECTOR_LEN;
233
+ wasm.inflate_raw_unknown_size(retptr, ptr0, len0);
234
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
235
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
236
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
237
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
238
+ if (r3) {
239
+ throw takeObject(r2);
240
+ }
241
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
242
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
243
+ return v2;
244
+ }
245
+ finally {
246
+ wasm.__wbindgen_add_to_stack_pointer(16);
247
+ }
248
+ }
249
+ /**
250
+ * Parse a BigWig data block and return packed typed arrays
251
+ * Block types: 1 = bedGraph, 2 = varstep, 3 = fixedstep
252
+ *
253
+ * Returns packed binary: [count: u32][starts: i32*count][ends: i32*count][scores: f32*count]
254
+ * @param {Uint8Array} data
255
+ * @param {number} req_start
256
+ * @param {number} req_end
257
+ * @returns {Uint8Array}
258
+ */
259
+ function parse_bigwig_block(data, req_start, req_end) {
260
+ try {
261
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
262
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);
263
+ const len0 = WASM_VECTOR_LEN;
264
+ wasm.parse_bigwig_block(retptr, ptr0, len0, req_start, req_end);
265
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
266
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
267
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
268
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
269
+ return v2;
270
+ }
271
+ finally {
272
+ wasm.__wbindgen_add_to_stack_pointer(16);
273
+ }
274
+ }
275
+ /**
276
+ * Parse a BigWig summary block and return packed typed arrays
277
+ * Summary blocks contain: chromId, start, end, validCnt, minScore, maxScore, sumData, sumSqData
278
+ *
279
+ * Returns: [count: u32][starts: i32*n][ends: i32*n][scores: f32*n][minScores: f32*n][maxScores: f32*n]
280
+ * @param {Uint8Array} data
281
+ * @param {number} req_chr_id
282
+ * @param {number} req_start
283
+ * @param {number} req_end
284
+ * @returns {Uint8Array}
285
+ */
286
+ function parse_summary_block(data, req_chr_id, req_start, req_end) {
287
+ try {
288
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
289
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);
290
+ const len0 = WASM_VECTOR_LEN;
291
+ wasm.parse_summary_block(retptr, ptr0, len0, req_chr_id, req_start, req_end);
292
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
293
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
294
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
295
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
296
+ return v2;
297
+ }
298
+ finally {
299
+ wasm.__wbindgen_add_to_stack_pointer(16);
300
+ }
301
+ }
302
+ function __wbg_Error_52673b7de5a0ca89(arg0, arg1) {
303
+ const ret = Error(getStringFromWasm0(arg0, arg1));
304
+ return addHeapObject(ret);
305
+ }
306
+ ;
307
+ //# sourceMappingURL=inflate_wasm_bg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflate_wasm_bg.js","sourceRoot":"","sources":["../../src/wasm/inflate_wasm_bg.js"],"names":[],"mappings":"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"}
package/esm/bbi.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { BlockView } from './block-view.ts';
3
- import type { BigWigHeaderWithRefNames, Feature, RequestOptions2, RequestOptions } from './types.ts';
3
+ import type { BigWigFeatureArrays, BigWigHeaderWithRefNames, Feature, RequestOptions2, RequestOptions, SummaryFeatureArrays } from './types.ts';
4
4
  import type { GenericFilehandle } from 'generic-filehandle2';
5
5
  export declare abstract class BBI {
6
6
  protected bbi: GenericFilehandle;
@@ -15,7 +15,7 @@ export declare abstract class BBI {
15
15
  });
16
16
  private _getHeader;
17
17
  private _getMainHeader;
18
- private _readChromTree;
18
+ private _readChromosomeTree;
19
19
  protected getUnzoomedView(opts?: RequestOptions): Promise<BlockView>;
20
20
  protected abstract getView(scale: number, opts?: RequestOptions): Promise<BlockView>;
21
21
  /**
@@ -31,5 +31,15 @@ export declare abstract class BBI {
31
31
  * or scale used to infer the zoomLevel to use
32
32
  */
33
33
  getFeatureStream(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<Observable<Feature[]>>;
34
- getFeatures(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<Feature[]>;
34
+ getFeatures(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<any[]>;
35
+ /**
36
+ * Gets features from a BigWig file as typed arrays (more efficient than getFeatures)
37
+ *
38
+ * @param refName - The chromosome name
39
+ * @param start - The start of a region
40
+ * @param end - The end of a region
41
+ * @param opts - Options including basesPerSpan or scale
42
+ * @returns Promise with typed arrays: starts, ends, scores (and minScores/maxScores for summary data)
43
+ */
44
+ getFeaturesAsArrays(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<BigWigFeatureArrays | SummaryFeatureArrays>;
35
45
  }
package/esm/bbi.js CHANGED
@@ -4,6 +4,7 @@ import { toArray } from 'rxjs/operators';
4
4
  import { BlockView } from "./block-view.js";
5
5
  const BIG_WIG_MAGIC = -2003829722;
6
6
  const BIG_BED_MAGIC = -2021002517;
7
+ const decoder = new TextDecoder('utf8');
7
8
  function getDataView(buffer) {
8
9
  return new DataView(buffer.buffer, buffer.byteOffset, buffer.length);
9
10
  }
@@ -48,7 +49,7 @@ export class BBI {
48
49
  }
49
50
  async _getHeader(opts) {
50
51
  const header = await this._getMainHeader(opts);
51
- const chroms = await this._readChromTree(header, opts);
52
+ const chroms = await this._readChromosomeTree(header, opts);
52
53
  return {
53
54
  ...header,
54
55
  ...chroms,
@@ -68,7 +69,8 @@ export class BBI {
68
69
  offset += 2;
69
70
  const numZoomLevels = dataView.getUint16(offset, true);
70
71
  offset += 2;
71
- const chromTreeOffset = Number(dataView.getBigUint64(offset, true));
72
+ // Offset to the B+ tree that maps chromosome names to integer IDs
73
+ const chromosomeTreeOffset = Number(dataView.getBigUint64(offset, true));
72
74
  offset += 8;
73
75
  const unzoomedDataOffset = Number(dataView.getBigUint64(offset, true));
74
76
  offset += 8;
@@ -135,7 +137,6 @@ export class BBI {
135
137
  else {
136
138
  throw new Error('no stats');
137
139
  }
138
- const decoder = new TextDecoder('utf8');
139
140
  return {
140
141
  zoomLevels,
141
142
  magic,
@@ -146,7 +147,7 @@ export class BBI {
146
147
  definedFieldCount,
147
148
  uncompressBufSize,
148
149
  asOffset,
149
- chromTreeOffset,
150
+ chromosomeTreeOffset,
150
151
  totalSummaryOffset,
151
152
  unzoomedDataOffset,
152
153
  unzoomedIndexOffset,
@@ -157,11 +158,14 @@ export class BBI {
157
158
  : '',
158
159
  };
159
160
  }
160
- async _readChromTree(header, opts) {
161
+ // Reads the B+ tree that maps chromosome names to integer IDs
162
+ // This is part of the "cirTree" (combined ID R-tree) structure, which uses
163
+ // integer chromosome IDs instead of strings for more efficient spatial indexing
164
+ async _readChromosomeTree(header, opts) {
161
165
  const refsByNumber = [];
162
166
  const refsByName = {};
163
- const chromTreeOffset = header.chromTreeOffset;
164
- const dataView = getDataView(await this.bbi.read(32, chromTreeOffset, opts));
167
+ const chromosomeTreeOffset = header.chromosomeTreeOffset;
168
+ const dataView = getDataView(await this.bbi.read(32, chromosomeTreeOffset, opts));
165
169
  let offset = 0;
166
170
  // const magic = dataView.getUint32(offset, true) // unused
167
171
  offset += 4;
@@ -173,8 +177,8 @@ export class BBI {
173
177
  offset += 4;
174
178
  // const itemCount = dataView.getBigUint64(offset, true) // unused
175
179
  offset += 8;
176
- const decoder = new TextDecoder('utf8');
177
- const bptReadNode = async (currentOffset) => {
180
+ // Recursively traverses the B+ tree to populate chromosome name-to-ID mappings
181
+ const readBPlusTreeNode = async (currentOffset) => {
178
182
  const b = await this.bbi.read(4, currentOffset);
179
183
  const dataView = getDataView(b);
180
184
  let offset = 0;
@@ -184,14 +188,17 @@ export class BBI {
184
188
  offset += 1;
185
189
  const count = dataView.getUint16(offset, true);
186
190
  offset += 2;
191
+ // Leaf nodes contain the actual chromosome name-to-ID mappings
187
192
  if (isLeafNode) {
188
193
  const b = await this.bbi.read(count * (keySize + valSize), currentOffset + offset);
189
194
  const dataView = getDataView(b);
190
195
  offset = 0;
191
196
  for (let n = 0; n < count; n++) {
192
- const key = decoder
193
- .decode(b.subarray(offset, offset + keySize))
194
- .replaceAll('\0', '');
197
+ const keyEnd = b.indexOf(0, offset);
198
+ const effectiveKeyEnd = keyEnd !== -1 && keyEnd < offset + keySize
199
+ ? keyEnd
200
+ : offset + keySize;
201
+ const key = decoder.decode(b.subarray(offset, effectiveKeyEnd));
195
202
  offset += keySize;
196
203
  const refId = dataView.getUint32(offset, true);
197
204
  offset += 4;
@@ -206,6 +213,7 @@ export class BBI {
206
213
  }
207
214
  }
208
215
  else {
216
+ // Non-leaf nodes contain pointers to child nodes
209
217
  const nextNodes = [];
210
218
  const dataView = getDataView(await this.bbi.read(count * (keySize + 8), currentOffset + offset));
211
219
  offset = 0;
@@ -213,12 +221,12 @@ export class BBI {
213
221
  offset += keySize;
214
222
  const childOffset = Number(dataView.getBigUint64(offset, true));
215
223
  offset += 8;
216
- nextNodes.push(bptReadNode(childOffset));
224
+ nextNodes.push(readBPlusTreeNode(childOffset));
217
225
  }
218
226
  await Promise.all(nextNodes);
219
227
  }
220
228
  };
221
- await bptReadNode(chromTreeOffset + 32);
229
+ await readBPlusTreeNode(chromosomeTreeOffset + 32);
222
230
  return {
223
231
  refsByName,
224
232
  refsByNumber,
@@ -230,7 +238,7 @@ export class BBI {
230
238
  */
231
239
  async getUnzoomedView(opts) {
232
240
  const { unzoomedIndexOffset, refsByName, uncompressBufSize, fileType } = await this.getHeader(opts);
233
- return new BlockView(this.bbi, refsByName, unzoomedIndexOffset, uncompressBufSize > 0, fileType);
241
+ return new BlockView(this.bbi, refsByName, unzoomedIndexOffset, uncompressBufSize, fileType);
234
242
  }
235
243
  /**
236
244
  * Gets features from a BigWig file
@@ -268,8 +276,63 @@ export class BBI {
268
276
  }
269
277
  async getFeatures(refName, start, end, opts) {
270
278
  const ob = await this.getFeatureStream(refName, start, end, opts);
271
- const ret = await firstValueFrom(ob.pipe(toArray()));
272
- return ret.flat();
279
+ const arrays = await firstValueFrom(ob.pipe(toArray()));
280
+ const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0);
281
+ const result = new Array(totalLength);
282
+ let index = 0;
283
+ for (const arr of arrays) {
284
+ for (const item of arr) {
285
+ result[index++] = item;
286
+ }
287
+ }
288
+ return result;
289
+ }
290
+ /**
291
+ * Gets features from a BigWig file as typed arrays (more efficient than getFeatures)
292
+ *
293
+ * @param refName - The chromosome name
294
+ * @param start - The start of a region
295
+ * @param end - The end of a region
296
+ * @param opts - Options including basesPerSpan or scale
297
+ * @returns Promise with typed arrays: starts, ends, scores (and minScores/maxScores for summary data)
298
+ */
299
+ async getFeaturesAsArrays(refName, start, end, opts) {
300
+ const features = await this.getFeatures(refName, start, end, opts);
301
+ const count = features.length;
302
+ if (count === 0) {
303
+ return {
304
+ starts: new Int32Array(0),
305
+ ends: new Int32Array(0),
306
+ scores: new Float32Array(0),
307
+ };
308
+ }
309
+ const hasSummary = features[0]?.summary === true;
310
+ if (hasSummary) {
311
+ const starts = new Int32Array(count);
312
+ const ends = new Int32Array(count);
313
+ const scores = new Float32Array(count);
314
+ const minScores = new Float32Array(count);
315
+ const maxScores = new Float32Array(count);
316
+ for (let i = 0; i < count; i++) {
317
+ const f = features[i];
318
+ starts[i] = f.start;
319
+ ends[i] = f.end;
320
+ scores[i] = f.score ?? 0;
321
+ minScores[i] = f.minScore ?? 0;
322
+ maxScores[i] = f.maxScore ?? 0;
323
+ }
324
+ return { starts, ends, scores, minScores, maxScores };
325
+ }
326
+ const starts = new Int32Array(count);
327
+ const ends = new Int32Array(count);
328
+ const scores = new Float32Array(count);
329
+ for (let i = 0; i < count; i++) {
330
+ const f = features[i];
331
+ starts[i] = f.start;
332
+ ends[i] = f.end;
333
+ scores[i] = f.score ?? 0;
334
+ }
335
+ return { starts, ends, scores };
273
336
  }
274
337
  }
275
338
  //# sourceMappingURL=bbi.js.map