Sorry Thiago... I accidentally left the get_pairs_of_ints where get_pairs_of_objects should be.
The code that creates all edges using integer indices is indeed very fast. On 29 April 2015 at 12:16, Tiago de Paula Peixoto <[email protected]> wrote: > On 27.04.2015 22:23, Krister wrote: > > Thanks for the quick response Thiago! > > > > In this code all the edges and vertices are created by graph-tool and > the result is something much faster... > > is this the best I can do? > > > > It's somewhat annoying to have to keep track of the vertices that will > be created like this: > > > > def graph_tool_create_all_at_once(): > > """ Create a graph_tool graph given a list of pairs. """ > > G = Graph(directed=False) > > objectTOi = {} > > vertexpairs = [] > > counter = 0 > > for o1,o2 in get_pairs_of_ints(): > > if(o1 in objectTOi): > > u = objectTOi[o1] > > else: > > u = counter > > counter += 1 > > objectTOi[o1] = u > > if(o2 in objectTOi): > > v = objectTOi[o2] > > else: > > v = counter > > counter += 1 > > objectTOi[o2] = v > > > > vertexpairs.append((u,v)) > > > > G.add_edge_list(vertexpairs) > > Yes, it is possible to improve this. If your o1 and o2 objects are > always ints (as I gather from get_pairs_of_ints()), then you don't need > these dictionaries at all. The G.add_edge_list() will create missing > nodes as necessary. So you only need to do: > > G.add_edge_list(list(get_pairs_of_ints())) > > This will be much faster. However it requires your ints to be within > some reasonable range, since missing ints without edges will also be > created. But you are better off guaranteeing this is the case when you > generate the ints in the first place. > > Best, > Tiago > > -- > Tiago de Paula Peixoto <[email protected]> > > > _______________________________________________ > 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
