Skip to content

Commit 80845c7

Browse files
committed
More opt
1 parent 48214e1 commit 80845c7

7 files changed

Lines changed: 14 additions & 3 deletions

File tree

src/csi.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ export default class CSI extends IndexFile {
6969
}
7070
const metaValue = dataView.getInt32(offset + 16, true)
7171
const metaChar = metaValue ? String.fromCharCode(metaValue) : undefined
72+
const metaCharCode = metaValue || 0
7273
const skipLines = dataView.getInt32(offset + 20, true)
7374
const nameSectionLength = dataView.getInt32(offset + 24, true)
7475

@@ -81,6 +82,7 @@ export default class CSI extends IndexFile {
8182
refNameToId,
8283
skipLines,
8384
metaChar,
85+
metaCharCode,
8486
columnNumbers,
8587
format,
8688
coordinateType,
@@ -113,6 +115,7 @@ export default class CSI extends IndexFile {
113115
refIdToName: [],
114116
refNameToId: {},
115117
metaChar: undefined,
118+
metaCharCode: 0,
116119
columnNumbers: { ref: 0, start: 1, end: 2 },
117120
coordinateType: 'zero-based-half-open',
118121
format: 'generic',

src/indexFile.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface IndexData {
1111
refNameToId: Record<string, number>
1212
refIdToName: string[]
1313
metaChar: string | undefined
14+
metaCharCode: number
1415
columnNumbers: { ref: number; start: number; end: number }
1516
coordinateType: string
1617
format: string

src/tabixIndexedFile.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { checkAbortSignal } from './util.ts'
1212
import type { GenericFilehandle } from 'generic-filehandle2'
1313

1414
const NO_OVERLAP = { overlaps: false, startCoordinate: undefined } as const
15+
const OVERLAP_RESULT = { overlaps: true, startCoordinate: 0 }
1516
const END_REGEX = /(?:^|;)END=([^;]+)/
1617
const ZERO = '0'.charCodeAt(0)
1718

@@ -441,8 +442,8 @@ export default class TabixIndexedFile {
441442
regionEnd: number,
442443
line: string,
443444
) {
444-
const { columnNumbers, metaChar, coordinateType, format } = metadata
445-
if (metaChar && line.charCodeAt(0) === metaChar.charCodeAt(0)) {
445+
const { columnNumbers, metaCharCode, coordinateType, format } = metadata
446+
if (metaCharCode && line.charCodeAt(0) === metaCharCode) {
446447
return NO_OVERLAP
447448
}
448449

@@ -518,7 +519,8 @@ export default class TabixIndexedFile {
518519
currentColumnNumber += 1
519520
}
520521

521-
return { startCoordinate, overlaps: true }
522+
OVERLAP_RESULT.startCoordinate = startCoordinate
523+
return OVERLAP_RESULT
522524
}
523525

524526
_getVcfEnd(startCoordinate: number, refSeqLength: number, info: string) {

src/tbi.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ export default class TabixIndex extends IndexFile {
141141
return {
142142
indices,
143143
metaChar,
144+
metaCharCode: metaValue || 0,
144145
maxBinNumber,
145146
maxRefLength,
146147
skipLines,

test/csi.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ test('loads test.gff3.gz.csi', async () => {
3232
format: 'generic',
3333
firstDataLine: new VirtualOffset(0, 130),
3434
metaChar: '#',
35+
metaCharCode: 35,
3536
refIdToName: ['1', 'ctgB'],
3637
refNameToId: { 1: 0, ctgB: 1 },
3738
skipLines: 0,
@@ -69,6 +70,7 @@ test('loads test.vcf.gz.csi', async () => {
6970
coordinateType: '1-based-closed',
7071
format: 'VCF',
7172
metaChar: '#',
73+
metaCharCode: 35,
7274
firstDataLine: new VirtualOffset(0, 2560),
7375
refIdToName: ['1'],
7476
refNameToId: { 1: 0 },

test/tabixindexedfile.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ test('can read ctgA:1000..4000', async () => {
7272
maxBlockSize: 1 << 16,
7373
format: 'VCF',
7474
metaChar: '#',
75+
metaCharCode: 35,
7576
firstDataLine: new VirtualOffset(0, 10431),
7677
refIdToName: ['ctgA'],
7778
refNameToId: { ctgA: 0 },

test/tbi.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ test('loads', async () => {
2525
coordinateType: '1-based-closed',
2626
format: 'VCF',
2727
metaChar: '#',
28+
metaCharCode: 35,
2829
maxBinNumber: 37449,
2930
firstDataLine: new VirtualOffset(0, 10431),
3031
refIdToName: ['contigA'],

0 commit comments

Comments
 (0)