[Top][All Lists]

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

Re: [igraph] Weighted graphs in Python interface

From: Tamas Nepusz
Subject: Re: [igraph] Weighted graphs in Python interface
Date: Mon, 2 Jun 2008 13:33:25 +0200


1. Working with the Python interface, I would like to generate a directed weighted graph (without multiple edges and self-loops) from an adjacency matrix, where the elements of the matrix store the weight if an edge exists and are otherwise zero. The matrix is a numpy array or list of lists. How can this be achieved in a most direct way?
I already submitted a patch to the igraph 0.6 dev tree that accomplishes this goal (the new graph constructor will be called Graph.Weighted_Adjacency). If you are willing to hack around with the igraph source and then recompile igraph, I can send you a patch. Otherwise, try this simple solution:

edges, weights, vcount = [], [], 0
for v1, line in enumerate(file("adjacency-matrix.dat")):
    vcount += 1
    parts = map(float, line.strip().split())
    for v2, weight in parts:
        if v2 > 0:

g = Graph(vcount, edges, directed=True)
g.es["weight"] = weights

I hope this helps. I haven't tried it, but the basic idea should be correct.

The weights are all positive in my application. Is this implemented yet in iGraph?
Weighted shortest path lengths will be implemented in igraph 0.6. Weighted closeness centrality is not implemented directly in the dev tree yet, but I think it's not too difficult to calculate using the matrix returned by the weighted shortest path calculations. Weighted betweenness centrality seems more complicated - I'm not familiar with the implementation details of igraph_betweenness, maybe Gabor can comment on it.

If not, do you have suggestions for other fast libraries implementing these features?
I think the Boost Graph Library implements weighted betweenness centrality:


reply via email to

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