Hello,
I am trying to add a more detailed level at the bottom of a nested
blockmodel. Given a graph g, I run
c = gt.is_bipartite(g, True)[1]
state = gt.minimize_nested_blockmodel_dl(g, deg_corr=True, layers=True,
state_args=dict(ec=g.ep.visits, layers=False, pclabel=c),
verbose=True)
to find a nestedBlockState 'state'. Then I run
state.duplicate_level(0)
bstate = state.find_new_level(0, bisection_args={'verbose': True})
This seems to correctly invoke the bisection_minimize() method and runs for
a while, then raises a ValueError: provided clabel is inconsistent with
node partition.
The output is below. Where exactly is the inconsistency coming from?
Thank you,
Peter
B: 90666 <- 165691 shrinking 165691 -> 90666
B: 90666 <- 165691 B=90666 niter: 1 count: 0 breaks: 0
min_S: 4549865.6 max_S: 4549925.5 S: 4549865.6 ΔS: -59.8492 moves:
768
B: 90666 <- 165691 B=90666 niter: 2 count: 0 breaks: 0
min_S: 4549799.7 max_S: 4549925.5 S: 4549799.7 ΔS: -65.8762 moves:
720
B: 90666 <- 165691 B=90666 niter: 3 count: 0 breaks: 0
min_S: 4549799.5 max_S: 4549925.5 S: 4549799.5 ΔS: -0.251813 moves:
759
B: 90666 <- 165691 B=90666 niter: 4 count: 0 breaks: 0
min_S: 4549671.3 max_S: 4549925.5 S: 4549671.3 ΔS: -128.157 moves:
788
B: 90666 <- 165691 B=90666 niter: 5 count: 0 breaks: 0
min_S: 4549577.9 max_S: 4549925.5 S: 4549577.9 ΔS: -93.3804 moves:
797
B: 90666 <- 165691 B=90666 niter: 6 count: 0 breaks: 0
min_S: 4549495.5 max_S: 4549925.5 S: 4549495.5 ΔS: -82.3979 moves:
787
B: 90666 <- 165691 B=90666 niter: 7 count: 0 breaks: 0
min_S: 4549459.7 max_S: 4549925.5 S: 4549459.7 ΔS: -35.8572 moves:
777
...
...
...
Current bracket: (851, 90666, 165691) (2756226.276337453,
4857281.779995878, 4882260.334948147)
B: 44298 <- 90666 shrinking 90666 -> 45333
Traceback (most recent call last):
File "code/add_layer.py", line 9, in <module>
bstate = state.find_new_level(0, bisection_args={'verbose': True})
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/nested_blockmodel.py",
line 447, in find_new_level
state = bisection_minimize([min_state, max_state], **bisection_args)
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/bisection.py", line
157, in bisection_minimize
f_mid = get_state_dl(B=mid_B, **kwargs)
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/bisection.py", line
85, in get_state_dl
(B, B_prev)))))
File "/usr/lib/python2.7/dist-packages/graph_tool/inference/mcmc.py",
line 358, in mcmc_multilevel
state = state.shrink(B=B_next, **shrink_args)
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/layered_blockmodel.py",
line 862, in shrink
return BlockState.shrink(self, B, **kwargs)
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/blockmodel.py", line
1580, in shrink
state = self.copy(b=b)
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/layered_blockmodel.py",
line 434, in copy
"rec_params", "allow_empty"]))
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/layered_blockmodel.py",
line 149, in __init__
"layer_entropy"]))
File
"/usr/lib/python2.7/dist-packages/graph_tool/inference/blockmodel.py", line
310, in __init__
raise ValueError("provided clabel is inconsistent with node partition")
ValueError: provided clabel is inconsistent with node partition
Dr Peter Straka
Research Fellow (DECRA)
School of Physical Engineering and Mathematical Sciences | UNSW Canberra
Google Scholar <https://scholar.google.com.au/citations?user=o80TaWgAAAAJ>
E: p.straka(a)unsw.edu.au
skype: straka.ps
attachment.html (6.75 KB)