import numpy as np import matplotlib.pyplot as plt from tools.generation.config import DotheLoop, get_config import os def collect_scalar(filename,rdir): njobs = DotheLoop(-1) res=np.array([]) for job in range(njobs): res=np.append(res,np.loadtxt(rdir+str(job)+'/'+filename)) res=res.reshape(njobs,-1) return res def get_stats(res,col,logv): parser, iterables = get_config() seeds=iterables['seeds'] n_of_seeds=len(seeds) ps = iterables['ps'] n_of_ps=len(ps) stats=np.zeros((n_of_ps,3)) x=res[:,col] if logv==True: x=np.log(x) for i in range(n_of_ps): stats[i,0]=ps[i] stats[i,1]=np.nanmean(x[i*n_of_seeds:(i+1)*n_of_seeds]) stats[i,2]=np.nanvar(x[i*n_of_seeds:(i+1)*n_of_seeds]) if logv==True: stats[:,1]=np.exp(stats[:,1]) return stats def collect_Conec(scales,rdir): parser, iterables = get_config(rdir+'config.ini') ps = iterables['ps'] njobs = DotheLoop(-1,parser, iterables) res=dict() for job in range(njobs): for scale in scales: try: fdir=rdir+str(job)+'/ConnectivityMetrics/'+str(scale)+'.npy' jobres=np.load(fdir).item() params=DotheLoop(job,parser,iterables) indp=int(np.where(ps == params[2])[0]) for ckey in jobres.keys(): try: res[params[0],params[1],scale,ckey,indp]=np.append(res[params[0],params[1],scale,ckey,indp],jobres[ckey].reshape(-1)) except KeyError: res[params[0],params[1],scale,ckey,indp]=jobres[ckey].reshape(-1) except IOError: pass return res def ConValidat(conkey,scale,ddir): scales=[scale] resdict=collect_Conec(scales,ddir) parser, iterables = get_config(ddir+'config.ini') params=DotheLoop(0,parser,iterables) con=params[0] lc=params[1] x,y,yv=constasP(con,lc,scales[0],conkey,resdict,iterables) try: os.makedirs('./plots/'+ddir) except: pass plt.figure(1) plt.plot(x,y,marker='x') plt.xlabel('p') plt.ylabel(conkey) plt.grid() plt.savefig('./plots/'+ddir+conkey+str(scale)+'.png') plt.close() return def showValidateResults(conkeys): for conkey in conkeys: ConValidat(conkey,128,'./data_Val2D/') ConValidat(conkey,16,'./data_Val3D/') return def constasP(con,lc,scale,conkey,res,iterables): x = iterables['ps'] y = np.zeros((x.shape)) vy = np.zeros((x.shape)) for i in range((x.shape[0])): y[i]=np.mean(res[con,lc,scale,conkey,i]) vy[i]=np.mean(res[con,lc,scale,conkey,i]) return x,y,vy def plot_keff(stats): ylabel=r'$K_{eff}$' xlabel=r'$p$' fsize=14 plt.figure(1) plt.semilogy(stats[:,0],stats[:,1]) plt.xlabel(xlabel,fontsize=fsize) plt.ylabel(ylabel,fontsize=fsize) plt.grid() plt.savefig('Keff_p.png') plt.close() plt.figure(2) plt.plot(stats[:,0],stats[:,2]) plt.xlabel(xlabel,fontsize=fsize) plt.ylabel(ylabel,fontsize=fsize) plt.grid() plt.savefig('vKeff_p.png') plt.close() return showValidateResults(['P','S','npx','Plen'])