@gmod/bbi 6.0.0 → 6.0.2
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/dist/bbi.d.ts +3 -64
- package/dist/bbi.js +10 -1
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.d.ts +2 -1
- package/dist/bigbed.js +2 -3
- package/dist/bigbed.js.map +1 -1
- package/dist/bigint-polyfill/polyfill.js +3 -0
- package/dist/bigint-polyfill/polyfill.js.map +1 -1
- package/dist/bigint-polyfill/pure.js +3 -0
- package/dist/bigint-polyfill/pure.js.map +1 -1
- package/dist/bigwig.d.ts +2 -1
- package/dist/bigwig.js +1 -1
- package/dist/bigwig.js.map +1 -1
- package/dist/block-view.d.ts +3 -4
- package/dist/block-view.js +4 -11
- package/dist/block-view.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +61 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/unzip-pako.d.ts +1 -1
- package/esm/bbi.d.ts +3 -64
- package/esm/bbi.js +11 -2
- package/esm/bbi.js.map +1 -1
- package/esm/bigbed.d.ts +2 -1
- package/esm/bigbed.js +2 -3
- package/esm/bigbed.js.map +1 -1
- package/esm/bigint-polyfill/polyfill.js +3 -0
- package/esm/bigint-polyfill/polyfill.js.map +1 -1
- package/esm/bigint-polyfill/pure.js +3 -0
- package/esm/bigint-polyfill/pure.js.map +1 -1
- package/esm/bigwig.d.ts +2 -1
- package/esm/bigwig.js +1 -1
- package/esm/bigwig.js.map +1 -1
- package/esm/block-view.d.ts +3 -4
- package/esm/block-view.js +5 -12
- package/esm/block-view.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.js +0 -3
- package/esm/index.js.map +1 -1
- package/esm/types.d.ts +61 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/esm/unzip-pako.d.ts +1 -1
- package/package.json +7 -6
- package/src/bbi.ts +28 -74
- package/src/bigbed.ts +5 -4
- package/src/bigint-polyfill/polyfill.ts +3 -0
- package/src/bigint-polyfill/pure.ts +4 -0
- package/src/bigwig.ts +3 -1
- package/src/block-view.ts +10 -15
- package/src/index.ts +1 -4
- package/src/types.ts +66 -0
package/src/block-view.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Observer } from 'rxjs'
|
|
2
1
|
import AbortablePromiseCache from '@gmod/abortable-promise-cache'
|
|
3
|
-
import { GenericFilehandle } from 'generic-filehandle2'
|
|
4
2
|
import QuickLRU from 'quick-lru'
|
|
5
3
|
|
|
6
|
-
// locals
|
|
7
4
|
import Range from './range'
|
|
8
5
|
import { unzip } from './unzip'
|
|
9
|
-
import {
|
|
10
|
-
|
|
6
|
+
import { checkAbortSignal, groupBlocks } from './util'
|
|
7
|
+
|
|
8
|
+
import type { Feature } from './types'
|
|
9
|
+
import type { GenericFilehandle } from 'generic-filehandle2'
|
|
10
|
+
import type { Observer } from 'rxjs'
|
|
11
11
|
|
|
12
12
|
const decoder =
|
|
13
13
|
typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined
|
|
@@ -37,7 +37,6 @@ function coordFilter(s1: number, e1: number, s2: number, e2: number): boolean {
|
|
|
37
37
|
*
|
|
38
38
|
* Adapted by Robert Buels and Colin Diesh from bigwig.js in the Dalliance
|
|
39
39
|
* Genome Explorer by Thomas Down.
|
|
40
|
-
* @constructs
|
|
41
40
|
*/
|
|
42
41
|
|
|
43
42
|
export class BlockView {
|
|
@@ -46,11 +45,8 @@ export class BlockView {
|
|
|
46
45
|
private featureCache = new AbortablePromiseCache<ReadData, Uint8Array>({
|
|
47
46
|
cache: new QuickLRU({ maxSize: 1000 }),
|
|
48
47
|
|
|
49
|
-
fill: async (
|
|
50
|
-
|
|
51
|
-
signal,
|
|
52
|
-
})
|
|
53
|
-
},
|
|
48
|
+
fill: async ({ length, offset }, signal) =>
|
|
49
|
+
this.bbi.read(length, offset, { signal }),
|
|
54
50
|
})
|
|
55
51
|
|
|
56
52
|
public constructor(
|
|
@@ -73,14 +69,13 @@ export class BlockView {
|
|
|
73
69
|
opts?: Options,
|
|
74
70
|
) {
|
|
75
71
|
try {
|
|
76
|
-
const
|
|
77
|
-
const chrId = refsByName[chrName]
|
|
72
|
+
const chrId = this.refsByName[chrName]
|
|
78
73
|
if (chrId === undefined) {
|
|
79
74
|
observer.complete()
|
|
80
75
|
}
|
|
81
76
|
const request = { chrId, start, end }
|
|
82
77
|
if (!this.cirTreePromise) {
|
|
83
|
-
this.cirTreePromise = bbi.read(48, cirTreeOffset, opts)
|
|
78
|
+
this.cirTreePromise = this.bbi.read(48, this.cirTreeOffset, opts)
|
|
84
79
|
}
|
|
85
80
|
const buffer = await this.cirTreePromise
|
|
86
81
|
const dataView = new DataView(buffer.buffer)
|
|
@@ -243,7 +238,7 @@ export class BlockView {
|
|
|
243
238
|
}
|
|
244
239
|
}
|
|
245
240
|
|
|
246
|
-
cirFobRecur([Number(cirTreeOffset) + 48], 1)
|
|
241
|
+
cirFobRecur([Number(this.cirTreeOffset) + 48], 1)
|
|
247
242
|
return
|
|
248
243
|
} catch (e) {
|
|
249
244
|
observer.error(e)
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
// from https://github.com/yume-chan/ya-webadb/blob/main/libraries/dataview-bigint-polyfill
|
|
2
|
-
// license:MIT
|
|
3
|
-
// needed for browsers including safari 14
|
|
4
1
|
import './bigint-polyfill/polyfill'
|
|
5
2
|
export { BigWig } from './bigwig'
|
|
6
3
|
export { BigBed } from './bigbed'
|
|
7
|
-
export {
|
|
4
|
+
export type { BigWigHeader, Feature, RequestOptions } from './types'
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface ZoomLevel {
|
|
2
|
+
reductionLevel: number
|
|
3
|
+
reserved: number
|
|
4
|
+
dataOffset: number
|
|
5
|
+
indexOffset: number
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface Feature {
|
|
9
|
+
offset?: number
|
|
10
|
+
chromId: number
|
|
11
|
+
start: number
|
|
12
|
+
end: number
|
|
13
|
+
score?: number
|
|
14
|
+
rest?: string // for bigbed line
|
|
15
|
+
minScore?: number // for summary line
|
|
16
|
+
maxScore?: number // for summary line
|
|
17
|
+
summary?: boolean // is summary line
|
|
18
|
+
uniqueId?: string // for bigbed contains uniqueId calculated from file offset
|
|
19
|
+
field?: number // used in bigbed searching
|
|
20
|
+
}
|
|
21
|
+
export interface Statistics {
|
|
22
|
+
scoreSum: number
|
|
23
|
+
basesCovered: number
|
|
24
|
+
scoreSumSquares: number
|
|
25
|
+
scoreMin: number
|
|
26
|
+
scoreMax: number
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface RefInfo {
|
|
30
|
+
name: string
|
|
31
|
+
id: number
|
|
32
|
+
length: number
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface BigWigHeader {
|
|
36
|
+
magic: number
|
|
37
|
+
version: number
|
|
38
|
+
autoSql: string
|
|
39
|
+
totalSummary: Statistics
|
|
40
|
+
asOffset: number
|
|
41
|
+
zoomLevels: ZoomLevel[]
|
|
42
|
+
fieldCount: number
|
|
43
|
+
numZoomLevels: number
|
|
44
|
+
unzoomedIndexOffset: number
|
|
45
|
+
totalSummaryOffset: number
|
|
46
|
+
unzoomedDataOffset: number
|
|
47
|
+
definedFieldCount: number
|
|
48
|
+
uncompressBufSize: number
|
|
49
|
+
chromTreeOffset: number
|
|
50
|
+
extHeaderOffset: number
|
|
51
|
+
fileType: string
|
|
52
|
+
}
|
|
53
|
+
export interface BigWigHeaderWithRefNames extends BigWigHeader {
|
|
54
|
+
refsByName: Record<string, number>
|
|
55
|
+
refsByNumber: Record<number, RefInfo>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface RequestOptions {
|
|
59
|
+
signal?: AbortSignal
|
|
60
|
+
headers?: Record<string, string>
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface RequestOptions2 extends RequestOptions {
|
|
64
|
+
scale?: number
|
|
65
|
+
basesPerSpan?: number
|
|
66
|
+
}
|