Skip to content

Instantly share code, notes, and snippets.

@engineerball
Created November 3, 2016 19:41
Show Gist options
  • Select an option

  • Save engineerball/b75856071353a5d615899b165a119bf2 to your computer and use it in GitHub Desktop.

Select an option

Save engineerball/b75856071353a5d615899b165a119bf2 to your computer and use it in GitHub Desktop.
extract node detail and matrix from graph xml
from xml.dom import minidom
from signal import signal, SIGPIPE, SIG_DFL
from sys import argv
script, filename = argv
signal(SIGPIPE,SIG_DFL)
edge = []
xmldoc = minidom.parse(filename)
itemlist = xmldoc.getElementsByTagName('node')
print(len(itemlist))
f = open("%s-node-detail.csv" % filename,'w')
f.write("node, betweenesscentrality, closenesscentrality\n")
for node in itemlist:
id = node.getAttribute("id")
attritemlist = node.getElementsByTagName('attvalue')
closenesscentrality = attritemlist[1].attributes['value'].value
betweenesscentrality = attritemlist[2].attributes['value'].value
f.write("%s, %s, %s\n" % (id, betweenesscentrality, closenesscentrality))
f.close()
f = open("%s-matrix.txt" % filename, 'w')
edgeitemlist = xmldoc.getElementsByTagName('edge')
for node in edgeitemlist:
edgesource = node.getAttribute("source")
edgetarget = node.getAttribute("target")
edge.append(edgesource)
edge.append(edgetarget)
edge = list(set(edge))
print(len(edge))
print(edge)
f.write("%s\n" % edge)
printed = False
for source in edge:
f.write("\n")
for target in edge:
for node in edgeitemlist:
edgesource = node.getAttribute("source")
edgetarget = node.getAttribute("target")
if edgesource == source and edgetarget == target:
f.write("1 ")
printed = True
if printed != True:
f.write("0 ")
printed = False
f.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment