From: Dan White Date: Thu, 19 Jun 2014 22:31:47 +0000 (-0500) Subject: WIP: cal-trajectories name changing X-Git-Tag: cheetah~26 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=6f7bf3ec54655b31af9f16d61215b6c6df4f73db;p=430.git WIP: cal-trajectories name changing --- diff --git a/python-lib/test-data/cal-trajectories.py b/python-lib/test-data/cal-trajectories.py new file mode 100644 index 0000000..f8eec5d --- /dev/null +++ b/python-lib/test-data/cal-trajectories.py @@ -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] +