@gmod/bbi 8.1.1 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +49 -53
- package/dist/array-feature-view.d.ts +4 -1
- package/dist/array-feature-view.js.map +1 -1
- package/dist/bbi.d.ts +5 -25
- package/dist/bbi.js +31 -133
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +0 -1
- package/dist/bigbed.js +19 -51
- package/dist/bigbed.js.map +1 -1
- package/dist/bigwig.d.ts +1 -2
- package/dist/bigwig.js +1 -2
- package/dist/bigwig.js.map +1 -1
- package/dist/block-view.d.ts +7 -16
- package/dist/block-view.js +370 -440
- package/dist/block-view.js.map +1 -1
- package/dist/parse-bigwig.d.ts +2 -2
- package/dist/parse-bigwig.js +5 -5
- package/dist/parse-bigwig.js.map +1 -1
- package/dist/range.d.ts +1 -15
- package/dist/range.js +16 -49
- package/dist/range.js.map +1 -1
- package/dist/util.d.ts +0 -22
- package/dist/util.js +0 -46
- package/dist/util.js.map +1 -1
- package/dist/wasm/inflate-wasm-inlined.js +85 -86
- package/dist/wasm/inflate-wasm-inlined.js.map +1 -1
- package/dist/wasm/inflate_wasm.d.ts +1 -1
- package/dist/wasm/inflate_wasm.js +10 -4
- package/dist/wasm/inflate_wasm.js.map +1 -1
- package/dist/wasm/inflate_wasm_bg.d.ts +2 -2
- package/dist/wasm/inflate_wasm_bg.js +85 -86
- package/dist/wasm/inflate_wasm_bg.js.map +1 -1
- package/esm/array-feature-view.d.ts +4 -1
- package/esm/array-feature-view.js.map +1 -1
- package/esm/bbi.d.ts +5 -25
- package/esm/bbi.js +31 -133
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +0 -1
- package/esm/bigbed.js +19 -50
- package/esm/bigbed.js.map +1 -1
- package/esm/bigwig.d.ts +1 -2
- package/esm/bigwig.js +1 -2
- package/esm/bigwig.js.map +1 -1
- package/esm/block-view.d.ts +7 -16
- package/esm/block-view.js +370 -440
- package/esm/block-view.js.map +1 -1
- package/esm/parse-bigwig.d.ts +2 -2
- package/esm/parse-bigwig.js +5 -5
- package/esm/parse-bigwig.js.map +1 -1
- package/esm/range.d.ts +1 -15
- package/esm/range.js +15 -48
- package/esm/range.js.map +1 -1
- package/esm/util.d.ts +0 -22
- package/esm/util.js +0 -42
- package/esm/util.js.map +1 -1
- package/esm/wasm/inflate-wasm-inlined.js +85 -86
- package/esm/wasm/inflate-wasm-inlined.js.map +1 -1
- package/esm/wasm/inflate_wasm.d.ts +1 -1
- package/esm/wasm/inflate_wasm.js +2 -1
- package/esm/wasm/inflate_wasm.js.map +1 -1
- package/esm/wasm/inflate_wasm_bg.d.ts +2 -2
- package/esm/wasm/inflate_wasm_bg.js +83 -84
- package/esm/wasm/inflate_wasm_bg.js.map +1 -1
- package/package.json +14 -16
- package/src/array-feature-view.ts +8 -0
- package/src/bbi.ts +50 -153
- package/src/bigbed.ts +22 -55
- package/src/bigwig.ts +1 -3
- package/src/block-view.ts +526 -634
- package/src/parse-bigwig.ts +7 -9
- package/src/range.ts +19 -58
- package/src/util.ts +0 -46
- package/src/wasm/inflate-wasm-inlined.js +101 -102
- package/src/wasm/inflate_wasm.js +7 -2
- package/src/wasm/inflate_wasm_bg.js +99 -100
- package/src/wasm/inflate_wasm_bg.wasm +0 -0
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -6,47 +6,69 @@
|
|
|
6
6
|
|
|
7
7
|
A parser for bigwig and bigbed file formats
|
|
8
8
|
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @gmod/bbi
|
|
13
|
+
```
|
|
14
|
+
|
|
9
15
|
## Usage
|
|
10
16
|
|
|
11
|
-
|
|
17
|
+
### Local files
|
|
12
18
|
|
|
13
19
|
```typescript
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
await file.getHeader()
|
|
20
|
-
const feats = await file.getFeatures('chr1', 0, 100, { scale: 1 })
|
|
21
|
-
})()
|
|
20
|
+
import { BigWig } from '@gmod/bbi'
|
|
21
|
+
|
|
22
|
+
const file = new BigWig({ path: 'volvox.bw' })
|
|
23
|
+
const header = await file.getHeader()
|
|
24
|
+
const features = await file.getFeatures('chr1', 0, 100, { scale: 1 })
|
|
22
25
|
```
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
### Remote files
|
|
28
|
+
|
|
29
|
+
You can use the `url` option or provide a custom filehandle from
|
|
30
|
+
[generic-filehandle2](https://github.com/GMOD/generic-filehandle2/):
|
|
27
31
|
|
|
28
32
|
```typescript
|
|
29
|
-
|
|
30
|
-
const { RemoteFile } = require('generic-filehandle2')
|
|
33
|
+
import { BigWig } from '@gmod/bbi'
|
|
31
34
|
|
|
32
|
-
//
|
|
33
|
-
// the the global fetch
|
|
35
|
+
// Using url directly
|
|
34
36
|
const file = new BigWig({
|
|
35
|
-
|
|
37
|
+
url: 'https://example.com/file.bw',
|
|
36
38
|
})
|
|
37
39
|
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
+
// Or with a custom RemoteFile instance
|
|
41
|
+
import { RemoteFile } from 'generic-filehandle2'
|
|
42
|
+
|
|
40
43
|
const file = new BigWig({
|
|
41
|
-
filehandle: new RemoteFile('
|
|
44
|
+
filehandle: new RemoteFile('https://example.com/file.bw'),
|
|
42
45
|
})
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const feats = await file.getFeatures('chr1', 0, 100, { scale: 1 })
|
|
47
|
-
})()
|
|
47
|
+
const header = await file.getHeader()
|
|
48
|
+
const features = await file.getFeatures('chr1', 0, 100, { scale: 1 })
|
|
48
49
|
```
|
|
49
50
|
|
|
51
|
+
### Using without npm (CDN)
|
|
52
|
+
|
|
53
|
+
You can use this library directly in the browser without npm by importing from
|
|
54
|
+
an ESM CDN like [esm.sh](https://esm.sh) (note that we don't necessarily
|
|
55
|
+
recommend CDN usage, it is just a way to test things easily):
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<script type="module">
|
|
59
|
+
import { BigWig } from 'https://esm.sh/@gmod/bbi'
|
|
60
|
+
|
|
61
|
+
const file = new BigWig({
|
|
62
|
+
url: 'https://example.com/file.bw',
|
|
63
|
+
})
|
|
64
|
+
const header = await file.getHeader()
|
|
65
|
+
const features = await file.getFeatures('chr1', 0, 100)
|
|
66
|
+
console.log(features)
|
|
67
|
+
</script>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
See the [example](./example/) folder for a complete working demo.
|
|
71
|
+
|
|
50
72
|
## Documentation
|
|
51
73
|
|
|
52
74
|
### BigWig/BigBed constructors
|
|
@@ -103,26 +125,6 @@ reductionLevel<2/opts.scale) when scanning backwards through this list
|
|
|
103
125
|
{ reductionLevel: 40960, ... },
|
|
104
126
|
{ reductionLevel: 163840, ... } ]
|
|
105
127
|
|
|
106
|
-
#### getFeatureStream(refName, start, end, opts)
|
|
107
|
-
|
|
108
|
-
Same as getFeatures but returns an RxJS observable stream, useful for very large
|
|
109
|
-
queries
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
const observer = await bigwig.getFeatureStream('chr1', 0, 100)
|
|
113
|
-
observer.subscribe(
|
|
114
|
-
chunk => {
|
|
115
|
-
/* chunk contains array of features with start, end, score */
|
|
116
|
-
},
|
|
117
|
-
error => {
|
|
118
|
-
/* process error */
|
|
119
|
-
},
|
|
120
|
-
() => {
|
|
121
|
-
/* completed */
|
|
122
|
-
},
|
|
123
|
-
)
|
|
124
|
-
```
|
|
125
|
-
|
|
126
128
|
#### getFeaturesAsArrays(refName, start, end, opts)
|
|
127
129
|
|
|
128
130
|
Same parameters as getFeatures, but returns typed arrays instead of an array of
|
|
@@ -200,10 +202,6 @@ they exist.
|
|
|
200
202
|
returns a promise to an array of features. no concept of zoom levels is used
|
|
201
203
|
with bigwig data
|
|
202
204
|
|
|
203
|
-
#### getFeatureStream(refName, start, end, opts)
|
|
204
|
-
|
|
205
|
-
Similar to BigWig, returns an RxJS observable for a observable stream
|
|
206
|
-
|
|
207
205
|
#### searchExtraIndex(name, opts)
|
|
208
206
|
|
|
209
207
|
Specific, to bigbed files, this method searches the bigBed "extra indexes",
|
|
@@ -233,11 +231,9 @@ this module, but can be combined with it as follows
|
|
|
233
231
|
import { BigBed } from '@gmod/bbi'
|
|
234
232
|
import BED from '@gmod/bed'
|
|
235
233
|
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const { autoSql } = await ti.getHeader()
|
|
240
|
-
const feats = await ti.getFeatures('chr7', 0, 100000)
|
|
234
|
+
const file = new BigBed({ path: './data/hg18.bb' })
|
|
235
|
+
const { autoSql } = await file.getHeader()
|
|
236
|
+
const feats = await file.getFeatures('chr7', 0, 100000)
|
|
241
237
|
const parser = new BED({ autoSql })
|
|
242
238
|
const lines = feats.map(f => {
|
|
243
239
|
const { start, end, rest, uniqueId } = f
|
|
@@ -18,5 +18,8 @@ export declare class ArrayFeatureView {
|
|
|
18
18
|
minScore(i: number): number | undefined;
|
|
19
19
|
maxScore(i: number): number | undefined;
|
|
20
20
|
id(i: number): string;
|
|
21
|
-
get(i: number, key:
|
|
21
|
+
get(i: number, key: 'refName' | 'source'): string;
|
|
22
|
+
get(i: number, key: 'start' | 'end' | 'score' | 'minScore' | 'maxScore'): number | undefined;
|
|
23
|
+
get(i: number, key: 'summary'): boolean;
|
|
24
|
+
get(i: number, key: string): any;
|
|
22
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-feature-view.js","sourceRoot":"","sources":["../src/array-feature-view.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IACX,MAAM,CAAY;IAClB,IAAI,CAAY;IAChB,MAAM,CAAc;IACpB,SAAS,CAA0B;IACnC,SAAS,CAA0B;IACnC,SAAS,CAAS;IAC1B,OAAO,CAAQ;IACf,QAAQ,CAAQ;IAExB,YACE,MAAkD,EAClD,MAAc,EACd,OAAe;QAEf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,CAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,CAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAA;IACxB,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,EAAE,CAAC,CAAS;QACV,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,CAAC;
|
|
1
|
+
{"version":3,"file":"array-feature-view.js","sourceRoot":"","sources":["../src/array-feature-view.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IACX,MAAM,CAAY;IAClB,IAAI,CAAY;IAChB,MAAM,CAAc;IACpB,SAAS,CAA0B;IACnC,SAAS,CAA0B;IACnC,SAAS,CAAS;IAC1B,OAAO,CAAQ;IACf,QAAQ,CAAQ;IAExB,YACE,MAAkD,EAClD,MAAc,EACd,OAAe;QAEf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,CAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,CAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAA;IACxB,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,EAAE,CAAC,CAAS;QACV,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,CAAC;IAUD,GAAG,CAAC,CAAS,EAAE,GAAW;QACxB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,QAAQ,CAAA;YACtB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,OAAO,CAAA;YACrB,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5B,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5B,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,SAAS,CAAA;YACvB;gBACE,OAAO,SAAS,CAAA;QACpB,CAAC;IACH,CAAC;CACF;AA3FD,4CA2FC"}
|
package/dist/bbi.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
1
|
import { BlockView } from './block-view.ts';
|
|
3
|
-
import type { BigWigFeatureArrays, BigWigHeaderWithRefNames,
|
|
2
|
+
import type { BigWigFeatureArrays, BigWigHeaderWithRefNames, RequestOptions2, RequestOptions, SummaryFeatureArrays } from './types.ts';
|
|
4
3
|
import type { GenericFilehandle } from 'generic-filehandle2';
|
|
5
4
|
export declare abstract class BBI {
|
|
6
5
|
protected bbi: GenericFilehandle;
|
|
@@ -16,30 +15,11 @@ export declare abstract class BBI {
|
|
|
16
15
|
private _getHeader;
|
|
17
16
|
private _getMainHeader;
|
|
18
17
|
private _readChromosomeTree;
|
|
18
|
+
private viewCache;
|
|
19
|
+
protected getOrCreateBlockView(refsByName: Record<string, number>, rTreeOffset: number, uncompressBufSize: number, blockType: string): BlockView;
|
|
19
20
|
protected getUnzoomedView(opts?: RequestOptions): Promise<BlockView>;
|
|
20
21
|
protected abstract getView(scale: number, opts?: RequestOptions): Promise<BlockView>;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* @param refName - The chromosome name
|
|
25
|
-
*
|
|
26
|
-
* @param start - The start of a region
|
|
27
|
-
*
|
|
28
|
-
* @param end - The end of a region
|
|
29
|
-
*
|
|
30
|
-
* @param opts - An object containing basesPerSpan (e.g. pixels per basepair)
|
|
31
|
-
* or scale used to infer the zoomLevel to use
|
|
32
|
-
*/
|
|
33
|
-
getFeatureStream(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<Observable<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
|
-
*/
|
|
22
|
+
private _getView;
|
|
23
|
+
getFeatures(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<import("./types.ts").Feature[]>;
|
|
44
24
|
getFeaturesAsArrays(refName: string, start: number, end: number, opts?: RequestOptions2): Promise<BigWigFeatureArrays | SummaryFeatureArrays>;
|
|
45
25
|
}
|
package/dist/bbi.js
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BBI = void 0;
|
|
4
4
|
const generic_filehandle2_1 = require("generic-filehandle2");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
6
|
-
const operators_1 = require("rxjs/operators");
|
|
7
5
|
const block_view_ts_1 = require("./block-view.js");
|
|
8
6
|
const BIG_WIG_MAGIC = -2003829722;
|
|
9
7
|
const BIG_BED_MAGIC = -2021002517;
|
|
@@ -61,13 +59,12 @@ class BBI {
|
|
|
61
59
|
async _getMainHeader(opts, requestSize = 2000) {
|
|
62
60
|
const b = await this.bbi.read(requestSize, 0, opts);
|
|
63
61
|
const dataView = getDataView(b);
|
|
64
|
-
const r1 = dataView.getInt32(0, true);
|
|
65
|
-
if (r1 !== BIG_WIG_MAGIC && r1 !== BIG_BED_MAGIC) {
|
|
66
|
-
throw new Error('not a BigWig/BigBed file');
|
|
67
|
-
}
|
|
68
62
|
let offset = 0;
|
|
69
63
|
const magic = dataView.getInt32(offset, true);
|
|
70
64
|
offset += 4;
|
|
65
|
+
if (magic !== BIG_WIG_MAGIC && magic !== BIG_BED_MAGIC) {
|
|
66
|
+
throw new Error('not a BigWig/BigBed file');
|
|
67
|
+
}
|
|
71
68
|
const version = dataView.getUint16(offset, true);
|
|
72
69
|
offset += 2;
|
|
73
70
|
const numZoomLevels = dataView.getUint16(offset, true);
|
|
@@ -128,7 +125,6 @@ class BBI {
|
|
|
128
125
|
const scoreSum = dataView.getFloat64(offset, true);
|
|
129
126
|
offset += 8;
|
|
130
127
|
const scoreSumSquares = dataView.getFloat64(offset, true);
|
|
131
|
-
offset += 8;
|
|
132
128
|
totalSummary = {
|
|
133
129
|
scoreMin,
|
|
134
130
|
scoreMax,
|
|
@@ -169,33 +165,18 @@ class BBI {
|
|
|
169
165
|
const refsByName = {};
|
|
170
166
|
const chromosomeTreeOffset = header.chromosomeTreeOffset;
|
|
171
167
|
const dataView = getDataView(await this.bbi.read(32, chromosomeTreeOffset, opts));
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
offset += 4;
|
|
175
|
-
// const blockSize = dataView.getUint32(offset, true) // unused
|
|
176
|
-
offset += 4;
|
|
177
|
-
const keySize = dataView.getUint32(offset, true);
|
|
178
|
-
offset += 4;
|
|
179
|
-
const valSize = dataView.getUint32(offset, true);
|
|
180
|
-
offset += 4;
|
|
181
|
-
// const itemCount = dataView.getBigUint64(offset, true) // unused
|
|
182
|
-
offset += 8;
|
|
168
|
+
const keySize = dataView.getUint32(8, true);
|
|
169
|
+
const valSize = dataView.getUint32(12, true);
|
|
183
170
|
// Recursively traverses the B+ tree to populate chromosome name-to-ID mappings
|
|
184
171
|
const readBPlusTreeNode = async (currentOffset) => {
|
|
185
|
-
const
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
const isLeafNode = dataView.getUint8(offset);
|
|
189
|
-
offset += 1;
|
|
190
|
-
// const reserved = dataView.getUint8(offset) // unused
|
|
191
|
-
offset += 1;
|
|
192
|
-
const count = dataView.getUint16(offset, true);
|
|
193
|
-
offset += 2;
|
|
172
|
+
const header = getDataView(await this.bbi.read(4, currentOffset));
|
|
173
|
+
const isLeafNode = header.getUint8(0);
|
|
174
|
+
const count = header.getUint16(2, true);
|
|
194
175
|
// Leaf nodes contain the actual chromosome name-to-ID mappings
|
|
195
176
|
if (isLeafNode) {
|
|
196
|
-
const b = await this.bbi.read(count * (keySize + valSize), currentOffset +
|
|
177
|
+
const b = await this.bbi.read(count * (keySize + valSize), currentOffset + 4);
|
|
197
178
|
const dataView = getDataView(b);
|
|
198
|
-
offset = 0;
|
|
179
|
+
let offset = 0;
|
|
199
180
|
for (let n = 0; n < count; n++) {
|
|
200
181
|
const keyEnd = b.indexOf(0, offset);
|
|
201
182
|
const effectiveKeyEnd = keyEnd !== -1 && keyEnd < offset + keySize
|
|
@@ -208,18 +189,14 @@ class BBI {
|
|
|
208
189
|
const refSize = dataView.getUint32(offset, true);
|
|
209
190
|
offset += 4;
|
|
210
191
|
refsByName[this.renameRefSeqs(key)] = refId;
|
|
211
|
-
refsByNumber[refId] = {
|
|
212
|
-
name: key,
|
|
213
|
-
id: refId,
|
|
214
|
-
length: refSize,
|
|
215
|
-
};
|
|
192
|
+
refsByNumber[refId] = { name: key, id: refId, length: refSize };
|
|
216
193
|
}
|
|
217
194
|
}
|
|
218
195
|
else {
|
|
219
196
|
// Non-leaf nodes contain pointers to child nodes
|
|
197
|
+
const dataView = getDataView(await this.bbi.read(count * (keySize + 8), currentOffset + 4));
|
|
220
198
|
const nextNodes = [];
|
|
221
|
-
|
|
222
|
-
offset = 0;
|
|
199
|
+
let offset = 0;
|
|
223
200
|
for (let n = 0; n < count; n++) {
|
|
224
201
|
offset += keySize;
|
|
225
202
|
const childOffset = Number(dataView.getBigUint64(offset, true));
|
|
@@ -235,115 +212,36 @@ class BBI {
|
|
|
235
212
|
refsByNumber,
|
|
236
213
|
};
|
|
237
214
|
}
|
|
215
|
+
viewCache = new Map();
|
|
216
|
+
getOrCreateBlockView(refsByName, rTreeOffset, uncompressBufSize, blockType) {
|
|
217
|
+
const key = `${rTreeOffset}_${blockType}`;
|
|
218
|
+
let view = this.viewCache.get(key);
|
|
219
|
+
if (!view) {
|
|
220
|
+
view = new block_view_ts_1.BlockView(this.bbi, refsByName, rTreeOffset, uncompressBufSize, blockType);
|
|
221
|
+
this.viewCache.set(key, view);
|
|
222
|
+
}
|
|
223
|
+
return view;
|
|
224
|
+
}
|
|
238
225
|
/*
|
|
239
226
|
* fetches the "unzoomed" view of the bigwig data. this is the default for bigbed
|
|
240
227
|
* @param abortSignal - a signal to optionally abort this operation
|
|
241
228
|
*/
|
|
242
229
|
async getUnzoomedView(opts) {
|
|
243
230
|
const { unzoomedIndexOffset, refsByName, uncompressBufSize, fileType } = await this.getHeader(opts);
|
|
244
|
-
return
|
|
231
|
+
return this.getOrCreateBlockView(refsByName, unzoomedIndexOffset, uncompressBufSize, fileType);
|
|
245
232
|
}
|
|
246
|
-
|
|
247
|
-
* Gets features from a BigWig file
|
|
248
|
-
*
|
|
249
|
-
* @param refName - The chromosome name
|
|
250
|
-
*
|
|
251
|
-
* @param start - The start of a region
|
|
252
|
-
*
|
|
253
|
-
* @param end - The end of a region
|
|
254
|
-
*
|
|
255
|
-
* @param opts - An object containing basesPerSpan (e.g. pixels per basepair)
|
|
256
|
-
* or scale used to infer the zoomLevel to use
|
|
257
|
-
*/
|
|
258
|
-
async getFeatureStream(refName, start, end, opts) {
|
|
259
|
-
await this.getHeader(opts);
|
|
260
|
-
const chrName = this.renameRefSeqs(refName);
|
|
261
|
-
let view;
|
|
233
|
+
async _getView(opts) {
|
|
262
234
|
const { basesPerSpan, scale } = opts || {};
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
else if (scale) {
|
|
267
|
-
view = await this.getView(scale, opts);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
view = await this.getView(1, opts);
|
|
271
|
-
}
|
|
272
|
-
return new rxjs_1.Observable(observer => {
|
|
273
|
-
view
|
|
274
|
-
.readWigData(chrName, start, end, observer, opts)
|
|
275
|
-
.catch((e) => {
|
|
276
|
-
observer.error(e);
|
|
277
|
-
});
|
|
278
|
-
});
|
|
235
|
+
const viewScale = basesPerSpan ? 1 / basesPerSpan : (scale ?? 1);
|
|
236
|
+
return this.getView(viewScale, opts);
|
|
279
237
|
}
|
|
280
238
|
async getFeatures(refName, start, end, opts) {
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0);
|
|
284
|
-
const result = new Array(totalLength);
|
|
285
|
-
let index = 0;
|
|
286
|
-
for (const arr of arrays) {
|
|
287
|
-
for (const item of arr) {
|
|
288
|
-
result[index++] = item;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
return result;
|
|
239
|
+
const view = await this._getView(opts);
|
|
240
|
+
return view.readWigData(this.renameRefSeqs(refName), start, end, opts);
|
|
292
241
|
}
|
|
293
|
-
/**
|
|
294
|
-
* Gets features from a BigWig file as typed arrays (more efficient than getFeatures)
|
|
295
|
-
*
|
|
296
|
-
* @param refName - The chromosome name
|
|
297
|
-
* @param start - The start of a region
|
|
298
|
-
* @param end - The end of a region
|
|
299
|
-
* @param opts - Options including basesPerSpan or scale
|
|
300
|
-
* @returns Promise with typed arrays: starts, ends, scores (and minScores/maxScores for summary data)
|
|
301
|
-
*/
|
|
302
242
|
async getFeaturesAsArrays(refName, start, end, opts) {
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
if (count === 0) {
|
|
306
|
-
return {
|
|
307
|
-
starts: new Int32Array(0),
|
|
308
|
-
ends: new Int32Array(0),
|
|
309
|
-
scores: new Float32Array(0),
|
|
310
|
-
isSummary: false,
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
const hasSummary = features[0]?.summary === true;
|
|
314
|
-
if (hasSummary) {
|
|
315
|
-
const starts = new Int32Array(count);
|
|
316
|
-
const ends = new Int32Array(count);
|
|
317
|
-
const scores = new Float32Array(count);
|
|
318
|
-
const minScores = new Float32Array(count);
|
|
319
|
-
const maxScores = new Float32Array(count);
|
|
320
|
-
for (let i = 0; i < count; i++) {
|
|
321
|
-
const f = features[i];
|
|
322
|
-
starts[i] = f.start;
|
|
323
|
-
ends[i] = f.end;
|
|
324
|
-
scores[i] = f.score ?? 0;
|
|
325
|
-
minScores[i] = f.minScore ?? 0;
|
|
326
|
-
maxScores[i] = f.maxScore ?? 0;
|
|
327
|
-
}
|
|
328
|
-
return {
|
|
329
|
-
starts,
|
|
330
|
-
ends,
|
|
331
|
-
scores,
|
|
332
|
-
minScores,
|
|
333
|
-
maxScores,
|
|
334
|
-
isSummary: true,
|
|
335
|
-
};
|
|
336
|
-
}
|
|
337
|
-
const starts = new Int32Array(count);
|
|
338
|
-
const ends = new Int32Array(count);
|
|
339
|
-
const scores = new Float32Array(count);
|
|
340
|
-
for (let i = 0; i < count; i++) {
|
|
341
|
-
const f = features[i];
|
|
342
|
-
starts[i] = f.start;
|
|
343
|
-
ends[i] = f.end;
|
|
344
|
-
scores[i] = f.score ?? 0;
|
|
345
|
-
}
|
|
346
|
-
return { starts, ends, scores, isSummary: false };
|
|
243
|
+
const view = await this._getView(opts);
|
|
244
|
+
return view.readWigDataAsArrays(this.renameRefSeqs(refName), start, end, opts);
|
|
347
245
|
}
|
|
348
246
|
}
|
|
349
247
|
exports.BBI = BBI;
|
package/dist/bbi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":";;;AAAA,6DAA2D;AAC3D,+BAAiD;AACjD,8CAAwC;AAExC,mDAA2C;AAgB3C,MAAM,aAAa,GAAG,CAAC,UAAU,CAAA;AACjC,MAAM,aAAa,GAAG,CAAC,UAAU,CAAA;AAEjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;AAEvC,SAAS,WAAW,CAAC,MAAkB;IACrC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;AACtE,CAAC;AAED,MAAsB,GAAG;IACb,GAAG,CAAmB;IAExB,OAAO,CAAoC;IAEzC,aAAa,CAAuB;IAEvC,SAAS,CAAC,IAAqB;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;gBACxB,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;;;;;;OASG;IACH,YAAmB,IAKlB;QACC,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAC9D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,UAAU,CAAA;QACvB,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,IAAI,gCAAU,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC;aAAM,IAAI,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,+BAAS,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAqB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC3D,OAAO;YACL,GAAG,MAAM;YACT,GAAG,MAAM;SACV,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,IAAqB,EACrB,WAAW,GAAG,IAAI;QAElB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAE/B,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,EAAE,KAAK,aAAa,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC7C,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,CAAA;QACX,kEAAkE;QAClE,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QACxE,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QACtE,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QACvE,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACnD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1D,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QAC5D,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QACtE,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1D,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QACnE,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,UAAU,GAAG,EAAiB,CAAA;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACvD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACjD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAC9D,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAC/D,MAAM,IAAI,CAAC,CAAA;YACX,UAAU,CAAC,IAAI,CAAC;gBACd,cAAc;gBACd,QAAQ;gBACR,UAAU;gBACV,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;QAE9D,mDAAmD;QACnD,4CAA4C;QAC5C,IAAI,QAAQ,GAAG,WAAW,IAAI,kBAAkB,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,YAAwB,CAAA;QAC5B,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;YACzC,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAChE,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAClD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAClD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAClD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACzD,MAAM,IAAI,CAAC,CAAA;YAEX,YAAY,GAAG;gBACb,QAAQ;gBACR,QAAQ;gBACR,QAAQ;gBACR,eAAe;gBACf,YAAY;aACb,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO;YACL,UAAU;YACV,KAAK;YACL,eAAe;YACf,aAAa;YACb,UAAU;YACV,YAAY;YACZ,iBAAiB;YACjB,iBAAiB;YACjB,QAAQ;YACR,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,mBAAmB;YACnB,QAAQ;YACR,OAAO;YACP,OAAO,EAAE,QAAQ;gBACf,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,EAAE;SACP,CAAA;IACH,CAAC;IAED,8DAA8D;IAC9D,2EAA2E;IAC3E,gFAAgF;IACxE,KAAK,CAAC,mBAAmB,CAC/B,MAAoB,EACpB,IAA+B;QAE/B,MAAM,YAAY,GAAc,EAAE,CAAA;QAClC,MAAM,UAAU,GAAG,EAA4B,CAAA;QAE/C,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAA;QAExD,MAAM,QAAQ,GAAG,WAAW,CAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,IAAI,CAAC,CACpD,CAAA;QACD,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,2DAA2D;QAC3D,MAAM,IAAI,CAAC,CAAA;QACX,+DAA+D;QAC/D,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,IAAI,CAAC,CAAA;QACX,kEAAkE;QAClE,MAAM,IAAI,CAAC,CAAA;QAEX,+EAA+E;QAC/E,MAAM,iBAAiB,GAAG,KAAK,EAAE,aAAqB,EAAE,EAAE;YACxD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;YAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC5C,MAAM,IAAI,CAAC,CAAA;YACX,uDAAuD;YACvD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC9C,MAAM,IAAI,CAAC,CAAA;YAEX,+DAA+D;YAC/D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC3B,KAAK,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,EAC3B,aAAa,GAAG,MAAM,CACvB,CAAA;gBACD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,GAAG,CAAC,CAAA;gBAEV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;oBACnC,MAAM,eAAe,GACnB,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO;wBACxC,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,MAAM,GAAG,OAAO,CAAA;oBACtB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;oBAC/D,MAAM,IAAI,OAAO,CAAA;oBACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC9C,MAAM,IAAI,CAAC,CAAA;oBACX,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAChD,MAAM,IAAI,CAAC,CAAA;oBAEX,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;oBAC3C,YAAY,CAAC,KAAK,CAAC,GAAG;wBACpB,IAAI,EAAE,GAAG;wBACT,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,OAAO;qBAChB,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iDAAiD;gBACjD,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,MAAM,QAAQ,GAAG,WAAW,CAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,CACnE,CAAA;gBACD,MAAM,GAAG,CAAC,CAAA;gBAEV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,IAAI,OAAO,CAAA;oBACjB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;oBAC/D,MAAM,IAAI,CAAC,CAAA;oBACX,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAA;gBAChD,CAAC;gBACD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC,CAAA;QACD,MAAM,iBAAiB,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAA;QAClD,OAAO;YACL,UAAU;YACV,YAAY;SACb,CAAA;IACH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,eAAe,CAAC,IAAqB;QACnD,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GACpE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,OAAO,IAAI,yBAAS,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,QAAQ,CACT,CAAA;IACH,CAAC;IAUD;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAe,EACf,KAAa,EACb,GAAW,EACX,IAAsB;QAEtB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,IAAe,CAAA;QACnB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;QAE1C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC,CAAA;QACnD,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACpC,CAAC;QAED,OAAO,IAAI,iBAAU,CAAY,QAAQ,CAAC,EAAE;YAC1C,IAAI;iBACD,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;iBAChD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBACpB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAe,EACf,KAAa,EACb,GAAW,EACX,IAAsB;QAEtB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAc,EAAC,EAAE,CAAC,IAAI,CAAC,IAAA,mBAAO,GAAE,CAAC,CAAC,CAAA;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;QACrC,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;YACxB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,mBAAmB,CAC9B,OAAe,EACf,KAAa,EACb,GAAW,EACX,IAAsB;QAEtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAA;QAE7B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;gBACL,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;gBACzB,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;gBACvB,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;gBAC3B,SAAS,EAAE,KAAc;aAC1B,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;QAEhD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;YAClC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;YAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAA;gBACtB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;gBACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA;gBACf,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;gBACxB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAA;gBAC9B,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAA;YAChC,CAAC;YAED,OAAO;gBACL,MAAM;gBACN,IAAI;gBACJ,MAAM;gBACN,SAAS;gBACT,SAAS;gBACT,SAAS,EAAE,IAAa;aACzB,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAA;YACtB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;YACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA;YACf,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;QAC1B,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAc,EAAE,CAAA;IAC5D,CAAC;CACF;AA3ZD,kBA2ZC"}
|
|
1
|
+
{"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"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"}
|
package/dist/bigbed.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ interface Index {
|
|
|
7
7
|
offset: number;
|
|
8
8
|
field: number;
|
|
9
9
|
}
|
|
10
|
-
export declare function filterUndef<T>(ts: (T | undefined)[]): T[];
|
|
11
10
|
export declare class BigBed extends BBI {
|
|
12
11
|
readIndicesCache: AbortablePromiseCache<RequestOptions, Index[], string>;
|
|
13
12
|
readIndices(opts?: RequestOptions): Promise<Index[]>;
|
package/dist/bigbed.js
CHANGED
|
@@ -4,16 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.BigBed = void 0;
|
|
7
|
-
exports.filterUndef = filterUndef;
|
|
8
7
|
const abortable_promise_cache_1 = __importDefault(require("@gmod/abortable-promise-cache"));
|
|
9
8
|
const quick_lru_1 = __importDefault(require("@jbrowse/quick-lru"));
|
|
10
|
-
const rxjs_1 = require("rxjs");
|
|
11
|
-
const operators_1 = require("rxjs/operators");
|
|
12
9
|
const bbi_ts_1 = require("./bbi.js");
|
|
13
10
|
const decoder = new TextDecoder('utf8');
|
|
14
|
-
function filterUndef(ts) {
|
|
15
|
-
return ts.filter((t) => !!t);
|
|
16
|
-
}
|
|
17
11
|
function getTabField(str, fieldIndex) {
|
|
18
12
|
if (fieldIndex < 0) {
|
|
19
13
|
return undefined;
|
|
@@ -41,11 +35,9 @@ async function readBPlusTreeNode(bbi, nodeOffset, blockSize, keySize, valSize, n
|
|
|
41
35
|
const len = 4 + blockSize * (keySize + valSize);
|
|
42
36
|
const buffer = await bbi.read(len, nodeOffset, opts);
|
|
43
37
|
const dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
offset
|
|
47
|
-
const cnt = dataView.getInt16(offset, true);
|
|
48
|
-
offset += 2;
|
|
38
|
+
const nodeType = dataView.getInt8(0);
|
|
39
|
+
const cnt = dataView.getInt16(2, true);
|
|
40
|
+
let offset = 4;
|
|
49
41
|
// Non-leaf node (nodeType === 0): contains keys and child node pointers for navigation
|
|
50
42
|
if (nodeType === 0) {
|
|
51
43
|
const leafkeys = [];
|
|
@@ -139,13 +131,8 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
139
131
|
const { extHeaderOffset } = await this.getHeader(opts);
|
|
140
132
|
const b = await this.bbi.read(64, extHeaderOffset);
|
|
141
133
|
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
offset += 2;
|
|
145
|
-
const count = dataView.getUint16(offset, true);
|
|
146
|
-
offset += 2;
|
|
147
|
-
const dataOffset = Number(dataView.getBigUint64(offset, true));
|
|
148
|
-
offset += 8;
|
|
134
|
+
const count = dataView.getUint16(2, true);
|
|
135
|
+
const dataOffset = Number(dataView.getBigUint64(4, true));
|
|
149
136
|
// no extra index is defined if count==0
|
|
150
137
|
if (count === 0) {
|
|
151
138
|
return [];
|
|
@@ -157,14 +144,10 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
157
144
|
for (let i = 0; i < count; i += 1) {
|
|
158
145
|
const b = buffer.subarray(i * blocklen);
|
|
159
146
|
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
const
|
|
164
|
-
offset += 2;
|
|
165
|
-
const dataOffset = Number(dataView.getBigUint64(offset, true));
|
|
166
|
-
offset += 8 + 4; // skip 8-byte offset + 4 reserved bytes
|
|
167
|
-
const field = dataView.getInt16(offset, true);
|
|
147
|
+
const type = dataView.getInt16(0, true);
|
|
148
|
+
const fieldcount = dataView.getInt16(2, true);
|
|
149
|
+
const dataOffset = Number(dataView.getBigUint64(4, true));
|
|
150
|
+
const field = dataView.getInt16(16, true);
|
|
168
151
|
indices.push({
|
|
169
152
|
type,
|
|
170
153
|
fieldcount,
|
|
@@ -193,20 +176,13 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
193
176
|
const { offset: offset2, field } = index;
|
|
194
177
|
const b = await this.bbi.read(32, offset2, opts);
|
|
195
178
|
const dataView = new DataView(b.buffer, b.byteOffset, b.length);
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const blockSize = dataView.getInt32(offset, true);
|
|
200
|
-
offset += 4;
|
|
201
|
-
const keySize = dataView.getInt32(offset, true);
|
|
202
|
-
offset += 4;
|
|
203
|
-
const valSize = dataView.getInt32(offset, true);
|
|
204
|
-
offset += 4;
|
|
205
|
-
// const _itemCount = Number(dataView.getBigUint64(offset, true))
|
|
206
|
-
offset += 8;
|
|
179
|
+
const blockSize = dataView.getInt32(4, true);
|
|
180
|
+
const keySize = dataView.getInt32(8, true);
|
|
181
|
+
const valSize = dataView.getInt32(12, true);
|
|
207
182
|
return readBPlusTreeNode(this.bbi, offset2 + 32, blockSize, keySize, valSize, name, field, opts);
|
|
208
183
|
});
|
|
209
|
-
|
|
184
|
+
const results = await Promise.all(locs);
|
|
185
|
+
return results.filter((l) => l !== undefined);
|
|
210
186
|
}
|
|
211
187
|
/*
|
|
212
188
|
* retrieve the features from the bigbed data that were found through the
|
|
@@ -225,20 +201,12 @@ class BigBed extends bbi_ts_1.BBI {
|
|
|
225
201
|
return [];
|
|
226
202
|
}
|
|
227
203
|
const view = await this.getUnzoomedView(opts);
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
});
|
|
233
|
-
}).pipe((0, operators_1.reduce)((acc, curr) => {
|
|
234
|
-
acc.push(...curr);
|
|
235
|
-
return acc;
|
|
236
|
-
}, []), (0, operators_1.map)(features => features.map(f => ({ ...f, field: block.field }))));
|
|
237
|
-
});
|
|
238
|
-
const ret = await (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)(...res));
|
|
239
|
-
// Filter to features where the indexed field matches the search name
|
|
204
|
+
const results = await Promise.all(blocks.map(async (block) => {
|
|
205
|
+
const features = await view.readFeatures([block], opts);
|
|
206
|
+
return features.map(f => ({ ...f, field: block.field }));
|
|
207
|
+
}));
|
|
240
208
|
// field offset is adjusted by -3 to account for chrom, chromStart, chromEnd columns
|
|
241
|
-
return
|
|
209
|
+
return results.flat().filter(f => {
|
|
242
210
|
if (!f.rest) {
|
|
243
211
|
return false;
|
|
244
212
|
}
|