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)
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)
## -- 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":