Source code for jade.basic.sequence.SequenceResults




[docs]class SequenceResults: """ Simple class for holding, calculating, + accessing result data Residue Numbers are in Rosetta numbering. Original class for sequence stats. Basically deprecated by SequenceStats and PDBConsensusInfo. """ def __init__(self): self.data = dict() self.reference = dict()
[docs] def add_residue(self, resnum, one_letter_code, decoy): if not self.data.has_key(resnum): self.data[resnum]=dict() self.data[resnum][one_letter_code]=dict() self.data[resnum][one_letter_code]['freq']=1 self.data[resnum][one_letter_code]['decoys']=[] self.data[resnum][one_letter_code]['decoys'].append(decoy);#This is to keep track of which decoys have which mutation. else: if not self.data[resnum].has_key(one_letter_code): self.data[resnum][one_letter_code]=dict() self.data[resnum][one_letter_code]['freq']=0 self.data[resnum][one_letter_code]['decoys']=[] self.data[resnum][one_letter_code]['freq']+=1
self.data[resnum][one_letter_code]['decoys'].append(decoy)
[docs] def add_reference_residue(self, resnum, one_letter_code):
self.reference[resnum]=one_letter_code
[docs] def get_freq(self, resnum, one_letter_code): try: x = self.data[resnum][one_letter_code]['freq'] return x except KeyError:
return 0
[docs] def get_total(self, resnum): total = 0 for code in self.data[resnum]: freq = self.get_freq(resnum, code) total = total +freq
return total
[docs] def get_percent(self, resnum, one_letter_code): total = self.get_total(resnum) freq = self.get_freq(resnum, one_letter_code) percent = float(freq)/float(total)
return percent
[docs] def get_percent_string(self, resnum, one_letter_code):
return "%.2f"%self.get_percent(resnum, one_letter_code)
[docs] def get_reference_residue(self, resnum):
return self.reference[resnum]
[docs] def get_all_residues_observed(self, resnum):
return sorted(self.data[resnum].keys())
[docs] def get_all_residue_numbers(self):
return sorted(self.data.keys())
[docs] def get_decoys_with_aa(self, resnum, one_letter_code): """ Returns all decoys with a specific mutation at a position. """ try: return self.data[resnum][one_letter_code]['decoys'] except KeyError:
return []
[docs] def get_decoys_with_joint_aa(self, resnum_one_letter_code_pair): """ Will output decoys that have x, y, z mutations at positions a, b, c """
pass ### reference Comparison Functions ###
[docs] def get_all_mutated_positions(self): mutated_positions = [] for resnum in self.data: if not self.reference.has_key(resnum): print "Position in data does not match position in reference" if self.get_percent(resnum, self.reference[resnum])==1.0: pass else: mutated_positions.append(resnum) if mutated_positions:return mutated_positions
else:print "No mutations found"
[docs] def get_all_reference_percent_observed(self): """ Returns array of tripplets of [postion, one_letter_code, percent] of reference amino acid found. """ tripplet_array = [] for resnum in self.reference: if not self.data.has_key(resnum): print "Position in reference does not match any position in data" percent = self.get_percent(resnum, self.reference[resnum]) tripplet = [resnum, self.reference[resnum], percent] tripplet_array.append(tripplet)
return tripplet_array