#! /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 import uncertainties as unc import uncertainties.unumpy as unp import statsmodels.api as sm from statsmodels.stats.outliers_influence import summary_table as st plt.ioff() plt.style.use('bmh') fig, axarr = plt.subplots( 2, 1, figsize=(9, 8), gridspec_kw = {'height_ratios':[4,1]} ) plt.subplots_adjust(hspace=.5) 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 def plot_and_linfit(col: str,fil, l: str): p = axarr[0].errorbar( data[fil]['v_set/v'], data[fil][col], alpha = 0, label=None, # fmt='.', # antialiased=True ) vals = vt.lm_plot( data[fil], 'v_set/v', col, None, 'dv_pit48/v', l, fig=axarr[0], color = p[0].get_color() ) return vals, p plot_and_linfit('Dvk', data.cycles == 0, 'ref') for i in range(8): val, p = plot_and_linfit('Dv', data.cycles == i, 'scaler: {}'.format(i)) fits = np.append(fits, val[0]) #errs = np.append(errs, np.sqrt(pcov[0][0])) #colors = np.append(colors, p[0].get_color() ) print(fits[0].n) for i in range(8): axarr[1].errorbar( i, fits[i].n, yerr = fits[i].s, 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})$') axarr[0].legend(bbox_to_anchor=(0, -.28,1, 1), loc="lower left", mode="expand", borderaxespad=0, ncol=5) #plt.tight_layout() plt.savefig("./" + __file__[:-3].split("_")[1] + ".pdf", dpi=1000, bbox_inches='tight') ss, d, ss2 = st(sm.OLS(data[data.cycles == 0]['v_pit48/v'], data[data.cycles == 0]['v_set/v']).fit(), alpha=.05) low_ci, high_ci = d[:,4:6].T