aboutsummaryrefslogtreecommitdiffstats
path: root/parse/dir_map.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-02-07 17:53:35 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-02-07 17:53:35 -0500
commit063f5bc4b78a8368054c7e11c5fe177aafc4e28d (patch)
treefdf7c792f68ab310cbd40e9d76aed8d9e2a18b79 /parse/dir_map.py
parent39020cf5ae3030bc15035925a0c72eb44eea67b7 (diff)
Removed measurement logic from DirMap's for simpler processing.
Diffstat (limited to 'parse/dir_map.py')
-rw-r--r--parse/dir_map.py35
1 files changed, 5 insertions, 30 deletions
diff --git a/parse/dir_map.py b/parse/dir_map.py
index 319a5de..781607c 100644
--- a/parse/dir_map.py
+++ b/parse/dir_map.py
@@ -1,7 +1,6 @@
1import os 1import os
2 2
3from collections import defaultdict 3from collections import defaultdict
4from point import Type
5 4
6class TreeNode(object): 5class TreeNode(object):
7 def __init__(self, parent = None): 6 def __init__(self, parent = None):
@@ -16,39 +15,16 @@ class DirMap(object):
16 val_strs += ["%s=%s" % (key, vals[key])] 15 val_strs += ["%s=%s" % (key, vals[key])]
17 return "%s.csv" % ("_".join(val_strs)) 16 return "%s.csv" % ("_".join(val_strs))
18 17
19 def __init__(self, out_dir): 18 def __init__(self):
20 self.root = TreeNode(None) 19 self.root = TreeNode(None)
21 self.out_dir = out_dir
22 self.values = [] 20 self.values = []
23 21
24 def debug_update_node(self, path, keys, value): 22 def add_value(self, path, value):
25 self.__update_node(path, keys, value)
26
27 def __update_node(self, path, keys, value):
28 node = self.root 23 node = self.root
29
30 path += [ self.to_csv(keys) ]
31 for p in path: 24 for p in path:
32 node = node.children[p] 25 node = node.children[p]
33
34 node.values += [value] 26 node.values += [value]
35 27
36 def add_point(self, vary, vary_value, keys, point):
37 for stat in point.get_stats():
38 summary = point[stat]
39
40 for summary_type in Type:
41 measurement = summary[summary_type]
42
43 for base_type in Type:
44 if not base_type in measurement:
45 continue
46 # Ex: wcet/avg/max/vary-type/other-stuff.csv
47 path = [ stat, summary_type, base_type, "vary-%s" % vary ]
48 result = measurement[base_type]
49
50 self.__update_node(path, keys, (vary_value, result))
51
52 def reduce(self): 28 def reduce(self):
53 def reduce2(node): 29 def reduce2(node):
54 for key in node.children.keys(): 30 for key in node.children.keys():
@@ -62,7 +38,7 @@ class DirMap(object):
62 38
63 reduce2(self.root) 39 reduce2(self.root)
64 40
65 def write(self): 41 def write(self, out_dir):
66 def write2(path, node): 42 def write2(path, node):
67 out_path = "/".join(path) 43 out_path = "/".join(path)
68 if node.values: 44 if node.values:
@@ -78,8 +54,7 @@ class DirMap(object):
78 write2(path, child) 54 write2(path, child)
79 path.pop() 55 path.pop()
80 56
81 57 write2([out_dir], self.root)
82 write2([self.out_dir], self.root)
83 58
84 59
85 def __str__(self): 60 def __str__(self):
@@ -92,4 +67,4 @@ class DirMap(object):
92 ret += "%s/%s\n" % (header, key) 67 ret += "%s/%s\n" % (header, key)
93 ret += str2(child, level + 1) 68 ret += str2(child, level + 1)
94 return ret 69 return ret
95 return "%s\n%s" % (self.out_dir, str2(self.root, 1)) 70 return str2(self.root, 1)