-
Notifications
You must be signed in to change notification settings - Fork 9
/
example_countries.py
54 lines (49 loc) · 2.03 KB
/
example_countries.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
__author__ = 'lisette.espin'
#######################################################################
# Dependencies
#######################################################################
import numpy as np
from libs.mrqap import MRQAP
import time
#######################################################################
# Constants
#######################################################################
NCOUNTRIES = 249
DIRECTED = True
NPERMUTATIONS = 2000
#######################################################################
# Functions
#######################################################################
def getMatrix(path, directed=False, log1p=False):
matrix = np.zeros(shape=(NCOUNTRIES,NCOUNTRIES))
with open(path, 'rb') as f:
for line in f:
data = line.split(' ')
c1 = int(data[0])-1
c2 = int(data[1])-1
v = np.log1p(float(data[2])) if log1p else float(data[2])
matrix[c1][c2] = v # real data from file
if not DIRECTED:
matrix[c2][c1] = v # symmetry
print '{} loaded as a matrix!'.format(path)
return matrix
#######################################################################
# Data Matrices
#######################################################################
X1 = getMatrix('data/country_trade_index.txt',DIRECTED,True)
X2 = getMatrix('data/country_distance_index.txt',DIRECTED,True)
X3 = getMatrix('data/country_colonial_index.txt',DIRECTED)
Y = getMatrix('data/country_lang_index.txt',DIRECTED)
X = {'TRADE':X1, 'DISTANCE':X2, 'COLONIAL':X3}
Y = {'LANG':Y}
np.random.seed(1)
#######################################################################
# QAP
#######################################################################
start_time = time.time()
mrqap = MRQAP(Y=Y, X=X, npermutations=NPERMUTATIONS, diagonal=False, directed=True)
mrqap.mrqap()
mrqap.summary()
print("--- {}, {}: {} seconds ---".format('directed' if DIRECTED else 'undirected', NPERMUTATIONS, time.time() - start_time))
mrqap.plot('betas')
mrqap.plot('tvalues')