From 063f5bc4b78a8368054c7e11c5fe177aafc4e28d Mon Sep 17 00:00:00 2001 From: Jonathan Herman Date: Thu, 7 Feb 2013 17:53:35 -0500 Subject: Removed measurement logic from DirMap's for simpler processing. --- parse/dir_map.py | 35 +++++------------------------------ parse/tuple_table.py | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 37 deletions(-) (limited to 'parse') 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 @@ import os from collections import defaultdict -from point import Type class TreeNode(object): def __init__(self, parent = None): @@ -16,39 +15,16 @@ class DirMap(object): val_strs += ["%s=%s" % (key, vals[key])] return "%s.csv" % ("_".join(val_strs)) - def __init__(self, out_dir): + def __init__(self): self.root = TreeNode(None) - self.out_dir = out_dir self.values = [] - def debug_update_node(self, path, keys, value): - self.__update_node(path, keys, value) - - def __update_node(self, path, keys, value): + def add_value(self, path, value): node = self.root - - path += [ self.to_csv(keys) ] for p in path: node = node.children[p] - node.values += [value] - def add_point(self, vary, vary_value, keys, point): - for stat in point.get_stats(): - summary = point[stat] - - for summary_type in Type: - measurement = summary[summary_type] - - for base_type in Type: - if not base_type in measurement: - continue - # Ex: wcet/avg/max/vary-type/other-stuff.csv - path = [ stat, summary_type, base_type, "vary-%s" % vary ] - result = measurement[base_type] - - self.__update_node(path, keys, (vary_value, result)) - def reduce(self): def reduce2(node): for key in node.children.keys(): @@ -62,7 +38,7 @@ class DirMap(object): reduce2(self.root) - def write(self): + def write(self, out_dir): def write2(path, node): out_path = "/".join(path) if node.values: @@ -78,8 +54,7 @@ class DirMap(object): write2(path, child) path.pop() - - write2([self.out_dir], self.root) + write2([out_dir], self.root) def __str__(self): @@ -92,4 +67,4 @@ class DirMap(object): ret += "%s/%s\n" % (header, key) ret += str2(child, level + 1) return ret - return "%s\n%s" % (self.out_dir, str2(self.root, 1)) + return str2(self.root, 1) diff --git a/parse/tuple_table.py b/parse/tuple_table.py index 86006d2..a00e8ad 100644 --- a/parse/tuple_table.py +++ b/parse/tuple_table.py @@ -28,6 +28,8 @@ class ColMap(object): return str(val).replace("_", "-").replace("=", "-") vals = [] for key in self.col_list: + if key not in kv: + continue k, v = escape(key), escape(kv[key]) vals += ["%s=%s" % (k, v)] return "_".join(vals) @@ -116,8 +118,30 @@ class TupleTable(object): with open(out_map, 'wc') as map_file: pprint(result,stream=map_file, width=20) - def write_csvs(self, out_dir): - dir_map = DirMap(out_dir) + + def __add_to_dirmap(self, dir_map, variable, kv, point): + value = kv.pop(variable) + + for stat in point.get_stats(): + summary = point[stat] + + for summary_type in Type: + measurement = summary[summary_type] + + for base_type in Type: + if not base_type in measurement: + continue + # Ex: release/num_tasks/measured-max/avg/x=5.csv + leaf = self.col_map.get_encoding(kv) + ".csv" + path = [ stat, variable, "taskset-" + base_type, summary_type, leaf ] + result = measurement[base_type] + + dir_map.add_value(path, (value, result)) + + kv[variable] = value + + def to_dir_map(self): + dir_map = DirMap() for key, point in self.table.iteritems(): kv = self.col_map.get_map(key) @@ -128,12 +152,13 @@ class TupleTable(object): try: float(val) except: - # Only vary numbers. Otherwise, just have seperate lines + # Only vary numbers. Otherwise, just have seperate files continue - kv.pop(col) - dir_map.add_point(col, val, kv, point) - kv[col] = val + self.__add_to_dirmap(dir_map, col, kv, point) dir_map.reduce() - dir_map.write() + return dir_map + + def from_dir_map(dir_map): + pass -- cgit v1.2.2