使用带有 graphml 格式的 load_graph 时防止图形工具重新映射节点

Prevent graph-tool to remap nodes when using load_graph with graphml format

我正在处理一些以前从 networkx 库以 graphml 格式导出的图表。

当我将这些文件导入图形工具时,以下将节点重新映射到 0 基索引。我怎样才能防止这种情况发生?因为我真的需要保留顺序。

示例:

# Create a graph using networkx with only one edge (10 <-> 20)
import networkx as nx
g = nx.Graph()
g.add_edge(10, 20)
nx.write_graphml(g, 'teste.graphml')

# load the previous graph using graph-tool
import graph_tool.all as gt
g = gt.load_graph('teste.graphml')
print(list(g.edges()) # output is an edge from 0 to 1

在图形工具中,顶点总是从零开始索引,但如果 graphml 文件使用非规范索引,这可以通过 "_graphml_vertex_id" 属性 映射获得:

g = gt.load_graph('teste.graphml')
v = g.vertex(0)
print(g.vp._graphml_vertex_id[v])