diff --git a/tools/__init__.py b/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tools/scope_lecroy.py b/tools/scope_lecroy.py new file mode 100644 index 0000000..17190c8 --- /dev/null +++ b/tools/scope_lecroy.py @@ -0,0 +1,38 @@ +import numpy as np +from matplotlib import pylab as plt + + +def readTraceTextfile(fina, numbers=None): + if numbers is not None: + d = [readTraceTextfile(fina % number) for number in numbers] + else: + d = np.loadtxt(fina, skiprows=5, delimiter=",") + return d + + +def getRiseTime(t, s, lims=[0.1, 0.9]): + lims = np.asarray(lims) + t = np.asarray(t) + s = np.asarray(s) + sel = t > 0 + mxind = np.min((np.diff(s[sel]) < 0).nonzero()[0]) + mxind = sel.nonzero()[0][mxind] + sel = t <= 0 + mnind = np.max((np.diff(s[sel]) < 0).nonzero()[0]) + mnind = sel.nonzero()[0][mnind] + 1 + crosspty = lims * (s[mxind] - s[mnind]) + s[mnind] + crossptx = np.interp(crosspty, s[mnind : mxind + 1], t[mnind : mxind + 1]) + return float(np.round(np.diff(crossptx), decimals=13)), [crossptx, crosspty] + + +def plotTrace(fina="./scope2_testdata_2017-02-21/C2Trace00003txt"): + t, s = readTraceTextfile(fina).T + rt, crossers = getRiseTime(t, s) + ax = plt.gca() + ax.plot(t, s, ".-", label="rise time = %3g (fwhm)" % rt) + ax.plot(crossers[0], crossers[1], "xr") + ax.set_xlabel("Time / s") + ax.set_ylabel("Amplitude / V") + + +