コード例 #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(nst,ost,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=df.do_v_symmetric)
   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:
        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=df.do_v_symmetric)
   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=df.do_v_symmetric)
   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=nst,o3st=ost)
   priors = gv.BufferDict()
   for key in prior2:
    priors[key] = prior2[key]
   for key in prior3:
    priors[key] = prior3[key]
   fitter = CorrFitter(models=[models2,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],(nst,nst))
        elif eokey == 'no':
         init[key] = np.resize(df.define_init_3pt[key],(nst,ost))
        elif eokey == 'on':
         init[key] = np.resize(df.define_init_3pt[key],(ost,nst))
        elif eokey == 'oo':
         init[key] = np.resize(df.define_init_3pt[key],(ost,ost))
        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.chained_lsqfit(data=dall,prior=priors,p0=init,svdcut=df.svdcut)
  ## --
  print_fit(fit,priors,do_v_symm=df.do_v_symmetric)
  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',do_v_symm=df.do_v_symmetric)
  else:
   save_init_from_fit(fit,'fit-stability/fit_n'+str(nst)+'_o'+str(ost)\
    +'_ng'+str(nst)+'_og'+str(ost)+'.py',do_v_symm=df.do_v_symmetric)
コード例 #3
0
 ## -- 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..."
fitc = fitterc.chained_lsqfit(data=dall,prior=priors,p0=init3,svdcut=df.svdcut)
print fmt_reduced_chi2(fitc)
print_fit(fitc,priors,df.do_v_symmetric)

## -- print
#if df.do_2pt:
# print_fit(fit2,priors2)
#print_fit(fitc,priors,df.do_v_symmetric)

#print "starting full fit..."
#fitc2 = fitter3.lsqfit(data=dall,prior=fitc.p,svdcut=df.svdcut)
#print fmt_reduced_chi2(fitc2)
#print_fit(fitc2,priors,df.do_v_symmetric)

## -- save fit as an initial value dictionary
if df.do_irrep == "16":