aboutsummaryrefslogtreecommitdiffstats
path: root/parse/tuple_table.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-10-23 15:07:27 -0400
committerJonathan Herman <hermanjl@cs.unc.edu>2012-10-23 15:07:27 -0400
commitf1e90e1a5f7b148cf8113fe463615bd95d5bf26d (patch)
tree90c38ab2e6397c7a3129cb67238a3748520e9bd3 /parse/tuple_table.py
parent6d830d55ccae53dca6f0338dfee1274312c93161 (diff)
Added parsing for load / flush operations in MC.
Diffstat (limited to 'parse/tuple_table.py')
-rw-r--r--parse/tuple_table.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/parse/tuple_table.py b/parse/tuple_table.py
index 5e98d87..cb5a72a 100644
--- a/parse/tuple_table.py
+++ b/parse/tuple_table.py
@@ -5,6 +5,7 @@ from dir_map import DirMap
5class ColMap(object): 5class ColMap(object):
6 def __init__(self): 6 def __init__(self):
7 self.rev_map = {} 7 self.rev_map = {}
8 self.value_map = {}
8 self.col_list = [] 9 self.col_list = []
9 10
10 def columns(self): 11 def columns(self):
@@ -12,19 +13,13 @@ class ColMap(object):
12 13
13 def get_key(self, kv): 14 def get_key(self, kv):
14 key = () 15 key = ()
15 added = 0
16 16
17 for col in self.col_list: 17 for col in self.col_list:
18 if col not in kv: 18 if col not in kv:
19 key += (None,) 19 key += (None,)
20 else: 20 else:
21 added += 1
22 key += (kv[col],) 21 key += (kv[col],)
23 22
24 if added < len(kv):
25 raise Exception("column map '%s' missed field in map '%s'" %
26 (self.col_list, kv))
27
28 return key 23 return key
29 24
30 def __contains__(self, col): 25 def __contains__(self, col):
@@ -36,10 +31,13 @@ class ColMap(object):
36 map[self.col_list[i]] = tuple[i] 31 map[self.col_list[i]] = tuple[i]
37 return map 32 return map
38 33
39 def try_add(self, column): 34 def try_add(self, column, value):
40 if column not in self.rev_map: 35 if column not in self.rev_map:
41 self.rev_map[column] = len(self.col_list) 36 if column not in self.value_map:
42 self.col_list += [column] 37 self.value_map[column] = value
38 elif value != self.value_map[column]:
39 self.rev_map[column] = len(self.col_list)
40 self.col_list += [column]
43 41
44 def __str__(self): 42 def __str__(self):
45 return "<ColMap>%s" % (self.rev_map) 43 return "<ColMap>%s" % (self.rev_map)
@@ -67,6 +65,7 @@ class TupleTable(object):
67 65
68 def write_result(self, out_dir): 66 def write_result(self, out_dir):
69 dir_map = DirMap(out_dir) 67 dir_map = DirMap(out_dir)
68
70 for key, point in self.table.iteritems(): 69 for key, point in self.table.iteritems():
71 kv = self.col_map.get_map(key) 70 kv = self.col_map.get_map(key)
72 71
@@ -75,12 +74,13 @@ class TupleTable(object):
75 74
76 try: 75 try:
77 float(val) 76 float(val)
78 kv.pop(col)
79 dir_map.add_point(col, val, kv, point)
80 kv[col] = val
81 except: 77 except:
82 # Only vary numbers. Otherwise, just have seperate lines 78 # Only vary numbers. Otherwise, just have seperate lines
83 continue 79 continue
84 80
81 kv.pop(col)
82 dir_map.add_point(col, val, kv, point)
83 kv[col] = val
84
85 dir_map.reduce() 85 dir_map.reduce()
86 dir_map.write() 86 dir_map.write()