Hey,

I'm struggeling with the grap_union() function. It seems like the

properties are only correctly passed to the union graph, if include=True.

Is this how it supposed to work? Here a minimal example:

import graph_tool.all as gt

import graph_tool.topology as gt_topo

from gi.repository import Gtk, Gdk, GdkPixbuf, GObject

G = gt.Graph(directed=False)

G_sub = gt.Graph(directed=False)

v1 = G.add_vertex()

v2 = G.add_vertex()

v3 = G.add_vertex()

v4 = G_sub.add_vertex()

v5 = G_sub.add_vertex()

e1 = G.add_edge(v2, v1)

e2 = G.add_edge(v2, v3)

e3 = G_sub.add_edge(v5, v4)

G.vertex_properties['type'] = G.new_vertex_property("string")

G_sub.vertex_properties['type'] = G_sub.new_vertex_property("string")

G.vertex_properties['type'][v1] = 'Car'

G.vertex_properties['type'][v2] = 'Crossing'

G.vertex_properties['type'][v3] = 'Car'

G_sub.vertex_properties['type'][v4] = 'Pedestrian'

G_sub.vertex_properties['type'][v5] = 'Sidewalk'

#ToDo: Function bug, why is include=True needed?

G_union, prop = gt.graph_union(G, G_sub,

props=[(G.vertex_properties['type'], \

G_sub.vertex_properties['type'])], include=True)

pos = gt.sfdp_layout(G)

gt.graph_draw(G_union, pos, vertex_text=G_union.vertex_properties['type'])

Another point that I find a bit not so intuitive is that you have to

specify every single property of the two graphs you would like to have in

the new graph, wouldn't it be much more intuitive to copy all the

properties into the new graph unless not told otherwise?

P.S: This will probably not my last question as I'm planning to heavily use

graph-tool for my research....

attachment.html (1.91 KB)