Suppose I have 2 graphs A and B and I want to know if A is a subgraph of B. The nodes contain attributes, say, 'size' and 'material'.
When I run:
GM = networkx.algorithms.isomorphism.GraphMatcher(B,A)
print networkx.algorithms.isomorphism.subgraph_is_isomorphic()
This only matches graph by edges only and not by edges and attribute.
Any clue on how check attributes?
Also, suppose B contains 2 connected graphs of A.
When I run:
GM.mapping
This will output only 1 of the subgraphs of A. Any idea on how to output every subgraph?
I've solved this by using:
print GM = iso.GraphMatcher(B,A,node_match=iso.categorical_node_match(['material', 'size'],['metal',1]))
What I didn't know before is that ['metal',1]
is just a default and not a hard match.