InterneuronalCircuit.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:DisinhibitoryCircuit2016 作者: gyyang 项目源码 文件源码
def generate_W_grid(self,p):
        '''
        Generate connection matrix for neurons in a two-dimensional grid
        Specifically for VIP-SOM connections
        '''
        p['p_vip2som_arbor'] = 0.6
        # Consider a grid of 400\mum * 400\mum
        # Assign locations of neurons
        p['n_vip_scale'] = 625
        p['grid_size_vip'] = 400*np.sqrt(p['n_vip_scale']/p['n_vip'])  # mu m
        p['n_vip_scale_sqrt'] = np.round(np.sqrt(p['n_vip_scale']))
        p['n_som_sqrt'] = np.floor(np.sqrt(p['n_som']))

        # x and y locations of VIP neurons, randomly drawn
        p['vip_x'] = np.tile(np.linspace(-0.5,0.5,p['n_vip_scale_sqrt']),p['n_vip_scale_sqrt'])*p['grid_size_vip']
        p['vip_y'] = np.repeat(np.linspace(-0.5,0.5,p['n_vip_scale_sqrt']),p['n_vip_scale_sqrt'])*p['grid_size_vip']
        # x and y locations of SOM neurons, randomly drawn
        p['som_x'] = np.tile(np.linspace(-0.5,0.5,p['n_som_sqrt']),p['n_som_sqrt'])*400
        p['som_y'] = np.repeat(np.linspace(-0.5,0.5,p['n_som_sqrt']),p['n_som_sqrt'])*400
        p['som_x'] = np.concatenate((p['som_x'],(np.random.rand(p['n_som']-p['n_som_sqrt']**2)-0.5)*400))
        p['som_y'] = np.concatenate((p['som_y'],(np.random.rand(p['n_som']-p['n_som_sqrt']**2)-0.5)*400))

        # Assume that each VIP only targets SOM within vicinity (vip_arbor) with probability p_vip2som_arbor
        p['W_vip2som'] = np.zeros((p['n_som'],p['n_vip_scale']))

        for i_som in xrange(p['n_som']):
            dist2vip = np.sqrt((p['som_x'][i_som]-p['vip_x'])**2+(p['som_y'][i_som]-p['vip_y'])**2)
            # Make connections if p>p_vip2som_arbor and dist<vip_arbor
            ind_vip2som_conn = np.where(dist2vip<(p['vip_arbor']))[0]
            np.random.shuffle(ind_vip2som_conn)
            ind_vip2som_conn = ind_vip2som_conn[:int(p['p_vip2som_arbor']*len(ind_vip2som_conn))]
            p['W_vip2som'][i_som,ind_vip2som_conn] = 1

        n_vip2som = np.sum(p['W_vip2som'],axis=1)
        # uIPSQ is about 0.7 pC=0.7 pA/Hz for VIP-SOM connection, Pfeffer et al. Nat Neurosci. 2012
        #syn_weight_vip2som = 10/n_vip2som
        for i_som in xrange(p['n_som']):
            p['W_vip2som'][i_som,:] = p['W_vip2som'][i_som,:]*0.7*60/n_vip2som[i_som]

        return p
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号