import matplotlib
matplotlib.rcParams['pdf.fonttype'] = 42
mfs=22
matplotlib.rc('xtick', labelsize=mfs)
matplotlib.rc('ytick', labelsize=mfs)
matplotlib.rc('axes', labelsize=mfs)
from pylab import *
import numpy as np
import re
import os
datadir = sys.argv[1]
RUNSTATS = int(sys.argv[2])
datadir = datadir.replace('./data/', '');
datadir = datadir.replace('data/', '');
figprefix = datadir
p = re.match(r'N(\d+).B(\d+).I(\d+).i(\d+).P(\d+).p(\d+).T(\d+).S(\d+).(.*)', datadir)
RSEED = int(p.group(8))
NTOTAL = int(p.group(1)) #inh + pyr neurons
NBRANCHES = int(p.group(2))
NINPUTS = int(p.group(3))
NPERINPUT = int(p.group(4))
NPATTERNS = int(p.group(5))
NPERPATTERN = int(p.group(6))
INTERSTIM = int(p.group(7))
NPYR = int(0.8*NTOTAL)
PYR_IDS = range(0 , NPYR)
IN_IDS = range(NPYR, NTOTAL)
suff = p.group(9)
NRUNS = 10
def pltbar(fn, ttitle, xtitle, ytitle, mylim=-1):
bp = None
for i in range(0,NRUNS):
ddir = "N%d.B%d.I%d.i%d.P%d.p%d.T%d.S%d.%s"%(NTOTAL, NBRANCHES, NINPUTS, NPERINPUT, NPATTERNS, NPERPATTERN, INTERSTIM, RSEED+i, suff)
dd = np.load("./data/%s/%s.npy"%(ddir, fn))
if (bp == None):
bp = np.zeros((NRUNS, len(dd)))
bp[i,:] = dd
figure()
title(ttitle)
xlabel(xtitle)
ylabel(ytitle)
m = np.average(bp, axis=0)
s = np.std(bp, axis=0)
#print m
#print s
bar(range(0,len(m)), m, yerr=s, ecolor='0.3')
if (mylim == -1):
ylim([0,max(m) + max(s)*1.2])
else:
ylim([0,mylim])
print fn, "= ", np.average(bp), " +- ", np.std(bp)
savefig("./data/%s/sum_%s.pdf"%(figprefix, fn))
def plthist(fn, ttitle, xtitle, ytitle, mylim=-1):
bp = []
for i in range(0,NRUNS):
ddir = "N%d.B%d.I%d.i%d.P%d.p%d.T%d.S%d.%s"%(NTOTAL, NBRANCHES, NINPUTS, NPERINPUT, NPATTERNS, NPERPATTERN, INTERSTIM, RSEED+i, suff)
dd = np.load("./data/%s/%s.npy"%(ddir, fn))
bp.append(dd)
figure()
#title(ttitle)
xlabel(xtitle)
ylabel(ytitle)
#pp = np.array(bp).flatten()
pp = bp
bars = np.zeros((len(pp), 20))
i=0
for row in pp:
y,be = np.histogram(row, bins=20, range=(0.,20.))
bars[i, :] = y
i = i+1
print bars
#y,be = np.histogram(pp, bins=20, range=(0,20))
#mstd = np.sqrt(y)
#hist(pp, bins=20, range=(0,20))
n = np.average(bars,axis=0)
st = np.std(bars,axis=0)
#bincenters = 0.5*(be[1:]+be[:-1])
bincenters = be[:-1]
clc = '#2060e0'
bar(bincenters, n, yerr=st, ecolor=clc,facecolor=clc, edgecolor='white' )
ylim([0,max(n) + max(st)*1.2])
xlim([0,20])
#dpp = pp[pp>0]
dpp = pp
print fn, "= ", np.average(dpp), " +- ", np.std(dpp)
savefig("./data/%s/sum_%s.pdf"%(figprefix, fn))
p = np.zeros((NPATTERNS, NPATTERNS))
ovl = np.zeros((NPATTERNS, NPATTERNS))
brpatterns = np.zeros((NRUNS, 12))
for i in range(0,NRUNS):
ddir = "N%d.B%d.I%d.i%d.P%d.p%d.T%d.S%d.%s"%(NTOTAL, NBRANCHES, NINPUTS, NPERINPUT, NPATTERNS, NPERPATTERN, INTERSTIM, RSEED+i, suff)
if (RUNSTATS):
print("python stats.py %s NO"%( ddir))
os.system("python stats.py %s NO"%( ddir))
dd = np.load("./data/%s/spcountscorr.npy"%(ddir))
p += dd
dd = np.load("./data/%s/spoverlap.npy"%(ddir))
ovl += dd
p /= NRUNS
ovl /= NRUNS
MDISTANCE=1
figure()
#title("Firing rate correlation (interval=%d min)"%(INTERSTIM))
xlabel("Event No")
ylabel("Event No")
av =[]
nav = []
for i in range(1, NRUNS):
av.append(p[i-1,i])
for j in range(0, i):
if (j < i-MDISTANCE):
nav.append(p[i,j])
print "ScCorr= ", np.average(av), " +- " , np.std(av)
print "NScCorr= ", np.average(nav), " +- " , np.std(nav)
imshow(p , interpolation='nearest', aspect='auto',cmap='jet', vmin=-0.0, vmax=1.0)
colorbar()
savefig("./data/%s/sum_sc_corr.pdf"%(figprefix))
figure()
#title("Active populations correlation (interval=%d min)"%(INTERSTIM))
xlabel("Event No")
ylabel("Event No")
av =[]
nav = []
for i in range(1, NRUNS):
av.append(ovl[i-1,i])
for j in range(0, i):
if (j < i-MDISTANCE):
nav.append(ovl[i,j])
print "Overlap= ", np.average(av), " +- " , np.std(av)
print "Nonoverlap= ", np.average(nav), " +- " , np.std(nav)
imshow(ovl , interpolation='nearest', aspect='auto',cmap='jet',vmin=-0.0, vmax=1.)
colorbar()
savefig("./data/%s/sum_over.pdf"%(figprefix))
#plthist('above_30_dt', "Percentage of neurons active during recall (interval=%d min)"%(INTERSTIM), "Event No", "Percentage of pyr. neurons", 100)
plthist('br_hits_dt', "Potentiated synapses per branch (interval=%d min)"%(INTERSTIM), "Number of potentiated synapses", "Number of branches")
plthist('br_patterns_dt', "Patterns represented per branch (interval=%d min)"%(INTERSTIM), "Number of events", "Number of branches")
plthist('pat_neuron_dt', "Number of neurons responsive to N patterns (interval=%d min)"%(INTERSTIM), "Number of events", "Number of neurons")
if (len(sys.argv) < 4):
show()