Package biana :: Package BianaObjects :: Module BlastResult
[hide private]
[frames] | no frames]

Source Code for Module biana.BianaObjects.BlastResult

  1  import re 
  2  import sys 
  3   
4 -class BlastResult(object):
5 """ 6 Object to store blast results 7 8 All values are relative to absolute sequence position, starting at index 1!!! 9 """ 10
11 - def __init__(self, method, mode):
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
37 - def __repr__(self):
38 return self.__str__()
39
40 - def __str__(self):
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
60 - def get_query_coverage(self):
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
69 - def get_sbjct_coverage(self):
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
77 - def set_evalue(self, e_value):
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
83 - def write(self, fd_out):
84 fd_out.write(self.__str__())
85
86 - def reset(self):
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