WIP: cal-trajectories name changing
authorDan White <dan@whiteaudio.com>
Thu, 19 Jun 2014 22:31:47 +0000 (17:31 -0500)
committerDan White <dan@whiteaudio.com>
Thu, 19 Jun 2014 22:31:47 +0000 (17:31 -0500)
python-lib/test-data/cal-trajectories.py [new file with mode: 0644]

diff --git a/python-lib/test-data/cal-trajectories.py b/python-lib/test-data/cal-trajectories.py
new file mode 100644 (file)
index 0000000..f8eec5d
--- /dev/null
@@ -0,0 +1,261 @@
+#!/usr/bin/env python
+
+from pylab import *
+
+import os
+from glob import glob
+from random import sample as rand_sample
+
+
+
+infiles1 = sorted(glob('chip01/*.npz'))
+infiles2 = sorted(glob('chip02/*.npz'))
+
+#N_RUNS = min(len(infiles), 8)
+N_RUNS = 0
+#sample_runs = sorted(rand_sample(range(len(infiles)), N_RUNS))
+N_PLOTS = 2
+#N_PLOTS = 0
+#sample_channels = sorted(rand_sample(range(48), N_PLOTS))
+sample_channels = (0, 2)
+N_COLS = 4
+#N_COLS = 0
+nrun = 0
+
+
+# chip01
+#
+def loadrun(infiles):
+    cal_values = []
+    cal_outs = []
+    cal_nevals = []
+    cal_means = []
+    cal_stds = []
+
+    cal_guesses = []
+    cal_results = []
+
+    nrun = 0
+
+    for infile in infiles:
+    #for infile in sorted(glob('*.npz')):
+    #for infile in sorted(glob('2012-09-03_1*.npz')):
+        d = np.load(infile)
+
+        #print infile, d.keys()
+
+        guesses = d['guesses']
+        results = d['results']
+        nevals = d['nevals']
+
+        d.close() # close file descriptor
+
+        cal_values.append(guesses[-1, :, :])
+
+        # results are zeros after [nevals:]
+        # pick off the last real measurement
+        r = zeros_like(results[-1, :, :])
+        for i in range(r.shape[0]):
+            for j in range(r.shape[1]):
+                r[i, j] = results[nevals[i,j]-1, i, j]
+        cal_outs.append(r)
+
+        #map(cal_nevals.append, nevals.flat)
+
+        cal_guesses.append(guesses)
+        cal_results.append(results)
+        cal_nevals.append(nevals)
+
+
+        #cal_outs.append(results[-1, :, :])
+        nrun += 1
+
+    cv = array(cal_values)
+    co = array(cal_outs)
+    cn = array(cal_nevals)
+    cg = array(cal_guesses)
+    cr = array(cal_results)
+
+    out = {'cv': cv,
+           'co': co,
+           'cn': cn,
+           'cg': cg,
+           'cr': cr,
+           }
+    return out
+
+
+class s:
+    pass
+
+
+out1 = loadrun(infiles1)
+out2 = loadrun(infiles2)
+
+
+#sample_channels = (0, 2)
+
+sample_guesses = [
+    out1['cg'][-1][:, 0, 0],
+    out1['cg'][-1][:, 0, 2],
+    out2['cg'][-1][:, 0, 0],
+    out2['cg'][-1][:, 0, 2],
+]
+
+sample_results = [
+    out1['cr'][-1][:, 0, 0],
+    out1['cr'][-1][:, 0, 2],
+    out2['cr'][-1][:, 0, 0],
+    out2['cr'][-1][:, 0, 2],
+]
+
+sample_nevals = [
+    out1['cn'][-1][0, 0],
+    out1['cn'][-1][0, 2],
+    out2['cn'][-1][0, 0],
+    out2['cn'][-1][0, 2],
+]
+
+
+names = ['#1-00A',
+         '#1-02A',
+         '#2-00A',
+         '#2-02A'
+         ]
+
+if 1:
+    figure(figsize=(6.0, 3.5))
+    subplots_adjust(top=0.93, bottom=0.12, left=0.10, right=0.98)
+
+    #guesses = out1['cg'][-1]
+    #results = out1['cr'][-1]
+    #nevals = out1['cn'][-1]
+    #cv = out1['cv']
+    #co = out1['co']
+
+    for i,k in enumerate(sample_channels):
+        g = guesses[:, 0, k]
+        r = 1e3*(2.5/2/2**13)*results[:, 0, k]
+
+        subplot(N_PLOTS, N_COLS, i+1)
+        plot(g[:nevals[0,k]+1], '.-')
+        ylim((0, 127))
+        ylabel('Channel %02i-A' % k)
+        xlim((-1, 13))
+
+        subplot(N_PLOTS, N_COLS, N_COLS+i+1)
+        plot(1e-3*r[:nevals[0,k]+1], '.-')
+        hlines(0, -1, 15, linewidth=0.5, color='0.40')
+        xlim((-1, 13))
+
+        title('%s' % name[i], fontsize='medium')
+        ax.set_xticks(range(0, 15, 4))
+
+        #subplot(N_PLOTS, N_COLS, N_COLS*i+3)
+        #data = cv[:, 0, k]
+        #hist(data, bins=range(128), align='left')
+        #xlim((data.min()-1, data.max()+1))
+        #xlim((0, 127))
+
+        #ax = subplot(N_PLOTS, N_COLS, N_COLS*i+4)
+        #data = 1e3*(2.5/2/2**13)*co[:, 0, k]
+        #dm = max((abs(data.min()), abs(data.max())))
+        #print dm
+        #dm = max(dm, 50)
+        #hist(data, bins=100, range=(-dm, dm), align='left')
+        #xlim((-dm, dm))
+        #ylim((0, 50))
+        #dmean = data.mean()
+        #dstd = data.std()
+        #print nrun, dmean, dstd
+
+        #text(0.97, 0.95, r'$\sigma\!=\!%4.1f$mV' % dstd,
+                #horizontalalignment='right',
+                #verticalalignment='top',
+                #bbox=dict(facecolor='r', alpha=0.5, boxstyle="round"),
+                #transform = ax.transAxes)
+
+    subplot(N_PLOTS, N_COLS, 1)
+    ax = plt.gca()
+    title('Offset code', fontsize='medium')
+    ax.set_xticks(range(0, 15, 4))
+
+    subplot(N_PLOTS, N_COLS, (N_PLOTS-1)*N_COLS+1)
+    ax = plt.gca()
+    ax.set_xticks(range(0, 15, 4))
+    xlabel('Step')
+
+
+    subplot(N_PLOTS, N_COLS, 2)
+    ax = plt.gca()
+    title('$V_{out}$', fontsize='medium')
+    ax.set_xticks(range(0, 15, 4))
+    ax.set_yticklabels([''] * len(ax.get_yticks()))
+
+    subplot(N_PLOTS, N_COLS, (N_PLOTS-1)*N_COLS+2)
+    ax = plt.gca()
+    ax.set_xticks(range(0, 15, 4))
+    ax.set_yticklabels([''] * len(ax.get_yticks()))
+    xlabel('Step')
+
+
+    subplot(N_PLOTS, N_COLS, 3)
+    ax = plt.gca()
+    title('Code hist.', fontsize='medium')
+    ax.set_xticks(range(0, 129, 64))
+    ax.set_xticklabels([''] * len(ax.get_xticks()))
+    ax.set_yticklabels([''] * len(ax.get_yticks()))
+
+    subplot(N_PLOTS, N_COLS, (N_PLOTS-1)*N_COLS+3)
+    ax = plt.gca()
+    ax.set_xticks(range(0, 129, 64))
+    #ax.set_xticklabels([''] * len(ax.get_xticks()))
+    ax.set_yticklabels([''] * len(ax.get_yticks()))
+    xlabel('OTA tuning DAC')
+
+
+    subplot(N_PLOTS, N_COLS, 4)
+    ax = plt.gca()
+    ax.set_xticks(range(-80, 81, 40))
+    ax.set_xticklabels([''] * len(ax.get_xticks()))
+    ax.set_yticklabels([''] * len(ax.get_yticks()))
+    title('$V_{out}$ hist.', fontsize='medium')
+
+    subplot(N_PLOTS, N_COLS, (N_PLOTS-1)*N_COLS+4)
+    ax = plt.gca()
+    ax.set_xticks(range(-80, 81, 40))
+    #ax.set_xticklabels([''] * len(ax.get_xticks()))
+    ax.set_yticklabels([''] * len(ax.get_yticks()))
+    xlabel('V_{oos}$ (mV)')
+
+    #suptitle('Calibration data from %s\nNruns = %i' %
+            #(os.path.basename(os.getcwd()),
+                #len(infiles)))
+
+    #savefig(os.path.basename(os.getcwd()) + '-cal-raw.pdf')
+    savefig('cal-trajectories.pdf')
+
+#interactive(False)
+interactive(True)
+
+#if 0:
+    #figure()
+    #data = cv.flatten()
+    #hist(data, bins=range(128), align='left')
+    #xlabel('OTA tuning DAC value')
+    #title('Channel offset tuning histogram\n48x2 channels x %i runs' %
+            #(len(infiles),))
+    #savefig('caldac-hist.pdf')
+
+
+    #figure()
+    #data = co.flatten()
+    #hist(data, bins=range(-1500, 1500, 10), align='left')
+    #xlabel('Tuned channel output offset voltage (mV)')
+    #title('Channel offset tuning histogram\n48x2 channels x %i runs' %
+            #(len(infiles),))
+    #savefig('calout-hist.pdf')
+
+#print sample_runs
+#print [infiles1[s] for s in sample_runs]
+