94 lines
2.4 KiB
Python
94 lines
2.4 KiB
Python
#! /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")
|
|
|
|
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)
|