Package TEES :: Package ExampleBuilders :: Module ExampleStats
[hide private]

Source Code for Module TEES.ExampleBuilders.ExampleStats

 1  import sys 
 2   
3 -class ExampleStats:
4 - def __init__(self):
5 self.className = None 6 self.examplesByClass = {} 7 self.filteredByClass = {} 8 self.filteredByClassByFilter = {} 9 self.counts = {} # example counts 10 self.values = {} # generic counters 11 self.variables = {} # generic variables
12
13 - def addValue(self, name, amount=1):
14 if name not in self.values: 15 self.values[name] = 0 16 self.values[name] += amount
17
18 - def addVariable(self, name, variable):
19 self.variables[name] = variable
20
21 - def addKnownPositives(self, className, number=1):
22 pass
23
24 - def addExample(self, className, filteredBy=[]):
25 self.beginExample(className) 26 for filter in filteredBy: 27 self.filter(filter) 28 self.endExample()
29
30 - def beginExample(self, className):
31 assert self.className == None 32 33 self.className = className 34 self.filteredBy = set()
35
36 - def filter(self, filterName):
37 assert self.className != None 38 assert filterName != "total" 39 self.filteredBy.add(filterName)
40
41 - def endExample(self):
42 assert self.className != None 43 44 if not self.examplesByClass.has_key(self.className): 45 self.examplesByClass[self.className] = 0 46 self.examplesByClass[self.className] += 1 47 48 if not self.filteredByClass.has_key(self.className): 49 self.filteredByClass[self.className] = 0 50 if len(self.filteredBy) > 0: 51 self.filteredByClass[self.className] += 1 52 53 for filter in self.filteredBy: 54 if not self.filteredByClassByFilter.has_key(self.className): 55 self.filteredByClassByFilter[self.className] = {} 56 if not self.filteredByClassByFilter[self.className].has_key(filter): 57 self.filteredByClassByFilter[self.className][filter] = 0 58 self.filteredByClassByFilter[self.className][filter] += 1 59 self.className = None
60
61 - def getExampleCount(self):
62 return sum(self.examplesByClass.values())
63
64 - def printStats(self):
65 print >> sys.stderr, "Example Statistics (total/filtered)" 66 #print >> sys.stderr, self.examplesByClass.keys() 67 counts = [0,0] 68 for className in sorted(self.examplesByClass.keys()): 69 if self.filteredByClassByFilter.has_key(className): 70 filterStr = str( self.filteredByClassByFilter[className] ) 71 else: 72 filterStr = "" 73 print >> sys.stderr, " ", className + ": " + str(self.examplesByClass[className]) + "/" + str(self.filteredByClass[className]), filterStr 74 if className != "neg": 75 counts[0] += self.examplesByClass[className] 76 counts[1] += self.filteredByClass[className] 77 if counts[0] != 0: 78 posCoverage = float(counts[0] - counts[1]) / float(counts[0]) * 100.0 79 print >> sys.stderr, "Positives Coverage %.2f" % posCoverage, "%", counts 80 # Print generic counts 81 for value in sorted(self.values.keys()): 82 print >> sys.stderr, value + ":", self.values[value] 83 for variable in sorted(self.variables.keys()): 84 print >> sys.stderr, variable + ":", self.variables[variable]
85 86 #def add(self, className, filteredBy=[]): 87 # pass 88