File: test_api_references_virtual.py

package info (click to toggle)
gfapy 1.2.3%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,048 kB
  • sloc: python: 11,777; sh: 167; makefile: 68
file content (131 lines) | stat: -rw-r--r-- 5,134 bytes parent folder | download | duplicates (4)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import gfapy
import unittest

class TestAPIReferencesVirtual(unittest.TestCase):

  def test_edges_gaps_create_virtual_segments(self):
    data = [
      ["gfa1", {"lines":["L\ta\t+\tb\t-\t*", "C\ta\t-\tb\t+\t100\t*"],
               "m1":"oriented_from", "m2":"oriented_to",
               "sA":"S\ta\t*", "sB":"S\tb\t*",
               "collection":"edges"}],
      ["gfa2", {"lines":["E\t*\ta+\tb-\t0\t100\t900\t1000$\t*"],
               "m1":"sid1", "m2":"sid2",
               "sA":"S\ta\t1000\t*", "sB":"S\tb\t1000\t*",
               "collection":"edges"}],
      ["gfa2", {"lines":["G\t*\ta+\tb-\t1000\t100"],
               "m1":"sid1", "m2":"sid2",
               "sA":"S\ta\t1000\t*", "sB":"S\tb\t1000\t*",
               "collection":"gaps"}]
    ]
    for v,values in data:
      for linestr in values["lines"]:
        g = gfapy.Gfa(version=v)
        line = gfapy.Line(linestr)
        g.append(line)
        self.assertEqual(set(["a", "b"]), set([x.name for x in g.segments]))
        for s in g.segments: assert(s.virtual)
        sA = gfapy.Line(values["sA"])
        g.append(sA)
        self.assertEqual(set(["a", "b"]), set([x.name for x in g.segments]))
        assert(not g.segment("a").virtual)
        assert(g.segment("b").virtual)
        self.assertEqual(sA, getattr(line,values["m1"]).line)
        self.assertEqual(sA, g.segment("a"))
        self.assertEqual([line], getattr(sA,values["collection"]))
        sB = gfapy.Line(values["sB"])
        g.append(sB)
        self.assertEqual(set(["a", "b"]), set([x.name for x in g.segments]))
        assert(not g.segment("b").virtual)
        self.assertEqual(sB, getattr(line,values["m2"]).line)
        self.assertEqual(sB, g.segment("b"))
        self.assertEqual([line], getattr(sB,values["collection"]))

  def test_fragments_create_virtual_segments(self):
    g = gfapy.Gfa(version="gfa2")
    fr = gfapy.Line("F\ta\tread10-\t0\t10\t990\t1000$\t*")
    g.append(fr)
    self.assertEqual(["a"], [x.name for x in g.segments])
    assert(g.segment("a").virtual)
    sA = gfapy.Line("S\ta\t1000\t*")
    g.append(sA)
    self.assertEqual(["a"], [x.name for x in g.segments])
    assert(not g.segment("a").virtual)
    self.assertEqual(sA, fr.sid)
    self.assertEqual(sA, g.segment("a"))
    self.assertEqual([fr], sA.fragments)

  def test_paths_create_virtual_links(self):
    g = gfapy.Gfa(version="gfa1")
    path = gfapy.Line("P\tp1\tb+,ccc-,e+\t10M1I2M,15M")
    g.append(path)
    for i in path.segment_names: assert(i.line.virtual)
    self.assertEqual(set(["b", "ccc", "e"]), set([x.name for x in g.segments]))
    sB = gfapy.Line("S\tb\t*")
    g.append(sB)
    assert(not path.segment_names[0].line.virtual)
    self.assertEqual(sB, path.segment_names[0].line)
    self.assertEqual([path], sB.paths)
    for i in path.links: assert(i.line.virtual)
    l = gfapy.Line("L\tccc\t+\tb\t-\t2M1D10M")
    g.append(l)
    assert(not path.links[0].line.virtual)
    self.assertEqual(l, path.links[0].line)
    self.assertEqual([path], l.paths)
    l = gfapy.Line("L\tccc\t-\te\t+\t15M")
    g.append(l)
    assert(not path.links[1].line.virtual)
    self.assertEqual(l, path.links[1].line)
    self.assertEqual([path], l.paths)

  def test_ordered_groups_create_virtual_unknown_records(self):
    g = gfapy.Gfa(version="gfa2")
    path = gfapy.Line("O\tp1\tchildpath- b+ c- edge-")
    g.append(path)
    for i in path.items:
      assert(i.line.virtual)
      self.assertEqual("\n", i.line.record_type)
    childpath = gfapy.Line("O\tchildpath\tf+ a+")
    g.append(childpath)
    assert(not path.items[0].line.virtual)
    self.assertEqual(childpath, path.items[0].line)
    self.assertEqual([path], childpath.paths)
    sB = gfapy.Line("S\tb\t1000\t*")
    g.append(sB)
    assert(not path.items[1].line.virtual)
    self.assertEqual(sB, path.items[1].line)
    self.assertEqual([path], sB.paths)
    edge = gfapy.Line("E\tedge\te-\tc+\t0\t100\t900\t1000$\t*")
    g.append(edge)
    assert(not path.items[-1].line.virtual)
    self.assertEqual(edge, path.items[-1].line)
    self.assertEqual([path], edge.paths)

  def test_unordered_groups_create_virtual_unknown_records(self):
    g = gfapy.Gfa(version="gfa2")
    set = gfapy.Line("U\tset\tchildpath b childset edge")
    g.append(set)
    for i in set.items:
      assert(i.virtual)
      self.assertEqual("\n", i.record_type)
    childpath = gfapy.Line("O\tchildpath\tf+ a+")
    g.append(childpath)
    assert(not set.items[0].virtual)
    self.assertEqual(childpath, set.items[0])
    self.assertEqual([set], childpath.sets)
    sB = gfapy.Line("S\tb\t1000\t*")
    g.append(sB)
    assert(not set.items[1].virtual)
    self.assertEqual(sB, set.items[1])
    self.assertEqual([set], sB.sets)
    childset = gfapy.Line("U\tchildset\tg edge2")
    g.append(childset)
    assert(not set.items[2].virtual)
    self.assertEqual(childset, set.items[2])
    self.assertEqual([set], childset.sets)
    edge = gfapy.Line("E\tedge\te-\tc+\t0\t100\t900\t1000$\t*")
    g.append(edge)
    assert(not set.items[3].virtual)
    self.assertEqual(edge, set.items[3])
    self.assertEqual([set], edge.sets)