58 lines
1.3 KiB
Python
58 lines
1.3 KiB
Python
|
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
|
#
|
||
|
|
# Copyright (C) 2019, VMware Inc, Tzvetomir Stoyanov <tz.stoyanov@gmail.com>
|
||
|
|
# Copyright (C) 2019, VMware Inc, Yordan Karadzhov <ykaradzhov@vmware.com>
|
||
|
|
|
||
|
|
|
||
|
|
import matplotlib.pyplot as plt
|
||
|
|
import matplotlib.lines as mlines
|
||
|
|
import numpy as np
|
||
|
|
import sys
|
||
|
|
|
||
|
|
def newline(p1, p2):
|
||
|
|
ax = plt.gca()
|
||
|
|
xmin, xmax = ax.get_xbound()
|
||
|
|
|
||
|
|
if(p2[0] == p1[0]):
|
||
|
|
xmin = xmax = p1[0]
|
||
|
|
ymin, ymax = ax.get_ybound()
|
||
|
|
else:
|
||
|
|
ymax = p1[1]+(p2[1]-p1[1])/(p2[0]-p1[0])*(xmax-p1[0])
|
||
|
|
ymin = p1[1]+(p2[1]-p1[1])/(p2[0]-p1[0])*(xmin-p1[0])
|
||
|
|
|
||
|
|
l = mlines.Line2D([xmin,xmax], [ymin,ymax], color='red')
|
||
|
|
ax.add_line(l)
|
||
|
|
return l
|
||
|
|
|
||
|
|
|
||
|
|
data = np.loadtxt(fname = sys.argv[1])
|
||
|
|
selected_ts = data[-1, 1]
|
||
|
|
selected_ofs = data[-1, 0]
|
||
|
|
data = data[:-1,:]
|
||
|
|
|
||
|
|
x = data[:, 1] - data[:, 0]
|
||
|
|
|
||
|
|
mean = x.mean()
|
||
|
|
std = x.std()
|
||
|
|
|
||
|
|
num_bins = 500
|
||
|
|
min = x.min() #+ .4 * (x.max() - x.min())
|
||
|
|
max = x.max() #- .4 * (x.max() - x.min())
|
||
|
|
bins = np.linspace(min, max, num_bins, endpoint = False, dtype=int)
|
||
|
|
|
||
|
|
fig, ax = plt.subplots()
|
||
|
|
|
||
|
|
# the histogram of the data
|
||
|
|
n, bins, patches = ax.hist(x, bins, histtype=u'step');
|
||
|
|
|
||
|
|
ax.set_xlabel('clock offset [$\mu$s]')
|
||
|
|
ax.set_ylabel('entries')
|
||
|
|
ax.set_title("$\sigma$=%i" % std)
|
||
|
|
|
||
|
|
x1, y1 = [selected_ofs, min], [selected_ofs, max]
|
||
|
|
newline(x1, y1)
|
||
|
|
|
||
|
|
# Tweak spacing to prevent clipping of ylabel
|
||
|
|
fig.tight_layout()
|
||
|
|
plt.show()
|