19
22
Currently, the following event types are supported:
24
'signal' <name> singular event
21
25
'start' <name> start of the named event
22
26
'end' <name> end of the named event
23
27
'value' <float> <name> a normal value (as opposed to event)
24
28
'event-timed' <ts> <name> singular event at the given timestamp
29
'value-timed' <ts> <float> <name>
30
a value for an event at the given timestamp
31
<name> singular event (same as 'signal')
31
sevents = [] # events, deterministically sorted
33
38
# http://matplotlib.org/api/markers_api.html#module-matplotlib.markers
34
39
markers = ["o", "8", "s", "p", "*", "h", "+", "x", "D"]
46
51
def get_event(event, evtype):
47
52
if event not in G.events:
54
e.numid = len(G.events)
55
G.sevents = list(G.events.values())
56
G.sevents.sort(key=lambda x: x.name)
57
58
if e.type == "event-signal":
58
59
e.marker = find_marker()
60
if not event_regex.match(e.name):
59
63
return G.events[event]
61
65
for line in [line.split("#")[0].strip() for line in open(filename, "r")]:
85
89
val = int(val) / 1000 - G.start
86
90
e = get_event(name, "event-signal")
87
91
e.vals.append((val, 1))
92
elif event.startswith("value-timed "):
93
_, tsval, val, name = event.split(" ", 3)
94
tsval = int(tsval) / 1000 - G.start
96
e = get_event(name, "value")
97
e.vals.append((tsval, val))
98
elif event.startswith("signal "):
99
name = event.split(" ", 2)[1]
100
e = get_event(name, "event-signal")
101
e.vals.append((ts, 1))
89
103
e = get_event(event, "event-signal")
90
104
e.vals.append((ts, 1))
93
e.vals = [(x, y * e.numid / len(G.events)) for (x, y) in e.vals]
96
mainpl = plot.subplot(2, 1, 1)
106
# deterministically sort them; make sure the legend is sorted too
107
G.sevents = list(G.events.values())
108
G.sevents.sort(key=lambda x: x.name)
110
for e, index in zip(G.sevents, range(len(G.sevents))):
99
112
if e.type == "value":
100
plot.subplot(2, 1, 2, sharex=mainpl)
102
plot.subplot(2, 1, 1)
103
pl, = plot.plot([x for x,y in e.vals], [y for x,y in e.vals], label=e.name)
115
e.vals = [(x, y * (m - index) / m) for (x, y) in e.vals]
120
plots = 2 if hasval else 1
121
ax[0] = fig.add_subplot(plots, 1, 1)
123
ax[1] = fig.add_subplot(plots, 1, 2, sharex=ax[0])
126
cur = ax[1 if e.type == "value" else 0]
127
pl, = cur.plot([x for x,y in e.vals], [y for x,y in e.vals], label=e.name)
104
128
if e.type == "event-signal":
105
129
plot.setp(pl, marker = e.marker, linestyle = "None")
107
plot.subplot(2, 1, 1)
108
plot.legend(legend, [pl.get_label() for pl in legend])