@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.
- package/CHANGELOG.md +8 -0
- package/README.md +59 -0
- package/dist/bbi.d.ts +13 -3
- package/dist/bbi.js +80 -17
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +14 -2
- package/dist/bigbed.js +116 -76
- package/dist/bigbed.js.map +1 -1
- package/dist/bigwig.js +1 -2
- package/dist/bigwig.js.map +1 -1
- package/dist/block-view.d.ts +13 -4
- package/dist/block-view.js +324 -148
- package/dist/block-view.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/parse-bigwig.d.ts +3 -0
- package/dist/parse-bigwig.js +15 -0
- package/dist/parse-bigwig.js.map +1 -0
- package/dist/range.js +11 -24
- package/dist/range.js.map +1 -1
- package/dist/types.d.ts +14 -2
- package/dist/unzip.d.ts +18 -1
- package/dist/unzip.js +33 -4
- package/dist/unzip.js.map +1 -1
- package/dist/util.d.ts +2 -4
- package/dist/util.js +6 -5
- package/dist/util.js.map +1 -1
- package/dist/wasm/inflate-wasm-inlined.d.ts +18 -0
- package/dist/wasm/inflate-wasm-inlined.js +455 -0
- package/dist/wasm/inflate-wasm-inlined.js.map +1 -0
- package/dist/wasm/inflate_wasm.d.ts +1 -0
- package/dist/wasm/inflate_wasm.js +43 -0
- package/dist/wasm/inflate_wasm.js.map +1 -0
- package/dist/wasm/inflate_wasm_bg.d.ts +68 -0
- package/dist/wasm/inflate_wasm_bg.js +307 -0
- package/dist/wasm/inflate_wasm_bg.js.map +1 -0
- package/esm/bbi.d.ts +13 -3
- package/esm/bbi.js +80 -17
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +14 -2
- package/esm/bigbed.js +116 -76
- package/esm/bigbed.js.map +1 -1
- package/esm/bigwig.js +1 -2
- package/esm/bigwig.js.map +1 -1
- package/esm/block-view.d.ts +13 -4
- package/esm/block-view.js +326 -150
- package/esm/block-view.js.map +1 -1
- package/esm/index.d.ts +2 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/parse-bigwig.d.ts +3 -0
- package/esm/parse-bigwig.js +12 -0
- package/esm/parse-bigwig.js.map +1 -0
- package/esm/range.js +11 -24
- package/esm/range.js.map +1 -1
- package/esm/types.d.ts +14 -2
- package/esm/unzip.d.ts +18 -1
- package/esm/unzip.js +30 -3
- package/esm/unzip.js.map +1 -1
- package/esm/util.d.ts +2 -4
- package/esm/util.js +6 -5
- package/esm/util.js.map +1 -1
- package/esm/wasm/inflate-wasm-inlined.d.ts +18 -0
- package/esm/wasm/inflate-wasm-inlined.js +449 -0
- package/esm/wasm/inflate-wasm-inlined.js.map +1 -0
- package/esm/wasm/inflate_wasm.d.ts +1 -0
- package/esm/wasm/inflate_wasm.js +5 -0
- package/esm/wasm/inflate_wasm.js.map +1 -0
- package/esm/wasm/inflate_wasm_bg.d.ts +68 -0
- package/esm/wasm/inflate_wasm_bg.js +296 -0
- package/esm/wasm/inflate_wasm_bg.js.map +1 -0
- package/package.json +17 -12
- package/src/bbi.ts +102 -20
- package/src/bigbed.ts +157 -80
- package/src/bigwig.ts +1 -2
- package/src/block-view.ts +418 -156
- package/src/index.ts +8 -1
- package/src/parse-bigwig.ts +19 -0
- package/src/range.ts +13 -21
- package/src/types.ts +19 -2
- package/src/unzip.ts +86 -3
- package/src/util.ts +9 -10
- package/src/wasm/inflate-wasm-inlined.d.ts +49 -0
- package/src/wasm/inflate-wasm-inlined.js +547 -0
- package/src/wasm/inflate_wasm.d.ts +35 -0
- package/src/wasm/inflate_wasm.js +4 -0
- package/src/wasm/inflate_wasm_bg.js +309 -0
- package/src/wasm/inflate_wasm_bg.wasm +0 -0
- package/src/wasm/inflate_wasm_bg.wasm.d.ts +13 -0
|
@@ -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,296 @@
|
|
|
1
|
+
let wasm;
|
|
2
|
+
export function __wbg_set_wasm(val) {
|
|
3
|
+
wasm = val;
|
|
4
|
+
}
|
|
5
|
+
function addHeapObject(obj) {
|
|
6
|
+
if (heap_next === heap.length)
|
|
7
|
+
heap.push(heap.length + 1);
|
|
8
|
+
const idx = heap_next;
|
|
9
|
+
heap_next = heap[idx];
|
|
10
|
+
heap[idx] = obj;
|
|
11
|
+
return idx;
|
|
12
|
+
}
|
|
13
|
+
function dropObject(idx) {
|
|
14
|
+
if (idx < 132)
|
|
15
|
+
return;
|
|
16
|
+
heap[idx] = heap_next;
|
|
17
|
+
heap_next = idx;
|
|
18
|
+
}
|
|
19
|
+
function getArrayU8FromWasm0(ptr, len) {
|
|
20
|
+
ptr = ptr >>> 0;
|
|
21
|
+
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
|
|
22
|
+
}
|
|
23
|
+
let cachedDataViewMemory0 = null;
|
|
24
|
+
function getDataViewMemory0() {
|
|
25
|
+
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
|
|
26
|
+
cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
|
|
27
|
+
}
|
|
28
|
+
return cachedDataViewMemory0;
|
|
29
|
+
}
|
|
30
|
+
function getStringFromWasm0(ptr, len) {
|
|
31
|
+
ptr = ptr >>> 0;
|
|
32
|
+
return decodeText(ptr, len);
|
|
33
|
+
}
|
|
34
|
+
let cachedUint32ArrayMemory0 = null;
|
|
35
|
+
function getUint32ArrayMemory0() {
|
|
36
|
+
if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {
|
|
37
|
+
cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);
|
|
38
|
+
}
|
|
39
|
+
return cachedUint32ArrayMemory0;
|
|
40
|
+
}
|
|
41
|
+
let cachedUint8ArrayMemory0 = null;
|
|
42
|
+
function getUint8ArrayMemory0() {
|
|
43
|
+
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
|
|
44
|
+
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
|
|
45
|
+
}
|
|
46
|
+
return cachedUint8ArrayMemory0;
|
|
47
|
+
}
|
|
48
|
+
function getObject(idx) { return heap[idx]; }
|
|
49
|
+
let heap = new Array(128).fill(undefined);
|
|
50
|
+
heap.push(undefined, null, true, false);
|
|
51
|
+
let heap_next = heap.length;
|
|
52
|
+
function passArray32ToWasm0(arg, malloc) {
|
|
53
|
+
const ptr = malloc(arg.length * 4, 4) >>> 0;
|
|
54
|
+
getUint32ArrayMemory0().set(arg, ptr / 4);
|
|
55
|
+
WASM_VECTOR_LEN = arg.length;
|
|
56
|
+
return ptr;
|
|
57
|
+
}
|
|
58
|
+
function passArray8ToWasm0(arg, malloc) {
|
|
59
|
+
const ptr = malloc(arg.length * 1, 1) >>> 0;
|
|
60
|
+
getUint8ArrayMemory0().set(arg, ptr / 1);
|
|
61
|
+
WASM_VECTOR_LEN = arg.length;
|
|
62
|
+
return ptr;
|
|
63
|
+
}
|
|
64
|
+
function takeObject(idx) {
|
|
65
|
+
const ret = getObject(idx);
|
|
66
|
+
dropObject(idx);
|
|
67
|
+
return ret;
|
|
68
|
+
}
|
|
69
|
+
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
70
|
+
cachedTextDecoder.decode();
|
|
71
|
+
const MAX_SAFARI_DECODE_BYTES = 2146435072;
|
|
72
|
+
let numBytesDecoded = 0;
|
|
73
|
+
function decodeText(ptr, len) {
|
|
74
|
+
numBytesDecoded += len;
|
|
75
|
+
if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
|
|
76
|
+
cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
77
|
+
cachedTextDecoder.decode();
|
|
78
|
+
numBytesDecoded = len;
|
|
79
|
+
}
|
|
80
|
+
return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
|
|
81
|
+
}
|
|
82
|
+
let WASM_VECTOR_LEN = 0;
|
|
83
|
+
/**
|
|
84
|
+
* Combined decompress + parse for BigWig blocks
|
|
85
|
+
* Returns same format as parse_bigwig_block but handles multiple compressed blocks
|
|
86
|
+
* @param {Uint8Array} inputs
|
|
87
|
+
* @param {Uint32Array} input_offsets
|
|
88
|
+
* @param {Uint32Array} input_lengths
|
|
89
|
+
* @param {number} max_block_size
|
|
90
|
+
* @param {number} req_start
|
|
91
|
+
* @param {number} req_end
|
|
92
|
+
* @returns {Uint8Array}
|
|
93
|
+
*/
|
|
94
|
+
export function decompress_and_parse_bigwig(inputs, input_offsets, input_lengths, max_block_size, req_start, req_end) {
|
|
95
|
+
try {
|
|
96
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
97
|
+
const ptr0 = passArray8ToWasm0(inputs, wasm.__wbindgen_export);
|
|
98
|
+
const len0 = WASM_VECTOR_LEN;
|
|
99
|
+
const ptr1 = passArray32ToWasm0(input_offsets, wasm.__wbindgen_export);
|
|
100
|
+
const len1 = WASM_VECTOR_LEN;
|
|
101
|
+
const ptr2 = passArray32ToWasm0(input_lengths, wasm.__wbindgen_export);
|
|
102
|
+
const len2 = WASM_VECTOR_LEN;
|
|
103
|
+
wasm.decompress_and_parse_bigwig(retptr, ptr0, len0, ptr1, len1, ptr2, len2, max_block_size, req_start, req_end);
|
|
104
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
105
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
106
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
107
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
108
|
+
if (r3) {
|
|
109
|
+
throw takeObject(r2);
|
|
110
|
+
}
|
|
111
|
+
var v4 = getArrayU8FromWasm0(r0, r1).slice();
|
|
112
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
113
|
+
return v4;
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Combined decompress + parse for summary blocks
|
|
121
|
+
* @param {Uint8Array} inputs
|
|
122
|
+
* @param {Uint32Array} input_offsets
|
|
123
|
+
* @param {Uint32Array} input_lengths
|
|
124
|
+
* @param {number} max_block_size
|
|
125
|
+
* @param {number} req_chr_id
|
|
126
|
+
* @param {number} req_start
|
|
127
|
+
* @param {number} req_end
|
|
128
|
+
* @returns {Uint8Array}
|
|
129
|
+
*/
|
|
130
|
+
export function decompress_and_parse_summary(inputs, input_offsets, input_lengths, max_block_size, req_chr_id, req_start, req_end) {
|
|
131
|
+
try {
|
|
132
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
133
|
+
const ptr0 = passArray8ToWasm0(inputs, wasm.__wbindgen_export);
|
|
134
|
+
const len0 = WASM_VECTOR_LEN;
|
|
135
|
+
const ptr1 = passArray32ToWasm0(input_offsets, wasm.__wbindgen_export);
|
|
136
|
+
const len1 = WASM_VECTOR_LEN;
|
|
137
|
+
const ptr2 = passArray32ToWasm0(input_lengths, wasm.__wbindgen_export);
|
|
138
|
+
const len2 = WASM_VECTOR_LEN;
|
|
139
|
+
wasm.decompress_and_parse_summary(retptr, ptr0, len0, ptr1, len1, ptr2, len2, max_block_size, req_chr_id, req_start, req_end);
|
|
140
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
141
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
142
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
143
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
144
|
+
if (r3) {
|
|
145
|
+
throw takeObject(r2);
|
|
146
|
+
}
|
|
147
|
+
var v4 = getArrayU8FromWasm0(r0, r1).slice();
|
|
148
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
149
|
+
return v4;
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* @param {Uint8Array} input
|
|
157
|
+
* @param {number} output_size
|
|
158
|
+
* @returns {Uint8Array}
|
|
159
|
+
*/
|
|
160
|
+
export function inflate_raw(input, output_size) {
|
|
161
|
+
try {
|
|
162
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
163
|
+
const ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_export);
|
|
164
|
+
const len0 = WASM_VECTOR_LEN;
|
|
165
|
+
wasm.inflate_raw(retptr, ptr0, len0, output_size);
|
|
166
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
167
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
168
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
169
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
170
|
+
if (r3) {
|
|
171
|
+
throw takeObject(r2);
|
|
172
|
+
}
|
|
173
|
+
var v2 = getArrayU8FromWasm0(r0, r1).slice();
|
|
174
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
175
|
+
return v2;
|
|
176
|
+
}
|
|
177
|
+
finally {
|
|
178
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @param {Uint8Array} inputs
|
|
183
|
+
* @param {Uint32Array} input_offsets
|
|
184
|
+
* @param {Uint32Array} input_lengths
|
|
185
|
+
* @param {number} max_block_size
|
|
186
|
+
* @returns {Uint8Array}
|
|
187
|
+
*/
|
|
188
|
+
export function inflate_raw_batch(inputs, input_offsets, input_lengths, max_block_size) {
|
|
189
|
+
try {
|
|
190
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
191
|
+
const ptr0 = passArray8ToWasm0(inputs, wasm.__wbindgen_export);
|
|
192
|
+
const len0 = WASM_VECTOR_LEN;
|
|
193
|
+
const ptr1 = passArray32ToWasm0(input_offsets, wasm.__wbindgen_export);
|
|
194
|
+
const len1 = WASM_VECTOR_LEN;
|
|
195
|
+
const ptr2 = passArray32ToWasm0(input_lengths, wasm.__wbindgen_export);
|
|
196
|
+
const len2 = WASM_VECTOR_LEN;
|
|
197
|
+
wasm.inflate_raw_batch(retptr, ptr0, len0, ptr1, len1, ptr2, len2, max_block_size);
|
|
198
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
199
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
200
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
201
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
202
|
+
if (r3) {
|
|
203
|
+
throw takeObject(r2);
|
|
204
|
+
}
|
|
205
|
+
var v4 = getArrayU8FromWasm0(r0, r1).slice();
|
|
206
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
207
|
+
return v4;
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* @param {Uint8Array} input
|
|
215
|
+
* @returns {Uint8Array}
|
|
216
|
+
*/
|
|
217
|
+
export function inflate_raw_unknown_size(input) {
|
|
218
|
+
try {
|
|
219
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
220
|
+
const ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_export);
|
|
221
|
+
const len0 = WASM_VECTOR_LEN;
|
|
222
|
+
wasm.inflate_raw_unknown_size(retptr, ptr0, len0);
|
|
223
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
224
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
225
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
226
|
+
var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
|
|
227
|
+
if (r3) {
|
|
228
|
+
throw takeObject(r2);
|
|
229
|
+
}
|
|
230
|
+
var v2 = getArrayU8FromWasm0(r0, r1).slice();
|
|
231
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
232
|
+
return v2;
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Parse a BigWig data block and return packed typed arrays
|
|
240
|
+
* Block types: 1 = bedGraph, 2 = varstep, 3 = fixedstep
|
|
241
|
+
*
|
|
242
|
+
* Returns packed binary: [count: u32][starts: i32*count][ends: i32*count][scores: f32*count]
|
|
243
|
+
* @param {Uint8Array} data
|
|
244
|
+
* @param {number} req_start
|
|
245
|
+
* @param {number} req_end
|
|
246
|
+
* @returns {Uint8Array}
|
|
247
|
+
*/
|
|
248
|
+
export function parse_bigwig_block(data, req_start, req_end) {
|
|
249
|
+
try {
|
|
250
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
251
|
+
const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);
|
|
252
|
+
const len0 = WASM_VECTOR_LEN;
|
|
253
|
+
wasm.parse_bigwig_block(retptr, ptr0, len0, req_start, req_end);
|
|
254
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
255
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
256
|
+
var v2 = getArrayU8FromWasm0(r0, r1).slice();
|
|
257
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
258
|
+
return v2;
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Parse a BigWig summary block and return packed typed arrays
|
|
266
|
+
* Summary blocks contain: chromId, start, end, validCnt, minScore, maxScore, sumData, sumSqData
|
|
267
|
+
*
|
|
268
|
+
* Returns: [count: u32][starts: i32*n][ends: i32*n][scores: f32*n][minScores: f32*n][maxScores: f32*n]
|
|
269
|
+
* @param {Uint8Array} data
|
|
270
|
+
* @param {number} req_chr_id
|
|
271
|
+
* @param {number} req_start
|
|
272
|
+
* @param {number} req_end
|
|
273
|
+
* @returns {Uint8Array}
|
|
274
|
+
*/
|
|
275
|
+
export function parse_summary_block(data, req_chr_id, req_start, req_end) {
|
|
276
|
+
try {
|
|
277
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
278
|
+
const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);
|
|
279
|
+
const len0 = WASM_VECTOR_LEN;
|
|
280
|
+
wasm.parse_summary_block(retptr, ptr0, len0, req_chr_id, req_start, req_end);
|
|
281
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
282
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
283
|
+
var v2 = getArrayU8FromWasm0(r0, r1).slice();
|
|
284
|
+
wasm.__wbindgen_export2(r0, r1 * 1, 1);
|
|
285
|
+
return v2;
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
export function __wbg_Error_52673b7de5a0ca89(arg0, arg1) {
|
|
292
|
+
const ret = Error(getStringFromWasm0(arg0, arg1));
|
|
293
|
+
return addHeapObject(ret);
|
|
294
|
+
}
|
|
295
|
+
;
|
|
296
|
+
//# 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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gmod/bbi",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.1",
|
|
4
4
|
"description": "Parser for BigWig/BigBed files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "GMOD/bbi-js",
|
|
@@ -25,14 +25,17 @@
|
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
27
|
"test": "vitest",
|
|
28
|
+
"benchonly": "vitest bench",
|
|
29
|
+
"bench": "./scripts/build-both-branches.sh \"$BRANCH1\" \"$BRANCH2\" && vitest bench",
|
|
28
30
|
"lint": "eslint --report-unused-disable-directives --max-warnings 0",
|
|
29
31
|
"format": "prettier --write .",
|
|
30
32
|
"clean": "rimraf dist esm",
|
|
31
33
|
"prebuild": "yarn clean",
|
|
34
|
+
"build:wasm": "./scripts/build-wasm.sh",
|
|
32
35
|
"build:esm": "tsc --outDir esm",
|
|
33
36
|
"build:es5": "tsc --module commonjs --outDir dist",
|
|
34
37
|
"postbuild:es5": "echo '{\"type\": \"commonjs\"}' > dist/package.json",
|
|
35
|
-
"build": "yarn build:esm && yarn build:es5",
|
|
38
|
+
"build": "yarn build:wasm && yarn build:esm && yarn build:es5",
|
|
36
39
|
"preversion": "yarn lint && yarn test --run && yarn build",
|
|
37
40
|
"version": "standard-changelog && git add CHANGELOG.md",
|
|
38
41
|
"postversion": "git push origin master --follow-tags"
|
|
@@ -47,26 +50,28 @@
|
|
|
47
50
|
],
|
|
48
51
|
"dependencies": {
|
|
49
52
|
"@gmod/abortable-promise-cache": "^3.0.1",
|
|
50
|
-
"generic-filehandle2": "^2.0.
|
|
51
|
-
"pako-esm2": "^
|
|
53
|
+
"generic-filehandle2": "^2.0.16",
|
|
54
|
+
"pako-esm2": "^2.0.2",
|
|
52
55
|
"quick-lru": "^4.0.0",
|
|
53
56
|
"rxjs": "^7.8.0"
|
|
54
57
|
},
|
|
55
58
|
"devDependencies": {
|
|
56
59
|
"@gmod/bed": "^2.1.2",
|
|
57
60
|
"@types/node": "^24.10.0",
|
|
58
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
59
|
-
"@typescript-eslint/parser": "^8.
|
|
60
|
-
"@vitest/coverage-v8": "^4.0.
|
|
61
|
-
"eslint": "^9.
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^8.50.0",
|
|
62
|
+
"@typescript-eslint/parser": "^8.50.0",
|
|
63
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
64
|
+
"eslint": "^9.39.2",
|
|
62
65
|
"eslint-plugin-import": "^2.31.0",
|
|
63
66
|
"eslint-plugin-unicorn": "^62.0.0",
|
|
64
|
-
"prettier": "^3.
|
|
65
|
-
"rimraf": "^6.
|
|
67
|
+
"prettier": "^3.7.4",
|
|
68
|
+
"rimraf": "^6.1.2",
|
|
66
69
|
"standard-changelog": "^7.0.1",
|
|
67
70
|
"typescript": "^5.1.6",
|
|
68
|
-
"typescript-eslint": "^8.
|
|
69
|
-
"vitest": "^4.0.
|
|
71
|
+
"typescript-eslint": "^8.50.0",
|
|
72
|
+
"vitest": "^4.0.15",
|
|
73
|
+
"webpack": "^5.104.0",
|
|
74
|
+
"webpack-cli": "^6.0.1"
|
|
70
75
|
},
|
|
71
76
|
"publishConfig": {
|
|
72
77
|
"access": "public"
|
package/src/bbi.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { toArray } from 'rxjs/operators'
|
|
|
5
5
|
import { BlockView } from './block-view.ts'
|
|
6
6
|
|
|
7
7
|
import type {
|
|
8
|
+
BigWigFeatureArrays,
|
|
8
9
|
BigWigHeader,
|
|
9
10
|
BigWigHeaderWithRefNames,
|
|
10
11
|
Feature,
|
|
@@ -12,6 +13,7 @@ import type {
|
|
|
12
13
|
RequestOptions2,
|
|
13
14
|
RequestOptions,
|
|
14
15
|
Statistics,
|
|
16
|
+
SummaryFeatureArrays,
|
|
15
17
|
ZoomLevel,
|
|
16
18
|
} from './types.ts'
|
|
17
19
|
import type { GenericFilehandle } from 'generic-filehandle2'
|
|
@@ -19,6 +21,8 @@ import type { GenericFilehandle } from 'generic-filehandle2'
|
|
|
19
21
|
const BIG_WIG_MAGIC = -2003829722
|
|
20
22
|
const BIG_BED_MAGIC = -2021002517
|
|
21
23
|
|
|
24
|
+
const decoder = new TextDecoder('utf8')
|
|
25
|
+
|
|
22
26
|
function getDataView(buffer: Uint8Array) {
|
|
23
27
|
return new DataView(buffer.buffer, buffer.byteOffset, buffer.length)
|
|
24
28
|
}
|
|
@@ -71,7 +75,7 @@ export abstract class BBI {
|
|
|
71
75
|
|
|
72
76
|
private async _getHeader(opts?: RequestOptions) {
|
|
73
77
|
const header = await this._getMainHeader(opts)
|
|
74
|
-
const chroms = await this.
|
|
78
|
+
const chroms = await this._readChromosomeTree(header, opts)
|
|
75
79
|
return {
|
|
76
80
|
...header,
|
|
77
81
|
...chroms,
|
|
@@ -96,7 +100,8 @@ export abstract class BBI {
|
|
|
96
100
|
offset += 2
|
|
97
101
|
const numZoomLevels = dataView.getUint16(offset, true)
|
|
98
102
|
offset += 2
|
|
99
|
-
|
|
103
|
+
// Offset to the B+ tree that maps chromosome names to integer IDs
|
|
104
|
+
const chromosomeTreeOffset = Number(dataView.getBigUint64(offset, true))
|
|
100
105
|
offset += 8
|
|
101
106
|
const unzoomedDataOffset = Number(dataView.getBigUint64(offset, true))
|
|
102
107
|
offset += 8
|
|
@@ -166,7 +171,6 @@ export abstract class BBI {
|
|
|
166
171
|
} else {
|
|
167
172
|
throw new Error('no stats')
|
|
168
173
|
}
|
|
169
|
-
const decoder = new TextDecoder('utf8')
|
|
170
174
|
|
|
171
175
|
return {
|
|
172
176
|
zoomLevels,
|
|
@@ -178,7 +182,7 @@ export abstract class BBI {
|
|
|
178
182
|
definedFieldCount,
|
|
179
183
|
uncompressBufSize,
|
|
180
184
|
asOffset,
|
|
181
|
-
|
|
185
|
+
chromosomeTreeOffset,
|
|
182
186
|
totalSummaryOffset,
|
|
183
187
|
unzoomedDataOffset,
|
|
184
188
|
unzoomedIndexOffset,
|
|
@@ -190,16 +194,21 @@ export abstract class BBI {
|
|
|
190
194
|
}
|
|
191
195
|
}
|
|
192
196
|
|
|
193
|
-
|
|
197
|
+
// Reads the B+ tree that maps chromosome names to integer IDs
|
|
198
|
+
// This is part of the "cirTree" (combined ID R-tree) structure, which uses
|
|
199
|
+
// integer chromosome IDs instead of strings for more efficient spatial indexing
|
|
200
|
+
private async _readChromosomeTree(
|
|
194
201
|
header: BigWigHeader,
|
|
195
202
|
opts?: { signal?: AbortSignal },
|
|
196
203
|
) {
|
|
197
|
-
const refsByNumber:
|
|
198
|
-
const refsByName
|
|
204
|
+
const refsByNumber: RefInfo[] = []
|
|
205
|
+
const refsByName = {} as Record<string, number>
|
|
199
206
|
|
|
200
|
-
const
|
|
207
|
+
const chromosomeTreeOffset = header.chromosomeTreeOffset
|
|
201
208
|
|
|
202
|
-
const dataView = getDataView(
|
|
209
|
+
const dataView = getDataView(
|
|
210
|
+
await this.bbi.read(32, chromosomeTreeOffset, opts),
|
|
211
|
+
)
|
|
203
212
|
let offset = 0
|
|
204
213
|
// const magic = dataView.getUint32(offset, true) // unused
|
|
205
214
|
offset += 4
|
|
@@ -212,9 +221,8 @@ export abstract class BBI {
|
|
|
212
221
|
// const itemCount = dataView.getBigUint64(offset, true) // unused
|
|
213
222
|
offset += 8
|
|
214
223
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const bptReadNode = async (currentOffset: number) => {
|
|
224
|
+
// Recursively traverses the B+ tree to populate chromosome name-to-ID mappings
|
|
225
|
+
const readBPlusTreeNode = async (currentOffset: number) => {
|
|
218
226
|
const b = await this.bbi.read(4, currentOffset)
|
|
219
227
|
const dataView = getDataView(b)
|
|
220
228
|
let offset = 0
|
|
@@ -225,6 +233,7 @@ export abstract class BBI {
|
|
|
225
233
|
const count = dataView.getUint16(offset, true)
|
|
226
234
|
offset += 2
|
|
227
235
|
|
|
236
|
+
// Leaf nodes contain the actual chromosome name-to-ID mappings
|
|
228
237
|
if (isLeafNode) {
|
|
229
238
|
const b = await this.bbi.read(
|
|
230
239
|
count * (keySize + valSize),
|
|
@@ -234,9 +243,12 @@ export abstract class BBI {
|
|
|
234
243
|
offset = 0
|
|
235
244
|
|
|
236
245
|
for (let n = 0; n < count; n++) {
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
246
|
+
const keyEnd = b.indexOf(0, offset)
|
|
247
|
+
const effectiveKeyEnd =
|
|
248
|
+
keyEnd !== -1 && keyEnd < offset + keySize
|
|
249
|
+
? keyEnd
|
|
250
|
+
: offset + keySize
|
|
251
|
+
const key = decoder.decode(b.subarray(offset, effectiveKeyEnd))
|
|
240
252
|
offset += keySize
|
|
241
253
|
const refId = dataView.getUint32(offset, true)
|
|
242
254
|
offset += 4
|
|
@@ -251,6 +263,7 @@ export abstract class BBI {
|
|
|
251
263
|
}
|
|
252
264
|
}
|
|
253
265
|
} else {
|
|
266
|
+
// Non-leaf nodes contain pointers to child nodes
|
|
254
267
|
const nextNodes = []
|
|
255
268
|
const dataView = getDataView(
|
|
256
269
|
await this.bbi.read(count * (keySize + 8), currentOffset + offset),
|
|
@@ -261,12 +274,12 @@ export abstract class BBI {
|
|
|
261
274
|
offset += keySize
|
|
262
275
|
const childOffset = Number(dataView.getBigUint64(offset, true))
|
|
263
276
|
offset += 8
|
|
264
|
-
nextNodes.push(
|
|
277
|
+
nextNodes.push(readBPlusTreeNode(childOffset))
|
|
265
278
|
}
|
|
266
279
|
await Promise.all(nextNodes)
|
|
267
280
|
}
|
|
268
281
|
}
|
|
269
|
-
await
|
|
282
|
+
await readBPlusTreeNode(chromosomeTreeOffset + 32)
|
|
270
283
|
return {
|
|
271
284
|
refsByName,
|
|
272
285
|
refsByNumber,
|
|
@@ -284,7 +297,7 @@ export abstract class BBI {
|
|
|
284
297
|
this.bbi,
|
|
285
298
|
refsByName,
|
|
286
299
|
unzoomedIndexOffset,
|
|
287
|
-
uncompressBufSize
|
|
300
|
+
uncompressBufSize,
|
|
288
301
|
fileType,
|
|
289
302
|
)
|
|
290
303
|
}
|
|
@@ -345,7 +358,76 @@ export abstract class BBI {
|
|
|
345
358
|
) {
|
|
346
359
|
const ob = await this.getFeatureStream(refName, start, end, opts)
|
|
347
360
|
|
|
348
|
-
const
|
|
349
|
-
|
|
361
|
+
const arrays = await firstValueFrom(ob.pipe(toArray()))
|
|
362
|
+
const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0)
|
|
363
|
+
const result = new Array(totalLength)
|
|
364
|
+
let index = 0
|
|
365
|
+
for (const arr of arrays) {
|
|
366
|
+
for (const item of arr) {
|
|
367
|
+
result[index++] = item
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return result
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Gets features from a BigWig file as typed arrays (more efficient than getFeatures)
|
|
375
|
+
*
|
|
376
|
+
* @param refName - The chromosome name
|
|
377
|
+
* @param start - The start of a region
|
|
378
|
+
* @param end - The end of a region
|
|
379
|
+
* @param opts - Options including basesPerSpan or scale
|
|
380
|
+
* @returns Promise with typed arrays: starts, ends, scores (and minScores/maxScores for summary data)
|
|
381
|
+
*/
|
|
382
|
+
public async getFeaturesAsArrays(
|
|
383
|
+
refName: string,
|
|
384
|
+
start: number,
|
|
385
|
+
end: number,
|
|
386
|
+
opts?: RequestOptions2,
|
|
387
|
+
): Promise<BigWigFeatureArrays | SummaryFeatureArrays> {
|
|
388
|
+
const features = await this.getFeatures(refName, start, end, opts)
|
|
389
|
+
const count = features.length
|
|
390
|
+
|
|
391
|
+
if (count === 0) {
|
|
392
|
+
return {
|
|
393
|
+
starts: new Int32Array(0),
|
|
394
|
+
ends: new Int32Array(0),
|
|
395
|
+
scores: new Float32Array(0),
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
const hasSummary = features[0]?.summary === true
|
|
400
|
+
|
|
401
|
+
if (hasSummary) {
|
|
402
|
+
const starts = new Int32Array(count)
|
|
403
|
+
const ends = new Int32Array(count)
|
|
404
|
+
const scores = new Float32Array(count)
|
|
405
|
+
const minScores = new Float32Array(count)
|
|
406
|
+
const maxScores = new Float32Array(count)
|
|
407
|
+
|
|
408
|
+
for (let i = 0; i < count; i++) {
|
|
409
|
+
const f = features[i]!
|
|
410
|
+
starts[i] = f.start
|
|
411
|
+
ends[i] = f.end
|
|
412
|
+
scores[i] = f.score ?? 0
|
|
413
|
+
minScores[i] = f.minScore ?? 0
|
|
414
|
+
maxScores[i] = f.maxScore ?? 0
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return { starts, ends, scores, minScores, maxScores }
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
const starts = new Int32Array(count)
|
|
421
|
+
const ends = new Int32Array(count)
|
|
422
|
+
const scores = new Float32Array(count)
|
|
423
|
+
|
|
424
|
+
for (let i = 0; i < count; i++) {
|
|
425
|
+
const f = features[i]!
|
|
426
|
+
starts[i] = f.start
|
|
427
|
+
ends[i] = f.end
|
|
428
|
+
scores[i] = f.score ?? 0
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
return { starts, ends, scores }
|
|
350
432
|
}
|
|
351
433
|
}
|