Skip to content

Commit

Permalink
Fix wrong assert for oob bins
Browse files Browse the repository at this point in the history
  • Loading branch information
jackh726 committed Nov 30, 2024
1 parent 346d45a commit a81151b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pybigtools/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ fn intervals_to_array<R: BBIFileRead>(
let interval_end = end - start;
let bin_start = ((interval_start as f64) / bin_size) as usize;
let bin_end = ((interval_end as f64) / bin_size).ceil() as usize;
assert_eq!(bin_end, array.len() - 1);
assert_eq!(bin_end, array.len());
for i in bin_start..bin_end {
array[i] = oob;
}
Expand Down Expand Up @@ -445,7 +445,7 @@ fn entries_to_array<R: BBIFileRead>(
let interval_end = end - start;
let bin_start = ((interval_start as f64) / bin_size) as usize;
let bin_end = ((interval_end as f64) / bin_size).ceil() as usize;
assert_eq!(bin_end, array.len() - 1);
assert_eq!(bin_end, array.len());
for i in bin_start..bin_end {
array[i] = oob;
}
Expand Down
15 changes: 15 additions & 0 deletions pybigtools/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,21 @@ def test_values_assign_to_array(bw, bb):
assert ret_arr[19] == 0.0
assert np.array_equal(arr, ret_arr, equal_nan=True)

def test_values_oob(bw):
chroms = bw.chroms()
# Region: arbitrary chromosome, 1 bin outside overlap
chrom = list(chroms.keys())[0]
bin_size = 8
end = chroms[chrom]+bin_size
start = end - 2*bin_size
# Try to get values
v=bw.values(chrom, start, end, bins = 3)
assert len(v) == 3
assert np.isnan(v[2])
# Note: also happens if explicitly setting oob:
v=bw.values(chrom, start, end, bins = 3, oob=0)
assert len(v) == 3
assert v[2] == 0

def test_big_gene_pred():
bb = pybigtools.open(REPO_ROOT / "bigtools/resources/test/bigGenePred.bb")
Expand Down

0 comments on commit a81151b

Please sign in to comment.