-infiles1 = sorted(glob('chip01/*.npz'))
-infiles2 = sorted(glob('chip02/*.npz'))
#N_RUNS = min(len(infiles), 8)
N_RUNS = 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
-
+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',
#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)