@@ -371,7 +371,7 @@ int bcf_sr_add_reader(bcf_srs_t *files, const char *fname)
371
371
if ( !files -> regions )
372
372
files -> regions = _regions_init_string (names [i ]);
373
373
else
374
- _regions_add (files -> regions , names [i ], -1 , -1 );
374
+ _regions_add (files -> regions , names [i ], CSI_COOR_EMPTY , CSI_COOR_EMPTY );
375
375
}
376
376
free (names );
377
377
_regions_sort_and_merge (files -> regions );
@@ -555,7 +555,7 @@ static int _readers_next_region(bcf_srs_t *files)
555
555
int prev_iseq = files -> regions -> iseq ;
556
556
hts_pos_t prev_end = files -> regions -> end ;
557
557
if ( bcf_sr_regions_next (files -> regions )< 0 ) return -1 ;
558
- files -> regions -> prev_end = prev_iseq == files -> regions -> iseq ? prev_end : -1 ;
558
+ files -> regions -> prev_end = prev_iseq == files -> regions -> iseq ? prev_end : CSI_COOR_EMPTY ;
559
559
560
560
for (i = 0 ; i < files -> nreaders ; i ++ )
561
561
_reader_seek (& files -> readers [i ],files -> regions -> seq_names [files -> regions -> iseq ],files -> regions -> start ,files -> regions -> end );
@@ -616,7 +616,7 @@ static int _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
616
616
{
617
617
reader -> buffer [reader -> mbuffer - i ] = bcf_init1 ();
618
618
reader -> buffer [reader -> mbuffer - i ]-> max_unpack = files -> max_unpack ;
619
- reader -> buffer [reader -> mbuffer - i ]-> pos = -1 ; // for rare cases when VCF starts from 1
619
+ reader -> buffer [reader -> mbuffer - i ]-> pos = CSI_COOR_EMPTY ; // for rare cases when VCF starts from 1 or 0
620
620
}
621
621
}
622
622
if ( files -> streaming )
@@ -656,7 +656,6 @@ static int _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
656
656
if ( ret < 0 ) break ; // no more lines or an error
657
657
bcf_subset_format (reader -> header ,reader -> buffer [reader -> nbuffer + 1 ]);
658
658
}
659
-
660
659
// Prevent creation of duplicates from records overlapping multiple regions
661
660
// and recognize true variant overlaps vs record overlaps (e.g. TA>T vs A>-)
662
661
if ( files -> regions )
@@ -676,7 +675,6 @@ static int _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
676
675
hts_log_error ("This should never happen, just to keep clang compiler happy: %d" ,BCF_SR_AUX (files )-> targets_overlap );
677
676
exit (1 );
678
677
}
679
-
680
678
if ( beg <= files -> regions -> prev_end || end < files -> regions -> start || beg > files -> regions -> end ) continue ;
681
679
}
682
680
@@ -954,9 +952,9 @@ int bcf_sr_set_samples(bcf_srs_t *files, const char *fname, int is_file)
954
952
// inclusive. Sorting and merging step needed afterwards: qsort(..,cmp_regions) and merge_regions().
955
953
static int _regions_add (bcf_sr_regions_t * reg , const char * chr , hts_pos_t start , hts_pos_t end )
956
954
{
957
- if ( start == -1 && end == -1 )
955
+ if ( start == CSI_COOR_EMPTY && end == CSI_COOR_EMPTY )
958
956
{
959
- start = 0 ; end = MAX_CSI_COOR - 1 ;
957
+ start = -1 ; end = MAX_CSI_COOR - 1 ;
960
958
}
961
959
else
962
960
{
@@ -1029,8 +1027,9 @@ void _regions_sort_and_merge(bcf_sr_regions_t *reg)
1029
1027
static bcf_sr_regions_t * _regions_init_string (const char * str )
1030
1028
{
1031
1029
bcf_sr_regions_t * reg = (bcf_sr_regions_t * ) calloc (1 , sizeof (bcf_sr_regions_t ));
1032
- reg -> start = reg -> end = -1 ;
1033
- reg -> prev_start = reg -> prev_end = reg -> prev_seq = -1 ;
1030
+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1031
+ reg -> prev_start = reg -> prev_end = CSI_COOR_EMPTY ;
1032
+ reg -> prev_seq = -1 ;
1034
1033
1035
1034
kstring_t tmp = {0 ,0 ,0 };
1036
1035
const char * sp = str , * ep = str ;
@@ -1075,7 +1074,7 @@ static bcf_sr_regions_t *_regions_init_string(const char *str)
1075
1074
}
1076
1075
else
1077
1076
{
1078
- if ( tmp .l ) _regions_add (reg , tmp .s , -1 , -1 );
1077
+ if ( tmp .l ) _regions_add (reg , tmp .s , CSI_COOR_EMPTY , CSI_COOR_EMPTY );
1079
1078
if ( !* ep ) break ;
1080
1079
sp = ++ ep ;
1081
1080
}
@@ -1157,8 +1156,9 @@ bcf_sr_regions_t *bcf_sr_regions_init(const char *regions, int is_file, int ichr
1157
1156
}
1158
1157
1159
1158
reg = (bcf_sr_regions_t * ) calloc (1 , sizeof (bcf_sr_regions_t ));
1160
- reg -> start = reg -> end = -1 ;
1161
- reg -> prev_start = reg -> prev_end = reg -> prev_seq = -1 ;
1159
+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1160
+ reg -> prev_start = reg -> prev_end = CSI_COOR_EMPTY ;
1161
+ reg -> prev_seq = -1 ;
1162
1162
1163
1163
reg -> file = hts_open (regions , "rb" );
1164
1164
if ( !reg -> file )
@@ -1253,7 +1253,8 @@ void bcf_sr_regions_destroy(bcf_sr_regions_t *reg)
1253
1253
1254
1254
int bcf_sr_regions_seek (bcf_sr_regions_t * reg , const char * seq )
1255
1255
{
1256
- reg -> iseq = reg -> start = reg -> end = -1 ;
1256
+ reg -> iseq = -1 ;
1257
+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1257
1258
if ( khash_str2int_get (reg -> seq_hash , seq , & reg -> iseq ) < 0 ) return -1 ; // sequence seq not in regions
1258
1259
1259
1260
// using in-memory regions
@@ -1284,7 +1285,7 @@ static int advance_creg(region_t *reg)
1284
1285
int bcf_sr_regions_next (bcf_sr_regions_t * reg )
1285
1286
{
1286
1287
if ( reg -> iseq < 0 ) return -1 ;
1287
- reg -> start = reg -> end = -1 ;
1288
+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1288
1289
reg -> nals = 0 ;
1289
1290
1290
1291
// using in-memory regions
@@ -1442,7 +1443,7 @@ static int _bcf_sr_regions_overlap(bcf_sr_regions_t *reg, const char *seq, hts_p
1442
1443
bcf_sr_regions_flush (reg );
1443
1444
1444
1445
bcf_sr_regions_seek (reg , seq );
1445
- reg -> start = reg -> end = -1 ;
1446
+ reg -> start = reg -> end = CSI_COOR_EMPTY ;
1446
1447
}
1447
1448
if ( reg -> prev_seq == iseq && reg -> iseq != iseq ) return -2 ; // no more regions on this chromosome
1448
1449
reg -> prev_seq = reg -> iseq ;
0 commit comments