Exemplo n.º 1
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)
Exemplo n.º 2
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)])
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
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}
Exemplo n.º 6
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)])
Exemplo n.º 7
0
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
    }
Exemplo n.º 8
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)
Exemplo n.º 9
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)
Exemplo n.º 10
0
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}
Exemplo n.º 11
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)
Exemplo n.º 12
0
 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'
Exemplo n.º 13
0
 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'
Exemplo n.º 14
0
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}