def bg_wrapper(T, tD, r0, A): """Fit wrapper.""" return blochGrueneisen(T, tD, r0, A, 5)
thetaD = 300.0 p0 = [thetaD, rho0, A] print("Initial guesses: {}".format(p0)) d.del_rows(0, lambda x, r: np.any(np.isnan(r))) popt, pcov = d.curve_fit(bg_wrapper, xcol=t_col, ycol=r_col, p0=p0, absolute_sigma=False) perr = np.sqrt(np.diag(pcov)) labels = [r"\theta_D", r"\rho_0", r"A"] units = ["K", r"\Omega m", r"\Omega m"] annotation = [ "${}$: {}\n".format(l, format_error(v, e, latex=True, mode="eng", units=u)) for l, v, e, u in zip(labels, popt, perr, units) ] annotation = "\n".join(annotation) popt = np.append(popt, 5) T = d.column(t_col) d.add_column(blochGrueneisen(T, *popt), header=r"Bloch") d.plot_xy(t_col, [r_col, "Bloch"], ["ro", "b-"], label=["Data", r"$Bloch-Gr\"ueisen Fit$"]) d.xlabel = "Temperature (K)" d.ylabel = "Resistance ($\Omega$)" text(0.05, 0.65, annotation, transform=d.axes[0].transAxes)
def bg_wrapper(T,tD,r0,A): """Fit wrapper.""" return blochGrueneisen(T,tD,r0,A,5)
r_col=d.find_col(pat,force_list=True) if len(r_col)==1: r_col=r_col[0] break else: r_col=select_col(d,"Select column for resistance data :") rho0=d.min(r_col)[0] A=rho0*40 thetaD=300.0 p0=[thetaD,rho0,A] print("Initial guesses: {}".format(p0)) d.del_rows(0,lambda x,r:np.any(np.isnan(r))) popt,pcov=d.curve_fit(bg_wrapper,xcol=t_col,ycol=r_col,p0=p0,absolute_sigma=False) perr=np.sqrt(np.diag(pcov)) labels=[r'\theta_D',r'\rho_0',r'A'] units=["K",r"\Omega m",r"\Omega m"] annotation=["${}$: {}\n".format(l,format_error(v,e,latex=True,mode="eng",units=u)) for l,v,e,u in zip(labels,popt,perr,units)] annotation="\n".join(annotation) popt=np.append(popt,5) T=d.column(t_col) d.add_column(blochGrueneisen(T,*popt),header=r"Bloch") d.plot_xy(t_col,[r_col,"Bloch"],["ro","b-"],label=["Data",r"$Bloch-Gr\"ueisen Fit$"]) d.xlabel="Temperature (K)" d.ylabel="Resistance ($\Omega$)" text(0.05,0.65,annotation,transform=d.axes[0].transAxes)
else: t_col = t_col[0] r_col = d.find_col(r_pat) if len(r_col) != 1: raise KeyError("More than one column that might match temperaature found!") else: r_col = r_col[0] rho0 = d.min(r_col)[0] A = rho0 * 40 thetaD = 300.0 d.del_rows(0, lambda x, r: any(isnan(r))) popt, pcov = d.curve_fit( lambda T, thetaD, rho0, A: blochGrueneisen(T, thetaD, rho0, A, 5), xcol=t_col, ycol=r_col, p0=[thetaD, rho0, A]) perr = sqrt(diag(pcov)) labels = [r'\theta_D', r'\rho_0', r'A'] annotation = [ "${}$: {}\n".format(l, format_error(v, e, latex=True)) for l, v, e in zip(labels, popt, perr) ] annotation = "\n".join(annotation) popt = append(popt, 5) T = d.column(t_col) d.add_column(blochGrueneisen(T, *popt), column_header=r"Bloch")
raise KeyError("More than one column that might match temperaature found!") else: t_col=t_col[0] r_col=d.find_col(r_pat) if len(r_col)!=1: raise KeyError("More than one column that might match temperaature found!") else: r_col=r_col[0] rho0=d.min(r_col)[0] A=rho0*40 thetaD=300.0 d.del_rows(0,lambda x,r:any(isnan(r))) popt,pcov=d.curve_fit(lambda T,thetaD,rho0,A:blochGrueneisen(T,thetaD,rho0,A,5),xcol=t_col,ycol=r_col,p0=[thetaD,rho0,A]) perr=sqrt(diag(pcov)) labels=[r'\theta_D',r'\rho_0',r'A'] annotation=["${}$: {}\n".format(l,format_error(v,e,latex=True)) for l,v,e in zip(labels,popt,perr)] annotation="\n".join(annotation) popt=append(popt,5) T=d.column(t_col) d.add_column(blochGrueneisen(T,*popt),column_header=r"Bloch") d.plot_xy(t_col,[r_col,"Bloch"],["ro","b-"],label=["Data",r"$Bloch-Gr\"ueisen Fit$"]) d.xlabel="Temperature (K)" d.ylabel="Resistance ($\Omega$)" text(0.05,0.05,annotation,transform=d.axes[0].transAxes)