I was wondering if (and possibly how) graph-tool could be used to identify differential blocks across given graphs. More specifically, if two graph have the same nodes, is it possible to identify the sets of partitions that are blocks in one graph but not the other? Would it suffice to identify partitions in both graphs and then check for the differences?
I'm not sure I completely understand. What do you mean by one block
being in one graph, and not in the other? Could you give an example?
I was thinking this
but with a principled formulation based on SBM. Is that even possible? Just curious…
attachment.html (786 Bytes)
There is nothing yet in graph-tool about graph classification,
unfortunately! Hopefully in the future...
Not quite. This is something else altogether.
It turns out that setting edge properties works. In the case of “differential subgraphs”, I had two weighted graphs (G, H) with the same nodes but with different edges. One solution would be to create a union graph and set a edge property as difference between weights in G and H. the corresponding blockstate (with one continuous edge covariate) actually seems to grasp communities that are more likely to be in one graph or the other. Another solution I tried was to set two edge covariates on the union graph, with weights in G and H. That basically works the same, but takes more time, I guess because the higher number of covariates.