List of all classes, functions and methods in python-igraph
class VertexSeq(_VertexSeq):
Class representing a sequence of vertices in the graph.
This class is most easily accessed by the vs
field of the Graph
object, which returns an ordered sequence of all vertices in the graph. The vertex sequence can be refined by invoking the VertexSeq.select()
method. VertexSeq.select()
can also be accessed by simply calling the VertexSeq
object.
An alternative way to create a vertex sequence referring to a given graph is to use the constructor directly:
>>> g = Graph.Full(3) >>> vs = VertexSeq(g) >>> restricted_vs = VertexSeq(g, [0, 1])
The individual vertices can be accessed by indexing the vertex sequence object. It can be used as an iterable as well, or even in a list comprehension:
>>> g=Graph.Full(3) >>> for v in g.vs: ... v["value"] = v.index ** 2 ... >>> [v["value"] ** 0.5 for v in g.vs] [0.0, 1.0, 2.0]
The vertex set can also be used as a dictionary where the keys are the attribute names. The values corresponding to the keys are the values of the given attribute for every vertex selected by the sequence.
>>> g=Graph.Full(3) >>> for idx, v in enumerate(g.vs): ... v["weight"] = idx*(idx+1) ... >>> g.vs["weight"] [0, 2, 6] >>> g.vs.select(1,2)["weight"] = [10, 20] >>> g.vs["weight"] [0, 10, 20]
If you specify a sequence that is shorter than the number of vertices in the VertexSeq, the sequence is reused:
>>> g = Graph.Tree(7, 2) >>> g.vs["color"] = ["red", "green"] >>> g.vs["color"] ['red', 'green', 'red', 'green', 'red', 'green', 'red']
You can even pass a single string or integer, it will be considered as a sequence of length 1:
>>> g.vs["color"] = "red" >>> g.vs["color"] ['red', 'red', 'red', 'red', 'red', 'red', 'red']
Some methods of the vertex sequences are simply proxy methods to the corresponding methods in the Graph
object. One such example is VertexSeq.degree()
:
>>> g=Graph.Tree(7, 2) >>> g.vs.degree() [2, 3, 3, 1, 1, 1, 1] >>> g.vs.degree() == g.degree() True
Method | attributes |
Returns the list of all the vertex attributes in the graph associated to this vertex sequence. |
Method | find |
Returns the first vertex of the vertex sequence that matches some criteria. |
Method | select |
Selects a subset of the vertex sequence based on some criteria |
Method | __call__ |
Shorthand notation to select() |
Inherited from VertexSeq
:
Method | __new__ |
Create and return a new object. See help(type) for accurate signature. |
Method | attribute_names |
Returns the attribute name list of the graph's vertices |
Method | get_attribute_values |
Returns the value of a given vertex attribute for all vertices in a list. |
Method | set_attribute_values |
Sets the value of a given vertex attribute for all vertices |
Method | _reindex_names |
Re-creates the dictionary that maps vertex names to IDs. |
Returns the list of all the vertex attributes in the graph associated to this vertex sequence.
igraph._igraph.VertexSeq.find
Returns the first vertex of the vertex sequence that matches some criteria.
The selection criteria are equal to the ones allowed by VertexSeq.select
. See VertexSeq.select
for more details.
For instance, to find the first vertex with name foo
in graph g
:
>>> g.vs.find(name="foo") #doctest:+SKIP
To find an arbitrary isolated vertex:
>>> g.vs.find(_degree=0) #doctest:+SKIP
igraph._igraph.VertexSeq.select
Selects a subset of the vertex sequence based on some criteria
The selection criteria can be specified by the positional and the keyword arguments. Positional arguments are always processed before keyword arguments.
None
, an empty sequence is returned.True
, the vertex will be included, otherwise it will be excluded.VertexSeq.select()
. In this case, the indices do not refer directly to the vertices of the graph but to the elements of the filtered vertex sequence.Keyword arguments can be used to filter the vertices based on their attributes. The name of the keyword specifies the name of the attribute and the filtering operator, they should be concatenated by an underscore (_
) character. Attribute names can also contain underscores, but operator names don't, so the operator is always the largest trailing substring of the keyword name that does not contain an underscore. Possible operators are:
eq
: equal tone
: not equal tolt
: less thangt
: greater thanle
: less than or equal toge
: greater than or equal toin
: checks if the value of an attribute is in a given listnotin
: checks if the value of an attribute is not in a given listFor instance, if you want to filter vertices with a numeric age
property larger than 200, you have to write:
>>> g.vs.select(age_gt=200) #doctest: +SKIP
Similarly, to filter vertices whose type
is in a list of predefined types:
>>> list_of_types = ["HR", "Finance", "Management"] >>> g.vs.select(type_in=list_of_types) #doctest: +SKIP
If the operator is omitted, it defaults to eq
. For instance, the following selector selects vertices whose cluster
property equals to 2:
>>> g.vs.select(cluster=2) #doctest: +SKIP
In the case of an unknown operator, it is assumed that the recognized operator is part of the attribute name and the actual operator is eq
.
Attribute names inferred from keyword arguments are treated specially if they start with an underscore (_
). These are not real attributes but refer to specific properties of the vertices, e.g., its degree. The rule is as follows: if an attribute name starts with an underscore, the rest of the name is interpreted as a method of the Graph
object. This method is called with the vertex sequence as its first argument (all others left at default values) and vertices are filtered according to the value returned by the method. For instance, if you want to exclude isolated vertices:
>>> g = Graph.Famous("zachary") >>> non_isolated = g.vs.select(_degree_gt=0)
For properties that take a long time to be computed (e.g., betweenness centrality for large graphs), it is advised to calculate the values in advance and store it in a graph attribute. The same applies when you are selecting based on the same property more than once in the same select()
call to avoid calculating it twice unnecessarily. For instance, the following would calculate betweenness centralities twice:
>>> edges = g.vs.select(_betweenness_gt=10, _betweenness_lt=30)
It is advised to use this instead:
>>> g.vs["bs"] = g.betweenness() >>> edges = g.vs.select(bs_gt=10, bs_lt=30)
Returns | the new, filtered vertex sequence |
Shorthand notation to select()
This method simply passes all its arguments to VertexSeq.select()
.