import sys import matplotlib.pyplot as plt import pandas as pd titles = { '1-oe_ardusink.csv': 'PulsePal → Open Ephys Arduino Output Sink', '2-oe_event_zmq_arduino.csv': 'OE event/ZMQInterface → OPETH/Arduino', '3-oe_data_zmq_arduino.csv': 'OE data/ZMQInterface → OPETH/Arduino', '4-oe_data_filter_zmq_arduino.csv': 'OE filtered data/ZMQInterface → OPETH/Arduino', '5-oe_intan.csv': 'OE + Intan/ZMQInterface → OPETH/Arduino' } if sys.argv[1:]: fname = sys.argv[1] lines = open(fname, 'rt').readlines()[1:] else: print("Missing input file") exit() fig, (ax1, ax2) = plt.subplots(2, figsize=(5,7)) meas = [float(l.split(';')[2].replace(',', '.'))*1000 for l in lines] results = pd.DataFrame(meas, columns=['latency']) print(results) print(pd.DataFrame([results.mean(), results.std(), results.min(), results.max()], index=['mean', 'std', 'min', 'max'])) results.plot(ax=ax1) ax1.set_ylabel('[ms]') results.hist(ax=ax2) ax2.set_xlabel('[ms]') ax1.set_ylim([0,38]) ax2.set_ylim([0,35]) ax2.set_ylabel('number of pulses') title = titles[fname] if fname in titles else sys.argv[2] ax1.set_title(title) ax2.set_title('mean: %.1f stddev: %.1f max: %.1f ms' % (results.mean(), results.std(), results.max())) basename = fname.split('.')[0] fig.savefig(basename + '.png') fig.savefig(basename + '.svg') plt.show()