def gA_bs(psql,params): # read data mq = params['gA_fit']['ml'] basak = copy.deepcopy(params['gA_fit']['basak']) tag = params['gA_fit']['ens']['tag'] stream = params['gA_fit']['ens']['stream'] Nbs = params['gA_fit']['nbs'] Mbs = params['gA_fit']['mbs'] nstates = params['gA_fit']['nstates'] barp = params[tag]['proton'][mq] print "fitting for gA mq %s, basak %s, ens %s%s, Nbs %s, Mbs %s" %(str(mq),str(basak),str(tag),str(stream),str(Nbs),str(Mbs)) # read two point SSl = np.array([psql.data('dwhisq_corr_baryon',idx) for idx in [barp['meta_id']['SS'][i] for i in basak]]) PSl = np.array([psql.data('dwhisq_corr_baryon',idx) for idx in [barp['meta_id']['PS'][i] for i in basak]]) T = len(SSl[0,0]) # plot data if params['flags']['plot_data']: for b in range(len(basak)): SS = SSl[b] PS = PSl[b] # raw correlator c51.scatter_plot(np.arange(len(SS[0])), c51.make_gvars(SS), '%s %s ss' %(basak[b],str(mq))) c51.scatter_plot(np.arange(len(PS[0])), c51.make_gvars(PS), '%s %s ps' %(basak[b],str(mq))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(c51.make_gvars(SS), 1, 'log') meff_ps = eff.effective_mass(c51.make_gvars(PS), 1, 'log') xlim = [2, len(meff_ss)/3-2] ylim = c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ss)), meff_ss, '%s %s ss effective mass' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ps)), meff_ps, '%s %s ps effective mass' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) plt.show() # scaled correlator E0 = barp['priors'][1]['E0'][0] scaled_ss = eff.scaled_correlator(c51.make_gvars(SS), E0, phase=1.0) scaled_ps = eff.scaled_correlator(c51.make_gvars(PS), E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ss)), scaled_ss, '%s %s ss scaled correlator (take sqrt to get Z0_s)' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ps)), scaled_ps, '%s %s ps scaled correlator (divide by Z0_s to get Z0_p)' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) plt.show() # concatenate data SS = SSl[0] PS = PSl[0] for i in range(len(SSl)-1): SS = np.concatenate((SS,SSl[i+1]),axis=1) PS = np.concatenate((PS,PSl[i+1]),axis=1) boot0 = np.concatenate((SS, PS), axis=1) # read priors prior = c51.baryon_priors(barp['priors'],basak,nstates) ## read trange trange = barp['trange'] ## fit boot0 boot0gv = c51.make_gvars(boot0) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T,nstates) boot0fit = c51.fitscript_v2(trange,T,boot0gv,boot0p,fitfcn.twopt_baryon_ss_ps,basak=params['gA_fit']['basak']) print boot0fit['rawoutput'][0]
x_ps_kaon = len(x_ss_kaon) + len(x_ps_pion) + len(x_ss_pion) + len( x_pps) + len(x_mps) + len(x_ppl) + len(x_mpl) + np.arange( len(ps_kaon[0])) print "len mpl:", np.shape(mpl) print "len ppl:", np.shape(ppl) print "len mps:", np.shape(mps) print "len pps:", np.shape(pps) print "len ss_pion:", np.shape(ss_pion) print "len ps_pion:", np.shape(ps_pion) print "len ss_kaon:", np.shape(ss_kaon) print "len ps_kaon:", np.shape(ps_kaon) # concatenate boot0 = np.concatenate( (mpl, ppl, mps, pps, ss_pion, ps_pion, ss_kaon, ps_kaon), axis=1) # correlated covariance gvboot0 = c51.make_gvars(boot0) # split for projects gvmpl = gvboot0[x_mpl] gvppl = gvboot0[x_ppl] gvmps = gvboot0[x_mps] gvpps = gvboot0[x_pps] gvss_pion = gvboot0[x_ss_pion] gvps_pion = gvboot0[x_ps_pion] gvss_kaon = gvboot0[x_ss_kaon] gvps_kaon = gvboot0[x_ps_kaon] # fit # # mres mresl = decay.fit_mres_bs(psql, decay_params, decay_params['decay_ward_fit']['ml'], gvmpl, gvppl) mress = decay.fit_mres_bs(psql, decay_params,
def fit_mres_bs(psql,params,mq,gv_mp,gv_pp): print 'fitting mres', mq tag = params['decay_ward_fit']['ens']['tag'] stream = params['decay_ward_fit']['ens']['stream'] Nbs = params['decay_ward_fit']['nbs'] Mbs = params['decay_ward_fit']['mbs'] mresp = params[tag]['mres'][mq] T = len(gv_pp) boot0gv = gv_mp/gv_pp # plot mres if params['flags']['plot_data']: c51.scatter_plot(np.arange(len(boot0gv)), boot0gv, '%s mres' %str(mq)) plt.show() # read priors prior = mresp['priors'] # read trange trange = mresp['trange'] # fit boot0 boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T) boot0fit = c51.fitscript_v2(trange,T,boot0gv,boot0p,fitfcn.mres_fitfcn) if params['flags']['stability_plot']: c51.stability_plot(boot0fit,'mres',str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['mres'] = [boot0fit['pmean'][t]['mres'] for t in range(len(boot0fit['pmean']))] tbl_print['sdev'] = [boot0fit['psdev'][t]['mres'] for t in range(len(boot0fit['pmean']))] tbl_print['chi2/dof'] = np.array(boot0fit['chi2'])/np.array(boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = [mresp['meta_id']['mp'],mresp['meta_id']['pp']] fit_id = c51.select_fitid('mres',params) for t in range(len(boot0fit['tmin'])): init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit,t) psql.submit_boot0('jmu',corr_lst,fit_id,tmin,tmax,init_id,prior_id,result,params['flags']['update']) if len(boot0fit['tmin'])!=1 or len(boot0fit['tmax'])!=1: print "sweeping over time range" print "skipping bootstrap" return 0 else: pass if False: #params['flags']['write']: bsresult = [] psql.chkbsprior(tag,stream,Nbs,boot0fit['prior'][0]) for g in tqdm.tqdm(range(Nbs)): # make bs gvar dataset n = g+1 bs_id,draw = psql.fetchonebs(nbs=n,Mbs=Mbs,ens=tag,stream=stream) bootn = boot0[draw] bootngv = c51.make_gvars(bootn) # read randomized priors bsprior_id,bsp = psql.bspriorid(tag,stream,g,boot0fit['prior'][0]) bsp = c51.dict_of_tuple_to_gvar(bsp) # read initial guess init = {"mres":boot0fit['pmean'][0]['mres']} #Fit bsfit = c51.fitscript_v2(trange,T,bootngv,bsp,fitfcn.mres_fitfcn,init) tmin = bsfit['tmin'][0] tmax = bsfit['tmax'][0] boot0_id = psql.select_boot0('jmu',corr_lst,fit_id,tmin,tmax,init_id,prior_id) bsinit_id = psql.initid(bsfit['p0'][0]) result = c51.make_result(bsfit,0) #"""{"mres":%s, "chi2":%s, "dof":%s}""" %(bsfit['pmean'][t]['mres'],bsfit['chi2'][t],bsfit['dof'][t]) psql.submit_bs('jmu_bs',boot0_id,bs_id,Mbs,bsinit_id,bsprior_id,result,params['flags']['update']) return {'mres_fit': boot0fit['rawoutput'][0]}
def concatgv(corr1, corr2): concat = np.concatenate((corr1,corr2),axis=1) concat_gv = c51.make_gvars(concat) corr1 = concat_gv[:len(concat_gv)/2] corr2 = concat_gv[len(concat_gv)/2:] return corr1, corr2
def fit_decay_bs(psql,params,meson, gv_SS, gv_PS): if meson=='pion': mq1 = params['decay_ward_fit']['ml'] mq2 = mq1 elif meson == 'kaon': mq1 = params['decay_ward_fit']['ml'] mq2 = params['decay_ward_fit']['ms'] elif meson == 'etas': mq1 = params['decay_ward_fit']['ms'] mq2 = mq1 print 'fitting two point', mq1, mq2 tag = params['decay_ward_fit']['ens']['tag'] stream = params['decay_ward_fit']['ens']['stream'] nstates = params['decay_ward_fit']['nstates'] mesp = params[tag][meson]['%s_%s' %(str(mq1),str(mq2))] T = len(gv_SS) # plot effective mass / scaled correlator if params['flags']['plot_data']: # unfolded correlator data c51.scatter_plot(np.arange(len(gv_SS)), gv_SS, '%s_%s ss folded' %(str(mq1),str(mq2))) c51.scatter_plot(np.arange(len(gv_PS)), gv_PS, '%s_%s ps folded' %(str(mq1),str(mq2))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(gv_SS, 1, 'cosh') meff_ps = eff.effective_mass(gv_PS, 1, 'cosh') xlim = [3, len(meff_ss)/2-2] ylim = c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ss)), meff_ss, '%s_%s ss effective mass' %(str(mq1),str(mq2)), xlim = xlim, ylim = ylim) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ps)), meff_ps, '%s_%s ps effective mass' %(str(mq1),str(mq2)), xlim = xlim, ylim = ylim) plt.show() # scaled correlator E0 = mesp['priors']['1']['E0'][0] scaled_ss = eff.scaled_correlator(gv_SS, E0, phase=1.0) scaled_ps = eff.scaled_correlator(gv_PS, E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ss)), scaled_ss, '%s_%s ss scaled correlator (take sqrt to get Z0_s)' %(str(mq1),str(mq2)), xlim = xlim, ylim = ylim) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ps)), scaled_ps, '%s_%s ps scaled correlator (divide by Z0_s to get Z0_p)' %(str(mq1),str(mq2)), xlim = xlim, ylim = ylim) plt.show() # concatenate data boot0gv = np.concatenate((gv_SS, gv_PS)) # read priors prior = c51.meson_priors(mesp['priors'],nstates) # read trange trange = mesp['trange'] # fit boot0 boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T,params['decay_ward_fit']['nstates']) boot0fit = c51.fitscript_v2(trange,T,boot0gv,boot0p,fitfcn.twopt_fitfcn_ss_ps) if params['flags']['stability_plot']: c51.stability_plot(boot0fit,'E0','%s_%s' %(str(mq1),str(mq2))) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['E0'] = [boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean']))] tbl_print['dE0'] = [boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean']))] tbl_print['Z0_s'] = [boot0fit['pmean'][t]['Z0_s'] for t in range(len(boot0fit['pmean']))] tbl_print['dZ0_s'] = [boot0fit['psdev'][t]['Z0_s'] for t in range(len(boot0fit['pmean']))] tbl_print['Z0_p'] = [boot0fit['pmean'][t]['Z0_p'] for t in range(len(boot0fit['pmean']))] tbl_print['dZ0_p'] = [boot0fit['psdev'][t]['Z0_p'] for t in range(len(boot0fit['pmean']))] tbl_print['chi2/dof'] = np.array(boot0fit['chi2'])/np.array(boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = [mesp['meta_id']['SS'],mesp['meta_id']['PS']] fit_id = c51.select_fitid('meson',params) for t in range(len(boot0fit['tmin'])): init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit,t) psql.submit_boot0('meson',corr_lst,fit_id,tmin,tmax,init_id,prior_id,result,params['flags']['update']) if len(boot0fit['tmin'])!=1 or len(boot0fit['tmax'])!=1: print "sweeping over time range" print "skipping bootstrap" return 0 else: pass if False: #params['flags']['write']: bsresult = [] psql.chkbsprior(tag,stream,Nbs,boot0fit['prior'][0]) for g in tqdm.tqdm(range(Nbs)): # make bs gvar dataset n = g+1 bs_id,draw = psql.fetchonebs(nbs=n,Mbs=Mbs,ens=tag,stream=stream) bootn = boot0[draw] bootngv = c51.make_gvars(bootn) # read randomized priors bsprior_id,bsp = psql.bspriorid(tag,stream,g,boot0fit['prior'][0]) bsp = c51.dict_of_tuple_to_gvar(bsp) # read initial guess init = c51.read_init(boot0fit,0) #{"mres":boot0fit['pmean'][0]['mres']} #Fit bsfit = c51.fitscript_v2(trange,T,bootngv,bsp,fitfcn.twopt_fitfcn_ss_ps,init) tmin = bsfit['tmin'][0] tmax = bsfit['tmax'][0] boot0_id = psql.select_boot0('meson',corr_lst,fit_id,tmin,tmax,init_id,prior_id) bsinit_id = psql.initid(bsfit['p0'][0]) result = c51.make_result(bsfit,0) #"""{"mres":%s, "chi2":%s, "dof":%s}""" %(bsfit['pmean'][t]['mres'],bsfit['chi2'][t],bsfit['dof'][t]) psql.submit_bs('meson_bs',boot0_id,bs_id,Mbs,bsinit_id,bsprior_id,result,params['flags']['update']) return {'meson_fit': boot0fit['rawoutput'][0]}
# concatenate and build grand covariance matrix # # index x_mp = np.arange(len(mp[0])) x_pp = np.arange(len(pp[0]))+len(x_mp) x_ss_pion = np.arange(len(ss_pion[0]))+len(x_mp)+len(x_pp) x_ps_pion = np.arange(len(ps_pion[0]))+len(x_mp)+len(x_pp)+len(x_ss_pion) x_gAboot0 = np.arange(len(gAboot0[0]))+len(x_mp)+len(x_pp)+len(x_ss_pion)+len(x_ps_pion) print "len mp:", np.shape(mp) print "len pp:", np.shape(pp) print "len ss_pion:", np.shape(ss_pion) print "len ps_pion:", np.shape(ps_pion) print "len gAboot0:", np.shape(gAboot0) # concatenate boot0 = np.concatenate((mp,pp,ss_pion,ps_pion,gAboot0),axis=1) # correlated covariance gvboot0 = c51.make_gvars(boot0) # split to different project subsets gvmp = gvboot0[x_mp] gvpp = gvboot0[x_pp] gvss_pion = gvboot0[x_ss_pion] gvps_pion = gvboot0[x_ps_pion] gvgAboot0 = gvboot0[x_gAboot0] # fit # # mres mresl = decay.fit_mres_bs(psql,decay_params,decay_params['decay_ward_fit']['ml'],gvmp,gvpp) # meson pifit = decay.fit_decay_bs(psql,decay_params,'pion',gvss_pion,gvps_pion) # mN and gA #gAfit = gA.fit_gA(psql,gA_params,gvgAboot0) gAfit = gA.fit_proton(psql,gA_params,gvgAboot0) # chipt parameters
for m in ml: decay_params['decay_ward_fit']['ml'] = m ss, ps = decay.read_decay_bs(psql,decay_params,'pion') x_list['ss_%s_%s' %(str(m),str(m))] = len(data[0]) + np.arange(len(ss[0])) data = np.concatenate((data,ss), axis=1) x_list['ps_%s_%s' %(str(m),str(m))] = len(data[0]) + np.arange(len(ps[0])) data = np.concatenate((data,ps), axis=1) for s in ms: decay_params['decay_ward_fit']['ms'] = s ss, ps = decay.read_decay_bs(psql,decay_params,'kaon') x_list['ss_%s_%s' %(str(m),str(s))] = len(data[0]) + np.arange(len(ss[0])) data = np.concatenate((data,ss), axis=1) x_list['ps_%s_%s' %(str(m),str(s))] = len(data[0]) + np.arange(len(ps[0])) data = np.concatenate((data,ps), axis=1) # make gvars data_gv = c51.make_gvars(data) ### fit ### result = dict() # mres for m in ml: gv_mp = data_gv[x_list['mp_%s' %str(m)]] gv_pp = data_gv[x_list['pp_%s' %str(m)]] fit = decay.fit_mres_bs(psql,decay_params,m,gv_mp,gv_pp)['mres_fit'] result['mres_%s' %str(m)] = fit for s in ms: gv_mp = data_gv[x_list['mp_%s' %str(s)]] gv_pp = data_gv[x_list['pp_%s' %str(s)]] fit = decay.fit_mres_bs(psql,decay_params,s,gv_mp,gv_pp)['mres_fit'] result['mres_%s' %str(s)] = fit # mesons for m in ml:
if __name__=='__main__': # read master f = open('./hisq.yml','r') params = yaml.load(f) f.close() # yaml entires fitmeta = params['hisq_fit'] # log in sql psqlpwd = pwd.passwd() psql = sql.pysql('cchang5','cchang5',psqlpwd) ## bootstrap decay constant # fit phi_jj_5 datajj = read_hisq_meson(psql,params,'phi_jj_5') datagv = c51.make_gvars(datajj) resp = fit_hisq_meson(psql,params,'phi_jj_5', datagv) # fit phi_jr_5 #data = read_hisq_meson(psql,params,'phi_jr_5') #datagv = c51.make_gvars(data) #resp = fit_hisq_meson(psql,params,'phi_jr_5', datagv) # fit phi_rr_5 datarr = read_hisq_meson(psql,params,'phi_rr_5') datagv = c51.make_gvars(datarr) resp = fit_hisq_meson(psql,params,'phi_rr_5', datagv) #print res['meson_fit'] #buffdict.update(res['meson_fit'].p) if params['flags']['bootstrap']: params['flags']['plot_data'] = False params['flags']['stability_plot'] = False
def decay_bs(psql, params, meson): if meson == "pion": mq1 = params["decay_ward_fit"]["ml"] mq2 = mq1 elif meson == "kaon": mq1 = params["decay_ward_fit"]["ml"] mq2 = params["decay_ward_fit"]["ms"] elif meson == "etas": mq1 = params["decay_ward_fit"]["ms"] mq2 = mq1 print "fitting twopoint", mq1, mq2 tag = params["decay_ward_fit"]["ens"]["tag"] stream = params["decay_ward_fit"]["ens"]["stream"] Nbs = params["decay_ward_fit"]["nbs"] Mbs = params["decay_ward_fit"]["mbs"] mesp = params[tag][meson]["%s_%s" % (str(mq1), str(mq2))] # read data SS = c51.fold(psql.data("dwhisq_corr_meson", mesp["meta_id"]["SS"])) PS = c51.fold(psql.data("dwhisq_corr_meson", mesp["meta_id"]["PS"])) T = len(SS[0]) # plot effective mass / scaled correlator if params["flags"]["plot_data"]: # unfolded correlator data c51.scatter_plot(np.arange(len(SS[0])), c51.make_gvars(SS), "%s_%s ss folded" % (str(mq1), str(mq2))) c51.scatter_plot(np.arange(len(PS[0])), c51.make_gvars(PS), "%s_%s ps folded" % (str(mq1), str(mq2))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(c51.make_gvars(SS), 1, "cosh") meff_ps = eff.effective_mass(c51.make_gvars(PS), 1, "cosh") xlim = [3, len(meff_ss) / 2 - 2] ylim = c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(meff_ss)), meff_ss, "%s_%s ss effective mass" % (str(mq1), str(mq2)), xlim=xlim, ylim=ylim ) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(meff_ps)), meff_ps, "%s_%s ps effective mass" % (str(mq1), str(mq2)), xlim=xlim, ylim=ylim ) plt.show() # scaled correlator E0 = mesp["priors"]["E0"][0] scaled_ss = eff.scaled_correlator(c51.make_gvars(SS), E0, phase=1.0) scaled_ps = eff.scaled_correlator(c51.make_gvars(PS), E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ss)), scaled_ss, "%s_%s ss scaled correlator (take sqrt to get Z0_s)" % (str(mq1), str(mq2)), xlim=xlim, ylim=ylim, ) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ps)), scaled_ps, "%s_%s ps scaled correlator (divide by Z0_s to get Z0_p)" % (str(mq1), str(mq2)), xlim=xlim, ylim=ylim, ) plt.show() # concatenate data boot0 = np.concatenate((SS, PS), axis=1) # read priors prior = mesp["priors"] # read trange trange = mesp["trange"] # fit boot0 boot0gv = c51.make_gvars(boot0) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T, params["decay_ward_fit"]["nstates"]) boot0fit = c51.fitscript_v2(trange, T, boot0gv, boot0p, fitfcn.twopt_fitfcn_ss_ps) if params["flags"]["stability_plot"]: c51.stability_plot(boot0fit, "E0", "%s_%s" % (str(mq1), str(mq2))) plt.show() if params["flags"]["tabulate"]: tbl_print = collections.OrderedDict() tbl_print["tmin"] = boot0fit["tmin"] tbl_print["tmax"] = boot0fit["tmax"] tbl_print["E0"] = [boot0fit["pmean"][t]["E0"] for t in range(len(boot0fit["pmean"]))] tbl_print["dE0"] = [boot0fit["psdev"][t]["E0"] for t in range(len(boot0fit["pmean"]))] tbl_print["Z0_s"] = [boot0fit["pmean"][t]["Z0_s"] for t in range(len(boot0fit["pmean"]))] tbl_print["dZ0_s"] = [boot0fit["psdev"][t]["Z0_s"] for t in range(len(boot0fit["pmean"]))] tbl_print["Z0_p"] = [boot0fit["pmean"][t]["Z0_p"] for t in range(len(boot0fit["pmean"]))] tbl_print["dZ0_p"] = [boot0fit["psdev"][t]["Z0_p"] for t in range(len(boot0fit["pmean"]))] tbl_print["chi2/dof"] = np.array(boot0fit["chi2"]) / np.array(boot0fit["dof"]) tbl_print["logGBF"] = boot0fit["logGBF"] print tabulate(tbl_print, headers="keys") # submit boot0 to db if params["flags"]["write"]: corr_lst = [mesp["meta_id"]["SS"], mesp["meta_id"]["PS"]] fit_id = c51.select_fitid("meson", params) for t in range(len(boot0fit["tmin"])): init_id = psql.initid(boot0fit["p0"][t]) prior_id = psql.priorid(boot0fit["prior"][t]) tmin = boot0fit["tmin"][t] tmax = boot0fit["tmax"][t] result = c51.make_result(boot0fit, t) psql.submit_boot0( "meson", corr_lst, fit_id, tmin, tmax, init_id, prior_id, result, params["flags"]["update"] ) if len(boot0fit["tmin"]) != 1 or len(boot0fit["tmax"]) != 1: print "sweeping over time range" print "skipping bootstrap" return 0 else: pass if params["flags"]["write"]: bsresult = [] psql.chkbsprior(tag, stream, Nbs, boot0fit["prior"][0]) for g in tqdm.tqdm(range(Nbs)): # make bs gvar dataset n = g + 1 bs_id, draw = psql.fetchonebs(nbs=n, Mbs=Mbs, ens=tag, stream=stream) bootn = boot0[draw] bootngv = c51.make_gvars(bootn) # read randomized priors bsprior_id, bsp = psql.bspriorid(tag, stream, g, boot0fit["prior"][0]) bsp = c51.dict_of_tuple_to_gvar(bsp) # read initial guess init = c51.read_init(boot0fit, 0) # {"mres":boot0fit['pmean'][0]['mres']} # Fit bsfit = c51.fitscript_v2(trange, T, bootngv, bsp, fitfcn.twopt_fitfcn_ss_ps, init) tmin = bsfit["tmin"][0] tmax = bsfit["tmax"][0] boot0_id = psql.select_boot0("meson", corr_lst, fit_id, tmin, tmax, init_id, prior_id) bsinit_id = psql.initid(bsfit["p0"][0]) result = c51.make_result( bsfit, 0 ) # """{"mres":%s, "chi2":%s, "dof":%s}""" %(bsfit['pmean'][t]['mres'],bsfit['chi2'][t],bsfit['dof'][t]) psql.submit_bs("meson_bs", boot0_id, bs_id, Mbs, bsinit_id, bsprior_id, result, params["flags"]["update"]) return 0
def corrfit(psql, params, meson): mq = params['a13_fit']['ml'] print 'fitting a13', mq tag = params['a13_fit']['ens']['tag'] stream = params['a13_fit']['ens']['stream'] Nbs = params['a13_fit']['nbs'] Mbs = params['a13_fit']['mbs'] mesp = params[tag][meson][mq] # read data SS = c51.fold(psql.data('dwhisq_corr_meson', mesp['meta_id']['SS'])) PS = c51.fold(psql.data('dwhisq_corr_meson', mesp['meta_id']['PS'])) T = len(SS[0]) # plot effective mass / scaled correlator if params['flags']['plot_data']: # unfolded correlator data c51.scatter_plot(np.arange(len(SS[0])), c51.make_gvars(SS), '%s ss folded' % (str(mq))) c51.scatter_plot(np.arange(len(PS[0])), c51.make_gvars(PS), '%s ps folded' % (str(mq))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(c51.make_gvars(SS), 1, 'cosh') meff_ps = eff.effective_mass(c51.make_gvars(PS), 1, 'cosh') xlim = [2, 12] ylim = [0, 2] #c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ss)), meff_ss, '%s ss effective mass' % (str(mq)), xlim=xlim, ylim=ylim) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ps)), meff_ps, '%s ps effective mass' % (str(mq)), xlim=xlim, ylim=ylim) plt.show() # scaled correlator E0 = mesp['priors'][1]['E0'][0] scaled_ss = eff.scaled_correlator(c51.make_gvars(SS), E0, phase=1.0) scaled_ps = eff.scaled_correlator(c51.make_gvars(PS), E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ss)), scaled_ss, '%s ss scaled correlator (take sqrt to get Z0_s)' % (str(mq)), xlim=xlim, ylim=ylim) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ps)), scaled_ps, '%s ps scaled correlator (divide by Z0_s to get Z0_p)' % (str(mq)), xlim=xlim, ylim=ylim) plt.show() # concatenate data boot0 = np.concatenate((SS, PS), axis=1) # read priors prior = mesp['priors'] # read trange trange = mesp['trange'] # fit boot0 boot0gv = c51.make_gvars(boot0) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T, params['decay_ward_fit']['nstates']) boot0fit = c51.fitscript_v2(trange, T, boot0gv, boot0p, fitfcn.twopt_fitfcn_ss_ps) if params['flags']['stability_plot']: c51.stability_plot(boot0fit, 'E0', '%s_%s' % (str(mq1), str(mq2))) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['E0'] = [ boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dE0'] = [ boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] tbl_print['Z0_s'] = [ boot0fit['pmean'][t]['Z0_s'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dZ0_s'] = [ boot0fit['psdev'][t]['Z0_s'] for t in range(len(boot0fit['pmean'])) ] tbl_print['Z0_p'] = [ boot0fit['pmean'][t]['Z0_p'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dZ0_p'] = [ boot0fit['psdev'][t]['Z0_p'] for t in range(len(boot0fit['pmean'])) ] tbl_print['chi2/dof'] = np.array(boot0fit['chi2']) / np.array( boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = [mesp['meta_id']['SS'], mesp['meta_id']['PS']] fit_id = c51.select_fitid('meson', params) for t in range(len(boot0fit['tmin'])): init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit, t) psql.submit_boot0('meson', corr_lst, fit_id, tmin, tmax, init_id, prior_id, result, params['flags']['update']) if len(boot0fit['tmin']) != 1 or len(boot0fit['tmax']) != 1: print "sweeping over time range" print "skipping bootstrap" return 0 else: pass if params['flags']['write']: bsresult = [] psql.chkbsprior(tag, stream, Nbs, boot0fit['prior'][0]) for g in tqdm.tqdm(range(Nbs)): # make bs gvar dataset n = g + 1 bs_id, draw = psql.fetchonebs(nbs=n, Mbs=Mbs, ens=tag, stream=stream) bootn = boot0[draw] bootngv = c51.make_gvars(bootn) # read randomized priors bsprior_id, bsp = psql.bspriorid(tag, stream, g, boot0fit['prior'][0]) bsp = c51.dict_of_tuple_to_gvar(bsp) # read initial guess init = c51.read_init(boot0fit, 0) #{"mres":boot0fit['pmean'][0]['mres']} #Fit bsfit = c51.fitscript_v2(trange, T, bootngv, bsp, fitfcn.twopt_fitfcn_ss_ps, init) tmin = bsfit['tmin'][0] tmax = bsfit['tmax'][0] boot0_id = psql.select_boot0('meson', corr_lst, fit_id, tmin, tmax, init_id, prior_id) bsinit_id = psql.initid(bsfit['p0'][0]) result = c51.make_result( bsfit, 0 ) #"""{"mres":%s, "chi2":%s, "dof":%s}""" %(bsfit['pmean'][t]['mres'],bsfit['chi2'][t],bsfit['dof'][t]) psql.submit_bs('meson_bs', boot0_id, bs_id, Mbs, bsinit_id, bsprior_id, result, params['flags']['update']) return 0
def mres_bs(psql, params, mq): print "fitting mres", mq tag = params["decay_ward_fit"]["ens"]["tag"] stream = params["decay_ward_fit"]["ens"]["stream"] Nbs = params["decay_ward_fit"]["nbs"] Mbs = params["decay_ward_fit"]["mbs"] mresp = params[tag]["mres"][mq] # read data mp = psql.data("dwhisq_corr_jmu", mresp["meta_id"]["mp"]) pp = psql.data("dwhisq_corr_jmu", mresp["meta_id"]["pp"]) T = len(pp[0]) boot0 = mp / pp # plot mres if params["flags"]["plot_data"]: c51.scatter_plot(np.arange(len(boot0[0])), c51.make_gvars(boot0), "%s mres" % str(mq)) plt.show() # read priors prior = mresp["priors"] # read trange trange = mresp["trange"] # fit boot0 boot0gv = c51.make_gvars(boot0) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T) boot0fit = c51.fitscript_v2(trange, T, boot0gv, boot0p, fitfcn.mres_fitfcn) if params["flags"]["stability_plot"]: c51.stability_plot(boot0fit, "mres", str(mq)) plt.show() if params["flags"]["tabulate"]: tbl_print = collections.OrderedDict() tbl_print["tmin"] = boot0fit["tmin"] tbl_print["tmax"] = boot0fit["tmax"] tbl_print["mres"] = [boot0fit["pmean"][t]["mres"] for t in range(len(boot0fit["pmean"]))] tbl_print["sdev"] = [boot0fit["psdev"][t]["mres"] for t in range(len(boot0fit["pmean"]))] tbl_print["chi2/dof"] = np.array(boot0fit["chi2"]) / np.array(boot0fit["dof"]) tbl_print["logGBF"] = boot0fit["logGBF"] print tabulate(tbl_print, headers="keys") # submit boot0 to db if params["flags"]["write"]: corr_lst = [mresp["meta_id"]["mp"], mresp["meta_id"]["pp"]] fit_id = c51.select_fitid("mres", params) for t in range(len(boot0fit["tmin"])): init_id = psql.initid(boot0fit["p0"][t]) prior_id = psql.priorid(boot0fit["prior"][t]) tmin = boot0fit["tmin"][t] tmax = boot0fit["tmax"][t] result = c51.make_result(boot0fit, t) psql.submit_boot0("jmu", corr_lst, fit_id, tmin, tmax, init_id, prior_id, result, params["flags"]["update"]) if len(boot0fit["tmin"]) != 1 or len(boot0fit["tmax"]) != 1: print "sweeping over time range" print "skipping bootstrap" return 0 else: pass if params["flags"]["write"]: bsresult = [] psql.chkbsprior(tag, stream, Nbs, boot0fit["prior"][0]) for g in tqdm.tqdm(range(Nbs)): # make bs gvar dataset n = g + 1 bs_id, draw = psql.fetchonebs(nbs=n, Mbs=Mbs, ens=tag, stream=stream) bootn = boot0[draw] bootngv = c51.make_gvars(bootn) # read randomized priors bsprior_id, bsp = psql.bspriorid(tag, stream, g, boot0fit["prior"][0]) bsp = c51.dict_of_tuple_to_gvar(bsp) # read initial guess init = {"mres": boot0fit["pmean"][0]["mres"]} # Fit bsfit = c51.fitscript_v2(trange, T, bootngv, bsp, fitfcn.mres_fitfcn, init) tmin = bsfit["tmin"][0] tmax = bsfit["tmax"][0] boot0_id = psql.select_boot0("jmu", corr_lst, fit_id, tmin, tmax, init_id, prior_id) bsinit_id = psql.initid(bsfit["p0"][0]) result = c51.make_result( bsfit, 0 ) # """{"mres":%s, "chi2":%s, "dof":%s}""" %(bsfit['pmean'][t]['mres'],bsfit['chi2'][t],bsfit['dof'][t]) psql.submit_bs("jmu_bs", boot0_id, bs_id, Mbs, bsinit_id, bsprior_id, result, params["flags"]["update"]) return 0
def gA_bs(psql, params): # read data mq = params['gA_fit']['ml'] basak = copy.deepcopy(params['gA_fit']['basak']) tag = params['gA_fit']['ens']['tag'] stream = params['gA_fit']['ens']['stream'] Nbs = params['gA_fit']['nbs'] Mbs = params['gA_fit']['mbs'] nstates = params['gA_fit']['nstates'] tau = params['gA_fit']['tau'] barp = params[tag]['proton'][mq] fhbp = params[tag]['gA'][mq] print "fitting for gA mq %s, basak %s, ens %s%s, Nbs %s, Mbs %s" % ( str(mq), str(basak), str(tag), str(stream), str(Nbs), str(Mbs)) # read two point SSl = np.array([ psql.data('dwhisq_corr_baryon', idx) for idx in [barp['meta_id']['SS'][i] for i in basak] ]) PSl = np.array([ psql.data('dwhisq_corr_baryon', idx) for idx in [barp['meta_id']['PS'][i] for i in basak] ]) T = len(SSl[0, 0]) # read fh correlator fhSSl = np.array([ psql.data('dwhisq_fhcorr_baryon', idx) for idx in [fhbp['meta_id']['SS'][i] for i in basak] ]) fhPSl = np.array([ psql.data('dwhisq_fhcorr_baryon', idx) for idx in [fhbp['meta_id']['PS'][i] for i in basak] ]) # check outliers if False: # corr [basak, config, time] temp = [SSl, PSl, fhSSl, fhPSl] ntemp = ['SSl', 'PSl', 'fhSSl', 'fhPSl'] for j in range(len(temp)): print ntemp[j] corr = temp[j] for i in range(len(corr[0, 0])): corrt = corr[0, :, i] #00 ss 30 ps minimum = np.amin(corrt) argmin = np.argmin(corrt) * 5 + 300 median = np.median(corrt) maximum = np.amax(corrt) argmax = np.argmax(corrt) * 5 + 300 print i, median - minimum, maximum - median, argmin, argmax # concatenate and make gvars to preserve correlations SS = SSl[0] PS = PSl[0] for i in range(len(SSl) - 1): # loop over basak operators SS = np.concatenate((SS, SSl[i + 1]), axis=1) PS = np.concatenate((PS, PSl[i + 1]), axis=1) fhSS = fhSSl[0] fhPS = fhPSl[0] for i in range(len(fhSSl) - 1): fhSS = np.concatenate((fhSS, fhSSl[i + 1]), axis=1) fhPS = np.concatenate((fhPS, fhPSl[i + 1]), axis=1) boot0 = np.concatenate((SS, PS, fhSS, fhPS), axis=1) # make gvars gvboot0 = c51.make_gvars(boot0) spec = gvboot0[:len(gvboot0) / 2] fh = gvboot0[len(gvboot0) / 2:] # R(t) Rl = fh / spec # dmeff [R(t+tau) - R(t)] / tau dM = (np.roll(Rl, -tau) - Rl) / float(tau) # plot data if params['flags']['plot_data']: for b in range(len(basak)): SS = SSl[b] PS = PSl[b] # raw correlator c51.scatter_plot(np.arange(len(SS[0])), c51.make_gvars(SS), '%s %s ss' % (basak[b], str(mq))) c51.scatter_plot(np.arange(len(PS[0])), c51.make_gvars(PS), '%s %s ps' % (basak[b], str(mq))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(c51.make_gvars(SS), 1, 'log') meff_ps = eff.effective_mass(c51.make_gvars(PS), 1, 'log') xlim = [2, len(meff_ss) / 3 - 2] ylim = c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ss)), meff_ss, '%s %s ss effective mass' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ps)), meff_ps, '%s %s ps effective mass' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) plt.show() # scaled correlator E0 = barp['priors'][1]['E0'][0] scaled_ss = eff.scaled_correlator(c51.make_gvars(SS), E0, phase=1.0) scaled_ps = eff.scaled_correlator(c51.make_gvars(PS), E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ss)), scaled_ss, '%s %s ss scaled correlator (take sqrt to get Z0_s)' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ps)), scaled_ps, '%s %s ps scaled correlator (divide by Z0_s to get Z0_p)' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) plt.show() if params['flags']['fit_twopt']: # data already concatenated previously # read priors prior = c51.baryon_priors(barp['priors'], basak, nstates) ## read trange trange = barp['trange'] ## fit boot0 #boot0gv = spec boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T, nstates) #boot0fit = c51.fitscript_v2(trange,T,boot0gv,boot0p,fitfcn.twopt_baryon_ss_ps,basak=params['gA_fit']['basak']) # fit two point for b in range(len(basak)): SSspec = (spec[:len(spec) / 2])[b * T:(b + 1) * T] PSspec = (spec[len(spec) / 2:])[b * T:(b + 1) * T] boot0gv = np.concatenate((SSspec, PSspec)) boot0fit = c51.fitscript_v2(trange, T, boot0gv, boot0p, fitfcn.twopt_baryon_ss_ps, basak=[basak[b]]) boot0p = boot0fit['rawoutput'][0].p if params['flags']['stability_plot']: c51.stability_plot(boot0fit, 'E0', '%s' % str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['E0'] = [ boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dE0'] = [ boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] blist = [] for b in params['gA_fit']['basak']: blist.append(b[2:]) blist.append(b[:2]) blist = np.unique(blist) for b in blist: tbl_print['%s_Z0s' % b] = [ boot0fit['pmean'][t]['%s_Z0s' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_dZ0s' % b] = [ boot0fit['psdev'][t]['%s_Z0s' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_Z0p' % b] = [ boot0fit['pmean'][t]['%s_Z0p' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_dZ0p' % b] = [ boot0fit['psdev'][t]['%s_Z0p' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['chi2/dof'] = np.array(boot0fit['chi2']) / np.array( boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = np.array( [[barp['meta_id']['SS'][i] for i in params['gA_fit']['basak']], [barp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() fit_id = c51.select_fitid('baryon', nstates=nstates, basak=params['gA_fit']['basak']) for t in range(len(boot0fit['tmin'])): init_id = psql.initid( c51.baryon_initpriors(barp['priors'], basak, nstates)) prior_id = psql.priorid( c51.dict_of_tuple_to_gvar( c51.baryon_priors(barp['priors'], basak, nstates))) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit, t) psql.submit_boot0('proton', corr_lst, fit_id, tmin, tmax, init_id, prior_id, result, params['flags']['update']) # plot fh correlator if params['flags']['plot_fhdata']: for b in range(len(basak)): # raw correlator dC_lambda/dlambda fhSS = fhSSl[b] fhPS = fhPSl[b] c51.scatter_plot(np.arange(len(fhSS[0])), c51.make_gvars(fhSS), '%s %s fh ss' % (basak[b], str(mq))) c51.scatter_plot(np.arange(len(fhPS[0])), c51.make_gvars(fhPS), '%s %s fh ps' % (basak[b], str(mq))) plt.show() # R(t) RSS = (Rl[:len(Rl) / 2])[b * len(Rl) / (2 * len(basak)):(b + 1) * len(Rl) / (2 * len(basak))] RPS = (Rl[len(Rl) / 2:])[b * len(Rl) / (2 * len(basak)):(b + 1) * len(Rl) / (2 * len(basak))] c51.scatter_plot(np.arange(len(RSS)), RSS, '%s %s R(t) ss' % (basak[b], str(mq))) c51.scatter_plot(np.arange(len(RPS)), RPS, '%s %s R(t) ps' % (basak[b], str(mq))) plt.show() # dmeff R(t+tau) - R(t) dMSS = (dM[:len(dM) / 2])[b * len(dM) / (2 * len(basak)):(b + 1) * len(dM) / (2 * len(basak))] dMPS = (dM[len(dM) / 2:])[b * len(dM) / (2 * len(basak)):(b + 1) * len(dM) / (2 * len(basak))] c51.scatter_plot( np.arange(len(dMSS)), dMSS, '%s %s [R(t+%s)-R(t)]/%s ss' % (basak[b], str(mq), str(tau), str(tau))) c51.scatter_plot( np.arange(len(dMPS)), dMPS, '%s %s [R(t+%s)-R(t)]/%s ps' % (basak[b], str(mq), str(tau), str(tau))) plt.show() # fit fh correlator if params['flags']['fit_gA']: # data concatenated previously # read priors prior = c51.fhbaryon_priors(barp['priors'], fhbp['priors'], basak, nstates) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T, nstates, tau) # read trange trange = barp['trange'] fhtrange = fhbp['trange'] # fit two point for b in range(len(basak)): SSspec = (spec[:len(spec) / 2])[b * T:(b + 1) * T] PSspec = (spec[len(spec) / 2:])[b * T:(b + 1) * T] boot0gv = np.concatenate((SSspec, PSspec)) boot0fit = c51.fitscript_v2(trange, T, boot0gv, boot0p, fitfcn.twopt_baryon_ss_ps, basak=[basak[b]]) boot0p = boot0fit['rawoutput'][0].p # fit fhcorr for b in range(len(basak)): SSdM = (dM[:len(dM) / 2])[b * T:(b + 1) * T] PSdM = (dM[len(dM) / 2:])[b * T:(b + 1) * T] boot0gv = np.concatenate((SSdM, PSdM)) boot0fit = c51.fitscript_v2(fhtrange, T, boot0gv, boot0p, fitfcn.fhbaryon_ss_ps, basak=[basak[b]]) boot0p = boot0fit['rawoutput'][0].p if params['flags']['stability_plot']: c51.stability_plot(boot0fit, 'E0', '%s' % str(mq)) c51.stability_plot(boot0fit, 'gA00', '%s' % str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] #tbl_print['fhtmin'] = boot0fit['fhtmin'] #tbl_print['fhtmax'] = boot0fit['fhtmax'] tbl_print['E0'] = [ boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dE0'] = [ boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] tbl_print['gA00'] = [ boot0fit['pmean'][t]['gA00'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dgA00'] = [ boot0fit['psdev'][t]['gA00'] for t in range(len(boot0fit['pmean'])) ] blist = [] for b in params['gA_fit']['basak']: blist.append(b[2:]) blist.append(b[:2]) blist = np.unique(blist) for b in blist: tbl_print['%s_Z0s' % b] = [ boot0fit['pmean'][t]['%s_Z0s' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_dZ0s' % b] = [ boot0fit['psdev'][t]['%s_Z0s' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_Z0p' % b] = [ boot0fit['pmean'][t]['%s_Z0p' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_dZ0p' % b] = [ boot0fit['psdev'][t]['%s_Z0p' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['chi2/dof'] = np.array(boot0fit['chi2']) / np.array( boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = np.array( [[fhbp['meta_id']['SS'][i] for i in params['gA_fit']['basak']], [fhbp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() fit_id = c51.select_fitid('fhbaryon', nstates=nstates, tau=params['gA_fit']['tau']) for t in range(len(boot0fit['tmin'])): baryon_corr_lst = np.array([[ barp['meta_id']['SS'][i] for i in params['gA_fit']['basak'] ], [ barp['meta_id']['PS'][i] for i in params['gA_fit']['basak'] ]]).flatten() baryon_fit_id = c51.select_fitid( 'baryon', nstates=nstates, basak=params['gA_fit']['basak']) baryon_tmin = trange['tmin'][0] baryon_tmax = trange['tmax'][0] baryon_init_id = psql.initid( c51.baryon_initpriors(barp['priors'], basak, nstates)) baryon_prior_id = psql.priorid( c51.dict_of_tuple_to_gvar( c51.baryon_priors(barp['priors'], basak, nstates))) baryon_id = psql.select_boot0("proton", baryon_corr_lst, baryon_fit_id, baryon_tmin, baryon_tmax, baryon_init_id, baryon_prior_id) init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit, t) psql.submit_fhboot0('fhproton', corr_lst, baryon_id, fit_id, tmin, tmax, init_id, prior_id, result, params['flags']['update'])
def gA_bs(psql, params): # read data mq = params['gA_fit']['ml'] basak = copy.deepcopy(params['gA_fit']['basak']) tag = params['gA_fit']['ens']['tag'] stream = params['gA_fit']['ens']['stream'] Nbs = params['gA_fit']['nbs'] Mbs = params['gA_fit']['mbs'] nstates = params['gA_fit']['nstates'] tau = params['gA_fit']['tau'] barp = params[tag]['proton'][mq] fhbp = params[tag]['gA'][mq] print "fitting for gA mq %s, basak %s, ens %s%s, Nbs %s, Mbs %s" % ( str(mq), str(basak), str(tag), str(stream), str(Nbs), str(Mbs)) # read two point SSl = np.array([ psql.data('dwhisq_corr_baryon', idx) for idx in [barp['meta_id']['SS'][i] for i in basak] ]) PSl = np.array([ psql.data('dwhisq_corr_baryon', idx) for idx in [barp['meta_id']['PS'][i] for i in basak] ]) T = len(SSl[0, 0]) # read fh correlator fhSSl = np.array([ psql.data('dwhisq_fhcorr_baryon', idx) for idx in [fhbp['meta_id']['SS'][i] for i in basak] ]) fhPSl = np.array([ psql.data('dwhisq_fhcorr_baryon', idx) for idx in [fhbp['meta_id']['PS'][i] for i in basak] ]) # concatenate and make gvars to preserve correlations SS = SSl[0] PS = PSl[0] for i in range(len(SSl) - 1): # loop over basak operators SS = np.concatenate((SS, SSl[i + 1]), axis=1) PS = np.concatenate((PS, PSl[i + 1]), axis=1) fhSS = fhSSl[0] fhPS = fhPSl[0] for i in range(len(fhSSl) - 1): fhSS = np.concatenate((fhSS, fhSSl[i + 1]), axis=1) fhPS = np.concatenate((fhPS, fhPSl[i + 1]), axis=1) boot0 = np.concatenate((SS, PS, fhSS, fhPS), axis=1) # make gvars gvboot0 = c51.make_gvars(boot0) spec = gvboot0[:len(gvboot0) / 2] fh = gvboot0[len(gvboot0) / 2:] # R(t) Rl = fh / spec # dmeff [R(t+tau) - R(t)] / tau #dM = Rl dM = (np.roll(Rl, -tau) - Rl) / float( tau ) #This is needed to plot gA correctly in the effective plots, but will give wrong data to fit with. # plot data if params['flags']['plot_data']: for b in range(len(basak)): SS = SSl[b] PS = PSl[b] # raw correlator c51.scatter_plot(np.arange(len(SS[0])), c51.make_gvars(SS), '%s %s ss' % (basak[b], str(mq))) c51.scatter_plot(np.arange(len(PS[0])), c51.make_gvars(PS), '%s %s ps' % (basak[b], str(mq))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(c51.make_gvars(SS), 1, 'log') meff_ps = eff.effective_mass(c51.make_gvars(PS), 1, 'log') xlim = [2, len(meff_ss) / 3 - 2] ylim = c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ss)), meff_ss, '%s %s ss effective mass' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ps)), meff_ps, '%s %s ps effective mass' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) plt.show() # scaled correlator E0 = barp['priors'][1]['E0'][0] scaled_ss = eff.scaled_correlator(c51.make_gvars(SS), E0, phase=1.0) scaled_ps = eff.scaled_correlator(c51.make_gvars(PS), E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ss)), scaled_ss, '%s %s ss scaled correlator (take sqrt to get Z0_s)' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot( np.arange(len(scaled_ps)), scaled_ps, '%s %s ps scaled correlator (divide by Z0_s to get Z0_p)' % (basak[b], str(mq)), xlim=xlim, ylim=ylim) plt.show() if params['flags']['fit_twopt']: # data already concatenated previously # read priors prior = c51.baryon_priors(barp['priors'], basak, nstates) ## read trange trange = barp['trange'] ## fit boot0 boot0gv = spec boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T, nstates) boot0fit = c51.fitscript_v2(trange, T, boot0gv, boot0p, fitfcn.twopt_baryon_ss_ps, basak=params['gA_fit']['basak']) if params['flags']['stability_plot']: c51.stability_plot(boot0fit, 'E0', '%s' % str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['E0'] = [ boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dE0'] = [ boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean'])) ] blist = [] for b in params['gA_fit']['basak']: blist.append(b[2:]) blist.append(b[:2]) blist = np.unique(blist) for b in blist: tbl_print['%s_Z0s' % b] = [ boot0fit['pmean'][t]['%s_Z0s' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_dZ0s' % b] = [ boot0fit['psdev'][t]['%s_Z0s' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_Z0p' % b] = [ boot0fit['pmean'][t]['%s_Z0p' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['%s_dZ0p' % b] = [ boot0fit['psdev'][t]['%s_Z0p' % b] for t in range(len(boot0fit['pmean'])) ] tbl_print['chi2/dof'] = np.array(boot0fit['chi2']) / np.array( boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = np.array( [[barp['meta_id']['SS'][i] for i in params['gA_fit']['basak']], [barp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() fit_id = c51.select_fitid('baryon', nstates=nstates, basak=params['gA_fit']['basak']) for t in range(len(boot0fit['tmin'])): init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit, t) psql.submit_boot0('proton', corr_lst, fit_id, tmin, tmax, init_id, prior_id, result, params['flags']['update']) # plot fh correlator if params['flags']['plot_fhdata']: for b in range(len(basak)): # raw correlator dC_lambda/dlambda fhSS = fhSSl[b] fhPS = fhPSl[b] c51.scatter_plot(np.arange(len(fhSS[0])), c51.make_gvars(fhSS), '%s %s fh ss' % (basak[b], str(mq))) c51.scatter_plot(np.arange(len(fhPS[0])), c51.make_gvars(fhPS), '%s %s fh ps' % (basak[b], str(mq))) plt.show() # R(t) RSS = (Rl[:len(Rl) / 2])[b * len(Rl) / (2 * len(basak)):(b + 1) * len(Rl) / (2 * len(basak))] RPS = (Rl[len(Rl) / 2:])[b * len(Rl) / (2 * len(basak)):(b + 1) * len(Rl) / (2 * len(basak))] c51.scatter_plot(np.arange(len(RSS)), RSS, '%s %s R(t) ss' % (basak[b], str(mq))) c51.scatter_plot(np.arange(len(RPS)), RPS, '%s %s R(t) ps' % (basak[b], str(mq))) plt.show() # dmeff R(t+tau) - R(t) dMSS = (dM[:len(dM) / 2])[b * len(dM) / (2 * len(basak)):(b + 1) * len(dM) / (2 * len(basak))] dMPS = (dM[len(dM) / 2:])[b * len(dM) / (2 * len(basak)):(b + 1) * len(dM) / (2 * len(basak))] xlim = [2, 15] ylim = [0.5, 2] #c51.find_yrange(dMSS, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(dMSS)), dMSS, '%s %s [R(t+%s)-R(t)]/%s ss' % (basak[b], str(mq), str(tau), str(tau)), xlim=xlim, ylim=ylim) ylim = [0.5, 2] #c51.find_yrange(dMPS, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(dMPS)), dMPS, '%s %s [R(t+%s)-R(t)]/%s ps' % (basak[b], str(mq), str(tau), str(tau)), xlim=xlim, ylim=ylim) if True: for i in range(len(dMSS)): print i, ',', dMSS[i].mean, ',', dMSS[i].sdev, ',', dMPS[ i].mean, ',', dMPS[i].sdev plt.show() # fit fh correlator if params['flags']['fit_gA']: # data concatenated previously # read priors prior = c51.fhbaryon_priors(barp['priors'], fhbp['priors'], basak, nstates) print prior # read trange trange = barp['trange'] fhtrange = fhbp['trange'] # fit boot0 boot0gv = np.concatenate((spec, dM)) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T, nstates, tau) boot0fit = c51.fitscript_v3(trange, fhtrange, T, boot0gv, boot0p, fitfcn.baryon_dm_ss_ps, basak=params['gA_fit']['basak']) print boot0fit['rawoutput'][0] #print {k: boot0fit['p0'][0][k] for k in [bk for n in range(nstates) for bk in barp['priors'][n+1].keys()]} if False: # plot R(t+1) - R(t) posterior = boot0fit['post'][0] x = np.arange(20) ssline, psline = fitfcn.baryon_rt_fitline(x, posterior) for i in range(len(ssline)): print x[i], ',', ssline[i].mean, ',', ssline[ i].sdev, ',', psline[i].mean, ',', psline[i].sdev if params['flags']['stability_plot']: c51.stability_plot(boot0fit, 'E0', '%s' % str(mq)) c51.stability_plot(boot0fit, 'gA00', '%s' % str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['fhtmin'] = boot0fit['fhtmin'] tbl_print['fhtmax'] = boot0fit['fhtmax'] #tbl_print['E0'] = [boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean']))] #tbl_print['dE0'] = [boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean']))] tbl_print['gA00'] = [ boot0fit['pmean'][t]['gA00'] for t in range(len(boot0fit['pmean'])) ] tbl_print['dgA00'] = [ boot0fit['psdev'][t]['gA00'] for t in range(len(boot0fit['pmean'])) ] #blist = [] #for b in params['gA_fit']['basak']: # blist.append(b[2:]) # blist.append(b[:2]) #blist = np.unique(blist) #for b in blist: # tbl_print['%s_Z0s' %b] = [boot0fit['pmean'][t]['%s_Z0s'%b] for t in range(len(boot0fit['pmean']))] # tbl_print['%s_dZ0s' %b] = [boot0fit['psdev'][t]['%s_Z0s' %b] for t in range(len(boot0fit['pmean']))] # tbl_print['%s_Z0p' %b] = [boot0fit['pmean'][t]['%s_Z0p' %b] for t in range(len(boot0fit['pmean']))] # tbl_print['%s_dZ0p' %b] = [boot0fit['psdev'][t]['%s_Z0p' %b] for t in range(len(boot0fit['pmean']))] tbl_print['chi2/dof'] = np.array(boot0fit['chi2']) / np.array( boot0fit['dof']) tbl_print['chi2'] = boot0fit['chi2'] tbl_print['chi2f'] = boot0fit['chi2f'] tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = np.array( [[fhbp['meta_id']['SS'][i] for i in params['gA_fit']['basak']], [fhbp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() fit_id = c51.select_fitid('fhbaryon', nstates=nstates, tau=params['gA_fit']['tau']) for t in range(len(boot0fit['tmin'])): baryon_corr_lst = np.array([[ barp['meta_id']['SS'][i] for i in params['gA_fit']['basak'] ], [ barp['meta_id']['PS'][i] for i in params['gA_fit']['basak'] ]]).flatten() baryon_fit_id = c51.select_fitid( 'baryon', nstates=nstates, basak=params['gA_fit']['basak']) baryon_tmin = trange['tmin'][0] baryon_tmax = trange['tmax'][0] baryon_p0 = { k: boot0fit['p0'][0][k] for k in [ bk for n in range(nstates) for bk in barp['priors'][n + 1].keys() ] } baryon_init_id = psql.initid(baryon_p0) baryon_prior_id = psql.priorid( c51.dict_of_tuple_to_gvar( c51.baryon_priors(barp['priors'], basak, nstates))) baryon_id = psql.select_boot0("proton", baryon_corr_lst, baryon_fit_id, baryon_tmin, baryon_tmax, baryon_init_id, baryon_prior_id) init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['fhtmin'][t] tmax = boot0fit['fhtmax'][t] result = c51.make_result(boot0fit, t) print tmin, tmax psql.submit_fhboot0('fhproton', corr_lst, baryon_id, fit_id, tmin, tmax, init_id, prior_id, result, params['flags']['update']) if params['flags']['csvformat']: for t in range(len(boot0fit['fhtmin'])): print nstates, ',', boot0fit['tmin'][t], ',', boot0fit['tmax'][ t], ',', boot0fit['fhtmin'][t], ',', boot0fit['fhtmax'][ t], ',', boot0fit['pmean'][t]['gA00'], ',', boot0fit[ 'psdev'][t]['gA00'], ',', ( np.array(boot0fit['chi2']) / np.array(boot0fit['dof']))[t], ',', ( np.array(boot0fit['chi2']) / np.array(boot0fit['chi2f']) )[t], ',', boot0fit['logGBF'][t]
dparams = yaml.load(f) dparams['decay_ward_fit']['ens'] = params['axial_fit']['ens'] dparams['decay_ward_fit']['ml'] = params['axial_fit']['ml'] dparams['decay_ward_fit']['ms'] = params['axial_fit']['ms'] f.close() # yaml entires fitmeta = params['axial_fit'] # log in sql psqlpwd = pwd.passwd() psql = sql.pysql('cchang5', 'cchang5', psqlpwd) # read data ll = read_axial(psql, params, 'axial_ll') ls = read_axial(psql, params, 'axial_ls') # read two-point pionSS, pionPS = decay.read_decay_bs(psql, dparams, 'pion') kaonSS, kaonPS = decay.read_decay_bs(psql, dparams, 'kaon') # axial_ll print np.shape(pionSS), np.shape(pionPS), np.shape(ll) if params['flags']['fit_axial_ll']: ll = np.concatenate((pionSS, pionPS, ll), axis=1) llgv = c51.make_gvars(ll) fpi = fit_axial(psql, params, dparams, 'axial_ll', llgv, flow=True) print fphi(fpi['axial_fit'].p['F0'], fpi['axial_fit'].p['E0']) # axial_ls if params['flags']['fit_axial_ls']: ls = np.concatenate((kaonSS, kaonPS, ls), axis=1) lsgv = c51.make_gvars(ls) fka = fit_axial(psql, params, dparams, 'axial_ls', lsgv, flow=True) print fphi(fka['axial_fit'].p['F0'], fka['axial_fit'].p['E0'])
def gA_bs(psql,params): # read data mq = params['gA_fit']['ml'] basak = copy.deepcopy(params['gA_fit']['basak']) tag = params['gA_fit']['ens']['tag'] stream = params['gA_fit']['ens']['stream'] Nbs = params['gA_fit']['nbs'] Mbs = params['gA_fit']['mbs'] nstates = params['gA_fit']['nstates'] tau = params['gA_fit']['tau'] barp = params[tag]['proton'][mq] fhbp = params[tag]['gA'][mq] print "fitting for gA mq %s, basak %s, ens %s%s, Nbs %s, Mbs %s" %(str(mq),str(basak),str(tag),str(stream),str(Nbs),str(Mbs)) # read two point SSl = np.array([psql.data('dwhisq_corr_baryon',idx) for idx in [barp['meta_id']['SS'][i] for i in basak]]) PSl = np.array([psql.data('dwhisq_corr_baryon',idx) for idx in [barp['meta_id']['PS'][i] for i in basak]]) T = len(SSl[0,0]) # read fh correlator fhSSl = np.array([psql.data('dwhisq_fhcorr_baryon',idx) for idx in [fhbp['meta_id']['SS'][i] for i in basak]]) fhPSl = np.array([psql.data('dwhisq_fhcorr_baryon',idx) for idx in [fhbp['meta_id']['PS'][i] for i in basak]]) # concatenate and make gvars to preserve correlations SS = SSl[0] PS = PSl[0] for i in range(len(SSl)-1): # loop over basak operators SS = np.concatenate((SS,SSl[i+1]),axis=1) PS = np.concatenate((PS,PSl[i+1]),axis=1) fhSS = fhSSl[0] fhPS = fhPSl[0] for i in range(len(fhSSl)-1): fhSS = np.concatenate((fhSS,fhSSl[i+1]),axis=1) fhPS = np.concatenate((fhPS,fhPSl[i+1]),axis=1) boot0 = np.concatenate((SS, PS, fhSS, fhPS), axis=1) # make gvars gvboot0 = c51.make_gvars(boot0) spec = gvboot0[:len(gvboot0)/2] fh = gvboot0[len(gvboot0)/2:] # R(t) Rl = fh/spec # dmeff [R(t+tau) - R(t)] / tau dM = (np.roll(Rl,-tau)-Rl)/float(tau) # plot data if params['flags']['plot_data']: for b in range(len(basak)): SS = SSl[b] PS = PSl[b] # raw correlator c51.scatter_plot(np.arange(len(SS[0])), c51.make_gvars(SS), '%s %s ss' %(basak[b],str(mq))) c51.scatter_plot(np.arange(len(PS[0])), c51.make_gvars(PS), '%s %s ps' %(basak[b],str(mq))) plt.show() # effective mass eff = c51.effective_plots(T) meff_ss = eff.effective_mass(c51.make_gvars(SS), 1, 'log') meff_ps = eff.effective_mass(c51.make_gvars(PS), 1, 'log') xlim = [2, len(meff_ss)/3-2] ylim = c51.find_yrange(meff_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ss)), meff_ss, '%s %s ss effective mass' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) ylim = c51.find_yrange(meff_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(meff_ps)), meff_ps, '%s %s ps effective mass' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) plt.show() # scaled correlator E0 = barp['priors'][1]['E0'][0] scaled_ss = eff.scaled_correlator(c51.make_gvars(SS), E0, phase=1.0) scaled_ps = eff.scaled_correlator(c51.make_gvars(PS), E0, phase=1.0) ylim = c51.find_yrange(scaled_ss, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ss)), scaled_ss, '%s %s ss scaled correlator (take sqrt to get Z0_s)' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) ylim = c51.find_yrange(scaled_ps, xlim[0], xlim[1]) c51.scatter_plot(np.arange(len(scaled_ps)), scaled_ps, '%s %s ps scaled correlator (divide by Z0_s to get Z0_p)' %(basak[b],str(mq)), xlim = xlim, ylim = ylim) plt.show() if params['flags']['fit_twopt']: # data already concatenated previously # read priors prior = c51.baryon_priors(barp['priors'],basak,nstates) ## read trange trange = barp['trange'] ## fit boot0 boot0gv = spec boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T,nstates) boot0fit = c51.fitscript_v2(trange,T,boot0gv,boot0p,fitfcn.twopt_baryon_ss_ps,basak=params['gA_fit']['basak']) if params['flags']['stability_plot']: c51.stability_plot(boot0fit,'E0','%s' %str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['E0'] = [boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean']))] tbl_print['dE0'] = [boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean']))] blist = [] for b in params['gA_fit']['basak']: blist.append(b[2:]) blist.append(b[:2]) blist = np.unique(blist) for b in blist: tbl_print['%s_Z0s' %b] = [boot0fit['pmean'][t]['%s_Z0s'%b] for t in range(len(boot0fit['pmean']))] tbl_print['%s_dZ0s' %b] = [boot0fit['psdev'][t]['%s_Z0s' %b] for t in range(len(boot0fit['pmean']))] tbl_print['%s_Z0p' %b] = [boot0fit['pmean'][t]['%s_Z0p' %b] for t in range(len(boot0fit['pmean']))] tbl_print['%s_dZ0p' %b] = [boot0fit['psdev'][t]['%s_Z0p' %b] for t in range(len(boot0fit['pmean']))] tbl_print['chi2/dof'] = np.array(boot0fit['chi2'])/np.array(boot0fit['dof']) tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = np.array([[barp['meta_id']['SS'][i] for i in params['gA_fit']['basak']],[barp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() fit_id = c51.select_fitid('baryon',nstates=nstates,basak=params['gA_fit']['basak']) for t in range(len(boot0fit['tmin'])): init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['tmin'][t] tmax = boot0fit['tmax'][t] result = c51.make_result(boot0fit,t) psql.submit_boot0('proton',corr_lst,fit_id,tmin,tmax,init_id,prior_id,result,params['flags']['update']) # plot fh correlator if params['flags']['plot_fhdata']: for b in range(len(basak)): # raw correlator dC_lambda/dlambda fhSS = fhSSl[b] fhPS = fhPSl[b] c51.scatter_plot(np.arange(len(fhSS[0])), c51.make_gvars(fhSS), '%s %s fh ss' %(basak[b],str(mq))) c51.scatter_plot(np.arange(len(fhPS[0])), c51.make_gvars(fhPS), '%s %s fh ps' %(basak[b],str(mq))) plt.show() # R(t) RSS = (Rl[:len(Rl)/2])[b*len(Rl)/(2*len(basak)):(b+1)*len(Rl)/(2*len(basak))] RPS = (Rl[len(Rl)/2:])[b*len(Rl)/(2*len(basak)):(b+1)*len(Rl)/(2*len(basak))] c51.scatter_plot(np.arange(len(RSS)), RSS, '%s %s R(t) ss' %(basak[b],str(mq))) c51.scatter_plot(np.arange(len(RPS)), RPS, '%s %s R(t) ps' %(basak[b],str(mq))) plt.show() # dmeff R(t+tau) - R(t) dMSS = (dM[:len(dM)/2])[b*len(dM)/(2*len(basak)):(b+1)*len(dM)/(2*len(basak))] dMPS = (dM[len(dM)/2:])[b*len(dM)/(2*len(basak)):(b+1)*len(dM)/(2*len(basak))] c51.scatter_plot(np.arange(len(dMSS)), dMSS, '%s %s [R(t+%s)-R(t)]/%s ss' %(basak[b],str(mq),str(tau),str(tau))) c51.scatter_plot(np.arange(len(dMPS)), dMPS, '%s %s [R(t+%s)-R(t)]/%s ps' %(basak[b],str(mq),str(tau),str(tau))) plt.show() # fit fh correlator if params['flags']['fit_gA']: # data concatenated previously # read priors prior = c51.fhbaryon_priors(barp['priors'],fhbp['priors'],basak,nstates) print prior # read trange trange = barp['trange'] fhtrange = fhbp['trange'] # fit boot0 boot0gv = np.concatenate((spec, dM)) boot0p = c51.dict_of_tuple_to_gvar(prior) fitfcn = c51.fit_function(T,nstates,tau) boot0fit = c51.fitscript_v3(trange,fhtrange,T,boot0gv,boot0p,fitfcn.baryon_fhbaryon_ss_ps,basak=params['gA_fit']['basak']) #print {k: boot0fit['p0'][0][k] for k in [bk for n in range(nstates) for bk in barp['priors'][n+1].keys()]} if params['flags']['stability_plot']: c51.stability_plot(boot0fit,'E0','%s' %str(mq)) c51.stability_plot(boot0fit,'gA00','%s' %str(mq)) plt.show() if params['flags']['tabulate']: tbl_print = collections.OrderedDict() tbl_print['tmin'] = boot0fit['tmin'] tbl_print['tmax'] = boot0fit['tmax'] tbl_print['fhtmin'] = boot0fit['fhtmin'] tbl_print['fhtmax'] = boot0fit['fhtmax'] #tbl_print['E0'] = [boot0fit['pmean'][t]['E0'] for t in range(len(boot0fit['pmean']))] #tbl_print['dE0'] = [boot0fit['psdev'][t]['E0'] for t in range(len(boot0fit['pmean']))] tbl_print['gA00'] = [boot0fit['pmean'][t]['gA00'] for t in range(len(boot0fit['pmean']))] tbl_print['dgA00'] = [boot0fit['psdev'][t]['gA00'] for t in range(len(boot0fit['pmean']))] #blist = [] #for b in params['gA_fit']['basak']: # blist.append(b[2:]) # blist.append(b[:2]) #blist = np.unique(blist) #for b in blist: # tbl_print['%s_Z0s' %b] = [boot0fit['pmean'][t]['%s_Z0s'%b] for t in range(len(boot0fit['pmean']))] # tbl_print['%s_dZ0s' %b] = [boot0fit['psdev'][t]['%s_Z0s' %b] for t in range(len(boot0fit['pmean']))] # tbl_print['%s_Z0p' %b] = [boot0fit['pmean'][t]['%s_Z0p' %b] for t in range(len(boot0fit['pmean']))] # tbl_print['%s_dZ0p' %b] = [boot0fit['psdev'][t]['%s_Z0p' %b] for t in range(len(boot0fit['pmean']))] tbl_print['chi2/dof'] = np.array(boot0fit['chi2'])/np.array(boot0fit['dof']) tbl_print['chi2'] = boot0fit['chi2'] tbl_print['chi2f'] = boot0fit['chi2f'] tbl_print['logGBF'] = boot0fit['logGBF'] print tabulate(tbl_print, headers='keys') # submit boot0 to db if params['flags']['write']: corr_lst = np.array([[fhbp['meta_id']['SS'][i] for i in params['gA_fit']['basak']],[fhbp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() fit_id = c51.select_fitid('fhbaryon',nstates=nstates,tau=params['gA_fit']['tau']) for t in range(len(boot0fit['tmin'])): baryon_corr_lst = np.array([[barp['meta_id']['SS'][i] for i in params['gA_fit']['basak']],[barp['meta_id']['PS'][i] for i in params['gA_fit']['basak']]]).flatten() baryon_fit_id = c51.select_fitid('baryon',nstates=nstates,basak=params['gA_fit']['basak']) baryon_tmin = trange['tmin'][0] baryon_tmax = trange['tmax'][0] baryon_p0 = {k: boot0fit['p0'][0][k] for k in [bk for n in range(nstates) for bk in barp['priors'][n+1].keys()]} baryon_init_id = psql.initid(baryon_p0) baryon_prior_id = psql.priorid(c51.dict_of_tuple_to_gvar(c51.baryon_priors(barp['priors'],basak,nstates))) baryon_id = psql.select_boot0("proton", baryon_corr_lst, baryon_fit_id, baryon_tmin, baryon_tmax, baryon_init_id, baryon_prior_id) init_id = psql.initid(boot0fit['p0'][t]) prior_id = psql.priorid(boot0fit['prior'][t]) tmin = boot0fit['fhtmin'][t] tmax = boot0fit['fhtmax'][t] result = c51.make_result(boot0fit,t) print tmin, tmax psql.submit_fhboot0('fhproton',corr_lst,baryon_id,fit_id,tmin,tmax,init_id,prior_id,result,params['flags']['update']) if params['flags']['csvformat']: for t in range(len(boot0fit['fhtmin'])): print nstates,',',boot0fit['tmin'][t],',',boot0fit['tmax'][t],',',boot0fit['fhtmin'][t],',',boot0fit['fhtmax'][t],',',boot0fit['pmean'][t]['gA00'],',',boot0fit['psdev'][t]['gA00'],',',(np.array(boot0fit['chi2'])/np.array(boot0fit['dof']))[t],',',(np.array(boot0fit['chi2'])/np.array(boot0fit['chi2f']))[t],',',boot0fit['logGBF'][t]
def concatgv(corr1, corr2): concat = np.concatenate((corr1, corr2), axis=1) concat_gv = c51.make_gvars(concat) corr1 = concat_gv[:len(concat_gv) / 2] corr2 = concat_gv[len(concat_gv) / 2:] return corr1, corr2
if __name__=='__main__': # read master f = open('./mixed.yml','r') params = yaml.load(f) f.close() # yaml entires fitmeta = params['mixed_fit'] # log in sql psqlpwd = pwd.passwd() psql = sql.pysql('cchang5','cchang5',psqlpwd) ## bootstrap decay constant # phi_ju dataju = read_mixed_meson(psql,params,'phi_ju') gvdataju = c51.make_gvars(dataju) resp = fit_mixed_meson(psql,params,'phi_ju', gvdataju) print resp['mixed_meson_fit'] ### phi_js #data = read_mixed_meson(psql,params,'phi_js') #data = data[:200] #datagv = c51.make_gvars(data) #resp = fit_mixed_meson(psql,params,'phi_js', datagv) ### phi_ru #data = read_mixed_meson(psql,params,'phi_ru') #data = data[:200] #datagv = c51.make_gvars(data) #resp = fit_mixed_meson(psql,params,'phi_ru', datagv) ## phi_rs #data = read_mixed_meson(psql,params,'phi_rs') #data = data[:200]
ps_gAs = np.concatenate((ps_gAs, ps_gAt[i]), axis=1) # index # meson x_ss_pion = np.arange(len(ss_pion[0])) x_ps_pion = np.arange(len(ps_pion[0])) + len(x_ss_pion) # nucleon x_N = np.arange( len(ss_N[0]) + len(ps_N[0]) + len(ss_Ns[0]) + len(ps_Ns[0])) + len(x_ss_pion) + len(x_ps_pion) x_ss_N = np.arange(len(ss_N[0])) + len(x_ss_pion) + len(x_ps_pion) x_ps_N = np.arange(len( ps_N[0])) + len(x_ss_pion) + len(x_ps_pion) + len(x_ss_N) x_ss_Ns = np.arange(len(ss_Ns[0])) + len(x_ss_pion) + len(x_ps_pion) + len( x_ss_N) + len(x_ps_N) x_ps_Ns = np.arange(len(ps_Ns[0])) + len(x_ss_pion) + len(x_ps_pion) + len( x_ss_N) + len(x_ps_N) + len(x_ss_Ns) # concatenate data data = c51.make_gvars( np.concatenate((ss_pion, ps_pion, ss_N, ps_N, ss_Ns, ps_Ns), axis=1)) # separate data gvss_pion = data[x_ss_pion] gvps_pion = data[x_ps_pion] gv_N = data[x_N] # meson pifit = decay.fit_decay_bs(psql, decay_params, 'pion', gvss_pion, gvps_pion) print pifit['meson_fit'] prior = {'Epi': pifit['meson_fit'].p['E0']} # crazy proton fit sighz print prior