导入iGraph的edgeList的正确方法

时间:2015-09-24 23:49:06

标签: python igraph

在python脚本中,我需要将一个igraph图放入一个列表中,然后将该列表转换回igraph图。

我和get_edgelist一起尝试这个,就像这个

  

g = [(3,4),(6,7),(7,8),(4,10),(5,11),(0,13),(1,13),(7) ,17),   (13,17),(16,17),(12,18),(0,19),(16,20),(17,20),(2,21),   (7,21),(10,22),(6,24),(17,24),(8,26),(18,26),(5,27),(26,   28),(27,28),(1,29),(3,29),(9,29),(13,29),(5,19),(0,22),   (21,22),(1,21),(1,3),(20,21),(3,18),(4,18),(4,12),(18,   18),(0,27),(3,6),(12,23),(13,23),(7,9),(4,9)]

然后重新导入它:

from igraph import *
G = Graph.Read_Edgelist(g)

返回:

  

TypeError:预期的字符串或文件句柄

知道什么是错的吗?或者正确的方法是什么?

相反,我写了一个这样的函数:

def edgelist2graph(el):
    g = Graph()
    g.add_vertices(nbr_nodes)
    g.add_edges(el)
    return g

这是一种有效的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用write_edgelist将图表的边缘列表保存到文件中 - 然后您可以稍后使用Read_Edgelist将其恢复。 get_edgelist只是为您提供了一个表示图表边缘列表的元组的Python列表。无法使用Read_Edgelist加载它,因为Read_Edgelist适用于文件或类文件对象。

我不确定您想要实现的目标,但如果您只是想将图表以序列化形式存储在某个Python对象中,然后再将其加载回来,请使用Python' s {{1而不是模块 - 这不仅会保存边缘列表,还会保存定向性,节点数量以及所有图形,顶点和边缘属性。