#!/usr/bin/env python3 # -*- encoding: utf-8 -*- import sys import json import pandas as pd from pathlib import Path def avg(itr): if len(itr) == 0: return 0 else: return sum(itr)/len(itr) def main(results, outfolder): algos = list(results.keys()) topos = list(results.values().__iter__().__next__().keys()) db = { algo: { topo: { 'sl': [res['sequential']['ping']['avg'] for res in results[algo][topo]], 'sb': [avg(res['sequential']['iperfs']) for res in results[algo][topo]], 'pl': [res['parallel']['ping']['avg'] for res in results[algo][topo]], 'pb': [avg(res['parallel']['iperfs']) for res in results[algo][topo]], } for topo in topos } for algo in algos } avgdb = { algo: { topo: { persp: avg(db[algo][topo][persp]) for persp in ['sl', 'sb', 'pl', 'pb'] } for topo in topos } for algo in algos } print(avgdb) df = pd.DataFrame(data=[]) bp = df.boxplot() bp.figure.savefig(str(outfolder/"sequential_latency.pdf")) # print(results) if __name__ == '__main__': if len(sys.argv) != 3: print("Usage:", file=sys.stderr) print(f" {sys.argv[0]} <__all__.autotests.json> ", file=sys.stderr) else: all_tests = Path(sys.argv[1]) outfolder = Path(sys.argv[2]) outfolder.mkdir(parents=True, exist_ok=True) main(json.loads(all_tests.read_text()), outfolder)