Hi Guillaume, On 01/08/2013 02:35 PM, Guillaume Gay wrote:Hi all, I'm using graph-tool to represent a living tissue. The tissue grows and changes shape through successive local changes. For each of those changes, I need to optimize graph energy (as defined by a non trivial relation between graphs edge and vertices coordinates in 3D). My question is the following: Before the optimization, is it better to * Take a GraphView of the graph masked by filters: | local_view = gt.GrahView(graph, vfilt=is_local_v, efilt=is_local_e) ### ... optimize on local_view ...| * Work on the filtered graph: | graph.set_vertex_filter(is_local_v) graph.set_vertex_filter(efilt=is_local_e) ### optimize on local graph.set_vertex_filter(None) graph.set_vertex_filter(None)| * Do a copy of the local graph, | local_view = gt.GrahView(graph, vfilt=is_local_v, efilt=is_local_e) local = Graph(local_view, prune=True) ### ...optimize on local... graph.set_vertex_filter(is_local_v) graph.set_vertex_filter(efilt=is_local_e) for key, prop in graph.vertex_properties: prop.fa = local.vertex_properties[key].fa| For now, I am doing it the second way... I suspect it's not the best, but don't have clue on which of the others is better. Any commentswelcome! The relative performance of both approaches depend on what exactly you are doing with the graphs, however the second approach will tend to be faster on most cases. On a filtered graph, an O(N) operation will depend on the size of the _unfiltered_ graph, since the filtered vertices/edges will simply be skipped over during iterations. Furthermore, many operations will be slower on filtered graphs, since the filter needs to be applied every time a vertex/edge is touched, which can lead to a performance drop in tight loops. Thus, if your filtered graph is much smaller than your main graph, or if you are performing very time-consuming operations, the second approach will be probably better, since most of the time will be spent on an unfiltered, possibly much smaller graph. Cheers, Tiago
_______________________________________________ graph-tool mailing list graph-tool@skewed.de http://lists.skewed.de/mailman/listinfo/graph-tool