[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] graph object structure

From: Gábor Csárdi
Subject: Re: [igraph] graph object structure
Date: Mon, 18 Oct 2010 10:18:59 +0200

Btw. this internal representation is not documented, because the user
it not expected to rely on it. It already changed in the past and
might change in the future as well. Use the public functions to query
and manipulate igraph graphs.


On Mon, Oct 18, 2010 at 10:13 AM, Tamas Nepusz <address@hidden> wrote:
> Dear John,
>> I view it as a list structure with 9 members, 1st as the edge number, 2nd 
>> direction logical value, 9th the vertices metadata. What I am not 
>> understanding is the contents in the 3rd-8th members.
>> Can anyone give me some hints? Thanks!
> The edge list is stored in the vectors from and to, the source vertex of edge 
> i is given by from[i] and the target is given by to[i]. The remaining members 
> are indexing data structures on top of the edge list. The ordering according 
> to the first column of the edge list is given by oi, so the first edge in the 
> ordering defined by the source vertex IDs is given by from[oi[0]]]. 
> Similarly, the first edge in the ordering defined by the target vertex IDs is 
> from[ii[0]]. Therefore, the length of oi and ii naturally matches the number 
> of edges in the graph.
> The vectors os and is serve as second-level indices by vertex IDs, so the ID 
> of the first edge originating from vertex i is given by from[oi[os[i]]], the 
> second one is given by from[oi[os[i]+1]] and so on, up to and not including 
> from[oi[os[i+1]]]. When a vertex does not have outgoing edges, 
> from[oi[os[i]]] equals from[oi[os[i+1]]]. The last elements of os and is are 
> sentinels, they are always equal to the number of edges, so the length of os 
> and is is always equal to the number of vertices. Finally, attr is a pointer 
> to a data structure holding graph, vertex and edge attributes. Its type is 
> unspecified, since attributes are handled by functions implementing a 
> separate attribute handler interface. The attribute handler used depends on 
> the environment in which igraph is embedded: there is a C attribute handler 
> which enables numeric and strings attributes, there is an R attribute handler 
> which can store arbitrary R objects in the attributes, there is a Python 
> attribute handler for storing Python objects and so on. In the latter cases, 
> the actual attribute handling is done by the host language and not igraph 
> itself.
> --
> Tamas
> _______________________________________________
> igraph-help mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/igraph-help

Gabor Csardi <address@hidden>     UNIL DGM

reply via email to

[Prev in Thread] Current Thread [Next in Thread]