Layered overlapping model not working with GraphView
Layered overlapping models aren't working for GraphViews, due to the following problematic lines in LayeredBlockState:
if overlap and self.ec is not None: self.base_ec = self.base_g.own_property(ec.copy()) ec = agg_state.eindex.copy() pmap(ec, self.ec) <-- this line won't work as the GraphView inherits eindex self.ec = ec.copy("int")
Is there an easy fix? Minimal example below:
import numpy.random as rand import graph_tool.all as gt N = 20 L = 3 tg = gt.price_network(N) # generate random network size N elayer = tg.new_ep('int') E = len(tg.get_edges()) elayer.a = rand.randint(0,high=L,size=E) # randomly assign each edge to one of L layers tg.ep['elayer'] = elayer utg = gt.GraphView(tg,rand.choice([True,False],size=N)) # take random subsample of graph stest = gt.minimize_nested_blockmodel_dl(utg,layers=True,overlap=True, state_args=dict(ec=utg.ep.elayer,layers=True))
Working on remote Linux server, with Python 3.8.