Thanks Gareth, I will try to dig into this method!
On 16 Jul 2014 23:14, "Gareth Simons" <[email protected]> wrote:

> Flavian,
>
> I’m not exactly sure what you’re trying to do, but it seems you want to
> select only a handful of vertices based on shortest distance calculations?
>
> You could try something like this, which is IMHO very fast:
>
> # You already have your shortest paths, so you can probably skip this
> step, but it is possible to
> # search all shortest paths from a source vertex to all vertices within a
> certain distance, or to
> # search the shortest path from and to a specific vertex using the
> built-in shortest_distance function:
> v_localDist = shortest_distance(g, source=v, weights=e_dist, max_dist=dist)
>
> # You can then use the built-in masks functionality to filter out only
> relevant nodes.
>
> # First create the mask property map:
> v_mask = g.new_vertex_property('bool')
>
> # Then assign the property map values from another property map array,
> using .a  / get_array() to access arrays:
> v_mask.a = v_localDist.a <= dist  # set the array values to 1 (boolean
> property map) where distance parameter is met
>
> # Then activate the filter
> g.set_vertex_filter(v_mask)  # activate mask based on currently selected
> vertices
>
> # And deactivate when done
> g.set_vertex_filter(None)
>
> I use this method to iterate calculations on local vertex clusters (based
> on distance) within some fairly big graphs.
> Gareth
>
> On 16 Jul 2014, at 15:49, 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
>
>
_______________________________________________
graph-tool mailing list
[email protected]
http://lists.skewed.de/mailman/listinfo/graph-tool

Reply via email to