Dear community / Tiago
I have a hierarchical partition of a nested block state. The original network contained 4453 vertices and 50051 edges.
state.print_summary() l: 0, N: 4453, B: 126 l: 1, N: 126, B: 46 l: 2, N: 46, B: 20 l: 3, N: 20, B: 9 l: 4, N: 9, B: 3 l: 5, N: 3, B: 1
I want to extract the community label of each vertex of each possible hierarchical level. To do this I wrote a loop based upon the guide at https://graph-tool.skewed.de/static/doc/demos/inference/inference.html Where vertexblocksdf is simply a df populated with the vertex numbers 0-4452.
for idx in range(len(vertexblocksdf)):
r = levels[0].get_blocks()[idx] # group membership of node idx in level 0 vertexblocksdf.ix[idx, 'level0'] = r
r = levels[0].get_blocks()[r] # group membership of node idx in level 1 vertexblocksdf.ix[idx, 'level1'] = r
r = levels[0].get_blocks()[r] # group membership of node idx in level 2 vertexblocksdf.ix[idx, 'level2'] = r
r = levels[0].get_blocks()[r] # group membership of node idx in level 3 vertexblocksdf.ix[idx, 'level3'] = r
r = levels[0].get_blocks()[r] # group membership of node idx in level 4 vertexblocksdf.ix[idx, 'level4'] = r
r = levels[0].get_blocks()[r] # group membership of node idx in level 5 vertexblocksdf.ix[idx, 'level5'] = r
But, I am getting strange results. My level0 column variables make sense, with 126 possibilities (as per l0 above). But my level1 column is a number between 0 and 13; of which none of my levels have 14 blocks. My level2 output is either 0 or 1, again doesn’t make sense! Level3-5 are all simply 0. *this also reproduces the same behaviour if done manually without loop.
Any ideas??
James
Ni! Hi James, see below.
On Thu, Aug 29, 2019 at 4:59 PM James Ruffle j.ruffle@qmul.ac.uk wrote:
r = levels[0].get_blocks()[idx] # group membership of node idx in
level 0 vertexblocksdf.ix[idx, 'level0'] = r
r = levels[0].get_blocks()[r] # group membership of node idx in
level 1 vertexblocksdf.ix[idx, 'level1'] = r
Shouldn't here the second paragraph be `levels[1]`, and so forth?
In any case, take a look at the `state.project_level()` method, as it provides what you're looking for.
Also, I wouldn't use `.ix[]`, as it has been deprecated in pandas for quite a while now.
Abraços, l e .~´
Hi Tiago!
Could it be that the problem highlighted by this thread is fueled by a bug in the documentation at the end of this section https://graph-tool.skewed.de/static/doc/demos/inference/inference.html#hierarchical-partitions ?
-- Sent from: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/
Am 18.03.20 um 23:13 schrieb santirdnd:
Hi Tiago!
Could it be that the problem highlighted by this thread is fueled by a bug in the documentation at the end of this section https://graph-tool.skewed.de/static/doc/demos/inference/inference.html#hierarchical-partitions ?
This has been fixed.