diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-10-23 15:07:27 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-10-23 15:07:27 -0400 |
commit | f1e90e1a5f7b148cf8113fe463615bd95d5bf26d (patch) | |
tree | 90c38ab2e6397c7a3129cb67238a3748520e9bd3 /parse/tuple_table.py | |
parent | 6d830d55ccae53dca6f0338dfee1274312c93161 (diff) |
Added parsing for load / flush operations in MC.
Diffstat (limited to 'parse/tuple_table.py')
-rw-r--r-- | parse/tuple_table.py | 24 |
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 | |||
5 | class ColMap(object): | 5 | class 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() |