This repository was archived by the owner on Apr 14, 2025. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathnetwork.py
More file actions
89 lines (76 loc) · 3.01 KB
/
Copy pathnetwork.py
File metadata and controls
89 lines (76 loc) · 3.01 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import sys, codecs, os
os.environ['CLASSPATH'] = "../miralib/dist/*" # Need this to load the classes from the jar files
# in pyjnius 1.4+ we can use:
#import jnius_config
#jnius_config.add_options('-Xrs', '-Xmx4096')
#jnius_config.set_classpath('.', '../miralib/dist/*')
from jnius import autoclass
Log = autoclass("miralib.utils.Log")
Preferences = autoclass("miralib.utils.Preferences")
Project = autoclass("miralib.utils.Project")
DataRanges = autoclass("miralib.data.DataRanges")
DataSet = autoclass("miralib.data.DataSet")
Variable = autoclass("miralib.data.Variable")
DataSlice2D = autoclass("miralib.data.DataSlice2D")
Similarity = autoclass("miralib.shannon.Similarity")
Log.init()
inputFile = "./config.mira";
outputFile = "./network.csv";
len = len(sys.argv)
if len == 2:
inputFile = sys.argv[1];
else:
for i in range(1, len):
if sys.argv[i] == "-in" and i + 1 < len:
inputFile = sys.argv[i + 1];
elif sys.argv[i] == "-out" and i + 1 < len:
outputFile = sys.argv[i + 1];
elif sys.argv[i] == "-miss" and i + 1 < len:
preferences.missingString = sys.argv[i + 1];
elif sys.argv[i] == "-mist" and i + 1 < len:
preferences.missingThreshold = Project.stringToMissing(sys.argv[i + 1]);
elif sys.argv[i] == "-pval" and i + 1 < len:
preferences.pValue = Project.stringToPValue(sys.argv[i + 1]);
elif sys.argv[i] == "-algo" and i + 1 < len:
preferences.depTest = Similarity.stringToAlgorithm(sys.argv[i + 1]);
elif sys.argv[i] == "-surr" and i + 1 < len:
preferences.surrCount = int(sys.argv[i + 1]);
elif sys.argv[i] == "-chtr" and i + 1 < len:
preferences.threshold = float(sys.argv[i + 1]);
preferences = Preferences()
project = Project(inputFile, preferences)
ranges = DataRanges();
dataset = DataSet(project);
count = dataset.getVariableCount()
output = [""] * (count + 1)
print "Calculating correlation matrix:"
scores = [[0 for x in xrange(count)] for x in xrange(count)]
for i in range(0, count):
print " Row " + str(i) + "/" + str(count) + "..."
for j in range(i, count):
vi = dataset.getVariable(i)
vj = dataset.getVariable(j)
slice = dataset.getSlice(vi, vj, ranges)
score = 0
if i != j and slice.missing < project.missingThreshold():
score = Similarity.calculate(slice, project.pvalue(), project)
scores[i][j] = scores[j][i] = score
print "Done."
header = "";
for i in range(0, count):
vi = dataset.getVariable(i)
vname = vi.getAlias().replace('"', '\'');
header = header + ";\"" + vname + "\"";
output[0] = header;
for i in range(0, count):
vi = dataset.getVariable(i)
vname = vi.getAlias().replace('"', '\'')
line = "\"" + vname + "\""
for j in range(0, count):
line = line + ";" + str(scores[i][j])
output[1 + i] = line
file = codecs.open(outputFile, "w", "utf-8")
for line in output:
file.write(line + "\n");
file.close()
print "Saved to",outputFile