#!/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)