Esempio n. 1
0
 def test_open_intervals(self):
     assert P.to_data(P.open(-P.inf, P.inf)) == [(False, float('-inf'),
                                                  float('inf'), False)]
     assert P.to_data(P.openclosed(-P.inf,
                                   0)) == [(False, float('-inf'), 0, True)]
     assert P.to_data(P.closedopen(0, P.inf)) == [(True, 0, float('inf'),
                                                   False)]
Esempio n. 2
0
    def test_identity(self):
        i1, i2, i3, i4 = P.closed(0, 1), P.openclosed(0, 1), P.closedopen(0, 1), P.open(0, 1)

        assert P.from_data(P.to_data(i2)) == i2
        assert P.from_data(P.to_data(i3)) == i3
        assert P.from_data(P.to_data(i4)) == i4
        assert P.from_data(P.to_data(i1)) == i1
Esempio n. 3
0
def make_POS_and_CIGAR(stitched_m):
    CIGAR = ''
    conflict = False
    interval_list = []
    ref_and_skip_intersect = stitched_m['ref_intervals'] & stitched_m[
        'skipped_intervals']
    nreads_conflict = 0
    if not ref_and_skip_intersect.empty:
        conflict = True
        nreads_conflict = len(list(P.iterate(ref_and_skip_intersect, step=1)))
        stitched_m['skipped_intervals'] = stitched_m[
            'skipped_intervals'] - ref_and_skip_intersect
        interval_list = [
            i for t in P.to_data(ref_and_skip_intersect) for i in t[1:-1]
        ]
    ref_tuples = [(i[1] if i[0] else i[1] + 1, i[2] if i[3] else i[2] - 1)
                  for i in P.to_data(stitched_m['ref_intervals'])]
    if stitched_m['skipped_intervals'].empty:
        skipped_tuples = []
    else:
        skipped_tuples = [(i[1] if i[0] else i[1] + 1,
                           i[2] if i[3] else i[2] - 1)
                          for i in P.to_data(stitched_m['skipped_intervals'])]
    if stitched_m['del_intervals'].empty:
        del_tuples = []
    else:
        del_tuples = [(i[1] if i[0] else i[1] + 1, i[2] if i[3] else i[2] - 1)
                      for i in P.to_data(stitched_m['del_intervals'])[1:-1]]
    POS = ref_tuples[0][0] + 1
    tuple_dict = {'M': ref_tuples, 'N': skipped_tuples, 'D': del_tuples}
    while sum(len(t) for t in tuple_dict.values()) > 0:
        pos_dict = {k: v[0][0] for k, v in tuple_dict.items() if len(v) > 0}
        c = min(pos_dict, key=pos_dict.get)
        n_bases = np.int_(tuple_dict[c[0]][0][1] - tuple_dict[c[0]][0][0]) + 1
        if n_bases == 0:
            del tuple_dict[c[0]][0]
            continue
        CIGAR += '{}{}'.format(n_bases, c[0])
        del tuple_dict[c[0]][0]
    return POS, CIGAR, conflict, nreads_conflict, interval_list
Esempio n. 4
0
 def keys(iv):
     return tuple(tuple(int(e) for e in d[1:3]) for d in to_data(iv))
Esempio n. 5
0
 def test_parameters(self):
     i = P.openclosed(-P.inf, 4) | P.closedopen(6, P.inf)
     assert P.to_data(i, conv=str, pinf='highest', ninf='lowest') == [(False, 'lowest', '4', True), (True, '6', 'highest', False)]
Esempio n. 6
0
 def test_unions(self):
     i = P.openclosed(-P.inf, 4) | P.closedopen(6, P.inf)
     assert P.to_data(i) == [(False, float('-inf'), 4, True), (True, 6, float('inf'), False)]
Esempio n. 7
0
 def test_empty_interval(self):
     assert P.to_data(P.empty()) == [(False, float('inf'), float('-inf'), False)]
Esempio n. 8
0
 def test_singleton(self):
     assert P.to_data(P.singleton(0)) == [(True, 0, 0, True)]
Esempio n. 9
0
 def test_values(self):
     assert P.to_data(P.closed('a', 'b')) == [(True, 'a', 'b', True)]
     assert P.to_data(P.closed(tuple([0]), tuple([1]))) == [(True, (0,), (1,), True)]
Esempio n. 10
0
 def test_bounds(self):
     assert P.to_data(P.closed(0, 1)) == [(True, 0, 1, True)]
     assert P.to_data(P.openclosed(0, 1)) == [(False, 0, 1, True)]
     assert P.to_data(P.closedopen(0, 1)) == [(True, 0, 1, False)]
     assert P.to_data(P.open(0, 1)) == [(False, 0, 1, False)]