include("utilities.jl");
default(show=false)
default(fontfamily="Computer Modern")
# HYPERPARAMS
n_runs = 3
patterns = 0:12
n_patterns = length(patterns)
duration = 2000
labels = ["theta" , "ftheta", "alpha", "beta", "gamma"]
freqlabels = [L"\theta" L"\theta_{fast}" L"\alpha" L"\beta" L"\gamma"]
fig_ext = ".png"
# CREATE NECESSARY DIRECTORIES
create_directories_if_not_exist()
# IDENTIFY NEURON POPULATION RANGES
populations = Dict(
"DG" => [0, 500],
"BC" => [500,506],
"MC" => [506, 521],
"HIPP" => [521, 527]
)
freqs = [L"\theta", L"\theta_{fast}", L"\alpha", L"\beta", L"\gamma"]
spar_save = OrderedDict("theta"=>[], "ftheta"=>[], "alpha"=>[], "beta"=>[], "gamma"=>[])
active_gcs = OrderedDict("theta"=>[], "ftheta"=>[], "alpha"=>[], "beta"=>[], "gamma"=>[])
spar_means = OrderedDict("theta"=>[], "ftheta"=>[], "alpha"=>[], "beta"=>[], "gamma"=>[])
spar_ses = OrderedDict("theta"=>[], "ftheta"=>[], "alpha"=>[], "beta"=>[], "gamma"=>[])
activem = OrderedDict("theta"=>[], "ftheta"=>[], "alpha"=>[], "beta"=>[], "gamma"=>[])
actives = OrderedDict("theta"=>[], "ftheta"=>[], "alpha"=>[], "beta"=>[], "gamma"=>[])
for i ∈ 1:length(labels)
for run ∈ 1:n_runs
spikes = load_spike_files(patterns, labels[i]*"-$run", populations)
for j ∈ 1:(n_patterns-1)
gc_test = spikes[(spikes.Population .== "DG") .& (spikes.Pattern .== j), ["Neuron", "Time"]]
#Identify index for end of first theta cycle
index = 1
for i ∈ 1:length(gc_test[!, "Time"])
timestamp = gc_test[i,"Time"]
if timestamp < 285
index = index + 1
end
end
#count up number of times a given GC is flagged for emitting a spike
c = counter(gc_test[1:index,"Neuron"])
vals = values(c)
sparsity = 1/mean(vals)
append!(spar_save[labels[i]], sparsity)
popsparse = 500/length(vals)
append!(active_gcs[labels[i]], popsparse)
end
if (run == n_runs)
sparm = round(mean(spar_save[labels[i]]), digits=2)
append!(spar_means[labels[i]], sparm)
sparse = std(spar_save[labels[i]])/sqrt(n_runs)
append!(spar_ses[labels[i]], sparse)
active_m = round(mean(active_gcs[labels[i]]), digits=2)
append!(activem[labels[i]], active_m)
active_s = std(active_gcs[labels[i]])/sqrt(n_runs)
append!(actives[labels[i]], active_s)
end
end
end
unpack(a) = eltype(a[1])[el[1] for el in a]
sparsityGC_fig = plot(freqs,
unpack(collect(values(spar_means))),
xlabel = "Input Frequency Band",
xtickfont=font(12),
ylabel = "Sparsity of GC Firing",
c = :black,
linewidth = 2,
yerror = unpack(collect(values(spar_ses))),
dpi=300, size=(350,350),
label=nothing,
)
CSV.write("figures/pattern-separation/spar_means.csv", spar_means)
CSV.write("figures/pattern-separation/spar_ses.csv", spar_ses)
savefig(sparsityGC_fig, "figures/pattern-separation/sparsity-gc-curve"*fig_ext)
#sparsity_fig
sparsityNET_fig = plot(freqs,
unpack(collect(values(activem))),
xlabel = "Input Frequency Band",
xtickfont=font(12),
ylabel = "GC Population Sparsity",
c = :black,
linewidth = 2,
yerror = unpack(collect(values(actives))),
dpi=300, size=(350,350),
label=nothing,
)
CSV.write("figures/pattern-separation/net_spar_means.csv", activem)
CSV.write("figures/pattern-separation/net_spar_ses.csv", actives)
savefig(sparsityNET_fig, "figures/pattern-separation/sparsity-net-curve"*fig_ext)