root / projects / wwp_cameras / summarize.py

Revision 525, 1.2 kB (checked in by tim, 20 months ago)

Adding wwp stats script, a bit later than I had hoped

Line 
1import csv
2import sys
3
4from defs import hier
5
6def summarize(fn, nfn):
7    f = csv.reader(file(fn, "rb"))
8    fo = open(nfn, "wb")
9    header = f.next()
10    cams = Node("Root")
11    for l in f:
12        for x in zip(header, l):
13            if x in hier:
14                #print hier[x][0]
15                cams.inc_child(*hier[x][0])
16    cams.p()           
17
18class Node:
19    def __init__(self, name):
20        self.name = name
21        self.children = {}
22        self.val = 1
23    def inc_child(self, *x):
24        if not x: return # empty recursion...
25        if x[0] in self.children:
26            self.children[x[0]].val += 1
27        else:
28            self.add_child(x[0]).inc_child(*x[1:])
29    def add_child(self, name):
30        if name in self.children:
31            return self.children[name]
32        x = Node(name)
33        self.children[name] = x
34        return x
35    def count(self):
36        # Yes I know this is recursive.
37        return sum([v.count() for k,v in self.children.items()]) + self.val
38    def p(self, level=0):
39        print "%s %s %d" % (" "*level, self.name, self.count())
40        print "%s %r" % (" "*level, self.children)
41        for k,v in self.children.items():
42            v.p(level+2)
43
44if __name__ == "__main__":
45    summarize(*sys.argv[1:])
Note: See TracBrowser for help on using the browser.