bath/data/m02_adccalib_48/processing_adccalib_v10.py

72 lines
1.3 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=(10, 8),
gridspec_kw={'height_ratios':[2, 1]},
sharex="col"
)
data = pd.read_csv("./adccalib_v10.csv", comment="#")
data['Dv'] = data['v_pit10'] / data['v_keith']
print(data)
axarr[0].errorbar(
data['v_keith'],
data['v_pit10'],
yerr=data['dv_pit10'],
label="V$_{MONITOR\_48V}$",
fmt='.'
)
p =axarr[1].errorbar(
data['v_keith'],
data['Dv'],
yerr=data['dv_pit10'],
label=" absolute Error of ADC",
fmt='.',
alpha=.3
)
# fit to abs dist
linfnc = lambda x,m,c: x*m+c
pfinal = vt.fit_linear(
data.v_keith,
data.Dv,
(0,0)
)
axarr[1].plot(
data.v_keith,
linfnc(data.v_keith, pfinal[0].n, pfinal[1].n),
color=p[0].get_color()
)
print( pfinal )
vt.annotate_unc(
plt,
pfinal[1],
name="\Delta V48[1]",
data_pos=(47, 1.1),
formatting='f')
plt.xlabel('V$_{IN,EXT} / V$')
axarr[0].set_ylabel('V$_{IN,PIT} / V$')
axarr[0].set_title("PowerIt ADC Calibration: 48V Input")
axarr[1].set_ylabel('($V_{IN,PIT} / V_{IN,EXT}$) / V')
#-plt.savefig("2kw_direct.png")
plt.tight_layout()
plt.savefig("adccalib_v10.pdf", dpi=1000)