#author: Amadeus Maes
#additional code to make plots
using LinearAlgebra
function plot_spectrum(weights, Ne, Ncells, i)
println(string("Plot eigenvalue spectrum ",string(i)))
ylabel("Imag")
xlabel("Real")
weights[(1+Ne):Ncells,1:Ne] *= -1
weights[(1+Ne):Ncells,(1+Ne):Ncells] *= -1
figure()
ax = PyPlot.axes()
ax[:tick_params]("both",labelsize=14)
ax[:spines]["top"][:set_color]("none") # Remove the top axis boundary
ax[:spines]["right"][:set_color]("none") # Remove the right axis boundary
xlabel("Re", size=18)
ylabel("Im", size=18)
scatter(real(eigvals(weights)),imag(eigvals(weights)),marker="o",linewidths=0)
savefig(string("spectra/",string("spectrum_2400_nc80_",string(i)),".png"),dpi=150)
weights[(1+Ne):Ncells,1:Ne] *= -1
weights[(1+Ne):Ncells,(1+Ne):Ncells] *= -1
end
function plot_spike_raster(popmembers, times, ns, i)
println(string("Plot spike raster ",string(i)))
Npop = size(popmembers,1)
Nmaxmembers = size(popmembers,2)
figure()
ax = PyPlot.axes()
ax[:tick_params]("both",labelsize=18)
xlim(0,T)
ylim(0,sum(popmembers.>0))
ylabel("Neuron id",size=20)
xlabel("Time [ms]",size=20)
tight_layout()
#plot raster with the order of rows determined by population membership
rowcount = 0
for pp = 1:Npop
for cc = 1:Nmaxmembers
if popmembers[pp,cc] < 1
break
end
rowcount+=1
ind = popmembers[pp,cc]
vals = times[ind,1:ns[ind]]
y = rowcount*ones(length(vals))
scatter(vals,y,s=.4,c="r",marker="o",linewidths=0)
end
end
#@printf("\rdone creating plot")
savefig(string("rasters/",string("raster_2400_nc80_",string(i)),".png"),dpi=150)
end
function plot_exc_weights(popmembers, weights, Ne, i)
println(string("Plot excitatory weights ",string(i)))
w = weights[1:Ne,1:Ne]
exc_weights = zeros(size(w))
Npop = size(popmembers,1)
Nmaxmembers = size(popmembers,2)
#restructure weight matrix to put neurons with same cluster membership together
prev_count = 0
others = collect(1:Ne)
processed = []
for pp = 1:Npop
count = 0
new_group = []
for cc = 1:Nmaxmembers
if popmembers[pp,cc]<1
break
end
if !(popmembers[pp,cc] in processed)
count += 1
push!(new_group,popmembers[pp,cc])
push!(processed,popmembers[pp,cc])
end
end
exc_weights[1+prev_count:prev_count+count,1+prev_count:prev_count+count] = w[new_group,new_group]
for cc = 1:count
filter!(e->e!=new_group[cc],others)
end
exc_weights[1+prev_count+count:Ne,1+prev_count:prev_count+count] = w[others,new_group]
exc_weights[1+prev_count:prev_count+count,1+prev_count+count:Ne] = w[new_group,others]
prev_count += count
end
exc_weights[1+prev_count:Ne,1+prev_count:Ne] = w[others,others]
figure()
ax = PyPlot.axes()
ax[:tick_params]("both",labelsize=18)
ax[:spines]["top"][:set_color]("none") # Remove the top axis boundary
ax[:spines]["right"][:set_color]("none") # Remove the right axis boundary
xlabel("Post neuron id", size=20)
ylabel("Pre neuron id",size=20)
tight_layout()
matshow(exc_weights,cmap="binary",fignum=0)
savefig(string("exc_weights/",string("weights_2400_nc80_",string(i)),".png"),dpi=150)
end