Hi again, I believe I've answered my first question (clumsily I suppose) by taking the state inferred from the layered model, then taking e.g. submodels=[] lgs = state.get_levels()[0].gs for l,lg in enumerate(lgs): submodels.append(gt.NestedBlockState(lg,bs=[lvl.layer_states[l].b for lvl in state.get_levels()] but presumably there's a cleaner way of accessing these values. For my second question, when you say in the paper to apply agglomerative hierarchical clustering, is there a cleaner way of doing this through graph-tool than just brute force? I.e. fitting the model for different bins then comparing description lengths (including subtracting log eqn 18 or 19) for each possible combination? This seems like it would be quite slow for non-small networks, especially for a reasonable initial number of layers, so again I assume there's an alternative. If not then my third question is answered, as I can just suitably modify the prior then only trial merges for property Y. Thanks, John -- Sent from: https://nabble.skewed.de/