Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I find the number of vertices in a graph created by iGraph in python?

Tags:

python

igraph

I'm writing a function that receives a graph as input. The very first thing I need to do is determine the order of the graph (that is, the number of vertices in the graph).

I mean, I could use g.summary() (which returns a string that includes the number of vertices), but then I'd have parse the string to get at the number of vertices -- and that's just nasty.

To get the number of edges I'm using len(g.get_edgelist()), which works. But there is no g.get_vertexlist(), so I can't use the same method.

Surely there is an easy way to do this that doesn't involve parsing strings.

like image 649
Austin Williams Avatar asked Nov 14 '15 08:11

Austin Williams


2 Answers

g.vcount() is a dedicated function in igraph that returns the number of vertices. Similarly, g.ecount() returns the number of edges, and it is way faster than len(g.get_edgelist()) as it does not have to construct the full edge list in advance.

like image 64
Tamás Avatar answered Oct 27 '22 15:10

Tamás


As some functions in igraph have been renamed in meantime, I found the answers here out of date. What the docs suggest now is calling

gorder(g)

which works for me. Analogy for ecount is

gsize(g)   # vcount(g) still works, but not g.vcount()

It's useful to note that help pages are cleverly redirected, so

?vcount

brings you to gorder docs etc.

like image 28
Dedalus Avatar answered Oct 27 '22 16:10

Dedalus