From: Dan White Date: Fri, 20 Jun 2014 05:40:59 +0000 (-0500) Subject: TCAS figure versions X-Git-Tag: cheetah~25 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=431aca7ca0df4aafe523ef20c0485bff20e64b16;p=430.git TCAS figure versions --- diff --git a/python-lib/test-data/cal-histograms.pdf b/python-lib/test-data/cal-histograms.pdf new file mode 100644 index 0000000..2829958 Binary files /dev/null and b/python-lib/test-data/cal-histograms.pdf differ diff --git a/python-lib/test-data/cal-trajectories.pdf b/python-lib/test-data/cal-trajectories.pdf new file mode 100644 index 0000000..593a463 Binary files /dev/null and b/python-lib/test-data/cal-trajectories.pdf differ diff --git a/python-lib/test-data/cal-trajectories.py b/python-lib/test-data/cal-trajectories.py index f8eec5d..748e37e 100644 --- a/python-lib/test-data/cal-trajectories.py +++ b/python-lib/test-data/cal-trajectories.py @@ -8,8 +8,6 @@ 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 @@ -23,151 +21,240 @@ N_COLS = 4 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 - +if 1: + infiles1 = sorted(glob('chip01/*.npz')) + infiles2 = sorted(glob('chip02/*.npz')) + + 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 + + + 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], + ] + + sample_cv= [ + out1['cv'][:, 0, 0], + out1['cv'][:, 0, 2], + out2['cv'][:, 0, 0], + out2['cv'][:, 0, 2], + ] + + sample_co= [ + out1['co'][:, 0, 0], + out1['co'][:, 0, 2], + out2['co'][:, 0, 0], + out2['co'][:, 0, 2], + ] + + savez('foo.npz', + sample_guesses=sample_guesses, + sample_results=sample_results, + sample_nevals=sample_nevals, + sample_cv=sample_cv, + sample_co=sample_co, + ) +else: + d = np.load('foo.npz') + sample_guesses = d['sample_guesses'] + sample_results = d['sample_results'] + sample_nevals = d['sample_nevals'] + sample_cv = d['sample_cv'] + sample_co = d['sample_co'] + + +names = ['\#1-00A', + '\#1-02A', + '\#2-00A', + '\#2-02A' + ] -out1 = loadrun(infiles1) -out2 = loadrun(infiles2) +if 1: + # + # trajectories + # + figure(figsize=(3.5, 2.5)) + subplots_adjust(top=0.93, bottom=0.15, left=0.14, right=0.98) + + for i in range(len(names)): + g = sample_guesses[i] + r = 1e3*(2.5/2/2**13)*sample_results[i] + + # + # top row + # + ax = subplot(N_PLOTS, N_COLS, i+1) + plot(g[:sample_nevals[i]+1], '.-') -#sample_channels = (0, 2) + ylim((0, 127)) + xlim((0, 14)) + ax.set_xticks(range(0, 15, 4)) + ax.set_xticklabels([''] * len(ax.get_xticks())) + + title(r'%s' % names[i], fontname='courier', fontsize='medium') + if i == 0: + ylabel('Offset code') + labelx = -0.5 + ax.yaxis.set_label_coords(labelx, 0.5) + else: + ax.set_yticklabels([''] * len(ax.get_yticks())) + + + # + # bottom row + # + ax = subplot(N_PLOTS, N_COLS, N_COLS+i+1) + plot(1e-3*r[:sample_nevals[i]+1], '.-') + hlines(0, -1, 15, linewidth=0.5, color='0.40') -sample_guesses = [ - out1['cg'][-1][:, 0, 0], - out1['cg'][-1][:, 0, 2], - out2['cg'][-1][:, 0, 0], - out2['cg'][-1][:, 0, 2], -] + xlim((0, 14)) + ax.set_xticks(range(0, 15, 4)) -sample_results = [ - out1['cr'][-1][:, 0, 0], - out1['cr'][-1][:, 0, 2], - out2['cr'][-1][:, 0, 0], - out2['cr'][-1][:, 0, 2], -] + #xlabel('Step') + if i == 0: + ylabel('$V_{out} (\mathrm{V})$', labelpad=0) + ax.yaxis.set_label_coords(labelx, 0.5) + else: + ax.set_yticklabels([''] * len(ax.get_yticks())) -sample_nevals = [ - out1['cn'][-1][0, 0], - out1['cn'][-1][0, 2], - out2['cn'][-1][0, 0], - out2['cn'][-1][0, 2], -] + suptitle('Step number', x=0.55, y=0.06) + savefig('cal-trajectories.pdf') -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)) + # + # histograms + # + fig = figure(figsize=(3.5, 2.5)) + + subplots_adjust(top=0.93, + bottom=0.25, + left=0.13, + right=0.98, + hspace=0.30) + + for i in range(len(names)): + g = sample_guesses[i] + r = 1e3*(2.5/2/2**13)*sample_results[i] + + # + # top row + # + ax = subplot(N_PLOTS, N_COLS, i+1) + data = sample_cv[i] + hist(data, bins=range(128), align='left') #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 + xlabels = range(data.min(), data.max()+1) + ax.set_xticks(xlabels) + xlim((data.min()-2, data.max()+2)) + ax.set_xticklabels(xlabels, + size='small', + rotation=90) + + title(r'%s' % names[i], fontname='courier', fontsize='medium') + ax.set_yticklabels([''] * len(ax.get_yticks())) + if i == 0: + ylabel('Code') + labelx = -0.4 + #ax.yaxis.set_label_coords(labelx, 0.5) + else: + pass + + + # + # bottom row + # + ax = subplot(N_PLOTS, N_COLS, N_COLS+i+1) + data = 1e3*(2.5/2/2**13)*sample_co[i] + dm = max((abs(data.min()), abs(data.max()))) + dm = max(dm, 50) + hist(data, bins=100, range=(-dm, dm), align='left') + dmean = data.mean() + dstd = data.std() + + xlabel(r'$\sigma\!=\!%4.1f$mV' % dstd, size='small') #text(0.97, 0.95, r'$\sigma\!=\!%4.1f$mV' % dstd, #horizontalalignment='right', @@ -175,87 +262,27 @@ if 1: #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') + xlabels = range(-80, 150, 40) + ax.set_xticks(xlabels) + ax.set_xticklabels(xlabels, + size='small', + rotation=90) + xlim((-100, 100)) -#interactive(False) -interactive(True) + ax.set_yticklabels([''] * len(ax.get_yticks())) + if i == 0: + ylabel('$V_{out}$') + else: + pass + + fig.text(0.01, 0.59, 'Relative bin counts', rotation=90, + va='center') + + fig.text(0.56, 0.01, 'Output offsets (mV)', + ha='center', + va='bottom') -#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] + savefig('cal-histograms.pdf') + +interactive(True) diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc b/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc index 2f482b7..258a1d0 100644 --- a/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc @@ -116,7 +116,8 @@ font.style : normal # small, medium, large, x-large, xx-large, larger, or smaller #font.size : 12.0 #font.size : 8 -font.size : 12.0 +#font.size : 12.0 +font.size : 10.0 # IEEEtran #font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif #font.serif : Times New Roman font.serif : computer modern roman