1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
import random
from tempfile import mktemp
from bx import interval_index_file
from bx.interval_index_file import Indexes
def test_offsets():
assert interval_index_file.offsets_for_max_size(512 * 1024 * 1024 - 1) == [
512 + 64 + 8 + 1,
64 + 8 + 1,
8 + 1,
1,
0,
]
def test_interval_index_file():
ix = Indexes()
chrs = []
for i in range(5):
intervals = []
name = "seq%d" % i
max = random.randint(0, interval_index_file.MAX)
# print name, "size", max
for i in range(500):
start = random.randint(0, max)
end = random.randint(0, max)
if end < start:
end, start = start, end
ix.add(name, start, end, i, max=interval_index_file.MAX)
intervals.append((start, end, i))
chrs.append(intervals)
fname = mktemp()
f = open(fname, "wb")
ix.write(f)
f.close()
del ix
ix = Indexes(fname)
for i in range(5):
intervals = chrs[i]
name = "seq%d" % i
for i in range(100):
start = random.randint(0, max)
end = random.randint(0, max)
if end < start:
end, start = start, end
query_intervals = set()
for s, e, i in intervals:
if e > start and s < end:
query_intervals.add((s, e, i))
result = ix.find(name, start, end)
for inter in result:
assert inter in query_intervals
def test_zero():
ix = Indexes()
ix.add("t.idx", 0, 0, 1, 123)
|