##Preamble from __future__ import division,print_function import pandas as pds rc('figure',figsize=(12,4)) rc('legend',loc='best') rc('font',size = 14.0) import os from os.path import expanduser %load_ext autoreload %autoreload 2 import scipy.optimize as opt from scipy import stats import uncertainties as unc from uncertainties import unumpy import ProcessingCTRData as pc print("Complete") LeftData = {'Threshold (V)': (1.64, 1.56), 'Bias (V)' : 72.6, 'Overvoltage (V)' : 2.2} RightData = {'Threshold (V)': (1.64, 1.56), 'Bias (V)' : 72.7, 'Overvoltage (V)' : 2.2} Data = {'Left Detector':LeftData, 'Right Detector':RightData} df = pds.DataFrame(Data) df = df.T def tidythreshold(astr): a, b = astr return "{0} , {1}".format(a,b) df['Threshold (V)'] = df['Threshold (V)'].apply(tidythreshold) print(df.to_latex()) df = pds.read_csv('standarddata.csv') df['configuration'] = 'wrapped' df["person"] = df.uniquename.apply(lambda astr : astr.split('_')[-2]) df['num'] = df.uniquename.apply(lambda astr : int(astr.split('_')[-1])) df = df[((df.person == 'MW') & (df.num == 1)) | (df.length == 5) & (df.person == 'SW') & ((df.num == 4) | (df.num==25)) | (df.length == 10) & (df.person == 'SW') & (df.num == 1) | (df.length == 15) & (df.person == 'SW') & (df.num == 1) | (df.length == 20) & (df.person == 'SW') & ((df.num == 1) | (df.num==9)) | (df.length == 30) & (df.person == 'SW') & ((df.num == 1) | (df.num==9)) ] ## Combine data back together for col in df.columns: if col.endswith('err'): df[col[:-3]] = df.apply(lambda srs : unc.ufloat(srs[col[:-3]],srs[col]),axis=1) df = df.drop(col,1) df['ggevents'] = unumpy.uarray(list(df.numofsamples),list(sqrt(df.numofsamples))) ## Person = {'SW' : 'Wrap 2','MW' : ' Wrap 1'} df['Wrapped By'] = df.person.apply(lambda astr : Person[astr]) df = df.sort(['length','CTR', 'person'], ascending=[True,False,True]) for col in df.columns: if col in ['length', 'ggevents']: ff = "{0:.0f}" elif col in ['ERleft','ERright']: ff = "{0:.2f}" else: ff = "{0:.1f}" try: df[col] = [ff.format(val).replace("+/-","$\pm$") for val in df[col]] except ValueError: continue print(df.to_latex(float_format=lambda x: '%10.1f' % x, index=False,columns=['Wrapped By','length',"ERleft","ERright","ggevents","location","CTR","chisquared"])) df = pds.read_csv('referencedata.csv') df['num'] = df.uniquename.apply(lambda astr : int(astr.split('_')[-1])) df = df[df.num == 1] #initial DOI measurement removed to reduce confusion - value should be valid! df = df[df.uniquename.apply(lambda astr : astr.find("6th") < 0)] ## Combine data back together for col in df.columns: if col.endswith('err'): df[col[:-3]] = df.apply(lambda srs : unc.ufloat(srs[col[:-3]],srs[col]),axis=1) df = df.drop(col,1) df['ggevents'] = unumpy.uarray(list(df.numofsamples),list(sqrt(df.numofsamples))) ## expr = {0: "Standard", 1: "DOI"} df['DOI'] = df.uniquename.apply(lambda astr : expr[astr.find("DOI")>0]) df['configuration'] = 'wrapped' df = df.sort('length') for col in df.columns: if col in ['length', 'ggevents']: ff = "{0:.0f}" else: ff = "{0:.1f}" try: df[col] = [ff.format(val).replace("+/-","$\pm$") for val in df[col]] except ValueError: continue print(df.to_latex(float_format=lambda x: '%10.1f' % x, index=False,columns=["uniquename","ERleft","ERright","ggevents","location","TimeResolution","chisquared"])) #print(pc.GenerateLaTeXTable(df,sortby=['length'],cols=["configuration","DOI","energyresolutionLeft","energyresolution","ggevents","loc","ctr","chisquared"])) df = pds.read_csv('alldata.csv',index_col=[0,1]) df = df[df.length == 20] df = df[df.SampleB == '2396'] df = df[df.CTR < 300] chifit = [pc.getchi(grp,plot=False) for key, grp in df.groupby(['SampleB','configuration'])] for col in df.columns: if col.endswith('err'): df[col[:-3]] = df.apply(lambda srs : unc.ufloat(srs[col[:-3]],srs[col]),axis=1) df = df.drop(col,1) df['ggevents'] = unumpy.uarray(list(df.numofsamples),list(sqrt(df.numofsamples))) def ProperMean(agrp): if isinstance(agrp.dtype,object): return mean(list(agrp)) else: return mean(agrp) df = df.groupby(['SampleB','configuration']).aggregate(ProperMean) df['chifit'] = chifit df = df.sort('CTR',ascending=False) for col in df.columns: if col in ['length', 'ggevents']: ff = "{0:.0f}" elif col in ['ERleft','ERright']: ff = "{0:.2f}" else: ff = "{0:.1f}" try: df[col] = [ff.format(val).replace("+/-","$\pm$") for val in df[col]] except ValueError: continue print(df.to_latex(float_format=lambda x: '%10.1f' % x, index=True,columns=["ERleft","ERright","ggevents","location","CTR","chisquared","chifit"])) df = pds.read_csv('alldata.csv') df = df[df.length == 20] df = df[df.SampleB == '2396'] df = df[df.CTR < 300] grp = df.groupby(['SampleB','configuration']).mean() params, grp['$\chi^2_\text{nofit}$'] = zip(*[pc.getchi(agrp, dist='nofit', verbose=0, plot=False, fetchparam=True) for key, agrp in df.groupby(['SampleB','configuration'])]) grp['intercept-nofit'] = [pc.tidystring(astr) for astr in params] params, grp['$\chi^2_\text{linear}$'] = zip(*[pc.getchi(agrp, dist='linear', verbose=0, plot=False, fetchparam=True) for key, agrp in df.groupby(['SampleB','configuration'])]) m, c = zip(*params) grp['intercept-linearfit'] = [pc.tidystring(astr) for astr in m] grp['gradient-linearfit'] = [pc.tidystring(astr) for astr in c] grp['ptpchange'] = pc.CalculatePTP(df) grp['std'] = pc.CalculateSTD(df) grp['specialkey'] = 'normal' print(pc.GenerateLaTeXTable(grp,index=True,sortby=None,cols=["energyresolutionLeft","energyresolution","ggevents","loc","ctr","chisquared"])) print(pc.GenerateLaTeXTable(grp,index=True,sortby=None,cols=['std','ptpchange','intercept-nofit',"$\chi^2_\text{nofit}$",'intercept-linearfit','gradient-linearfit','$\chi^2_\text{linear}$'])) df = pds.read_csv('alldata.csv',index_col=[0,1]) df = df[df.length == 30] df = df[df.CTR < 300] df = df[df.specialkey == 'normal'] chifit = [pc.getchi(grp,plot=False) for key, grp in df.groupby(['SampleB','configuration'])] for col in df.columns: if col.endswith('err'): df[col[:-3]] = df.apply(lambda srs : unc.ufloat(srs[col[:-3]],srs[col]),axis=1) df = df.drop(col,1) df['ggevents'] = unumpy.uarray(list(df.numofsamples),list(sqrt(df.numofsamples))) def ProperMean(agrp): if isinstance(agrp.dtype,object): return mean(list(agrp)) else: return mean(agrp) df = df.groupby(['SampleB','configuration']).aggregate(ProperMean) print(df.CTR) df['chifit'] = chifit fdf = list(df.CTR) #df = df.sort('CTR',ascending=False) for col in df.columns: if col in ['length', 'ggevents']: ff = "{0:.0f}" elif col in ['ERleft','ERright']: ff = "{0:.2f}" else: ff = "{0:.1f}" try: df[col] = [ff.format(val).replace("+/-","$\pm$") for val in df[col]] except ValueError: continue print(df.to_latex(float_format=lambda x: '%10.1f' % x, index=True,columns=["ERleft","ERright","ggevents","location","CTR","chisquared","chifit"]))