2015-09-24 5 views
0

В сценарии python мне нужно поместить графический график в список, а затем - включить этот список обратно в графический график.Правильный способ импорта iGraph's edgeList

Я пытаюсь это с 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: string or file handle expected

Любая идея то, что неправильно? Или как правильно это сделать?

Вместо этого я написал функцию, как это:

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

Это эффективный способ сделать это?

Спасибо!

ответ

1

Используйте write_edgelist, чтобы сохранить список краев вашего графика в файл. Затем вы можете восстановить его с помощью Read_Edgelist. get_edgelist просто дает вам список кортежей Python, который представляет список краев вашего графика. Он не может быть загружен обратно Read_Edgelist, потому что Read_Edgelist работает с файлами или файлоподобными объектами.

Я не уверен, что именно вы хотите достичь, но если вы просто хотите сохранить свой граф в каком-то объекте Python в сериализованной форме, а затем загрузить его позже, используйте вместо этого модуль pickle Python - это сохранит не только список ребер, а также направленность, количество узлов и все атрибуты графика, вершины и края.

+0

Мне действительно нужно рассол-решение, спасибо! – Rodolphe

Смежные вопросы