1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/usr/bin/env python
import sys
from plot import decode
from os.path import splitext, basename
from glob import glob
from collections import defaultdict
import optparse
o = optparse.make_option
opts = [
o('-s', '--split', action='store_true', dest='split_files',
help='split out files into individual per-wss files'),
]
defaults = {
'split_files' : False,
}
options = None
#G-EDF/testpoint_ucap=13.75_wss=1792_dist=exp-10-10-100_deadlines=implicit_host=ludwig_scheduler=G-EDF.csv
def key(fname):
name, ext = splitext(basename(fname))
conf = decode(name)
if 'quanta' in conf:
q = '_quanta=%s' % conf['quanta']
else:
q = ''
s = 'scheduler=%s' % conf['scheduler']
d = 'dist=%s' % conf['dist']
dl = 'deadlines=%s' % conf['deadlines']
h = 'host=%s' % conf['host']
if options.split_files:
w = '_wss=%s' % conf['wss']
else:
w = ''
return '_'.join([d, dl, s, h]) + q + w
def assemble_results(dir):
files = glob(dir + '/*.csv')
parts = defaultdict(list)
for f in files:
k = key(f)
parts[k].append(f)
if options.split_files:
nametag = 'dwss'
else:
nametag = 'dall'
for i, k in enumerate(parts):
comment = 1
print '[%d/%d] Processing %s' % (i+ 1, len(parts), k)
out = open('%s_%s.csv' % (nametag, k), 'w')
for f in sorted(parts[k]):
for line in open(f):
if line[0] != '#' or comment:
out.write(line)
if line[0] == '#':
comment -= 1
out.close()
if __name__ == '__main__':
parser = optparse.OptionParser(option_list=opts)
parser.set_defaults(**defaults)
(options, dirs) = parser.parse_args()
for d in dirs:
assemble_results(d)
|