blob: dc9f87dc019bfbe16287795293bcaa883a103f01 [file] [log] [blame]
#!/usr/bin/python3
import sys
from matplotlib import pylab
# TODO(austin): Plot flag.
def main(argv):
if len(argv) < 4:
print('Args: input output.cc struct_name')
return 1
data_sum = [0.0] * 4096
data_count = [0] * 4096
data_list_absolute = []
data_list_current = []
with open(argv[1], 'r') as fd:
for line in fd:
if line.startswith('reading'):
split_line = line.split()
data_absolute = int(split_line[1])
data_index = int(split_line[3][2:])
data_current = int(split_line[2]) / 10000.0
data_sum[data_index] += data_current
data_count[data_index] += 1
data_list_absolute.append(data_absolute)
data_list_current.append(data_current)
data = [0.0] * 4096
min_zero = 4096
max_zero = 0
for i in range(0, 4096):
if data_count[i] == 0:
min_zero = min(i, min_zero)
max_zero = max(i, min_zero)
for i in range(0, 4096):
if data_count[i] != 0:
data[i] = data_sum[i] / data_count[i]
if min_zero == 0 and max_zero == 4095:
for i in range(0, 4096):
if data_count[i] != 0:
while i > 0:
data[i - 1] = data[i]
i -= 1
break
for i in reversed(range(0, 4096)):
if data_count[i] != 0:
while i < 4095:
data[i + 1] = data[i]
i += 1
break
else:
for i in range(0, 4096):
if data_count[i] == 0:
if i < (min_zero + max_zero) / 2:
data[i] = data[min_zero - 1]
else:
data[i] = data[max_zero + 1]
pylab.plot(range(0, 4096), data)
pylab.figure()
pylab.plot(data_list_absolute, data_list_current)
pylab.show()
with open(argv[2], 'w') as out_fd:
out_fd.write('extern const float %s[4096];\n' % argv[3])
out_fd.write('const float %s[4096] = {\n' % argv[3])
for datapoint in data:
out_fd.write(' %ff,\n' % datapoint)
out_fd.write('};')
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv))