From a81151bb46481737a3532d44fbe2a08df507b52e Mon Sep 17 00:00:00 2001 From: Jack Huey Date: Fri, 29 Nov 2024 23:35:14 -0500 Subject: [PATCH] Fix wrong assert for oob bins --- pybigtools/src/lib.rs | 4 ++-- pybigtools/tests/test_api.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pybigtools/src/lib.rs b/pybigtools/src/lib.rs index 3c15ac3..ae9096a 100644 --- a/pybigtools/src/lib.rs +++ b/pybigtools/src/lib.rs @@ -307,7 +307,7 @@ fn intervals_to_array( 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; } @@ -445,7 +445,7 @@ fn entries_to_array( 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; } diff --git a/pybigtools/tests/test_api.py b/pybigtools/tests/test_api.py index 017abbd..192c90f 100644 --- a/pybigtools/tests/test_api.py +++ b/pybigtools/tests/test_api.py @@ -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")