blob: 9cecfe2fc375116080c31e52da849adbeb36cc33 [file] [log] [blame]
Brian Silverman6260c092018-01-14 15:21:36 -08001#!/usr/bin/python
2
3import sys
4from matplotlib import pylab
5
6# TODO(austin): Plot flag.
7
8def main(argv):
9 if len(argv) < 4:
10 print 'Args: input output.cc struct_name'
11 return 1
12 data_sum = [0.0] * 4096
13 data_count = [0] * 4096
14 data_list_absolute = []
15 data_list_current = []
16
17 with open(argv[1], 'r') as fd:
18 for line in fd:
19 if line.startswith('reading'):
20 split_line = line.split()
21 data_absolute = int(split_line[1])
22 data_index = int(split_line[3][2:])
23 data_current = int(split_line[2]) / 10000.0
24 data_sum[data_index] += data_current
25 data_count[data_index] += 1
26 data_list_absolute.append(data_absolute)
27 data_list_current.append(data_current)
28 data = [0.0] * 4096
29 min_zero = 4096
30 max_zero = 0
31 for i in xrange(0, 4096):
32 if data_count[i] == 0:
33 min_zero = min(i, min_zero)
34 max_zero = max(i, min_zero)
35
36 for i in xrange(0, 4096):
37 if data_count[i] != 0:
38 data[i] = data_sum[i] / data_count[i]
39 if min_zero == 0 and max_zero == 4095:
40 for i in xrange(0, 4096):
41 if data_count[i] != 0:
42 while i > 0:
43 data[i - 1] = data[i]
44 i -= 1
45 break;
46
47 for i in reversed(xrange(0, 4096)):
48 if data_count[i] != 0:
49 while i < 4095:
50 data[i + 1] = data[i]
51 i += 1
52 break;
53 else:
54 for i in xrange(0, 4096):
55 if data_count[i] == 0:
56 if i < (min_zero + max_zero) / 2:
57 data[i] = data[min_zero - 1]
58 else:
59 data[i] = data[max_zero + 1]
60
61 pylab.plot(range(0, 4096), data)
62 pylab.figure()
63 pylab.plot(data_list_absolute, data_list_current)
64 pylab.show()
65 with open(argv[2], 'w') as out_fd:
66 out_fd.write('extern const float %s[4096];\n' % argv[3])
67 out_fd.write('const float %s[4096] = {\n' % argv[3])
68 for datapoint in data:
69 out_fd.write(' %ff,\n' % datapoint)
70 out_fd.write('};')
71
72 return 0
73
74if __name__ == '__main__':
75 sys.exit(main(sys.argv))