Are the indices in the array not the indices of the edges? I'm not sure, but I think you could be accessing edges based on indices you precomputed rather than edge objects. On Jul 16, 2014 9:51 AM, "Flavien Lambert" <[email protected]> wrote:
> Hi Elliott, I know that the get_array is very efficient but the thing is I > have to know exactly what are the edges I am dealing with. > > To be more precise, I run loops over the shortest paths which I computed > before and stored in a file. Therefore, each iteration makes access to a > tiny fraction of the network and I must keep track of the edges involved. > That is why I was giving the example of single access instead of global one > though .a. > > Best, > F. > On 16 Jul 2014 22:04, "..." <[email protected]> wrote: > >> You know you can get the edges, vertices, and property maps as numpy >> arrays by using the .a method. You should be able to do whatever you need >> much faster with arrays than dictionaries. >> On Jul 16, 2014 3:50 AM, "Flavien Lambert" <[email protected]> >> wrote: >> >>> Hi everyone, to compute some functions I needed to loop over a bunch >>> of edges. I realized that the call to property maps seems slow compare to a >>> dictionary. I am a bit surprised since I was told - I am not an expert in >>> python - that a query in a dictionary was already. So I was wondering if I >>> made a mistake in using graph_tool. Following is an example of comparison. >>> Best, >>> F. >>> >>> >>> In [3]: >>> >>> >>> >>> _network = gt.load_graph(_dataFolder + 'networkLTA-2.0-scc.xml') >>> >>> >>> >>> _network = gt.load_graph(_dataFolder + 'networkLTA-2.0-scc.xml') >>> >>> In [4]: >>> >>> >>> >>> _network.list_properties() >>> >>> >>> >>> >>> destination (vertex) (type: long double) >>> _graphml_vertex_id (vertex) (type: string) >>> origin (vertex) (type: long double) >>> _graphml_edge_id (edge) (type: string) >>> speed (edge) (type: long double) >>> name (edge) (type: string) >>> time (edge) (type: long double) >>> >>> In [5]: >>> >>> >>> >>> _edgeIds = _network.edge_properties['_graphml_edge_id'] >>> >>> >>> >>> _times = _network.edge_properties["time"] >>> >>> >>> >>> _speeds = _network.edge_properties["speed"] >>> >>> >>> >>> >>> >>> >>> >>> >>> _origin = _network.vertex_properties['origin'] >>> >>> >>> >>> _destination = _network.vertex_properties['destination'] >>> >>> In [8]: >>> >>> >>> >>> _edges = [_e for _e in _network.edges()] >>> >>> >>> >>> %time for _e in _network.edges() : a = _speeds[_e] >>> >>> >>> >>> >>> >>> >>> >>> >>> _speedDict = {} >>> >>> >>> >>> for _e in _edges : >>> >>> >>> >>> >>> _speedDict[_network.edge_index[_e]] = _speeds[_e] >>> >>> >>> >>> _indexes = [_network.edge_index[_e] for _e in _network.edges()] >>> >>> >>> >>> %time for _n in _indexes : a = _speedDict[_n] >>> >>> >>> >>> >>> CPU times: user 102 ms, sys: 5 ms, total: 107 ms >>> Wall time: 103 ms >>> CPU times: user 2 ms, sys: 0 ns, total: 2 ms >>> Wall time: 1.94 ms >>> >>> >>> _______________________________________________ >>> graph-tool mailing list >>> [email protected] >>> http://lists.skewed.de/mailman/listinfo/graph-tool >>> >>> >> _______________________________________________ >> graph-tool mailing list >> [email protected] >> http://lists.skewed.de/mailman/listinfo/graph-tool >> >> > _______________________________________________ > graph-tool mailing list > [email protected] > http://lists.skewed.de/mailman/listinfo/graph-tool > >
_______________________________________________ graph-tool mailing list [email protected] http://lists.skewed.de/mailman/listinfo/graph-tool
