コード例 #1
0
def main():
    data = make_data('etas-Ds.data') 
    models = make_models() 
    prior = make_prior(8)
    fitter = CorrFitter(models=make_models())
    p0 = None
    for N in [1, 2, 3, 4]:  
        print(30 * '=', 'nterm =', N)
        prior = make_prior(N)               
        fit = fitter.chained_lsqfit(data=data, prior=prior, p0=p0) 
        p0 = fit.pmean
    print_results(fit, prior, data)  
    if DISPLAYPLOTS:
            fitter.display_plots()
    # polish fit
    print('--- polish fit')
    fit = fitter.lsqfit(data=data, prior=fit.p, svdcut=1e-4)
    print_results(fit, prior, data)  
    if DISPLAYPLOTS:
            fitter.display_plots()
    # fit with structured models
    print('--- refit with structured models')
    models = [models[:2]] + models[2:]  
    fitter = CorrFitter(models=make_models())
    fit = fitter.chained_lsqfit(data=data, prior=prior, p0=p0)
    # polish
    print('--- polish fit')
    fit = fitter.lsqfit(data=data, prior=fit.p, svdcut=1e-4)
    print_results(fit, prior, data)
コード例 #2
0
def doProcess(tmin,tmax,data=data,mdef=mdef):
  ## -- do a single fit ... set up for parallelizing
  for key in data:
    mdef[key]['tfit'] = range(tmin,tmax)
  models = make_models(data=data,lkey=df.lkey,mdef=mdef)
  pdict0 = utf.get_prior_dict(df.define_prior,
   df.define_prior['nkey'],df.define_prior['okey'],df.num_nst,df.num_ost)
  prior = make_prior(models,prior_dict=pdict0,nst=df.num_nst,ost=df.num_ost)
  fitter = CorrFitter(models=models,maxit=df.maxit)
  #try: ## -- if catching value error, just exit
  ## -- p0 = initial values (dictionary)
  if df.do_initial:
   try:
    p0={}
    for key in df.define_init:
     eokey = utf.get_evenodd(key)
     if eokey == 'o':
      p0[key] = df.define_init[key][:df.num_ost]
     else:
      p0[key] = df.define_init[key][:df.num_nst]
    fit = fitter.lsqfit(data=data,prior=prior,p0=p0,svdcut=df.svdcut)
   except KeyError:
    print "Could not use initial point definitions"
    fit = fitter.lsqfit(data=data,prior=prior,svdcut=df.svdcut)
  else:
   fit = fitter.lsqfit(data=data,prior=prior,svdcut=df.svdcut)
  ## --
  print_fit(fit,prior)
  print_error_budget(fit)
  save_data('fit-timevary/fit_'+str(tmin)+'_'+str(tmax)+'.out',fit,data)
コード例 #3
0
ファイル: allana.py プロジェクト: gray95/lattice-analysis
def single_fit(tag_, tstar, CHARGED=False):

    w0 = gv.gvar('0.1715(9)')
    w0overa = gv.gvar('1.1367(5)')
    ZV = gv.gvar('0.9837(20)')
    ZVqed = gv.gvar('0.999544(14)') * ZV
    hbarc = 0.197326968
    a_vcoarse = (w0 / w0overa) / hbarc

    if CHARGED == True:
        ZV = ZVqed
    else:
        ZV = ZV
    dataf = dsetavg[tag_]
    tmin = 2

    # replace data after t* with fit
    #  t* can be changed

    fitter = CorrFitter(models=build_models(tmin, 48, tag_))
    svdcut = 1e-6

    for nexp in [4]:
        print('=== nexp =', nexp, ' tmin = ', tmin, ' svdcut = ', svdcut)
        fit = fitter.lsqfit(data=dsetavg,
                            prior=build_prior(nexp),
                            p0=pfile,
                            maxit=10000,
                            svdcut=svdcut)  #,fitter='gsl_multifit')
        print(fit)

    newdata = dataf[:tstar]
    #print("Before append/concatenate")
    #print(newdata, len(newdata))
    fitdata = Corr2(datatag=tag_,
                    tdata=range(48),
                    a=('a:rho', 'a:rhoo'),
                    b=('b:rho', 'b:rhoo'),
                    dE=('dE:rho', 'dE:rhoo'),
                    s=(1, -1)).fitfcn(fit.p)
    newdata = np.append(np.array(newdata), fitdata[tstar:])
    #print(fitdata[tstar:], fitdata[tstar:].size)
    #print("After append/concatenate")
    #print(newdata, newdata.size)
    #sys.exit(0)

    # use Z_V from appendix of 1909.00756; divided by u_0 to make the 1-link currents used match
    vpol = g2.fourier_vacpol(newdata, Z=ZV, ainv=1 / a_vcoarse, periodic=False)

    a_mu = g2.a_mu(vpol, Q=1. / 3.)

    print('a_mu:', a_mu, "for", tag_, "t* = ", tstar)

    return a_mu
コード例 #4
0
def main():
    data, basis = make_data('etab.data') 
    fitter = CorrFitter(models=make_models(basis))
    p0 = None
    for N in range(1, 10):  
        print(30 * '=', 'nterm =', N)
        prior = make_prior(N, basis)          
        fit = fitter.lsqfit(data=data, prior=prior, p0=p0, svdcut=0.0004) 
        p0 = fit.pmean
    print_results(fit, basis, prior, data) 
    if DISPLAYPLOTS:
        fitter.display_plots()
コード例 #5
0
def main():
    data = make_data('etas-Ds.data') 
    models = make_models()   
    prior = make_prior(8)
    fitter = CorrFitter(models=make_models(), ratio=False)                  # 1
    p0 = None
    for N in [1, 2]:                                                        # 2
        print(30 * '=', 'nterm =', N)
        prior = make_prior(8)                                               # 3          
        fit = fitter.lsqfit(data=data, prior=prior, p0=p0, nterm=(N, N))    # 4 
        p0 = fit.pmean
    print_results(fit, prior, data)  
    if DISPLAYPLOTS:
        fitter.display_plots()
    test_fit(fitter, 'etas-Ds.data')
コード例 #6
0
def doProcess(nst,ost,n3st=1,o3st=1,data=dall):
  ## -- do a single fit ... set up for parallelizing
  if df.do_2pt and not(df.do_3pt):
   pdict3 = utf.get_prior_dict(df.define_prior,
    df.define_prior['nkey'],df.define_prior['okey'],nst,ost,do_v_symm=True)
   models = make_models(data=dall,lkey=df.lkey)
   prior  = make_prior(models,prior_dict=pdict3,nst=nst,ost=ost)
   fitter = CorrFitter(models=models,maxit=df.maxit)
   if df.do_init2:
     init={}
     if argsin['override_init']:
      init = make_init_from_fit_file_3pt(models,'fit_dict')
     else:
      for key in df.define_init:
        ## -- does this interfere with underscore tags?
        eokey = utf.get_evenodd(key)
        if eokey == 'n':
         init[key] = df.define_init[key][:nst]
        elif eokey == 'o':
         init[key] = df.define_init[key][:ost]
   else:
     init=None
  else:
   pdict = utf.get_prior_dict(df.define_prior,
    df.define_prior['nkey'],df.define_prior['okey'],
    nst,ost,do_v_symm=True)
   pdict3 = utf.get_prior_dict(df.define_prior_3pt,
    df.define_prior_3pt['nkey'],df.define_prior_3pt['okey'],
    nst,ost,df.define_prior_3pt['vkey'],nst,ost,do_v_symm=True)
   for key in pdict:
    pdict3[key] = pdict[key]
   models2 = make_models(data=dall,lkey=df.lkey,use_advanced=True)
   #models3 = make_models_3pt(data=dall,lkey=df.lkey3)
   models3 = make_models_advanced(data=dall,lkey=df.lkey3)
   models = list()
   for model in models2:
    models.append(model)
   for model in models3:
    models.append(model)
   #prior2 = make_prior(models2,prior_dict=pdict,nst=nst,ost=ost)
   #prior3 = make_prior_3pt(models3,prior_dict=pdict3,nst=nst,ost=ost,n3st=nst,o3st=ost)
   #priors = gv.BufferDict()
   #for key in prior2:
   # priors[key] = prior2[key]
   #for key in prior3:
   # priors[key] = prior3[key]
   priorsa = truncate_prior_states(df.define_prior_adv,
    nst,ost,n3st,o3st)
   fitter = CorrFitter(models=models,maxit=df.maxit)
   if df.do_init3:
     #init3={}
     #if argsin['override_init']:
     init = make_adv_init_from_fit_file_3pt(models3,'fit_adv_'+irrepStr+'_3pt',\
      fresh_overlap=True,fresh_amplitude=True)
   else:
     init=None
   pass 
  #fit = fitter.lsqfit(data=dall,prior=priors,p0=init,svdcut=df.svdcut)
  #print priorsa
  #print init
  fit = fitter.lsqfit(data=dall,prior=priorsa,p0=init,svdcut=df.svdcut)
  ## --
  print_fit(fit,priorsa,do_v_symm=True)
  print_error_budget(fit)
  #save_data('fit-stability/fit_'+str(nst)+'_'+str(ost)+'.out',fit,dall)
  if df.do_2pt and not(df.do_3pt):
   save_init_from_fit(fit,'fit-adv/fit_'+str(nst)+'_'+str(ost)+'.py',do_v_symm=True)
  else:
   save_init_from_fit(fit,'fit-adv/fit_n'+str(nst)+'_o'+str(ost)\
    +'_ng'+str(n3st)+'_og'+str(o3st)+'.py',do_v_symm=True)
コード例 #7
0
def main(tstr):
    dfile = '/home/gray/Desktop/lattice-analysis/data/qed/coarse/rho_coarse_ms.gpl'

    madedata = make_data(
        dfile, norm=3.)  # factor of 3 for colour (missed in extraction)
    data = madedata[0]
    T = data.size / len(madedata[1])  # extent in time dir
    tag01 = madedata[1][0]
    tag02 = madedata[1][1]
    print("time extent is: ", T)
    print(dfile)
    suggestedsvdcut = madedata[2]

    pfile = None  #"vector_fit.p" # last fit

    tmin = 2
    svdcut = 1e-10  #suggestedsvdcut

    fitter = CorrFitter(models=build_models(tag01, tag02, tmin, T))
    for nexp in [2, 3, 4, 5]:
        fit = fitter.lsqfit(data=data,
                            prior=build_prior(nexp),
                            p0=None,
                            maxit=20000,
                            svdcut=svdcut,
                            add_svdnoise=False)
    print(fit)

    tdata = range(T)
    tfit = range(tmin, T + 1 - tmin)  # all ts
    tp = T

    tstar = tstr

    tcut = 200

    newdata = {}

    tags = ['nocharge', 'charge']
    newdata[tags[0]] = data[tag01][:tstar + 1]
    newdata[tags[1]] = data[tag02][:tstar + 1]

    # do replacement of data with fit

    fitdatauncharged = Corr2(datatag=tags[0],
                             tdata=range(T),
                             a=('a1:vec:s', 'ao:vec:s'),
                             b=('a1:vec:s', 'ao:vec:s'),
                             dE=('dE:vec:s', 'dEo:vec:s'),
                             s=(1., -1.)).fitfcn(fit.p)
    for index in range(T):
        if index >= tcut:
            newdata[tags[0]] = np.append(newdata[tags[0]], 0.)
        elif index > tstar:
            newdata[tags[0]] = np.append(newdata[tags[0]],
                                         fitdatauncharged[index])

    fitdatachargeddown = Corr2(datatag=tags[1],
                               tdata=range(T),
                               a=('a1:vec:qed:s', 'ao:vec:qed:s'),
                               b=('a1:vec:qed:s', 'ao:vec:qed:s'),
                               dE=('dE:vec:qed:s', 'dEo:vec:qed:s'),
                               s=(1., -1.)).fitfcn(fit.p)
    for index in range(T):
        if index >= tcut:
            newdata[tags[1]] = np.append(newdata[tags[1]], 0.)
        elif index > tstar:
            newdata[tags[1]] = np.append(newdata[tags[1]],
                                         fitdatachargeddown[index])

    print('THIS IS THE INFORMATION CENTRE')
    print(len(newdata[tags[0]]), len(newdata[tags[1]]))
    print('tmin, tstar', tmin, tstar)

    vpol = g2.fourier_vacpol(newdata[tags[0]],
                             Z=ZV,
                             ainv=1 / a,
                             periodic=False)
    unchargedamus = g2.a_mu(vpol, 1 / 3.)

    vpol = g2.fourier_vacpol(newdata[tags[1]],
                             Z=ZVqed,
                             ainv=1 / a,
                             periodic=False)
    chargedamus = g2.a_mu(vpol, 1 / 3.)

    amus_rt = chargedamus / unchargedamus
    amu_diff = chargedamus - unchargedamus
    amu_diff_rt = amu_diff / unchargedamus

    print(
        '[s] a_mu[QCD+QED]{0:>20}\n|a_mu[QCD+QED]-a_mu[QCD]{1:>20}\n|a_mu/a_mu {2:>20}'
        .format(chargedamus, amu_diff, amu_diff_rt))
コード例 #8
0
      #init3[key] = np.resize(df.define_init_3pt[key],(df.num_ost_3pt,df.num_nst_3pt))
      pass
     elif eokey == 'n':
      init3[key] = df.define_init_3pt[key][:df.num_nst]
     elif eokey == 'o':
      init3[key] = df.define_init_3pt[key][:df.num_ost]
else:
  init3=None
pass 

fitter2 = CorrFitter(models=models2,maxit=df.maxit)
fitter3 = CorrFitter(models=models,maxit=df.maxit)
fitterc = CorrFitter(models=[models2,models],maxit=df.maxit)
if df.do_2pt:
 print "starting 2pt fit..."
 fit2 = fitter2.lsqfit(data=dall,prior=priors2,p0=init2,svdcut=df.svdcut)
 ## -- fits take a long time, so print prematurely
 print_fit(fit2,priors2)
if df.do_3pt:
 print "starting 3pt fit..."
 fit3 = fitter3.lsqfit(data=dall,prior=priors,p0=init3,svdcut=df.svdcut)
else:
 print "Ignoring 3pt fit!"
 fit3=None

#fit3 = fitter3.lsqfit(data=dall,prior=priors,svdcut=df.svdcut)
print fmt_reduced_chi2(fit3)
print_fit(fit3,priors,df.do_v_symmetric)
#save_data('./test.fit.out',fit,dall)

print "starting chained fit..."
コード例 #9
0
ファイル: control.py プロジェクト: asmeyer2012/cfit-control
fitter = CorrFitter(models=models,maxit=df.maxit)
#fit = fitter.chained_lsqfit(data=data, prior=prior)
#fit = fitter.lsqfit(data=data, prior=fit.p)
#fit = fitter.lsqfit(data=data,prior=prior,p0="test.init.out",svdcut=df.svdcut)
if df.do_2pt:
  if df.do_initial:
   try:
    p0={}
    for key in df.define_init:
     eokey = utf.get_evenodd(key)
     if eokey == 'o':
      p0[key] = df.define_init[key][:df.num_ost]
     else:
      p0[key] = df.define_init[key][:df.num_nst]
    fit = fitter.lsqfit(data=data,prior=prior,p0=p0,svdcut=df.svdcut)
   except KeyError:
    print "Could not use initial point definitions"
    fit = fitter.lsqfit(data=data,prior=prior,svdcut=df.svdcut)
  else:
   fit = fitter.lsqfit(data=data,prior=prior,svdcut=df.svdcut)
  #bs_avg = make_bootstrap(fitter,dset,df.mdp.n_bs)
  print_fit(fit,prior)
  print_error_budget(fit)
  #save_data(mdp.output_path +'/'+ mdp.fit_fname,fit,data)
  save_data('./test.fit.out',fit,data)
  save_prior_from_fit(df.define_prior,df.define_model,fit,"test.prior.out",
    round_e=2,round_a=1,preserve_e_widths=True,preserve_a_widths=True)
  
  if df.do_plot:
   if df.do_default_plot:
コード例 #10
0
def doProcess(nst,ost,n3st=1,o3st=1,data=dall):
  ## -- do a single fit ... set up for parallelizing
  if df.do_2pt and not(df.do_3pt):
   pdict3 = utf.get_prior_dict(df.define_prior,
    df.define_prior['nkey'],df.define_prior['okey'],nst,ost)
   models = make_models(data=dall,lkey=df.lkey)
   prior  = make_prior(models,prior_dict=pdict3,nst=nst,ost=ost)
   fitter = CorrFitter(models=models,maxit=df.maxit)
   if df.do_init2:
     init={}
     if argsin['override_init']:
      init = make_init_from_fit_file_3pt(models,'fit_dict'+irrepStr+'_3pt')
     else:
      for key in df.define_init:
        eokey = utf.get_evenodd(key)
        if eokey == 'n':
         init[key] = df.define_init[key][:nst]
        elif eokey == 'o':
         init[key] = df.define_init[key][:ost]
   else:
     init=None
  else:
   pdict = utf.get_prior_dict(df.define_prior,
    df.define_prior['nkey'],df.define_prior['okey'],
    nst,ost)
   pdict3 = utf.get_prior_dict(df.define_prior_3pt,
    df.define_prior_3pt['nkey'],df.define_prior_3pt['okey'],
    nst,ost,df.define_prior_3pt['vkey'],n3st,o3st)
   for key in pdict:
    pdict3[key] = pdict[key]
   models2 = make_models(data=dall,lkey=df.lkey)
   models3 = make_models_3pt(data=dall,lkey=df.lkey3)
   models = list()
   for model in models2:
    models.append(model)
   for model in models3:
    models.append(model)
   #print df.lkey+df.lkey3
   #for model in models:
   # model.all_datatags
   #raise ValueError("test")
   prior2 = make_prior(models2,prior_dict=pdict,nst=nst,ost=ost)
   prior3 = make_prior_3pt(models3,prior_dict=pdict3,nst=nst,ost=ost,n3st=n3st,o3st=o3st)
   priors = gv.BufferDict()
   for key in prior2:
    priors[key] = prior2[key]
   for key in prior3:
    priors[key] = prior3[key]
   fitter = CorrFitter(models=models,maxit=df.maxit)
   if df.do_init3:
     init={}
     if argsin['override_init']:
      init = make_init_from_fit_file_3pt(models,'fit_dict')
     else:
      for key in df.define_init_3pt:
        eokey = utf.get_evenodd(key)
        if eokey == 'nn':
         init[key] = np.resize(df.define_init_3pt[key],(n3st,n3st))
        elif eokey == 'no':
         init[key] = np.resize(df.define_init_3pt[key],(n3st,o3st))
        elif eokey == 'on':
         init[key] = np.resize(df.define_init_3pt[key],(o3st,n3st))
        elif eokey == 'oo':
         init[key] = np.resize(df.define_init_3pt[key],(o3st,o3st))
        elif eokey == 'n':
         init[key] = df.define_init_3pt[key][:nst]
        elif eokey == 'o':
         init[key] = df.define_init_3pt[key][:ost]
   else:
     init=None
  fit = fitter.lsqfit(data=dall,prior=priors,p0=init,svdcut=df.svdcut)
  ## --
  print_fit(fit,priors)
  print_error_budget(fit)
  #save_data('fit-stability/fit_'+str(nst)+'_'+str(ost)+'.out',fit,dall)
  if df.do_2pt and not(df.do_3pt):
   save_init_from_fit(fit,'fit-stability/fit_'+str(nst)+'_'+str(ost)+'.py')
  else:
   save_init_from_fit(fit,'fit-stability/fit_n'+str(nst)+'_o'+str(ost)\
    +'_ng'+str(n3st)+'_og'+str(o3st)+'.py')
コード例 #11
0
def main(tstr):
    dfile = '/home/gray/Desktop/lattice-analysis/data/qed/vcoarse/self_b/rho_vcoarse_7ml.gpl'
   
    madedata = make_data(dfile,norm=3.) # factor of 3 for colour (missed in extraction)
    data = madedata[0]
    T = data.size / len(madedata[1]) 		# extent in time dir
    tag01 = madedata[1][0]
    tag02 = madedata[1][1]
    tag03 = madedata[1][2]		# =tag01 if no isospin breaking
    print("time extent is: ", T)
    print(dfile)
    suggestedsvdcut = madedata[2]
    
    pfile = None #"vector_fit.p" # last fit

    tmin = 2
    svdcut = 1e-10 #suggestedsvdcut

    fitter = CorrFitter(models=build_models(tag01,tag02,tag03,tmin,T))
    for nexp in [2,3,4,5]:
        fit = fitter.lsqfit(data=data,prior=build_prior(nexp),p0=None,maxit=20000,svdcut=svdcut,add_svdnoise=False)
    print(fit)


    tdata = range(T)
    tfit = range(tmin,T+1-tmin) # all ts
    tp = T

    tstar = tstr 

    tcut = 200

    newdata = {}

    tags = ['nocharge', 'up_charge', 'down-charge']
    newdata[tags[0]] = data[tag01][:tstar+1]
    newdata[tags[1]] = data[tag02][:tstar+1]
    newdata[tags[2]] = data[tag03][:tstar+1]


    # do replacement of data with fit

    fitdatauncharged = Corr2(datatag=tags[0],tdata=range(T),a=('a1:vec:u','ao:vec:u'),b=('a1:vec:u','ao:vec:u'),dE=('dE:vec:u','dEo:vec:u'),s=(1.,-1.)).fitfcn(fit.p)
    for index in range(T):
            if index >= tcut:
                newdata[tags[0]] = np.append(newdata[tags[0]],0.)
            elif index > tstar:
                newdata[tags[0]] = np.append(newdata[tags[0]],fitdatauncharged[index])

    fitdatachargedup = Corr2(datatag=tags[1],tdata=range(T),a=('a1:vec:qed:u','ao:vec:qed:u'),b=('a1:vec:qed:u','ao:vec:qed:u'),dE=('dE:vec:qed:u','dEo:vec:qed:u'),s=(1.,-1.)).fitfcn(fit.p)
    fitdatachargedown = Corr2(datatag=tags[2],tdata=range(T),a=('a1:vec:qed:d','ao:vec:qed:d'),b=('a1:vec:qed:d','ao:vec:qed:d'),dE=('dE:vec:qed:d','dEo:vec:qed:d'),s=(1.,-1.)).fitfcn(fit.p)
    for index in range(T):
            if index >= tcut:
                newdata[tags[1]] = np.append(newdata[tags[1]],0.)
                newdata[tags[2]] = np.append(newdata[tags[2]],0.)
            elif index > tstar:
                newdata[tags[1]] = np.append(newdata[tags[1]],fitdatachargedup[index])
                newdata[tags[2]] = np.append(newdata[tags[2]],fitdatachargedown[index])

    print('THIS IS THE INFORMATION CENTRE')
    print(len(newdata[tags[0]]), len(newdata[tags[1]]), len(newdata[tags[2]]))
    print('tmin, tstar', tmin, tstar)

    vpol = g2.fourier_vacpol(newdata[tags[0]], Z=ZV, ainv=1/a, periodic=False)
    unchargedamuu = g2.a_mu(vpol,2/3.)
 
    vpol = g2.fourier_vacpol(newdata[tags[1]], Z=ZVqed, ainv=1/a, periodic=False)
    chargedamuu = g2.a_mu(vpol,2/3.)

    vpol = g2.fourier_vacpol(newdata[tags[0]], Z=ZV, ainv=1/a, periodic=False)
    unchargedamud = g2.a_mu(vpol,1/3.)
 
    vpol = g2.fourier_vacpol(newdata[tags[2]], Z=ZVqed, ainv=1/a, periodic=False)
    chargedamud = g2.a_mu(vpol,1/3.)

    d_rt = chargedamud/unchargedamud
    u_rt = chargedamuu/unchargedamuu 
    amu_qcd = unchargedamud+unchargedamuu
    amu_qcdqed = chargedamuu+chargedamud
    amu_rt = amu_qcdqed/amu_qcd
    amu_diff = (amu_qcdqed-amu_qcd)/amu_qcd
    amu_diff2 = amu_qcdqed-amu_qcd

    print('[d] a_mu[QCD+QED]||a_mu[QCD+QED]/a_mu[QCD]{0:>20}||{1}'.format(chargedamud,d_rt))
    print('[u] a_mu[QCD+QED]||a_mu[QCD+QED]/a_mu[QCD]{0:>20}||{1}'.format(chargedamuu,u_rt))
    print('\n[u+d] a_mu[QCD+QED]||a_mu[QCD]||ratio||diff\n{0:20}{1:20}{2:20}{3:20}'.format(amu_qcdqed, amu_qcd, amu_rt, amu_diff))
コード例 #12
0
def main(tstr):
    dfile = '/home/gray/Desktop/lattice-analysis/data/qed/vcoarse/comb/comb_rho_vcoarse_physud.gpl'
    #    tag01 = 'rho_m' + str(mq)
    #    tag02 = 'rho_m' + str(mq) + '_ucav'
    #    tag03 = 'rho_m' + str(mq)
    #    tag04 = 'rho_m' + str(mq) + '_dcav'

    madedata = make_data(
        dfile, norm=3.)  # factor of 3 for colour (missed in extraction)
    data = madedata[0]
    T = data.size / len(madedata[1])  # extent in time dir
    tag01 = madedata[1][0]
    tag02 = madedata[1][1]
    tag03 = madedata[1][2]  # =tag01 if no isospin breaking
    tag04 = madedata[1][3]
    #sys.exit(0)

    #ratiodata = {}
    #ratiodata['up'] = data[tag02]/data[tag01]
    #ratiodata['down'] = data[tag04]/data[tag03]

    suggestedsvdcut = madedata[2]

    pfile = "vector_fit.p"  # last fit

    tmin = 2
    svdcut = 1e-10  #suggestedsvdcut

    fitter = CorrFitter(
        models=build_models(tag01, tag02, tag03, tag04, tmin, T))
    for nexp in [2, 3, 4, 5]:
        fit = fitter.lsqfit(data=data,
                            prior=build_prior(nexp),
                            p0=None,
                            maxit=20000,
                            svdcut=svdcut,
                            add_svdnoise=False)
    print(fit)

    tdata = range(T)
    tfit = range(tmin, T + 1 - tmin)  # all ts
    tp = T

    tstar = tstr

    tcut = 200

    newdata = {}

    tags = ['up', 'up_qed', 'down', 'down_qed']
    newdata[tags[0]] = data[tag01][:tstar + 1]
    newdata[tags[1]] = data[tag02][:tstar + 1]
    newdata[tags[2]] = data[tag03][:tstar + 1]
    newdata[tags[3]] = data[tag04][:tstar + 1]

    # do replacement of data with fit

    fitdataunchargedup = Corr2(datatag=tags[0],
                               tdata=range(T),
                               a=('a1:vec:u', 'ao:vec:u'),
                               b=('a1:vec:u', 'ao:vec:u'),
                               dE=('dE:vec:u', 'dEo:vec:u'),
                               s=(1., -1.)).fitfcn(fit.p)
    fitdataunchargeddown = Corr2(datatag=tags[2],
                                 tdata=range(T),
                                 a=('a1:vec:d', 'ao:vec:d'),
                                 b=('a1:vec:d', 'ao:vec:d'),
                                 dE=('dE:vec:d', 'dEo:vec:d'),
                                 s=(1., -1.)).fitfcn(fit.p)
    for index in range(48):
        if index >= tcut:
            newdata[tags[0]] = np.append(newdata[tags[0]], 0.)
            newdata[tags[2]] = np.append(newdata[tags[2]], 0.)
        elif index > tstar:
            newdata[tags[0]] = np.append(newdata[tags[0]],
                                         fitdataunchargedup[index])
            newdata[tags[2]] = np.append(newdata[tags[2]],
                                         fitdataunchargeddown[index])

    fitdatachargedup = Corr2(datatag=tags[1],
                             tdata=range(T),
                             a=('a1:vec:qed:u', 'ao:vec:qed:u'),
                             b=('a1:vec:qed:u', 'ao:vec:qed:u'),
                             dE=('dE:vec:qed:u', 'dEo:vec:qed:u'),
                             s=(1., -1.)).fitfcn(fit.p)
    fitdatachargedown = Corr2(datatag=tags[3],
                              tdata=range(T),
                              a=('a1:vec:qed:d', 'ao:vec:qed:d'),
                              b=('a1:vec:qed:d', 'ao:vec:qed:d'),
                              dE=('dE:vec:qed:d', 'dEo:vec:qed:d'),
                              s=(1., -1.)).fitfcn(fit.p)
    for index in range(48):
        if index >= tcut:
            newdata[tags[1]] = np.append(newdata[tags[1]], 0.)
            newdata[tags[3]] = np.append(newdata[tags[3]], 0.)
        elif index > tstar:
            newdata[tags[1]] = np.append(newdata[tags[1]],
                                         fitdatachargedup[index])
            newdata[tags[3]] = np.append(newdata[tags[3]],
                                         fitdatachargedown[index])

    w0 = gv.gvar('0.1715(9)')
    w0overa = gv.gvar('1.1367(5)')
    ZV = gv.gvar('0.9837(20)')
    ZVqed = gv.gvar('0.999544(14)') * ZV
    hbarc = 0.197326968
    a = (w0 / w0overa) / hbarc

    print('THIS IS THE INFORMATION CENTRE')
    print(len(newdata[tags[0]]), len(newdata[tags[1]]), len(newdata[tags[2]]),
          len(newdata[tags[3]]))
    print('tmin, tstar', tmin, tstar)

    #moments = g2.moments(newdata[tags[0]],Z=ZV,ainv=1/a,periodic=False)
    #vpol = g2.vacpol(moments,order=(2,1))
    vpol = g2.fourier_vacpol(newdata[tags[0]],
                             Z=ZV,
                             ainv=1 / a,
                             periodic=False)
    unchargedamuu = g2.a_mu(vpol, 2 / 3.)

    #moments = g2.moments(newdata[tags[1]],Z=ZVqed,ainv=1/a,periodic=False)
    #vpol = g2.vacpol(moments,order=(2,1))
    vpol = g2.fourier_vacpol(newdata[tags[1]],
                             Z=ZVqed,
                             ainv=1 / a,
                             periodic=False)
    chargedamuu = g2.a_mu(vpol, 2 / 3.)

    #moments = g2.moments(newdata[tags[2]],Z=ZV,ainv=1/a,periodic=False)
    #vpol = g2.vacpol(moments,order=(2,1))
    vpol = g2.fourier_vacpol(newdata[tags[2]],
                             Z=ZV,
                             ainv=1 / a,
                             periodic=False)
    unchargedamud = g2.a_mu(vpol, 1 / 3.)

    #moments = g2.moments(newdata[tags[3]],Z=ZVqed,ainv=1/a,periodic=False)
    #vpol = g2.vacpol(moments,order=(2,1))
    vpol = g2.fourier_vacpol(newdata[tags[3]],
                             Z=ZVqed,
                             ainv=1 / a,
                             periodic=False)
    chargedamud = g2.a_mu(vpol, 1 / 3.)

    d_rt = chargedamud / unchargedamud
    u_rt = chargedamuu / unchargedamuu
    amu_qcd = unchargedamud + unchargedamuu
    amu_qcdqed = chargedamuu + chargedamud
    amu_rt = amu_qcdqed / amu_qcd
    amu_diff = (amu_qcdqed - amu_qcd) / amu_qcd

    print('[d] a_mu[QCD+QED]||a_mu[QCD+QED]/a_mu[QCD]{0:>20}||{1}'.format(
        chargedamud, d_rt))
    print('[u] a_mu[QCD+QED]||a_mu[QCD+QED]/a_mu[QCD]{0:>20}||{1}'.format(
        chargedamuu, u_rt))
    print(
        '\n[u+d] a_mu[QCD+QED]||a_mu[QCD]||ratio||diff\n{0:20}{1:20}{2:20}{3:20}'
        .format(amu_qcdqed, amu_qcd, amu_rt, amu_diff))