-
Notifications
You must be signed in to change notification settings - Fork 2
/
ConnectivityAnalysis.py
59 lines (41 loc) · 1.15 KB
/
ConnectivityAnalysis.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# -*- coding: utf-8 -*-
"""
Analyzing circuit
@author: Guangyu Robert Yang, 2015-2016
"""
from __future__ import division
import time
import pickle
import numpy as np
import matplotlib.pyplot as plt
import scipy.cluster.hierarchy as sch
import scipy.spatial.distance as ssd
import scipy.stats
from figtools import Figure,Subplot,colors
from matplotlib.ticker import LinearLocator
datafile='library/mouse_isocortex_data_usc.pkl'
with open(datafile,'rb') as f:
p = pickle.load(f)
W = p['W_mean']>0
areas = p['areas']
n_area = len(areas)
W = np.zeros((n_area,n_area))
for i in range(1,n_area):
W[i,i-1] = 1
W[:,-1] = 1
idx_0 = areas.index('SSp-bfd')
idx_1 = areas.index('SSs')
hiers = np.ones(n_area)
#hiers = np.random.rand(n_area)*5
alpha = 0.5
for i in range(1000):
input_degree = W.sum(axis=1)
output_degree = W.sum(axis=0)
input_hiers = (np.dot(W,hiers))/input_degree
output_hiers = (np.dot(W.T,hiers))/output_degree
target_hiers = (input_hiers+1)/2 + (output_hiers-1)/2
target_hiers = input_hiers+1
hiers = hiers*(1-alpha)+alpha*target_hiers
hiers[idx_0] = 0
hiers[idx_1] = 1
print hiers