File: interval_index_file_tests.py

package info (click to toggle)
python-bx 0.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,000 kB
  • sloc: python: 17,136; ansic: 2,326; makefile: 24; sh: 8
file content (60 lines) | stat: -rw-r--r-- 1,609 bytes parent folder | download
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)