Here is a minimal example :
from graph_tool.all import *
g=load_graph('test.xml')
_vertexIds = g.vertex_properties["_graphml_vertex_id"]
_edgeIds = g.edge_properties["_graphml_edge_id"]

test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
<key id="o" for="node" attr.name="origin" attr.type="double"/>
<key id="d" for="node" attr.name="destination" attr.type="double"/>
<key id="w" for="edge" attr.name="weight" attr.type="double"/>
<key id="n" for="edge" attr.name="name" attr.type="int"/>
<graph id="G" edgedefault="directed">
<node id="65091">
<data key="o">0.0</data>
<data key="d">6.76759405264e-06</data>
</node>
<edge id="1" source="65091" target="65221">
<data key="w">192.49624317</data>
<data key="n">1</data>
</edge>
<node id="16071">
<data key="o">5.41539461304e-05</data>
<data key="d">2.03027821579e-05</data>
</node>
<edge id="2" source="16071" target="16081">
<data key="w">269.676249521</data>
<data key="n">2</data>
</edge>
<edge id="3" source="16071" target="16061">
<data key="w">299.894548773</data>
<data key="n">3</data>
</edge>
</graph>
</graphml>


The error message:
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    _edgeIds = g.edge_properties["_graphml_edge_id"]
  File "/usr/lib/python2.7/site-packages/graph_tool/__init__.py", line 995, in __getitem__
    val = self.get_func(self.g, key)
  File "/usr/lib/python2.7/site-packages/graph_tool/__init__.py", line 1469, in <lambda>
    lambda g, k: g.__properties[("e", k)],
KeyError: ('e', '_graphml_edge_id')



On 29 May 2014 11:32, Tiago de Paula Peixoto <tiago@skewed.de> wrote:
On 05/29/2014 03:43 PM, Flavien Lambert wrote:
> Hi, is there a way to get the key 'id' of edges in the spirit of the vertices one like the following? _vertexIds works but not _edgeIds.
>
> g=load_graph(dataFolder+'networkFullyConnected.xml')
> _vertexIds = g.vertex_properties["_graphml_vertex_id"]
> _edgeIds = g.edge_properties["_graphml_edge_id"]

The edge property will be there if the edge labeling in the file is not
canonical. I.e., if in the beginning of the file you have something like

    <graph id="G" edgedefault="undirected" parse.nodeids="canonical" parse.edgeids="canonical" parse.order="nodesfirst">

that means that both the edge and node ids are canonical, and in that
case the properties will not be available.

I've tested with non-canonical labellings and I see both properties. If
you see otherwise, please provide a short example.

Best,
Tiago

--
Tiago de Paula Peixoto <tiago@skewed.de>


_______________________________________________
graph-tool mailing list
graph-tool@skewed.de
http://lists.skewed.de/mailman/listinfo/graph-tool