1
2
3
4
5
6
7
8
9
10
11
12
13
14 __version__ = "$Revision: 1.5 $"
15
16 import os
17 import re
18 import sys
19
20 from Bio import Wise
21
22 _CMDLINE_PSW = ["psw", "-l", "-F"]
23 _OPTION_GAP_START = "-g"
24 _OPTION_GAP_EXTENSION = "-e"
25 _OPTION_SCORES = "-m"
26
27
30
31
33 - def append(self, column_unit):
40
41
44 if self.kind == "SEQUENCE":
45 self.kind = column_unit.kind
46
48 assert column_unit.unit == 0
49 self.kind = column_unit.kind
50 list.__init__(self, [column_unit.column, None])
51
53 return "%s(%s, %s)" % (self.kind, self[0], self[1])
54
55 - def append(self, column_unit):
63
64
67 self.unit = unit
68 self.column = column
69 self.kind = kind
70
72 return "ColumnUnit(unit=%s, column=%s, %s)" % (self.unit, self.column, self.kind)
73
74 __repr__ = __str__
75
76 _re_unit = re.compile(r"^Unit +([01])- \[ *(-?\d+)- *(-?\d+)\] \[(\w+)\]$")
77
78
80 """
81 >>> print parse_line("Column 0:")
82 None
83 >>> parse_line("Unit 0- [ -1- 0] [SEQUENCE]")
84 ColumnUnit(unit=0, column=0, SEQUENCE)
85 >>> parse_line("Unit 1- [ 85- 86] [SEQUENCE]")
86 ColumnUnit(unit=1, column=86, SEQUENCE)
87 """
88 match = _re_unit.match(line.rstrip())
89
90 if not match:
91 return
92
93 return ColumnUnit(int(match.group(1)), int(match.group(3)), match.group(4))
94
95
97 """
98 format
99
100 Column 0:
101 Unit 0- [ -1- 0] [SEQUENCE]
102 Unit 1- [ 85- 86] [SEQUENCE]
103
104 means that seq1[0] == seq2[86] (0-based)
105 """
106
107 alignment = Alignment()
108 for line in iterable:
109 try:
110 if os.environ["WISE_PY_DEBUG"]:
111 print line,
112 except KeyError:
113 pass
114
115 column_unit = parse_line(line)
116 if column_unit:
117 alignment.append(column_unit)
118
119 return alignment
120
121
122 -def align(pair,
123 scores=None,
124 gap_start=None,
125 gap_extension=None,
126 *args, **keywds):
137
138
140 print align(sys.argv[1:3])
141
142
143 -def _test(*args, **keywds):
144 import doctest
145 doctest.testmod(sys.modules[__name__], *args, **keywds)
146
147 if __name__ == "__main__":
148 if __debug__:
149 _test()
150 main()
151