From 3c07e86fd3854b5e00e23982293fd937eb0444a9 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 19 Aug 2014 20:09:46 +0200 Subject: TOOLS/stats-conv.py: improvements This is still pretty useful for debugging timing-dependent things. --- TOOLS/stats-conv.py | 49 +++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/TOOLS/stats-conv.py b/TOOLS/stats-conv.py index 29a6b7ea7d..2903c0aa46 100755 --- a/TOOLS/stats-conv.py +++ b/TOOLS/stats-conv.py @@ -18,10 +18,11 @@ e.g.: Currently, the following event types are supported: - 'start' start of the named event - 'end' end of the named event - 'value' a normal value (as opposed to event) - singular event + 'start' start of the named event + 'end' end of the named event + 'value' a normal value (as opposed to event) + 'event-timed' singular event at the given timestamp + singular event """ @@ -29,19 +30,32 @@ class G: events = {} sevents = [] # events, deterministically sorted start = None + # http://matplotlib.org/api/markers_api.html#module-matplotlib.markers + markers = ["o", "8", "s", "p", "*", "h", "+", "x", "D"] + +def find_marker(): + if len(G.markers) == 0: + return "o" + m = G.markers[0] + G.markers = G.markers[1:] + return m class Event: pass -def get_event(event): +def get_event(event, evtype): if event not in G.events: e = Event() G.events[event] = e e.name = event e.vals = [] - e.type = "unknown" + e.type = evtype + e.marker = "o" + e.numid = len(G.events) G.sevents = list(G.events.values()) G.sevents.sort(key=lambda x: x.name) + if e.type == "event-signal": + e.marker = find_marker() return G.events[event] for line in [line.split("#")[0].strip() for line in open(filename, "r")]: @@ -54,30 +68,29 @@ for line in [line.split("#")[0].strip() for line in open(filename, "r")]: G.start = ts ts = ts - G.start if event.startswith("start "): - e = get_event(event[6:]) - e.type = "event" + e = get_event(event[6:], "event") e.vals.append((ts, 0)) e.vals.append((ts, 1)) elif event.startswith("end "): - e = get_event(event[4:]) - e.type = "event" + e = get_event(event[4:], "event") e.vals.append((ts, 1)) e.vals.append((ts, 0)) elif event.startswith("value "): _, val, name = event.split(" ", 2) val = float(val) - e = get_event(name) - e.type = "value" + e = get_event(name, "value") e.vals.append((ts, val)) + elif event.startswith("event-timed "): + _, val, name = event.split(" ", 2) + val = int(val) / 1000 - G.start + e = get_event(name, "event-signal") + e.vals.append((val, 1)) else: - e = get_event(event) - e.type = "event-signal" + e = get_event(event, "event-signal") e.vals.append((ts, 1)) -ao_events = ["ao fill", "audio wait"] for e in G.sevents: - if e.name in ao_events: - e.vals = [(x, y * 0.5) for (x, y) in e.vals] + e.vals = [(x, y * e.numid / len(G.events)) for (x, y) in e.vals] plot.hold(True) mainpl = plot.subplot(2, 1, 1) @@ -89,7 +102,7 @@ for e in G.sevents: plot.subplot(2, 1, 1) pl, = plot.plot([x for x,y in e.vals], [y for x,y in e.vals], label=e.name) if e.type == "event-signal": - plot.setp(pl, marker = "o", linestyle = "None") + plot.setp(pl, marker = e.marker, linestyle = "None") legend.append(pl) plot.subplot(2, 1, 1) plot.legend(legend, [pl.get_label() for pl in legend]) -- cgit v1.2.3