ED_LRR/rust/analyze_logs.py

30 lines
912 B
Python

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))