Minimise_nested_blockmodel with B_min and B_max seems to get stuck

I am trying to infer a hierarchical stochastic blockmodel structure while setting a minimum value of clusters, B_min. However, the script keeps running indefinitely, and I suspect it may not be a computational limitation, as I have tried a very minimal example with 100 nodes and still does not come to a result after more than a day running.

I include below the minimal (not-)working example, which I run in graph-tool 2.44 (commit 7edcecc2, Wed Jan 12 10:59:17 2022 -0500) on Ubuntu 22.04.

g = gt.collection.data["football"]
state = gt.minimize_nested_blockmodel_dl(g, state_args=dict(deg_corr=True), multilevel_mcmc_args=dict(B_min=3, B_max=3))

It does work very fast if I run the simpler minimize_blockmodel_dl function (no nested structure), or if I select B_min=1 for the nested version of the function, but any B_min>1 does not work.

I include below the first lines I get when I add ‘verbose=True’ to multilevel_mcm_args. They show some values at infinity, which may be the cause of the problem

Thanks,
Guillermo

(PS: the documentation of miniminize_nested_blockmodel_dl might need update? It includes the parameters B_min and B_max parameters in the “descriptions of parameters”, while these are arguments to the multilevel_mcmc_sweep.)

level: 0
staging multilevel, N = 115
0 1 0 115 1
bracket B = [ 2, 2, 2 ]
shrinking from: 115 -> 2
115 -> 36: 157.858
36 -> 29: 37.0507
29 -> 26: -19.6881
26 -> 23: -66.9525
23 -> 21: -98.7967
21 -> 19: -133.084
19 -> 17: -162.077
17 -> 14: -206.64
14 -> 13: -220.861
13 -> 12: -233.932
12 -> 11: -240.548
11 -> 10: -247.205
10 -> 9: -242.953
9 -> 8: -237.638
8 -> 7: -233.486
7 -> 6: -225.565
6 -> 5: -210.823
5 -> 4: -189.888
4 -> 3: -159.109
 3 -> 2: -113.833
multilevel proposal: 1->2 (115), dS: -inf, pf: 0, pb: 0, a: inf
0 (-inf, 891, 891) <NestedBlockState object, with base <BlockState object with 115 blocks (2 nonempty), degree-corrected, for graph <Graph object, undirected, with 115 vertices and 613 edges, 4 internal vertex properties, 2 internal graph properties, at 0x7f2600611b20>, at 0x7f259bc1f280>, and 8 levels of sizes [(115, 2), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)] at 0x7f259bc1f460>
level: 1
staging multilevel, N = 2
0 1 0 2 1
multilevel proposal: 1->2 (2), dS: -inf, pf: 0, pb: 0, a: inf
1 (-inf, 4, 4) <NestedBlockState object, with base <BlockState object with 115 blocks (2 nonempty), degree-corrected, for graph <Graph object, undirected, with 115 vertices and 613 edges, 4 internal vertex properties, 2 internal graph properties, at 0x7f2600611b20>, at 0x7f259bc1f280>, and 8 levels of sizes [(115, 2), (2, 2), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)] at 0x7f259bc1f460>
level: 2
staging multilevel, N = 2
0 1 0 2 1
2 (-inf, 2, 2) <NestedBlockState object, with base <BlockState object with 115 blocks (2 nonempty), degree-corrected, for graph <Graph object, undirected, with 115 vertices and 613 edges, 4 internal vertex properties, 2 internal graph properties, at 0x7f2600611b20>, at 0x7f259bc1f280>, and 8 levels of sizes [(115, 2), (2, 2), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)] at 0x7f259bc1f460>
level: 3
multilevel proposal: 1->1 (2), dS: -inf, pf: 0, pb: 0, a: inf
multilevel proposal: 1->1 (1), dS: 0, pf: 0, pb: 0, a: -nan
3 (0.0, 0, 0) <NestedBlockState object, with base <BlockState object with 115 blocks (2 nonempty), degree-corrected, for graph <Graph object, undirected, with 115 vertices and 613 edges, 4 internal vertex properties, 2 internal graph properties, at 0x7f2600611b20>, at 0x7f259bc1f280>, and 8 levels of sizes [(115, 2), (2, 2), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)] at 0x7f259bc1f460>
level: 2
staging multilevel, N = 2
0 1 0 2 1
2 (-inf, 2, 2) <NestedBlockState object, with base <BlockState object with 115 blocks (2 nonempty), degree-corrected, for graph <Graph object, undirected, with 115 vertices and 613 edges, 4 internal vertex properties, 2 internal graph properties, at 0x7f2600611b20>, at 0x7f259bc1f280>, and 8 levels of sizes [(115, 2), (2, 2), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)] at 0x7f259bc1f460>
...

This is an ancient version. Could you please try with the current version (2.58) if the problem persists?