This is more of like an implementation question. I'm PhD student in math and I've been trying out different dynamic community detection(DCD) algorithms to compare their performance. I was stuck on graph-tool's implementation for a few months because the documentation for the layered networks was really short and I noticed this mailing list just now.
I have multiple questions: first, am I initiating the network correctly below? My network is a list of weighted adjacency matrices corresponding to each snapshots. g = Graph() e_weight = g.new_ep("double") e_layer = g.new_ep("int") g.add_edge_list(edge_list, hashed = True, eprops=[e_weight, e_layer]) ## edge_list has (v1,v2,w,t) format g.edge_properties["edge_weight"] = e_weight ## weights of the intralayer edges g.edge_properties["edge_layer"] = e_layer ## since this is a multilayer network, each edge has to come with a layer information that it belongs to(a layer is a snapshot of the temporal network and has nothing to do with nested model which I will use the word 'level' for) Then, when I run the optimizer with the below code, I feel like I'm doing something wrong. I want to use 'independent layers' model since this is a temporal network and edge weights within each layer are varying between [0,1]. for deg_corr in [True, False]: state = minimize_nested_blockmodel_dl(g, layers = True, deg_corr = deg_corr, state_args=dict(ec = g.ep.edge_layer, layers = True, recs=[g.ep.edge_weight], rec_types=["real-exponential"])) S1 = state.entropy() # we will pad the hierarchy with another four empty levels, to # give it room to potentially increase state = state.copy(bs=state.get_bs() + [np.zeros(1)] * 4, sampling = True) for i in range(100): # this should be sufficiently large state.multiflip_mcmc_sweep(beta=np.inf, niter=10) S2 = state.entropy() print(S1,S2, S2-S1) I have a serious problem with getting the node labels. The code below only returns the node membership information for N nodes(size of the aggregated network). But since this is an evolving network, nodes are expected to change communities over time, so below code should return NxT(number of nodes times number of layers) many community labels? levels = state.get_levels() for s in levels: print(s) This returns the network partition at different levels of the nested SBM but only for N many nodes. What am I missing? -- Sent from: https://nabble.skewed.de/ _______________________________________________ graph-tool mailing list graph-tool@skewed.de https://lists.skewed.de/mailman/listinfo/graph-tool