neuropercolation/evaluation/2Layer phiplot.py

100 lines
2.3 KiB
Python
Raw Normal View History

2023-09-30 17:53:06 +00:00
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 30 14:25:12 2022
2023-12-14 19:49:44 +00:00
@author: timofej
2023-09-30 17:53:06 +00:00
"""
import sys
import os
import json
from plot import qtplot
import math as m
import numpy as np
vect = np.vectorize
@vect
def log2(x):
try:
return m.log2(x)
except ValueError:
if x==0:
return float(0)
else:
raise
def new_folder(path):
if not os.path.exists(path):
os.makedirs(path)
return path
phase = np.vectorize(lambda x,y: (m.atan2(y,x)+m.pi)%(2*m.pi)-m.pi)
diff = np.vectorize(lambda x,y: (y-x+m.pi)%(2*m.pi)-m.pi)
H2 = lambda x: -x*m.log2(x)-(1-x)*m.log2(1-x)
path='/cloud/Public/_data/neuropercolation/2lay/steps=100100/'
suffix = ''
chi = chr(967)
vareps = chr(949)
varphi = chr(981)
vals = [[],[]]
runsteps = 1000100
eps_space = np.linspace(0.005, 0.5, 100)
eps_space = eps_space[1::2]
dims = list(range(3,10,2))#+[16,49]
mode='density'
ma=[]
s=[]
k=[]
mk=[]
PHI=[]
lastkurt=None
for dim in dims:
phis=[]
con_gap = 3
cons = [(n,(2*n+m)%dim) for n in range(dim) for m in range(0,dim-2,con_gap)]
dimpath = new_folder(path + f'dim={dim:02}/')
for epsilon in eps_space:
try:
with open(dimpath+f"eps={round(epsilon,3):.3f}_ei.txt", 'r', encoding='utf-8') as f:
ei = np.array(json.load(f)[100:])
except:
print(f'Calcing phi for eps={epsilon}')
with open(dimpath+f"eps={round(epsilon,3):.3f}_channels.txt", 'r', encoding='utf-8') as f:
channels = np.array(json.load(f)[100:])
ei = np.sum(channels,axis=0)*(1-H2(epsilon))
ei=list(ei)
with open(dimpath+f"eps={round(epsilon,3):.3f}_ei.txt", 'w', encoding='utf-8') as f:
json.dump(list(ei),f, ensure_ascii=False,indent=1)
phi=np.average(ei)
phis.append(phi)
PHI.append(phis)
#%%
qtplot(f"Mean effect integration over noise level",
[[0]+list(eps_space)]*len(dims),
[[0]+phi for phi in PHI[::-1]],
[f'dim={dim:02d}x{dim:02d}' for dim in dims[::-1]],
y_tag = f'effect integration {varphi}',
2023-12-10 21:47:15 +00:00
x_tag = f'noise level {vareps}',
2023-09-30 17:53:06 +00:00
export=True,
path=dimpath+"",
filename=f'eps={round(epsilon,3):.3f}_evolution.png',
close=False)
mode = 'density'
#%%