-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathwrite_graph.py
64 lines (55 loc) · 2.26 KB
/
write_graph.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
60
61
62
63
64
import numpy as np
def findMatrixReordering(nodesInPart):
ordering = []
for partition in nodesInPart:
for node in partition:
ordering.append(node)
ordering = np.array(ordering) - min(ordering)
return ordering
def writeMatrixToFile(adj, fileName, newLines = False):
f = open(fileName,'a')
for row in adj:
f.write("".join(str(x) for x in row))
if (newLines):
f.write("\n")
if (not newLines):
f.write("\n")
f.close()
def writeArrayToFile(arr, fileName):
f = open(fileName,'a')
f.write("".join(str(x) for x in arr))
f.write("\n")
f.close()
def writeNumbersToFile(numbers, fileName):
f = open(fileName, 'w')
for number in numbers:
f.write(str(number) + "\n")
f.close()
def writePartitionedGraphToFile(nodesInPartS, nodesInPartD, part, adj, sourceNodes, destNodes, fileName):
writeNumbersToFile([len(sourceNodes), len(destNodes), len(nodesInPartS), len(nodesInPartD)], fileName)
writeArrayToFile(part, fileName)
for i in range(len(nodesInPartS)):
nodesInPartS[i].sort()
for j in range(len(nodesInPartD)):
nodesInPartD[j].sort()
adj2 = [[adj[row][col] for col in nodesInPartD[j]] for row in nodesInPartS[i]]
writeMatrixToFile(adj2, fileName)
def writeInitialGraphToFile(adj, sourceNodes, destNodes, fileName):
writeNumbersToFile([len(sourceNodes), len(destNodes)], fileName)
adj2 = [[adj[row][col] for col in destNodes] for row in sourceNodes]
writeMatrixToFile(adj2, fileName)
def writeMatrixToPnms(adj, fileName1, fileName2, sourceNodes, destNodes, nodesInPartS, nodesInPartD):
adj2 = [[adj[row][col] for col in destNodes] for row in sourceNodes]
sourceOrdering = findMatrixReordering(nodesInPartS)
destOrdering = findMatrixReordering(nodesInPartD)
adj3 = [[adj2[row][col] for col in destOrdering] for row in sourceOrdering]
f = open(fileName1,'w')
f.write("P1\n")
f.write(str(len(sourceNodes)) + " " + str(len(destNodes)) + "\n")
f.close()
writeMatrixToFile(adj2, fileName1, True)
f = open(fileName2,'w')
f.write("P1\n")
f.write(str(len(sourceNodes)) + " " + str(len(destNodes)) + "\n")
f.close()
writeMatrixToFile(adj3, fileName2, True)