import ujson from glob import glob import pandas as pd from datetime import timedelta route_info = {} for log in glob("../logs/route_log*.json"): name = log.split("route_log_")[1].rsplit(".", 1)[0] data = ujson.load(open(log)) dt = data["dt"] route_len = len(data["route"]) if route_len: route_info[name] = (dt, route_len) dt, route_len = route_info["beam_0"] # BFS as baseline data = [] for name, (dt_o, l_o) in sorted(route_info.items(), key=lambda v: v[1][0] / v[1][1]): dt_s = str(timedelta(seconds=round(dt_o, 2))).rstrip("0") data.append( { "name": name, "time": "{} ({:.2f}x)".format(dt_s, dt / dt_o), "length": "{} (+{:.2%})".format(l_o, (l_o / route_len) - 1), "time/hop": "{:.2} s".format(dt_o / l_o), } ) df = pd.DataFrame(data) print(df.to_markdown(index=False))