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
|
#!/usr/bin/python3
# In[1]:
import networkx as nx
import sys
# In[2]:
if len(sys.argv) >2:
print("wrong usage.\n python3 Visualise_graph.py graph_edge_file [list_of_hinges]")
vertices=set()
with open (sys.argv[1]) as f:
for lines in f:
lines1=lines.split()
#print lines1
if len(lines1) < 5:
continue
#vertices.add(lines1[0])
#vertices.add(str(lines1[1]))
#vertices.add(str(lines1[0])+"_" + lines1[3])
#vertices.add(str(lines1[1])+"_" + lines1[4])
# In[3]:
len(vertices)
# In[4]:
G = nx.DiGraph()
for vertex in vertices:
G.add_node(vertex)
# In[5]:
with open (sys.argv[1]) as f:
for lines in f:
lines1=lines.split()
print(lines1)
if len(lines1) < 5:
continue
#print lines1
G.add_edge(lines1[0] + "_" + lines1[3], lines1[1] + "_" + lines1[4], hinge_edge=int(lines1[5]))
G.add_edge(lines1[1] + "_" + str(1-int(lines1[4])), lines1[0] + "_" + str(1-int(lines1[3])),hinge_edge=int(lines1[5]))
try:
in_hinges = set()
out_hinges = set()
with open (sys.argv[2]) as f:
for lines in f:
lines1=lines.split()
if lines1[2] == '1':
in_hinges.add(lines1[0]+'_0')
out_hinges.add(lines1[0]+'_1')
elif lines1[2] == '-1':
in_hinges.add(lines1[0]+'_1')
out_hinges.add(lines1[0]+'_0')
for node in G.nodes():
if node in in_hinges and node in out_hinges:
G.node[node]['hinge']=100
elif node in in_hinges:
G.node[node]['hinge']=10
elif node in out_hinges:
G.node[node]['hinge']=-10
else:
G.node[node]['hinge']=0
except:
pass
nx.write_graphml(G, './out.graphml')
# In[ ]:
|