The goal of this experiment is to randomly construct the MLI-PKJ network several times and calculate the mean firing rates of MLIs and PKJs of all neurons in all randomly created networks to plot a histogram of firing rates.
In [1]:
%load_ext autoreload
%autoreload 2
import datetime
import os
import gc
from brian import *
import sys
sys.path.append('../../')
from neuron_models import *
import cPickle
from itertools import repeat
import multiprocessing
import time
set_global_preferences(useweave=True, usenewpropagate=True, usecodegen=True, usecodegenweave=True)
defaultclock.dt = .25*ms
In [2]:
def run_net(T):
seed(int(os.getpid()*time.time()))
reinit()
reinit_default_clock()
clear(True)
gc.collect()
N_MLI = 160
N_PKJ = 16
MLI = MLIGroup(N_MLI)
PKJ = PurkinjeCellGroup(N_PKJ)
# synaptic weights
w_mli_pkj = 1.25
w_mli_mli = 1.
w_pkj_mli = 1.
# Synapses
S_MLI_PKJ = Synapses(MLI,PKJ,model='w:1',pre='g_inh+=PKJ.g_inh_*w')
S_MLI_MLI = Synapses(MLI,MLI,model='w:1',pre='g_inh+=MLI.g_inh_*w')
S_PKJ_MLI = Synapses(PKJ,MLI,model='w:1',pre='g_inh+=MLI.g_inh_*w')
connect_mli_pkj(S_MLI_PKJ,pkj_dist=8,syn_prob=.25)
connect_mli_mli(S_MLI_MLI,dist=80,syn_prob=.05)
S_PKJ_MLI[:,:] = '((j/(N_MLI/N_PKJ)-i)%N_PKJ <= 2) & ((j/(N_MLI/N_PKJ)-i)%N_PKJ > 0) & (j%(N_MLI/N_PKJ)<3) & (rand()<.5)'
S_MLI_PKJ.w[:,:] = 'rand()*w_mli_pkj'
S_MLI_MLI.w[:,:] = 'rand()*w_mli_mli'
S_PKJ_MLI.w[:,:] = 'rand()*w_pkj_mli'
@network_operation(Clock(dt=defaultclock.dt))
def random_current():
MLI.I = gamma(3.966333,0.006653,size=len(MLI)) * nA
PKJ.I = gamma(0.430303,0.195962,size=len(PKJ)) * nA
MS_MLI = SpikeMonitor(MLI)
MS_PKJ = SpikeMonitor(PKJ)
run(T)
return MS_MLI.spiketimes, MS_PKJ.spiketimes
In [3]:
pool = multiprocessing.Pool()
results = pool.map(run_net, repeat(30*second,20))
In [4]:
MLI_spiketimes, PKJ_spiketimes = [], []
for mli_spikes, pkj_spikes in results:
for ind, spiketimes in mli_spikes.iteritems():
MLI_spiketimes.append(spiketimes)
for ind, spiketimes in pkj_spikes.iteritems():
PKJ_spiketimes.append(spiketimes)
In [5]:
# plot histogram
fig = figure(figsize=(16,4), dpi=600)
ax = fig.add_subplot(121)
ax.hist(nan_to_num([mean(diff(spikes))**-1 for spikes in MLI_spiketimes]),15,color='#8C2318', edgecolor='w')
simpleaxis(ax)
tick_params(labelsize=20)
xlabel('Mean firing rate (Hz)', fontsize=20)
ylabel('Number of cells', fontsize=20, labelpad=10)
#title('MLI mean firing rates', fontsize=20)
ax = fig.add_subplot(122)
counts, bins, _ = ax.hist(nan_to_num([mean(diff(spikes))**-1 for spikes in PKJ_spiketimes]),15,color='#0B486B',edgecolor='w')
simpleaxis(ax)
tick_params(labelsize=20)
xlabel('Mean firing rate (Hz)', fontsize=20)
ylabel('Number of cells', fontsize=20, labelpad=10)
#title('PKJ mean firing rates', fontsize=20)
#yticks(range(int(counts.max()+1)))
fig.subplots_adjust(wspace=.3)
In [ ]: