def test_get_set(self): m=5 n=Surface('unittest', **{'n_sets':m, 'sets':[my_slice(s, 10, m) for s in range(m)] }) s=[] s.append(n.get_sets('set')) s.append(n.get_sets('not_set')) s.append(n.get_sets('all_set')) self.assertEqual(len(s[0]),m) self.assertEqual(len(s[1]),m) self.assertEqual(len(s[1][0]),4) for i, l in enumerate(s[1]): self.assertTrue(not my_slice(i, 10, m) in l) self.assertEqual(len(s[2]),m*m)
def __init__(self, name, **kwargs): ''' Constructor Arguments: ids provide ids if nodes already created model my_nest model type, can be a list n number of model to create, can be a list params common parameters for model to be set mm_dt multimeter recording precision sname file basename spath Path to save file at sd boolean, True if spikes should me recorded mm boolean, True if mulitmeter should record ''' model = kwargs.get('model', 'iaf_neuron') n = kwargs.get('n', 1) params = kwargs.get('params', {}) ids = kwargs.get('ids', my_nest.Create(model, n, params)) self._ids = slice(ids[0], ids[-1], 1) self.local_ids = [] for _id in self.ids: if my_nest.GetStatus([_id], 'local'): self.local_ids.append(_id) self.model = model self.name = name self.n = n self.sets = kwargs.get('sets', [misc.my_slice(0, n, 1)])
def get_sets(self, rule): if rule == 'all': return [misc.my_slice(0, self.n)] # Randomly connects presynaptic neurons of set i with postsynaptic # neurons of set i. Constrained by k_source, mask_dist and the sets. if rule == 'set': return self.sets # Randomly connects presynaptic neurons from source set i to all # postsynaptic sets except to target set i. if rule == 'not_set': sets = [] if self.n_sets == 1: return self.sets for s in self.sets: sets.append(list(set(self.sets).difference(set([s])))) return sets # Connect all sets to all other if rule == 'all_set': return self.sets * self.n_sets
def get_sets(self, rule): if rule =='all': return [misc.my_slice(0,self.n)] # Randomly connects presynaptic neurons of set i with postsynaptic # neurons of set i. Constrained by k_source, mask_dist and the sets. if rule=='set': return self.sets # Randomly connects presynaptic neurons from source set i to all # postsynaptic sets except to target set i. if rule=='not_set': sets=[] if self.n_sets==1: return self.sets for s in self.sets: sets.append(list(set(self.sets).difference(set([s])))) return sets # Connect all sets to all other if rule=='all_set': return self.sets*self.n_sets
def default_kwargs_inp(n): sets=[misc.my_slice(i, n,1) for i in range(1)] return {'n':n, 'model':'poisson_generator', 'sets':sets, 'rate':10.0}
def __init__(self, name, **kwargs ): ''' Constructor Arguments: ids provide ids if nodes already created model my_nest model type, can be a list n number of model to create, can be a list params common parameters for model to be set mm_dt multimeter recording precision sname file basename spath Path to save file at sd boolean, True if spikes should me recorded mm boolean, True if mulitmeter should record ''' model=kwargs.get('model', 'iaf_neuron') n=kwargs.get('n', 1) params=kwargs.get('params',{}) ids = kwargs.get('ids', my_nest.Create(model,n, params)) self._ids=slice(ids[0],ids[-1],1) self.local_ids=[] for _id in self.ids: if my_nest.GetStatus([_id], 'local') : self.local_ids.append(_id) self.model=model self.name=name self.n=n self.sets=kwargs.get('sets', [misc.my_slice(0, n, 1)])
def default_kwargs_net(n, n_sets): d = { 'tau_w': 20., # I-V relation, spike frequency adaptation 'a_1': 3., # I-V relation 'a_2': 3., # I-V relation 'b': 200., # I-F relation 'C_m': 80., # t_m/R_in 'Delta_T': 1.8, 'g_L': 3., 'E_L': -55.8, # 'I_e': 15.0, 'V_peak': 20., # 'V_reset': -65., # I-V relation 'V_th': -55.2, # 'V_a': -55.8, # I-V relation #STN-SNr 'AMPA_1_Tau_decay': 12., # n.d.; set as for STN to GPE 'AMPA_1_E_rev': 0., # n.d. same as CTX to STN # EXT-SNr 'AMPA_2_Tau_decay': 5.0, 'AMPA_2_E_rev': 0., # MSN D1-SNr 'GABAA_1_E_rev': -80., # (Connelly et al. 2010) 'GABAA_1_Tau_decay': 12., # (Connelly et al. 2010) # GPe-SNr 'GABAA_2_E_rev': -72., # (Connelly et al. 2010) 'GABAA_2_Tau_decay': 5., } path, sli_path = my_nest.get_default_module_paths(dr.HOME_MODULE) my_nest.install_module(path, sli_path, model_to_exist='my_aeif_cond_exp') sets = [misc.my_slice(i, n, n_sets) for i in range(n_sets)] return { 'n': n, 'model': 'my_aeif_cond_exp', 'mm': { 'active': True, 'params': { 'interval': 1.0, 'to_memory': True, 'to_file': False, 'record_from': ['V_m', 'g_AMPA_1_', 'g_GABAA_1'] } }, 'params': d, 'sd': { 'active': True, 'params': { 'to_memory': True, 'to_file': False } }, 'sets': sets, 'rate': 10.0 }
def test_get_set(self): m = 5 n = Surface( 'unittest', **{ 'n_sets': m, 'sets': [my_slice(s, 10, m) for s in range(m)] }) s = [] s.append(n.get_sets('set')) s.append(n.get_sets('not_set')) s.append(n.get_sets('all_set')) self.assertEqual(len(s[0]), m) self.assertEqual(len(s[1]), m) self.assertEqual(len(s[1][0]), 4) for i, l in enumerate(s[1]): self.assertTrue(not my_slice(i, 10, m) in l) self.assertEqual(len(s[2]), m * m)
def __init__(self, name, **kwargs): self.edge_wrap=kwargs.get('edge_wrap', True) self.extent=kwargs.get('extend', [-0.5, 0.5]) self.fan_in_distribution=kwargs.get('fan_in_distribution', 'binomial') self.input=None self.model=kwargs.get('model', 'CO') # nest self.name=name self.n=kwargs.get('n', 1000) self.n_sets=kwargs.get('n_sets',1) self.sets=kwargs.get('sets',[my_slice(s, 1000, 1) for s in range(1)] ) assert self.n>=1.0, "Unit %s needs to have at least one node"%(name)
def default_kwargs_net(n, n_sets): d={ 'tau_w': 20., # I-V relation, spike frequency adaptation 'a_1':3. , # I-V relation 'a_2':3., # I-V relation 'b':200., # I-F relation 'C_m': 80., # t_m/R_in 'Delta_T':1.8, 'g_L':3., 'E_L':-55.8, # 'I_e':15.0 , 'V_peak':20., # 'V_reset':-65., # I-V relation 'V_th':-55.2, # 'V_a':-55.8, # I-V relation #STN-SNr 'AMPA_1_Tau_decay': 12., # n.d.; set as for STN to GPE 'AMPA_1_E_rev':0., # n.d. same as CTX to STN # EXT-SNr 'AMPA_2_Tau_decay':5.0, 'AMPA_2_E_rev':0., # MSN D1-SNr 'GABAA_1_E_rev':-80., # (Connelly et al. 2010) 'GABAA_1_Tau_decay':12., # (Connelly et al. 2010) # GPe-SNr 'GABAA_2_E_rev':-72., # (Connelly et al. 2010) 'GABAA_2_Tau_decay':5., } path, sli_path=my_nest.get_default_module_paths(dr.HOME_MODULE) my_nest.install_module(path, sli_path, model_to_exist='my_aeif_cond_exp' ) sets=[misc.my_slice(i, n,n_sets) for i in range(n_sets)] return {'n':n, 'model':'my_aeif_cond_exp', 'mm':{'active':True, 'params':{'interval':1.0, 'to_memory':True, 'to_file':False, 'record_from':['V_m','g_AMPA_1_', 'g_GABAA_1']}}, 'params':d, 'sd':{'active':True, 'params':{'to_memory':True, 'to_file':False}}, 'sets':sets, 'rate':10.0}
def __init__(self, name, **kwargs): self.edge_wrap = kwargs.get('edge_wrap', True) self.extent = kwargs.get('extend', [-0.5, 0.5]) self.fan_in_distribution = kwargs.get('fan_in_distribution', 'binomial') self.input = None self.model = kwargs.get('model', 'CO') # nest self.name = name self.n = kwargs.get('n', 1000) self.n_sets = kwargs.get('n_sets', 1) self.sets = kwargs.get('sets', [my_slice(s, 1000, 1) for s in range(1)]) assert self.n >= 1.0, "Unit %s needs to have at least one node" % ( name)
def setUp(self): n_sets=3 sets=[my_slice(s, 100, n_sets) for s in range(n_sets)] self.n_sets=len(sets) nd=Surface_dic() nd.add('i1', **{'n':100, 'n_sets':n_sets, 'sets':sets }) nd.add('i2', **{'n':200, 'n_sets':n_sets, 'sets':sets }) nd.add('i3', **{'n':50, 'n_sets':n_sets, 'sets':sets }) nd.add('n2', **{'n':100, 'n_sets':n_sets, 'sets':sets}) self.surfs=nd self.source=nd['i1'] self.source2=nd['i2'] self.source3=nd['i3'] self.target=nd['n2'] self.path_base=HOME+'/results/unittest/structure/' self.path_conn=HOME+'/results/unittest/structure/conn/' self.path_learned=HOME+'/results/unittest/structure/learned.pkl'
def setUp(self): n_sets = 3 sets = [my_slice(s, 100, n_sets) for s in range(n_sets)] self.n_sets = len(sets) nd = Surface_dic() nd.add('i1', **{'n': 100, 'n_sets': n_sets, 'sets': sets}) nd.add('i2', **{'n': 200, 'n_sets': n_sets, 'sets': sets}) nd.add('i3', **{'n': 50, 'n_sets': n_sets, 'sets': sets}) nd.add('n2', **{'n': 100, 'n_sets': n_sets, 'sets': sets}) self.surfs = nd self.source = nd['i1'] self.source2 = nd['i2'] self.source3 = nd['i3'] self.target = nd['n2'] self.path_base = HOME + '/results/unittest/structure/' self.path_conn = HOME + '/results/unittest/structure/conn/' self.path_learned = HOME + '/results/unittest/structure/learned.pkl'
def default_kwargs_inp(n): sets = [misc.my_slice(i, n, 1) for i in range(1)] return {'n': n, 'model': 'poisson_generator', 'sets': sets, 'rate': 10.0}