def gen_samples(wdir,nsamples=100,nsize=10): load_config('%s/input.py'%wdir) conf['bootstrap']=False istep=core.get_istep() core.mod_conf(istep) #--set conf as specified in istep resman=RESMAN(nworkers=5,parallel=True,datasets=True) parman=resman.parman order=parman.order obsres={} if 'idis' in conf['datasets'] : obsres['idis'] = resman.idisres if 'pidis' in conf['datasets'] : obsres['pidis'] = resman.pidisres if 'sidis' in conf['datasets'] : obsres['sidis'] = resman.sidisres if 'psidis' in conf['datasets'] : obsres['psidis'] = resman.psidisres if 'dy' in conf['datasets'] : obsres['dy'] = resman.dyres if 'sia' in conf['datasets'] : obsres['sia'] = resman.siares print('\ngen ml samples using the setup as in %s\n'%wdir) checkdir('%s/mlsamples'%wdir) data=gen_dataframe(parman.order,obsres,nsize) for _ in range(nsamples): lprint('progress: %d/%d'%(_,nsamples)) par=parman.gen_flat(setup=True) res,rres,nres=resman.get_residuals(par) #--fill dataframe i=data['size'] data['params'][i]=par for reaction in obsres: for idx in data['reactions'][reaction]: prediction=copy.copy(obsres[reaction].tabs[idx]['prediction']) data['reactions'][reaction][idx][i]=prediction data['size']+=1 if data['size']==nsize: save(data,'%s/mlsamples/%s'%(wdir,id_generator(12))) data=gen_dataframe(parman.order,obsres,nsize) print #--close resman resman.shutdown()
# define datasets (kinematics) to perform the simulation conf['datasets']={} conf['datasets']['sidis']={} conf['datasets']['sidis']['xlsx']={} conf['datasets']['sidis']['xlsx'][1000]='./template.xlsx' # | proton | pi+ conf['datasets']['sidis']['norm']={} for idx in conf['datasets']['sidis']['xlsx']: conf['datasets']['sidis']['norm'][idx]={'value':1,'fixed':True,'min':0,'max':1} conf['datasets']['sidis']['filters']={} ############################################################################ # run simulation resman = RESMAN() parman = conf['parman'] resman.get_residuals(parman.par) print ############################################################################ # prepare the new pseudo data set and save it as xlsx file simdata=pd.DataFrame(conf['sidis tabs'][1000]) simdata['value']=simdata['thy'] simdata['stat_u']=pd.Series(simdata['thy']*simdata['%stat']/100,index=simdata.index) simdata['syst_u']=pd.Series(simdata['thy']*simdata['%syst']/100,index=simdata.index) simdata=simdata.drop(['r-residuals','shift','alpha','residuals','yp','yh','W2','Shift','N','thy','%stat','%syst'],axis=1) print simdata[:10] writer = pd.ExcelWriter('simulation.xlsx') simdata.to_excel(writer,'Sheet1',index=False) writer.save()