diff options
Diffstat (limited to 'parse/dir_map.py')
-rw-r--r-- | parse/dir_map.py | 35 |
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 @@ | |||
1 | import os | 1 | import os |
2 | 2 | ||
3 | from collections import defaultdict | 3 | from collections import defaultdict |
4 | from point import Type | ||
5 | 4 | ||
6 | class TreeNode(object): | 5 | class 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) |