python - Identify first node after source node having two neighbors in NetworkX DiGraph -
i implementing digraph networkx. source red-node. need identify first node starting @ red 1 has 2 neighbors (in "flow-direction"). if iterate on nodes - seems ramdom. great if help!
you can use successors
method. if digraph instance called g, , red node has index 0 can take breadth first search approach this:
import networkx nx # construct graph example image, edges pointing away source g = nx.digraph() g.add_path([0,1,2,3,4]) g.add_path([1,5]) g.add_path([3,6]) g.add_path([2,7,8]) # find first 2 neighbors neighbors = g.successors(0) n in neighbors: nneighbors = set(g.successors(n)) if len(nneighbors) == 2: print "found", n break neighbors.extend(nneighbors)
the neighbors
method interchangable successors
digraph in networkx. if want count ingoing edges each node, add g.predecessors(n)
set of nneighbors
when count them, remember not include them in set when extend neighbors
. code be:
# find first 2 neighbors neighbors = g.successors(0) n in neighbors: if len(g.predecessors(n)+g.successors(n)) == 2: print "found", n break nneighbors = set(g.successors(n)) neighbors.extend(nneighbors)
Comments
Post a Comment