Pruning tool to identify small subsets of network partitions that are significant from the perspective of stochastic block model inference. This method works for single-layer and multi-layer networks, as well as for restricting focus to a fixed number of communities when desired.
CHAMP's fallback of "taking a small step" during halfspace intersection seems to return incorrect results. We need to find a way to raise errors when this fallback occurs.
The SBM equivalence used for gamma estimates assumes drawing from an undirected stochastic block model even when the network is truly directed.
For our work, this only affects the Lazega Law Network experiment where we were comparing our method's performance to that of Roxana et al.'s. They made the same decision to use the undirected form for the gamma estimates, so the apparent mismatch is appropriate.
That said, we should add in the ability to use the directed form of the gamma estimates (seemingly only requiring a tweak of sum(k_c^2) to sum(k_{c,in} * k_{c,out}) in the calculation) which would restore the one-to-one correspondence between modularity hyperplanes and parameter estimates in the directed (single-layer) case.
Swapping out the Louvain algorithm for Leiden would be relatively simple for single-layer networks.
However, there are serious performance issues in the standard implementation for multi-layer optimization, so we would have to research if it is feasible at all in that case.
By default, singlelayer_louvain and multilayer_louvain return a tuple community membership vector at the moment.
Some scripts are using the return_partition=True option and we should determine if this functionality should be moved to a different method or if we should change the default behavior.
It would be nice to officially add support for weighted graphs even though this is outside the scope of our paper. Several parts of the pruning pipeline already handle edge weights and the extension in the single-layer case should be relatively straightforward.