У меня есть некоторые реляционные данные в формате списка списков, которые я бы хотел импортировать в iGraph.Graph()
. Список списков содержит повторяющиеся ребра, и в конечном итоге я хотел бы добавить кромку для повторяющихся ребер. Однако в настоящее время я не могу понять, что я делаю неправильно, когда просто пытаюсь добавить ребра к графику, за вычетом весового коэффициента.Загрузка данных из списка списков (представляющих ребра) в графике igraph в python
Я думал, что проблема в том, что мне пришлось сначала импортировать все вершины в граф, а затем добавить ребра между вершинами, но это, похоже, не так.
Что я делаю неправильно, загружая эти края в график?
* Как я могу изменить процесс загрузки грани, чтобы сначала искать край в графе, если не найден, добавьте ребро, и если он найден, увеличьте вес этого края на 1, *
ДАННЫЕ
In [60]: edges
Out[60]: [['a', 'b'],
['a', 'b'],
['a', 'b'],
['b', 'a'],
['a', 'c'],
['c', 'a'],
['c', 'd'],
['c', 'd'],
['d', 'c'],
['d', 'c']]
IGRAPH код для загрузки ребер в GRAPH и ошибках
In [61]: # extract vertices for edges list
vertices = []
for line in edges:
nodes.append(line[0])
nodes.append(line[1])
# find unique vertices
uniq_vertices = set(sorted(nodes))
In [62]: # create an empty graph
g = igraph.Graph()
In [63]: # add vertices to the graph
g.add_vertices(uniq_vertices)
In [64]: # for each line in the edges list, check to see if it's already in the graph, and if not, add it to the graph.
for line in edges:
if not line in g.get_edgelist():
g.add_edges(edges)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-64-04a376c78860> in <module>()
2 for line in edges:
3 if not line in g.get_edgelist():
----> 4 g.add_edges(edges)
C:\Users\Curtis\Anaconda\lib\site-packages\igraph\__init__.pyc in add_edges(self, es)
228 endpoints. Vertices are enumerated from zero.
229 """
--> 230 return GraphBase.add_edges(self, es)
231
232 def add_vertex(self, name=None, **kwds):
ValueError: no such vertex: 'a'
Я думаю, чтобы создать график, более простой способ было бы использовать TupleList: edge = [('a', 'b'), ('a', 'b'), ('a', 'b'), ('b', 'a'), , ('a', 'c'), ('c', 'a'), ('c', 'd'), ('c', 'd'), ('d', 'c'), , ('d', 'c')] g = Graph.TupleList (направленный = True, edge = edge) – Max