Realizar a união de gráficos com base em nomes de vértices
Este problema foi arquivado emgithub algo como 6 meses atrás, mas como ainda não foi corrigido, estou me perguntando se há uma solução rápida que estou faltando.
Quero mesclar dois gráficos com base em seus nomes:
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
No entanto, quando eu realizo a união, o igraph usa os IDs dos vértices em vez dos nomes, então acabo com três vértices em vez de quatro (se for baseado em nomes). Eu acho que porqueB
tem índice0
nog2
, é mesclado comA
dog1
. E de maneira semelhante,C
dog2
é mesclado comB
dog1
.
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
Alguma idéia de como contornar esse problema? Isso é possível, pois foi feito na implementação R do igraph.