Date: Mon, 5 May 2014 14:12:17 -0600 From: [email protected] To: [email protected] Subject: Re: [graph-tool] return maps from clustering.motifs On 05/05/2014 07:21 AM, sandrine ollinger wrote: > I've asked to graph-tool the motifs of this graph, with the following > instruction: > >>>> motifs, counts, vertex_maps = gt.clustering.motifs(gt.GraphView(rlf, >>>> directed=False), 4, return_maps=True) > > So far, so good. This instruction returned me 3 variables. The first > one is a list of graphs (motifs), the second one a list of numbers of > counts, but the third is a bit mysterious for me. > > So, it's a list of list of Property maps and it's ok that every one of > this map correspond with a count of motif. However, I expected that > this property maps refer to my original graph, but it does not. That's right, the property map points to the graph you passed to the function, which is the graph view gt.GraphView(rlf, directed=False), *not* the original graph rlf. (note that this is not a problem, you can use these maps with the original graph) Allright, I was a little distracted. > The first PropertyMap object refer to the motif and not to my original > graph. And here, I don't understand. For a motif which occurs 10 times > in my graph, I obtain 10 property maps. If I use get_graph on this 10 > maps, I obtain 10 identical graphs. What would be the value of > returning the maps? I had hoped to obtain sub-graph with original > vertex and edges properties. This is useful for knowing where in the graph the motifs have occurred. > Is it something that I didn't understand? Is it possible to obtain > sub-graph with original vertex and edges properties by using > clustering.motifs? Yes, you can get a subgraph of the original graph by constructing a GraphView and filtering out the nodes which do not belong to the motif: mask = g.new_vertex_property("bool") m = motifs[0] vmap = vertex_maps[0] for v in m.vertices(): mask[g.vertex(vmap[v])] = True m_g = GraphView(rlf, vfilt=mask) # the edge and vertex properties of m_g will correspond to those of g I make something slightly different, based on your proposition: mask = g.new_vertex_property("bool") m = motifs[0] vmap = vertex_maps[0] pmap = vmap[0] parray = pmap.get_array() for v in m.vertices(): mask[g.vertex(parray[v])] = True It works! Wonderfull! Thank you very much. Best, Sandrine _______________________________________________ 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
