-
Notifications
You must be signed in to change notification settings - Fork 0
/
covtablegen.py
56 lines (51 loc) · 1.47 KB
/
covtablegen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/python3
import sys
# load results
table = {}
columns = set([])
for line in sys.stdin:
items = line.strip().split()
if len(items) < 3:
continue
# timestamp,run,cov
timestamp, run, cov = items
timestamp = int(timestamp)
if timestamp not in table:
table[timestamp] = {}
table[timestamp][run] = cov
columns.add(run)
# sort by timestamp
table = {k : table[k] for k in sorted(table)}
# fill in gaps
last_cov = {}
for timestamp, covs in table.items():
for column in columns:
if column in covs:
last_cov[column] = covs[column]
else:
table[timestamp][column] = last_cov[column]
# generate table
header = ['timestamp']
header += list(columns)
header += ['max', 'min', 'avg']
outputs = [header]
for timestamp, covs in table.items():
output = []
output.append(timestamp)
data = [str(round(float(covs[i].strip('%')) / 100, 4)) for i in columns]
dataf = [float(i) for i in data]
output += data
output.append('{}'.format(max(dataf)))
# we remove 0.0!
dataf_without_zero = []
for d in dataf:
if d != 0.0:
dataf_without_zero.append(d)
if len(dataf_without_zero) == 0:
dataf_without_zero = [0.0]
output.append('{}'.format(min(dataf_without_zero)))
output.append('{}'.format(round(sum(dataf_without_zero) / len(dataf_without_zero), 4)))
outputs.append(output)
# output table
for row in outputs:
print(','.join([str(i) for i in row]))