#! /Usr/bin/python3 import scipy.optimize as opt import numpy as np import pandas as pd import matplotlib.pyplot as plt import VisTools.plotting as vt plt.ioff() plt.style.use('bmh') fig, axarr = plt.subplots(2,1,figsize=(11.88, 8.4)) data = pd.read_csv("./" + __file__[:-3].split("_")[1] + ".csv", comment="#") fits = np.array([]) errs = np.array([]) colors = np.array([]) data['Dv'] = data['v_pit48/v'] - data['v_set/v'] data['Dvk'] = data['v_keith/v'] - data['v_set/v'] print(data) # fit to abs dist linfnc = lambda x,m,c: x*m+c p = axarr[0].errorbar( data[data.cycles == 0]['v_set/v'], data[data.cycles == 0]['Dvk'], label="relative Error of ADC, keith", fmt='.' ) pfinal, pcov = opt.curve_fit( linfnc, data[data.cycles == 0]['v_set/v'], data[data.cycles == 0]['Dvk'], p0=(.1,2.6), sigma=[.5 for e in range(data[data.cycles == 0]['Dv'].size)] ) axarr[0].plot( data[data.cycles == 0]['v_set/v'], data[data.cycles == 0]['v_set/v']*pfinal[0]+pfinal[1], label="fitted, keith", color = p[0].get_color() ) for i in range(8): p = axarr[0].errorbar( data[data.cycles == i]['v_set/v'], data[data.cycles == i]['Dv'], yerr=data[data.cycles == i]['dv_pit48/v'], label="relative Error of ADC, scaler: "+str(i), fmt='.' ) pfinal, pcov = opt.curve_fit( linfnc, data[data.cycles == i]['v_set/v'], data[data.cycles == i]['Dv'], p0=(.1,2.6), sigma=[.5 for e in range(data[data.cycles == i]['Dv'].size)] ) axarr[0].plot( data[data.cycles == i]['v_set/v'], data[data.cycles == i]['v_set/v']*pfinal[0]+pfinal[1], label="fitted, scaler: "+str(i), color = p[0].get_color() ) fits = np.append(fits, pfinal[0]) errs = np.append(errs, np.sqrt(pcov[0][0])) colors = np.append(colors, p[0].get_color() ) #vt.annotate_val(plt, pfinal[0], np.sqrt(pcov[0][0]), name="V48[2]", data_pos=(44, 3)) print(fits) for i in range(8): axarr[1].errorbar( i, fits[i], yerr = errs[i], fmt='.', c = colors[i] ) axarr[0].set_xlabel('V$_{set}$/V') axarr[0].set_title("PowerIt ADC Calibration: dependency on measurement cycles") axarr[0].set_ylabel('$\Delta$V$_{IN}$ / V') axarr[1].set_xlabel('sampleTicks scaler') axarr[1].set_ylabel('$\Delta(\Delta$V$_{IN})$') plt.tight_layout() plt.savefig("./" + __file__[:-3].split("_")[1] + ".eps", format='eps', dpi=1000)