From 91a5b9d5492329e29f1fdd611c3d98a4f69ef17d Mon Sep 17 00:00:00 2001 From: "Michael R. Crusoe" Date: Wed, 18 Dec 2019 12:11:42 +0100 Subject: [PATCH] fix error for 32bit systems --- lib/bx/interval_index_file.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/bx/interval_index_file.py b/lib/bx/interval_index_file.py index 03a1cc8..d251401 100644 --- a/lib/bx/interval_index_file.py +++ b/lib/bx/interval_index_file.py @@ -82,7 +82,6 @@ """ import os.path -import sys from bisect import ( insort, insort_right, @@ -124,7 +123,7 @@ BIN_OFFSETS_MAX.insert(0, (BIN_OFFSETS_MAX[0] << BIN_NEXT_SHIFT)) # The maximum size for the top bin is actually bigger than the signed integers # we use to store positions in the file, so we'll change it to prevent confusion -BIN_OFFSETS_MAX[0] = sys.maxsize +BIN_OFFSETS_MAX[0] = 2**63 # Constants for the minimum and maximum size of the overall interval MIN = 0 @@ -137,12 +136,14 @@ def offsets_for_max_size(max_size): """ Return the subset of offsets needed to contain intervals over (0,max_size) """ - for i, max in enumerate(reversed(BIN_OFFSETS_MAX)): - if max_size < max: + offset_index = None + for i, off_max in enumerate(reversed(BIN_OFFSETS_MAX)): + if max_size <= off_max: + offset_index = i break - else: + if offset_index is None: raise Exception("%d is larger than the maximum possible size (%d)" % (max_size, BIN_OFFSETS_MAX[0])) - return BIN_OFFSETS[(len(BIN_OFFSETS) - i - 1) :] + return BIN_OFFSETS[(len(BIN_OFFSETS) - offset_index - 1):] def bin_for_range(start, end, offsets=None):