Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

igraph initialisation with weights

How can I initialise an igraph with weights?

This is what I have

cr = csv.reader(open("atlas.csv","rb"))

mapping = {}
for row in cr:
    if int(row[2]) == 1:
        continue

    source = int(row[0])
    target = int(row[1])

    if source in mapping:
        list = mapping[source]
        list.append(target)
    else:
        mapping[source] = [target]

print mapping

G = Graph(edges = [(v, a) for v in mapping.keys() for a in mapping[v]])
print G

I tried adding weight using edges = (v, a, w) but that doesn't work.

like image 985
MTA Avatar asked Apr 28 '26 21:04

MTA


1 Answers

According to the documentation, you may use TupleList method:

If you have a weighted graph, you can use items where the third item contains the weight of the edge by setting edge_attrs to "weight" or ["weight"].

You may also set weights parameter to True:

weights - alternative way to specify that the graph is weighted. If you set weights to true and edge_attrs is not given, it will be assumed that edge_attrs is ["weight"] and igraph will parse the third element from each item into an edge weight. If you set weights to a string, it will be assumed that edge_attrs contains that string only, and igraph will store the edge weights in that attribute.

like image 151
awesoon Avatar answered May 01 '26 11:05

awesoon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!