简体   繁体   中英

iGraph: selecting vertices connected to

Suppose I have the following graph:

g = ig.Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)], directed=False)
g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank", "George"]

and I wish to see who Bob is connected to. Bob is only connected to one person Alice. However if try to find the edge :

g.es.select(_source=1)
>>> <igraph.EdgeSeq at 0x7f15ece78050>

I simply get the above response. How do I infer what the vertex index is from the above. Or if that isn't possible, how do I find the vertices connected to Bob?

This seems to work. The keyword arguments consist of the property, eg _source and _target , and operator eg eq (=). And also it seems you need to check both the source and target of the edges (even it's an undirected graph), after filtering the edges, you can use a list comprehension to loop through the edges and extract the source or target :

connected_from_bob = [edge.target for edge in g.es.select(_source_eq=1)]
connected_to_bob = [edge.source for edge in g.es.select(_target_eq=1)]

connected_from_bob
# []

connected_to_bob
# [0]

Then vertices connected with Bob is a union of the two lists:

connected_with_bob = connected_from_bob + connected_to_bob

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM