1 import re
2 import sys
3
5 """
6 Object to store blast results
7
8 All values are relative to absolute sequence position, starting at index 1!!!
9 """
10
12
13 self.sequenceID_A = None
14 self.sequenceID_B = None
15 self.e_value = None
16 self.align_length = None
17 self.score = None
18 self.score_bits = None
19 self.identities = None
20 self.positives = None
21 self.gaps = 0
22 self.query_start = None
23 self.query_end = None
24 self.query_length = None
25 self.sbjct_start = None
26 self.sbjct_end = None
27 self.sbjct_length = None
28 self.method = method
29 self.mode = mode
30 self.query_coverage = None
31 self.sbjct_coverage = None
32 self.query_exact_match_list = []
33 self.sbjct_exact_match_list = []
34 self.query_similar_match_list = []
35 self.sbjct_similar_match_list = []
36
39
41
42 return "%s\n" %"\t".join(["%s" %self.sequenceID_A,
43 "%s" %self.sequenceID_B,
44 "%s" %self.e_value,
45 "%s" %self.score,
46 "%s" %self.score_bits,
47 "%s" %self.query_start,
48 "%s" %self.query_end,
49 "%s" %self.sbjct_start,
50 "%s" %self.sbjct_end,
51 "%s" %self.identities,
52 "%s" %self.positives,
53 "%s" %self.gaps,
54 "%s" %self.method,
55 "%s" %self.mode,
56 "%s" %self.get_query_coverage(),
57 "%s" %self.get_sbjct_coverage()])
58
59
61 if self.query_coverage is None:
62 if self.query_length is None:
63 sys.stderr.write("Impossible to calculate query coverage: length not known. Query %s Subjct %s\n" %(self.sequenceID_A,self.sequenceID_B))
64 sys.exit(1)
65 return 0
66 self.query_coverage = (int(self.query_end)-int(self.query_start))*100/float(self.query_length)
67 return self.query_coverage
68
70 if self.sbjct_coverage is None:
71 if self.sbjct_length is None:
72 sys.stderr.write("Impossible to calculate query coverage: length not known. Sbjct: %s\n"%self.sequenceID_B)
73 return 0
74 self.sbjct_coverage = (int(self.sbjct_end)-int(self.sbjct_start))*100/float(self.sbjct_length)
75 return self.sbjct_coverage
76
78 if re.search("^e",e_value):
79 self.e_value = float("1"+e_value)
80 else:
81 self.e_value = float(e_value)
82
85
87
88 self.e_value = None
89 self.align_length = None
90 self.score = None
91 self.score_bits = None
92 self.identities = None
93 self.positives = None
94 self.gaps = 0
95 self.query_start = None
96 self.query_end = None
97 self.sbjct_start = None
98 self.sbjct_end = None
99 self.query_coverage = None
100 self.sbjct_coverage = None
101
102
103 self.query_exact_match_list = []
104 self.sbjct_exact_match_list = []
105 self.query_similar_match_list = []
106 self.sbjct_similar_match_list = []
107