Dear all,

Just as a test, I was trying to fit a degree-corrected SBM to the famous "karate-club" network. Almost everybody has "shown" that the network contains two communities. However, when I tried using in-built graph-tool algorithms, I can see only one:


In [2]: G = gt.collection.data["karate"]

In [3]: state = gt.minimize_blockmodel_dl(G, deg_corr=True)

In [4]: state
Out[4]: <BlockState object with 1 blocks (1 nonempty), degree-corrected, for graph <Graph object, undirected, with 34 vertices and 78 edges at 0xa288858c>, at 0xa288b9cc>


I tried this repeatedly, but I always get only one group. Then I tried manually specifying 2 groups:

In [11]: state = gt.minimize_blockmodel_dl(G, deg_corr=True, B_min=2)

However, in this case, I get a strange partition as shown in the following figure:

This is not even close to what many papers show. I appreciate that many algorithms consider noise as the real structure. However, even the famous paper by Karrer and Newman (Karrer, Brian, and Mark EJ Newman. "Stochastic blockmodels and community structure in networks." Physical Review E 83.1 (2011): 016107.) describes a very different division of the network. Am I missing something very fundamental here?

Thank you
Snehal Shekatkar

--
Snehal M. Shekatkar
Pune
India