1
2
3
4
5
6 __version__ = "$Revision: 1.4 $"
7
8 import exceptions
9 import os
10 import re
11 import sys
12
13 from Bio import Wise
14
15 _CMDLINE_PSW = ["psw", "-l", "-F"]
16 _OPTION_GAP_START = "-g"
17 _OPTION_GAP_EXTENSION = "-e"
18 _OPTION_SCORES = "-m"
19
22
24 - def append(self, column_unit):
31
34 if self.kind == "SEQUENCE":
35 self.kind = column_unit.kind
36
38 assert column_unit.unit == 0
39 self.kind = column_unit.kind
40 list.__init__(self, [column_unit.column, None])
41
43 return "%s(%s, %s)" % (self.kind, self[0], self[1])
44
45 - def append(self, column_unit):
53
56 self.unit = unit
57 self.column = column
58 self.kind = kind
59
61 return "ColumnUnit(unit=%s, column=%s, %s)" % (self.unit, self.column, self.kind)
62
63 __repr__ = __str__
64
65 _re_unit = re.compile(r"^Unit +([01])- \[ *(-?\d+)- *(-?\d+)\] \[(\w+)\]$")
67 """
68 >>> print parse_line("Column 0:")
69 None
70 >>> parse_line("Unit 0- [ -1- 0] [SEQUENCE]")
71 ColumnUnit(unit=0, column=0, SEQUENCE)
72 >>> parse_line("Unit 1- [ 85- 86] [SEQUENCE]")
73 ColumnUnit(unit=1, column=86, SEQUENCE)
74 """
75 match = _re_unit.match(line.rstrip())
76
77 if not match:
78 return
79
80 return ColumnUnit(int(match.group(1)), int(match.group(3)), match.group(4))
81
83 """
84 format
85
86 Column 0:
87 Unit 0- [ -1- 0] [SEQUENCE]
88 Unit 1- [ 85- 86] [SEQUENCE]
89
90 means that seq1[0] == seq2[86] (0-based)
91 """
92
93 alignment = Alignment()
94 for line in iterable:
95 try:
96 if os.environ["WISE_PY_DEBUG"]:
97 print line,
98 except KeyError:
99 pass
100
101 column_unit = parse_line(line)
102 if column_unit:
103 alignment.append(column_unit)
104
105 return alignment
106
107 -def align(pair,
108 scores=None,
109 gap_start=None,
110 gap_extension=None,
111 *args, **keywds):
122
124 print align(sys.argv[1:3])
125
126 -def _test(*args, **keywds):
127 import doctest, sys
128 doctest.testmod(sys.modules[__name__], *args, **keywds)
129
130 if __name__ == "__main__":
131 if __debug__:
132 _test()
133 main()
134