Title

Thursday, 5 February 2015

How to get values from specific node attributes in NetworkX with Python


I'm working on a group project and we need to create a list of all the values from a specific node attribute in the graph we are working on. Each node has 6 attributes, we just need a list of all the values for one of our attributes.

import networkx as nx  import scipy as sp  import matplotlib.pyplot as plt  %matplotlib inline  import urllib    url = "http://josquin.cti.depaul.edu/~rburke/courses/s14/fmh.graphml"  sock = urllib.urlopen(url) # open URL  fmh = nx.read_graphml(sock)    for i in fmh:   if fmh.node[i]['Race'] == 'Asian':   fmh.add_node(i, RaceN=0)   elif fmh.node[i]['Race'] == 'Black':   fmh.add_node(i, RaceN=1)   elif fmh.node[i]['Race'] == 'Hisp':   fmh.add_node(i, RaceN=2)   elif fmh.node[i]['Race'] == 'NatAm':   fmh.add_node(i, RaceN=3)   elif fmh.node[i]['Race'] == 'Other':   fmh.add_node(i, RaceN=4)   elif fmh.node[i]['Race'] == 'White':   fmh.add_node(i, RaceN=5)    for i in fmh:   if fmh.node[i]['Sex'] == 'F':   fmh.add_node(i, SexN=0)   elif fmh.node[i]['Sex'] == 'M':   fmh.add_node(i, SexN=1)

I think that's everything pertinent. The pre loaded data has 5 attributes, we added a 6th, we just want to be able to grab the values for a specific attribute, like say make a list of all the values for the RaceN attribute.

The idea is that we have a list of integers which we can call the sp.bincount() function on.

Answer

Your code won't run without more info. I think you want something like the function networkx.get_node_attributes():

In [1]: import networkx as nx    In [2]: G = nx.Graph()    In [3]: G.add_node(1,profit=17)    In [4]: G.add_node(2,profit=42)    In [5]: a = nx.get_node_attributes(G,'profit')    In [6]: a.items()  Out[6]: [(1, 17), (2, 42)]

No comments:

Post a Comment