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

attachment.html (2.17 KB)