Exemple #1
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']
    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]
Exemple #2
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,
Exemple #3
0
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]}
Exemple #4
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
Exemple #5
0
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]}
Exemple #6
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:
Exemple #8
0
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
Exemple #10
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
Exemple #11
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
Exemple #12
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'])
Exemple #13
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]
    ])
    # 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'])
Exemple #15
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]])
    # 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]
 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:
Exemple #17
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
Exemple #18
0
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]
Exemple #19
0
        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