bath/data/m02_adccalib_48/processing_adccalib_48.py

69 lines
1.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, sharex='col',figsize=(11.88, 8.4))
data = pd.read_csv("./adccalib_48.csv")
data['Dv'] = data['v_pit48/v'] - data['v_keith/v']
print(data)
axarr[0].errorbar(
data['v_set/v'],
data['v_pit48/v'],
yerr=data['dv_pit48/v'],
label="V$_{MONITOR\_48V}$",
fmt='.'
)
axarr[0].errorbar(
data['v_set/v'],
data['v_ps/v'],
yerr=data['dv_ps/v'],
label="V$_{PS}$",
fmt='.'
)
axarr[1].errorbar(
data['v_set/v'],
data['Dv'],
yerr=data['dv_pit48/v'],
label=" absolute Error of ADC",
fmt='.'
)
# fit to abs dist
linfnc = lambda x,m,c: x*m+c
pfinal, pcov = opt.curve_fit(
linfnc,
data['v_set/v'],
data['Dv'],
p0=(.1,2.6),
sigma=[.5 for e in range(data['Dv'].size)]
)
print( pfinal )
axarr[1].plot(
data['v_set/v'],
data['v_keith/v']*pfinal[0]+pfinal[1]
)
vt.annotate_val(plt, pfinal[0], np.sqrt(pcov[0][0]), name="V48[2]", data_pos=(44, 3))
plt.xlabel('V$_{set}$/V')
axarr[0].set_ylabel('V$_{IN}$/V')
axarr[0].set_title("PowerIt ADC Calibration: 48V Input")
axarr[1].set_ylabel('$\Delta$V$_{IN}$ / V')
axarr[0].legend()
#-plt.savefig("2kw_direct.png")
plt.tight_layout()
plt.savefig("adccalib_48.eps", format='eps', dpi=1000)