assertabs(S1-S2)<1e-6andnotisnan(S2)andnotisnan(S1),"inconsistency at level %d after %s of level %d, different entropies (%g, %g)"%(j,op,l,S1,S2)
...
...
@@ -297,15 +299,15 @@ class NestedBlockState(object):
# verify hierarchy / clabel consistency
clabel=self.__project_partition(0,j)
self.levels[0].clabel.a=self.clabel.a
self.levels[0].clabel.fa=self.clabel.fa
assertself.levels[0]._BlockState__check_clabel(),"inconsistency at level %d after %s of level %d, clabel invalidated"%(j+1,op,l)
self.levels[0].clabel.a=0
self.levels[0].clabel.fa=0
# verify hierarchy consistency
clabel=self.__project_partition(j,j+1)
self.levels[0].clabel.a=self.clabel.a
self.levels[0].clabel.fa=self.clabel.fa
assertself.levels[0]._BlockState__check_clabel(),"inconsistency at level %d after %s of level %d, partition not compatible with upper level"%(j+1,op,l)
self.levels[0].clabel.a=0
self.levels[0].clabel.fa=0
def__rebuild_level(self,l,b,clabel=None):
...
...
@@ -320,7 +322,7 @@ class NestedBlockState(object):
old_b=b.copy()
state=self.levels[l].copy(b=b,clabel=clabel.a)
state=self.levels[l].copy(b=b,clabel=clabel.fa)
self.levels[l]=state
ifl==0:
self.clabel=state.g.own_property(self.clabel)# for CovariateBlockState
...
...
@@ -334,8 +336,8 @@ class NestedBlockState(object):