Hi again, 
I'm following the cookbook and I'm collecting vertex marginals during 
mcmc_equilibrate, so

pv = [None] * len(state.get_levels())
def collect_marginals(s):
    global pv
    pv = [sl.collect_vertex_marginals(pv[l]) for l, sl in 
enumerate(s.get_levels())]

gt.mcmc_equilibrate(state, force_niter=1000, mcmc_args=dict(niter=10), 
wait=wait,
    nbreaks=nbreaks, epsilon=epsilon, callback=collect_marginals
)

After this is done, every element of pv will be, basically, a list of arrays 
with as many elements as many vertexs are at specific level, each with the 
counts for memberships.
In fact, when I need to assign groups to the original vertexs to a blockstate 
at level L > 0 (say, level 2) I can use

state.project_partition(2, 0)

the vertex map will contain as many elements as the number of vertex of my 
graph, each labeled according to the blocks at level 2 of the hierarchy. 
I cannot find a smart way to project the marginals I've collected, would it be 
sufficient to sum numbers for pv[0] following the hierarchy (that is, summing 
counts for all groups at level 0 which are included in the same group at level 
2)? 

Thanks

d

_______________________________________________
graph-tool mailing list
[email protected]
https://lists.skewed.de/mailman/listinfo/graph-tool

Reply via email to