graph_sym_difference#
- graph_tool.generation.graph_sym_difference(g1, g2, eweight1=None, eweight2=None, vmap='identity', props=[], mt='set', internal_props=False, in_place=False, **kwargs)[source]#
- Return a graph containing the symmetric difference of the edges of graphs - g1and- g2.- Parameters:
- g1Graph
- Graph to be merged into. 
- g2Graph
- Graph to be merged from. 
- eweight1EdgePropertyMap(optional, default:None)
- If provided, this will determine the weights of the edges of graph - g1. If not provided, each edge will be assumed to have unity weight.
- eweight2EdgePropertyMap(optional, default:None)
- If provided, this will determine the weights of the edges of graph - g2. If not provided, each edge will be assumed to have unity weight.
- vmapVertexPropertyMap,"identity", orNone(optional, default:None)
- Vertex property map owned by - g2which maps each of its vertices to vertex indices belonging to- g1, in which case they are considered to be identical. Negative values mean no mapping exists, and thus both vertices in- g1and- g2will be present in the difference graph. If this argument is not provided (i.e.- vmapis- None), both vertex sets will be added to the difference. If- vmapis- g2.vertex_index, and the vertex indexes are identical in both graphs, the difference will correspond only to the edge sets. A special value of- vmap == "identity"is a shortcut for- vmap = g2.vertex_index.
- propslist of tuples of PropertyMap(optional, default:[])
- Property maps to be included in the difference. Each element of th list must be a pair of - PropertyMapobjects. The first element must be a property of- g1, and the second of- g2. If either value is- None, an new map will be created, and set to appropriately empty values.
- mtstr(otional, default:"set")
- Merge rule for property values. Should be one of - "set",- "sum",- "diff",- "idx_inc",- "append",- "concat". See- graph_merge()for further documentation.
- internal_propsbool(optional, default:False)
- If - Trueall internal property maps of- g1and- g2will be included in the difference.
- in_placebool(optional, default:False)
- If - True, the symmetric difference is computed in-place into- g1, which is then modified. If- False, a new graph is created, and both graphs remain unmodified.
- **kwargsdict(optional, default:{})
- Remaining keyword parameters will be forwarded to - graph_merge().
 
- g1
- Returns:
- ugGraph
- The symmetric difference graph. 
- wEdgePropertyMap
- The edge weights of the difference graph. This is only returned if - eweight1is not- None.
- propslist of PropertyMapobjects
- List of properties in the difference graph. This is only returned if props is not empty. Internal property maps are not included in this list. 
 
- ug
 - See also - graph_merge
- Merge the edge sets between two graphs. 
- graph_union
- Union of the edge sets between two graphs. 
- graph_difference
- Difference of the edge sets between two graphs. 
- graph_intersection
- Intersection of the edge sets between two graphs. 
 - Notes - This algorithm is a wrapper around - graph_merge(), and shares with it the same algorithmic complexity.- Parallel implementation. - If enabled during compilation, this algorithm will run in parallel using OpenMP. See the parallel algorithms section for information about how to control several aspects of parallelization. - Examples - >>> g = gt.collection.ns["lesmis"] >>> u1 = gt.GraphView(g, efilt=np.random.random(g.num_edges()) < .5) >>> u2 = gt.GraphView(g, efilt=np.random.random(g.num_edges()) < .5) >>> u = gt.graph_sym_difference(u1, u2) >>> gt.graph_draw(u1, pos=g.vp._pos, output="u1.pdf") <...> >>> gt.graph_draw(u2, pos=g.vp._pos, output="u2.pdf") <...> >>> gt.graph_draw(u, pos=g.vp._pos, output="gsdiff.pdf") <...>     