Выполнить объединение графов на основе имен вершин Python igraph
Эта проблема была подана наGitHub что-то вроде 6 месяцев назад, но так как это еще не исправлено, мне интересно, есть ли быстрое исправление, которое я пропускаю.
Я хочу объединить два графика на основе их имен:
g1 = igraph.Graph()
g2 = igraph.Graph()
# add vertices
g1.add_vertices(["A","B"])
g2.add_vertices(["B","C","D"])
for vertex in g1.vs:
print vertex.index
0
1
for vertex in g2.vs:
print vertex.index
0
1
2
Однако когда я выполняю объединение, igraph использует идентификаторы вершин, а не имена, поэтому я получаю три вершины вместо четырех (если это основано на именах). Я думаю, потому чтоB
имеет индекс0
вg2
, слит сA
изg1
, И аналогичным образом,C
изg2
сливается сB
изg1
.
g_union = igraph.Graph.union(g1,g2)
g_union.vs['name'] # of course
KeyError: 'Attribute does not exist'
for vertex in g_union.vs:
print vertex.index
0
1
2
Есть идеи, как обойти эту проблему? Это возможно, так как это было сделано в R-реализации igraph.