def simulate_network(**kw): my_nest.ResetKernel() my_nest.SetKernelStatus({ 'local_num_threads': 1, # 'print_time':True }) p_gi = par.dic['nest']['GI'] p_st = par.dic['nest']['ST'] for d in [p_gi, p_st]: if 'type_id' in d: del d['type_id'] mm = {'active': True, 'params': {'to_memory': True, 'to_file': False}} st = MyNetworkNode('st', model='my_aeif_cond_exp', n=1, params=p_st, mm=mm) for key in ['GI_ST_gaba', 'CS_ST_ampa']: d = par.dic['nest'][key] if 'type_id' in d: del d['type_id'] my_nest.CopyModel('static_synapse', key, d) d = { 'rate_first': 30**2. * (1 + kw.get('gi_amp', 0)), 'rate_second': 30**2.**(1 - kw.get('gi_amp', 0)), 'period_first': 25.0, 'period_second': 25. } inp_st_gaba = my_nest.Create('poisson_generator_periodic', n=1, params=d) d = { 'rate_first': 400. * (1 + kw.get('st_amp', 0)), 'rate_second': 400.**(1 - kw.get('st_amp', 0)), 'period_first': 25.0, 'period_second': 25. } inp_st_ampa = my_nest.Create('poisson_generator_periodic', n=1, params=d) my_nest.Connect(inp_st_gaba, st.ids, 0.08, 1., model='GI_ST_gaba') my_nest.Connect(inp_st_ampa, st.ids, 0.25, 1., model='CS_ST_ampa') my_nest.Simulate(kw.get('sim_time'), chunksize=1000.0) d = {} from core.network.data_processing import Data_unit_vm st_dus = Data_unit_vm('st', st.get_voltage_signal()) d['st'] = {'vm_signal': st_dus} return d
def simulate_network(**kw): my_nest.ResetKernel() my_nest.SetKernelStatus({ 'local_num_threads': 4, # 'print_time':True }) p_gi = par.dic['nest']['GI'] p_st = par.dic['nest']['ST'] p_st.update(kw.get('p_st', {})) for d in [p_gi, p_st]: if 'type_id' in d: del d['type_id'] sd = { 'active': True, 'params': { 'to_memory': True, 'to_file': False, 'start': 500.0 } } gi = MyNetworkNode('gi', model='my_aeif_cond_exp', n=kw.get('gi_n'), params=p_gi, sd=sd) # st=MyNetworkNode('gi',model='my_aeif_cond_exp', n=kw.get('st_n'), params=p_gi, sd=sd) st = MyNetworkNode('st', model='my_aeif_cond_exp', n=kw.get('st_n'), params=p_st, sd=sd) for key in [ 'GI_ST_gaba', 'GI_GI_gaba', 'ST_GI_ampa', 'EI_GI_ampa', 'CS_ST_ampa' ]: d = par.dic['nest'][key] if 'type_id' in d: del d['type_id'] my_nest.CopyModel('static_synapse', key, d) df = my_nest.GetDefaults('my_aeif_cond_exp')['receptor_types'] for post in st: idx = random.sample(range(kw.get('gi_n')), 30) # params={'receptor_type':df['GABAA_1']} delay = kw['gi_st_delay'] model = 'GI_ST_gaba' my_nest.Connect([pre for i, pre in enumerate(gi) if i in idx], [post] * 30, [0.08] * 30, [delay] * 30, model) for pre in gi: idx = random.sample(range(kw.get('gi_n')), 30) # params={'receptor_type':df['GABAA_1']} delay = kw['gi_gi_delay'] model = 'GI_GI_gaba' my_nest.Connect([pre] * 30, [post for i, post in enumerate(gi) if i in idx], [1.3] * 30, [delay] * 30, model) for pre in gi: idx = random.sample(range(kw.get('st_n')), 30) # params={'receptor_type':df['AMPA_1']} delay = kw['st_gi_delay'] model = 'ST_GI_ampa' my_nest.Connect([pre for i, pre in enumerate(st) if i in idx], [post] * 30, [0.35] * 30, [delay] * 30, model) d = { 'rate_first': 1400. * (1 + kw.get('gi_amp', 0)), 'rate_second': 1400.**(1 - kw.get('gi_amp', 0)), 'period_first': 25.0, 'period_second': 25. } inp_gi = my_nest.Create('poisson_generator_periodic', n=kw.get('gi_n'), params=d) d = { 'rate_first': 400. * (1 + kw.get('st_amp', 0)), 'rate_second': 400.**(1 - kw.get('st_amp', 0)), 'period_first': 25.0, 'period_second': 25. } inp_st = my_nest.Create('poisson_generator_periodic', n=kw.get('st_n'), params=d) my_nest.Connect(inp_gi, gi.ids, 0.25, 1., model='EI_GI_ampa') my_nest.Connect(inp_st, st.ids, 0.25, 1., model='CS_ST_ampa') my_nest.Simulate(kw.get('sim_time'), chunksize=1000.0) d = {} from core.network.data_processing import Data_unit_spk, Data_units_relation gi_dus = Data_unit_spk('gi', gi.get_spike_signal()) d['gi'] = {'spike_signal': gi_dus} st_dus = Data_unit_spk('st', st.get_spike_signal()) d['st'] = {'spike_signal': st_dus} d['gi_st'] = {'spike_signal': Data_units_relation('gi_st', gi_dus, st_dus)} return d
''' import numpy from core import my_nest my_nest.SetKernelStatus({"total_num_virtual_procs": 4}) pg = my_nest.Create("poisson_generator", 20, params={"rate": 50000.0}) n = my_nest.Create('aeif_cond_exp', 20) # n = my_nest.Create('iaf_neuron', 20) w = [10. for _ in n] d = [1. for _ in n] sd = my_nest.Create("spike_detector", params={ "to_file": False, "to_memory": True }) post = n post_ids = list(numpy.unique(post)) status = my_nest.GetStatus(list(numpy.unique(post)), 'local') lockup = dict(zip(post_ids, status)) l = [1 if lockup[p] else 0 for p in post] print l pre = [p for p, b in zip(pg, l) if b] post = [p for p, b in zip(n, l) if b] my_nest.Connect_speed(pre, post, w, d) my_nest.ConvergentConnect(n, sd) my_nest.Simulate(1000.0) print len(my_nest.GetStatus(sd)[0]['events']['senders'])
my_nest.Connect([n[2]], vt) my_nest.Connect(pn[0:2], n[0:2]) my_nest.SetDefaults('bcpnn_dopamine_synapse', params={'vt': vt[0]}) my_nest.Connect([n[0]], [n[1]], model='bcpnn_dopamine_synapse') p_sd = {"withgid": True, 'to_file': False, 'to_memory': True} sd = my_nest.Create('spike_detector', 5, params=p_sd) pd = my_nest.Create('poisson_generator', 5, params={'rate': 100.}) my_nest.Connect(pd, sd) d = {'n': []} T = [] for t in range(200): my_nest.Simulate(1) d['n'].append(my_nest.GetConnProp([n[0]], [n[1]], 'n')) _t = my_nest.GetStatus(sd)[0]['events']['times'] if list(_t[(_t >= t - 1) * (_t < t)]): T.append(_t[(_t >= t - 1) * (_t < t)]) T = reduce(lambda x, y: list(x) + list(y), T) print _t - T print my_nest.PrintNetwork() t = [[tt, tt, tt] for tt in t] y = [[0, 0.01, 0] for tt in t] t = reduce(lambda x, y: x + y, t) y = reduce(lambda x, y: x + y, y) binned = numpy.zeros(len(d['n']))