Dear Snehal, I am not sure what others would say, but, in your case, I am pretty sure that you have used the overlapping version of SBM. You will not observe the core-periphery structure fitted by the vanilla SBM, nor the assortative structure via the degree-corrected SBM. Try: state = gt.minimize_blockmodel_dl(G, deg_corr=True, overlap=False, B_min=2) And visualize it via: state.draw(pos=G.vp["pos"], vertex_shape=state.get_blocks()) You may get what you expected. Also, note that if you tried (without the minimum block number constraint), state = gt.minimize_blockmodel_dl(G, deg_corr=True, overlap=False) You will still obtain a ground state with only one non-empty group. This is valid since it is a state with the minimum description length (MDL) of both the model and the data. See this paper for details about MDL: http://dx.doi.org/10.1103/PhysRevLett.110.148701 Note that people have argued whether it is necessary to introduce the additional Order(N) parameters in the SBM to fit such a small karate club data, which introduces a lot of model complexity. Indeed, if one used a full Bayesian treatment and study the relation of the model likelihood to the different numbers of blocks used. For the karate network, one may hesitate which number of partitions to use. See the Fig.2(a) of this paper: https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.117.078301 Finally, the karate network is not generated by any model of the SBM-family. So it really takes interpretations between the model and the data! Best regards, Tzu-Chi Yen -- View this message in context: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/... Sent from the Main discussion list for the graph-tool project mailing list archive at Nabble.com.