def test_dijkstra_multilayer_two_aspect(self): n=net.MultilayerNetwork(aspects=2,directed=True) n[1,'a',1][2,'a',2]=1 n[2,'a',2][3,'a',3]=1 n[3,'a',3][4,'a',4]=1 n[1,'b',1.5][3,'b',2.5]=1 n[1,'a',1][1,'b',1.25]=0.25 n[1,'b',1.5][1,'a',1.75]=0.25 n[3,'b',2.5][3,'a',2.75]=0.25 n[1,'a',1.75][1,'a',2]=0.25 n[1,'b',1.25][1,'b',1.5]=0.25 n[3,'a',2.75][3,'a',3]=0.25 d,f=diagnostics.dijkstra(n,[(1,'a',1)]) #for nl,dist in d.iteritems(): for nl in d: dist=d[nl] self.assertEqual(d[nl],nl[2]-1) d,f=diagnostics.dijkstra_mlayer_prune(n,[(1,None,None)],aaspects=[1,2]) self.assertEqual(d[(1,)],0) self.assertEqual(d[(2,)],1) self.assertEqual(d[(3,)],1) self.assertEqual(d[(4,)],2.5) ftrue=net.MultilayerNetwork(aspects=2,fullyInterconnected=False,directed=True,noEdge=-1) ftrue[1,'a',1][1,'a',1]=0; ftrue[1,'b',1.5][1,'b',1.5]=0;ftrue[1,'b',1.25][1,'b',1.25]=0; ftrue[1,'a',1.75][1,'a',1.75];ftrue[1,'a',2][1,'a',2]
def test_subnet_mplex_to_mlayer(self): mplex = net.MultiplexNetwork([('categorical', 1.0)], fullyInterconnected=False) mplex[0, 1, 0] = 1 mplex[0, 2, 1] = 1 mlayer = transforms.subnet(mplex, [0, 1, 2], [0, 1], newNet=net.MultilayerNetwork( aspects=1, fullyInterconnected=False)) self.assertEqual( set(mlayer.edges), set([(0, 0, 0, 1, 1.0), (0, 1, 0, 0, 1), (0, 2, 1, 1, 1)])) self.assertTrue(isinstance(mlayer, net.MultilayerNetwork)) self.assertRaises( TypeError, lambda: transforms.subnet(mlayer, [0, 1, 2], [0, 1], newNet=net.MultiplexNetwork([( 'categorical', 1.0)]))) mplex = net.MultiplexNetwork([('categorical', 1.0)], fullyInterconnected=True) mplex[0, 1, 0] = 1 mplex[0, 2, 1] = 1 mlayer = transforms.subnet(mplex, [0, 1, 2], [0, 1], newNet=net.MultilayerNetwork(aspects=1)) self.assertEqual( set(mlayer.edges), set([(0, 0, 0, 1, 1.0), (0, 1, 0, 0, 1), (0, 2, 1, 1, 1), (1, 1, 0, 1, 1.0), (2, 2, 0, 1, 1.0)])) self.assertTrue(isinstance(mlayer, net.MultilayerNetwork))
def test_subnet_mlayer_example(self): #monoplex copynet = transforms.subnet(self.mlayer_example_monoplex, [1, 2, 3, 4]) self.assertEqual(copynet, self.mlayer_example_monoplex) copynet = transforms.subnet(self.mlayer_example_monoplex, None) self.assertEqual(copynet, self.mlayer_example_monoplex) import copy copynet2 = copy.deepcopy(self.mlayer_example_monoplex) self.assertEqual(copynet2, self.mlayer_example_monoplex) n = net.MultilayerNetwork(aspects=0, fullyInterconnected=True) n[2, 3] = 1 n[3, 4] = 2 self.assertEqual( n, transforms.subnet(self.mlayer_example_monoplex, [2, 3, 4])) #1-aspect copynet = transforms.subnet(self.mlayer_example_1d, [1, 2, 3, 4], ['A', 'B']) self.assertEqual(copynet, self.mlayer_example_1d) copynet = transforms.subnet(self.mlayer_example_1d, None, ['A', 'B']) self.assertEqual(copynet, self.mlayer_example_1d) copynet = transforms.subnet(self.mlayer_example_1d, None, None) self.assertEqual(copynet, self.mlayer_example_1d) copynet = transforms.subnet(self.mlayer_example_1d, [1, 2, 3, 4], None) self.assertEqual(copynet, self.mlayer_example_1d) import copy copynet2 = copy.deepcopy(self.mlayer_example_1d) self.assertEqual(copynet2, self.mlayer_example_1d) n = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) n[2, 3, 'A', 'A'] = 1 self.assertEqual( n, transforms.subnet(self.mlayer_example_1d, [2, 3, 4], ['A'])) #2-aspect copynet = transforms.subnet(self.mlayer_example_2d, [1, 2, 3, 4], ['A', 'B'], ['X', 'Y']) self.assertEqual(copynet, self.mlayer_example_2d) import copy copynet2 = copy.deepcopy(self.mlayer_example_2d) self.assertEqual(copynet2, self.mlayer_example_2d) n = net.MultilayerNetwork(aspects=2, fullyInterconnected=False) n[3, 4, 'B', 'B', 'X', 'X'] = 1 n.add_node(2, layer=('A', 'X')) n.add_node(3, layer=('A', 'X')) self.assertEqual( n, transforms.subnet(self.mlayer_example_2d, [2, 3, 4], None, ['X', 'dummy']))
def test_pickle(self): import pickle n=net.MultilayerNetwork(aspects=1) n[1,2,3,4]=1 self.assertEqual(pickle.loads(pickle.dumps(n)),n) n=net.MultilayerNetwork(aspects=1,directed=True) n[1,2,3,4]=1 self.assertEqual(pickle.loads(pickle.dumps(n)),n) n=net.MultiplexNetwork(couplings=[('categorical',1)]) n[1,2,3,3]=1 self.assertEqual(pickle.loads(pickle.dumps(n)),n) n=net.MultiplexNetwork(couplings=[('categorical',1)],directed=True) n[1,2,3,3]=1 self.assertEqual(pickle.loads(pickle.dumps(n)),n)
def test_autowrapping(self): n=net.MultilayerNetwork(aspects=0) n[1,2]=1 n[2,3]=1 n[4,5]=1 self.assertEqual(set(map(frozenset,nxwrap.connected_components(n))),set([frozenset([1, 2, 3]), frozenset([4, 5])]))
def test_monoplex_erdosrenyi(self): size = 10 full = net.MultilayerNetwork(aspects=0) models.single_layer_er(full, range(10, 10 + size), p=None, edges=int((size * (size - 1)) / 2)) for i in full: for j in full: if i != j: self.assertEqual(full[i, j], 1) self.assertEqual(len(full.edges), int((size * (size - 1)) / 2)) net2 = net.MultilayerNetwork(aspects=0) models.single_layer_er(net2, range(10), p=None, edges=30) self.assertEqual(len(net2.edges), 30)
def test_monoplex_tuples_nxversion1(self): n = net.MultilayerNetwork(aspects=0) nnx = nxwrap.MonoplexGraphNetworkxView(n) nnx.add_node((1, 'a')) nnx.add_nodes_from([(2, 'a'), (3, 'a'), (4, 'a'), (5, 'a')]) nnx.add_edge((1, 'a'), (2, 'a')) nnx[(2, 'a')][(3, 'a')] = 3 nnx.add_edge((4, 'a'), (5, 'a')) nnx[(4, 'a')][(5, 'a')] = 1 nnx[(4, 'a')][(5, 'a')] = 4 self.assertEqual(nnx[(1, 'a')][(2, 'a')]['weight'], 1) self.assertEqual(nnx[(2, 'a')][(3, 'a')]['weight'], 3) self.assertEqual(nnx[(4, 'a')][(5, 'a')]['weight'], 4) self.assertEqual(nnx[(2, 'a')][(1, 'a')]['weight'], 1) self.assertEqual(nnx[(3, 'a')][(2, 'a')]['weight'], 3) self.assertEqual(nnx[(5, 'a')][(4, 'a')]['weight'], 4) self.assertEqual( set(map(frozenset, networkx.connected_components(nnx))), set([ frozenset([(1, 'a'), (2, 'a'), (3, 'a')]), frozenset([(4, 'a'), (5, 'a')]) ]))
def test_monoplex_basics_writing_pymnet(self): n = net.MultilayerNetwork(aspects=0) n[1, 2] = 1 nnx = nxwrap.MonoplexGraphNetworkxView(n) n[2, 3] = 3 n[4, 5] = 4 self.test_monoplex_basics(nnx)
def test_unweighted_flat_triangle(self): n = net.MultilayerNetwork(aspects=0) n[1, 2] = 1 n[2, 3] = 1 n[3, 1] = 1 self.assertEqual(cc.lcc(n, 1), 1.0) self.assertEqual(cc.cc_zhang(n, 1), 1.0) self.assertEqual(cc.cc_onnela(n, 1), 1.0) self.assertEqual(cc.cc_barrat(n, 1), 1.0)
def test_unweighted_mplex_simple(self): n = net.MultiplexNetwork([('categorical', 1.0)]) n[1, 2, 1] = 1 n[1, 3, 1] = 1 n[2, 3, 1] = 1 n[1, 2, 2] = 1 n[1, 3, 2] = 1 n[1, 4, 2] = 1 n[3, 4, 2] = 1 n[1, 2, 3] = 1 n[1, 3, 3] = 1 n[1, 4, 3] = 1 n[2, 4, 3] = 1 an = net.MultilayerNetwork(aspects=0) an[1, 2] = 3 an[1, 3] = 3 an[1, 4] = 2 an[2, 3] = 1 an[3, 4] = 1 an[2, 4] = 1 for i in range(4): self.assertEqual(cc.cc_barrett(n, i, an), cc.cc_barrett_explicit(n, i)) self.assertEqual(cc.lcc_brodka(n, 1, anet=None, threshold=1), 2. / 3.) self.assertEqual(cc.lcc_brodka(n, 2, anet=None, threshold=1), 4. / 3.) self.assertEqual(cc.lcc_brodka(n, 3, anet=None, threshold=1), 4. / 3.) self.assertEqual(cc.lcc_brodka(n, 4, anet=None, threshold=1), 14. / 9.) self.assertEqual(cc.lcc_brodka(n, 1, anet=an, threshold=1), 2. / 3.) self.assertEqual(cc.lcc_brodka(n, 2, anet=an, threshold=1), 4. / 3.) self.assertEqual(cc.lcc_brodka(n, 3, anet=an, threshold=1), 4. / 3.) self.assertEqual(cc.lcc_brodka(n, 4, anet=an, threshold=1), 14. / 9.) self.assertEqual(cc.lcc_brodka(n, 1, anet=None, threshold=2), 2. / 3.) self.assertEqual(cc.lcc_brodka(n, 2, anet=None, threshold=2), 0.) self.assertEqual(cc.lcc_brodka(n, 3, anet=None, threshold=2), 0.) self.assertEqual(cc.lcc_brodka(n, 4, anet=None, threshold=2), 0.) self.assertEqual(cc.lcc_brodka(n, 1, anet=an, threshold=2), 2. / 3.) self.assertEqual(cc.lcc_brodka(n, 2, anet=an, threshold=2), 0.) self.assertEqual(cc.lcc_brodka(n, 3, anet=an, threshold=2), 0.) self.assertEqual(cc.lcc_brodka(n, 4, anet=an, threshold=2), 0.) self.assertEqual(cc.lcc_brodka(n, 1, anet=None, threshold=3), 1. / 3.) self.assertEqual(cc.lcc_brodka(n, 2, anet=None, threshold=3), 0.) self.assertEqual(cc.lcc_brodka(n, 3, anet=None, threshold=3), 0.) self.assertEqual(cc.lcc_brodka(n, 4, anet=None, threshold=3), 0.) self.assertEqual(cc.lcc_brodka(n, 1, anet=an, threshold=3), 1. / 3.) self.assertEqual(cc.lcc_brodka(n, 2, anet=an, threshold=3), 0.) self.assertEqual(cc.lcc_brodka(n, 3, anet=an, threshold=3), 0.) self.assertEqual(cc.lcc_brodka(n, 4, anet=an, threshold=3), 0.)
def test_mst(self): n = net.MultilayerNetwork(aspects=0) n[1, 2] = 1 n[2, 3] = 1 n[1, 3] = 10 mst = nxwrap.minimum_spanning_tree(n) self.assertEqual(mst[1, 2], 1) self.assertEqual(mst[2, 3], 1) self.assertEqual(mst[1, 3], mst.noEdge)
def clique_net(nodes, levels): n = net.MultiplexNetwork([('categorical', 1.0)], directed=False) for level in range(levels): for i, j in itertools.combinations(range(nodes), 2): n[i, j, level] = 1 an = net.MultilayerNetwork(aspects=0, directed=False) for i, j in itertools.combinations(range(nodes), 2): an[i, j] = levels return n, an
def test_dijkstra_monoplex(self): n=net.MultilayerNetwork(aspects=0) n[1,2]=1 n[1,3]=1 n[2,3]=1 n[2,4]=1 n[3,4]=1 n[3,5]=1 d,f=diagnostics.dijkstra(n,[1]) ftrue=net.MultilayerNetwork(aspects=0,fullyInterconnected=False,directed=True,noEdge=-1) ftrue[1,1]=0;ftrue[1,2]=1;ftrue[1,3]=1;ftrue[2,4]=1;ftrue[3,4]=1;ftrue[3,5]=1 self.assertEqual(d,{1:0,2:1,3:1,4:2,5:2}) self.assertEqual(f,ftrue) d,f=diagnostics.dijkstra(n,[1,2]) ftrue=net.MultilayerNetwork(aspects=0,fullyInterconnected=False,directed=True,noEdge=-1) ftrue[1,1]=0;ftrue[2,2]=0;ftrue[1,3]=1;ftrue[2,3]=1;ftrue[2,4]=1;ftrue[3,5]=1 self.assertEqual(d,{1:0,2:0,3:1,4:1,5:2}) self.assertEqual(f,ftrue)
def test_monoplex_basics_writing_nx_nxversion1(self): n = net.MultilayerNetwork(aspects=0) nnx = nxwrap.MonoplexGraphNetworkxView(n) nnx.add_node(1) nnx.add_nodes_from([2, 3, 4, 5]) nnx.add_edge(1, 2) nnx[2][3] = 3 nnx.add_edge(4, 5) nnx[4][5] = 1 nnx[4][5] = 4 self.test_monoplex_basics(nnx)
def test_monoplex_basics_writing_nx(self): n = net.MultilayerNetwork(aspects=0) nnx = nxwrap.MonoplexGraphNetworkxView(n) nnx.add_node(1) nnx.add_nodes_from([2, 3, 4, 5]) nnx.add_edge(1, 2) nnx.add_edge(2, 3, weight=3) nnx.add_edge(4, 5) nnx.add_edge(4, 5, weight=1) nnx.add_edge(4, 5, weight=4) self.test_monoplex_basics(nnx)
def test_subnet_different_interconnectivities(self): fully_interc = net.MultilayerNetwork(aspects=1, fullyInterconnected=True) fully_interc[1, 'X'][1, 'Y'] = 1 fully_interc[1, 'X'][2, 'X'] = 1 other_fully_interc = transforms.subnet( fully_interc, fully_interc.get_layers(aspect=0), fully_interc.get_layers(aspect=1), newNet=net.MultilayerNetwork(aspects=1, fullyInterconnected=True)) self.assertEqual(set(other_fully_interc.iter_node_layers()), set([(1, 'X'), (1, 'Y'), (2, 'X'), (2, 'Y')])) fully_interc = net.MultilayerNetwork(aspects=1, fullyInterconnected=True) fully_interc[1, 'X'][1, 'Y'] = 1 fully_interc[1, 'X'][2, 'X'] = 1 non_fully_interc = transforms.subnet(fully_interc, fully_interc.get_layers(aspect=0), fully_interc.get_layers(aspect=1), newNet=net.MultilayerNetwork( aspects=1, fullyInterconnected=False)) self.assertEqual(set(non_fully_interc.iter_node_layers()), set([(1, 'X'), (1, 'Y'), (2, 'X'), (2, 'Y')])) non_fully_interc = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) non_fully_interc[1, 'X'][1, 'Y'] = 1 non_fully_interc[1, 'X'][2, 'X'] = 1 non_fully_interc.add_node(2, layer='Y') other_non_fully_interc = transforms.subnet( non_fully_interc, non_fully_interc.get_layers(aspect=0), non_fully_interc.get_layers(aspect=1), newNet=net.MultilayerNetwork(aspects=1, fullyInterconnected=False)) self.assertEqual(set(other_non_fully_interc.iter_node_layers()), set([(1, 'X'), (1, 'Y'), (2, 'X'), (2, 'Y')])) non_fully_interc = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) non_fully_interc[1, 'X'][1, 'Y'] = 1 non_fully_interc[1, 'X'][2, 'X'] = 1 self.assertRaises( TypeError, lambda: transforms.subnet( non_fully_interc, non_fully_interc.get_layers(aspect=0), non_fully_interc.get_layers(aspect=1), newNet=net.MultilayerNetwork(aspects=1, fullyInterconnected=True)))
def test_aggregate_2dim_mlayer_interlayeredges(self): n = net.MultilayerNetwork(aspects=2, fullyInterconnected=False) n[1, 'a', 'x'][2, 'b', 'y'] = 3 n[1, 'c', 'x'][2, 'd', 'y'] = 1 n[1, 'a', 'x'][2, 'b', 'x'] = 1 an1 = transforms.aggregate(n, 1) self.assertEqual(set(an1.edges), set([(1, 2, 'x', 'y', 4), (1, 2, 'x', 'x', 1)])) an2 = transforms.aggregate(n, 2) self.assertEqual(set(an2.edges), set([(1, 2, 'a', 'b', 4), (1, 2, 'c', 'd', 1)])) an3 = transforms.aggregate(n, (1, 2)) self.assertEqual(set(an3.edges), set([(1, 2, 5)])) self.assertEqual(an3, transforms.aggregate(an1, 1)) self.assertEqual(an3, transforms.aggregate(an2, 1))
def test_aggregate_1dim_mlayer_nonglobal_nodes(self): def test_net(n): n[1, 2, 'a'] = 1 n.add_layer('b') n.add_node(3, layer=('a')) n.add_node(4, layer=('c')) an = transforms.aggregate(n, 1) self.assertEqual(set(an), set([1, 2, 3, 4])) self.assertEqual(an[1, 2], 1) self.assertEqual(an.aspects, 0) mln = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) test_net(mln) mpn = net.MultiplexNetwork([('categorical', 1.0)], fullyInterconnected=False) test_net(mpn)
def test_aggregate_2dim_mlayer_nonglobal_nodes(self): def test_net(n): n[1, 2, 'a', 'x'] = 3 n.add_layer('b', 1) n.add_layer('y', 2) n.add_node(3, layer=('a', 'x')) n.add_node(4, layer=('c', 'z')) an1 = transforms.aggregate(n, 1) self.assertEqual(set(an1), set([1, 2, 3, 4])) self.assertEqual(set(an1.iter_node_layers()), set([(1, 'x'), (2, 'x'), (3, 'x'), (4, 'z')])) an2 = transforms.aggregate(n, 2) self.assertEqual(set(an2), set([1, 2, 3, 4])) self.assertEqual(set(an2.iter_node_layers()), set([(1, 'a'), (2, 'a'), (3, 'a'), (4, 'c')])) mln = net.MultilayerNetwork(aspects=2, fullyInterconnected=False) test_net(mln) mpn = net.MultiplexNetwork([('categorical', 1.0), ('categorical', 1.0)], fullyInterconnected=False) test_net(mpn)
def test_comparison_simple_mlayer(self, backend="nx"): """This tests that the simple example given in the article M. Kivela & M.A. Porter "Isomorphisms in Multilayer Networks", Figure 2, works. """ neta = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) neta.add_layer("X") neta.add_layer("Y") neta[1, "X"][2, "X"] = 1 neta[3, "X"][3, "Y"] = 1 neta[2, "Y"][3, "Y"] = 1 netb = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) netb.add_layer("X") netb.add_layer("Y") netb[2, "X"][3, "X"] = 1 netb[1, "X"][1, "Y"] = 1 netb[1, "Y"][3, "Y"] = 1 netc = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) netc.add_layer("X") netc.add_layer("Y") netc[1, "Y"][2, "Y"] = 1 netc[3, "Y"][3, "X"] = 1 netc[2, "X"][3, "X"] = 1 netd = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) netd.add_layer("X") netd.add_layer("Y") netd[2, "Y"][3, "Y"] = 1 netd[1, "Y"][1, "X"] = 1 netd[3, "X"][1, "X"] = 1 #Building an auxiliary graph, but no testing yet isomorphisms.nxbackend.AuxiliaryGraphBuilderNX(neta, [0]) isomorphisms.nxbackend.AuxiliaryGraphBuilderNX(netc, [0]) #Network a Isomorphic to itself self.assertTrue( self.is_isomorphic_multimethod(neta, neta, allowed_aspects=[], backend=backend)) self.assertTrue( self.is_isomorphic_multimethod(neta, neta, allowed_aspects=[0], backend=backend)) self.assertTrue( self.is_isomorphic_multimethod(neta, neta, allowed_aspects=[1], backend=backend)) self.assertTrue( self.is_isomorphic_multimethod(neta, neta, allowed_aspects=[0, 1], backend=backend)) #Network a vertex-isomorphic to network b self.assertTrue( self.is_isomorphic_multimethod(neta, netb, allowed_aspects=[0], backend=backend)) #Network a layer-isomorphic to network c self.assertTrue( self.is_isomorphic_multimethod(neta, netc, allowed_aspects=[1], backend=backend)) #Network a vertex-layer-isomorphic to network d self.assertTrue( self.is_isomorphic_multimethod(neta, netd, allowed_aspects=[0, 1], backend=backend)) #Network a is not vertex-isomorphic to network c or d self.assertFalse( self.is_isomorphic_multimethod(neta, netc, allowed_aspects=[0], backend=backend)) self.assertFalse( self.is_isomorphic_multimethod(neta, netd, allowed_aspects=[0], backend=backend)) #Network a is not layer-isomorphic to network b or d self.assertFalse( self.is_isomorphic_multimethod(neta, netb, allowed_aspects=[1], backend=backend)) self.assertFalse( self.is_isomorphic_multimethod(neta, netd, allowed_aspects=[1], backend=backend)) #Network a is vertex-layer-isomorphic to network b or c self.assertTrue( self.is_isomorphic_multimethod(neta, netb, allowed_aspects=[0, 1], backend=backend)) self.assertTrue( self.is_isomorphic_multimethod(neta, netc, allowed_aspects=[0, 1], backend=backend))
def test_directed_unweighted(self): """The 3-layer multiplex networks example from Brodka et al. 'Analysis of Neighborhoods of in Multi-layered Dynamic Social Networks', 2012""" n = net.MultiplexNetwork(['categorical'], directed=True) n['x', 'z', 1] = 1 n['x', 'y', 1] = 1 n['y', 'x', 1] = 1 n['y', 'z', 1] = 1 n['z', 'x', 1] = 1 n['z', 't', 1] = 1 n['u', 'x', 1] = 1 n['u', 'z', 1] = 1 n['u', 'v', 1] = 1 n['v', 'u', 1] = 1 n['v', 't', 1] = 1 n['t', 'z', 1] = 1 n['t', 'v', 1] = 1 n['x', 'u', 2] = 1 n['x', 'z', 2] = 1 n['x', 'v', 2] = 1 n['x', 'y', 2] = 1 n['z', 'x', 2] = 1 n['u', 'v', 2] = 1 n['v', 'u', 2] = 1 n['v', 'x', 2] = 1 n['v', 'y', 2] = 1 n['x', 'u', 3] = 1 n['x', 'z', 3] = 1 n['x', 'v', 3] = 1 n['x', 'y', 3] = 1 n['y', 'z', 3] = 1 n['y', 'v', 3] = 1 n['z', 'x', 3] = 1 n['z', 'y', 3] = 1 n['z', 't', 3] = 1 n['u', 'x', 3] = 1 n['v', 'x', 3] = 1 n['v', 't', 3] = 1 n['t', 'z', 3] = 1 n['t', 'v', 3] = 1 an = net.MultilayerNetwork(aspects=0, directed=True) an['x', 'z'] = 3 an['x', 'u'] = 2 an['x', 'v'] = 2 an['x', 'y'] = 3 an['y', 'x'] = 1 an['y', 'z'] = 2 an['y', 'v'] = 1 an['z', 'x'] = 3 an['z', 'y'] = 1 an['z', 't'] = 2 an['u', 'x'] = 2 an['u', 'z'] = 1 an['u', 'v'] = 2 an['v', 'x'] = 2 an['v', 'y'] = 1 an['v', 'u'] = 2 an['v', 't'] = 2 an['t', 'z'] = 2 an['t', 'v'] = 2 self.assertEqual(cc.lcc_brodka(n, 't', threshold=1), 0.0) self.assertEqual(cc.lcc_brodka(n, 't', threshold=2), 0.0) self.assertEqual(cc.lcc_brodka(n, 't', threshold=3), 0.0) self.assertEqual(cc.lcc_brodka(n, 'z', threshold=1), 2. / 3.) self.assertEqual(cc.lcc_brodka(n, 'z', threshold=2), 4. / 9.) self.assertEqual(cc.lcc_brodka(n, 'z', threshold=3), 0.0) self.assertEqual(cc.lcc_brodka(n, 't', anet=an, threshold=1), 0.0) self.assertEqual(cc.lcc_brodka(n, 't', anet=an, threshold=2), 0.0) self.assertEqual(cc.lcc_brodka(n, 't', anet=an, threshold=3), 0.0) self.assertEqual(cc.lcc_brodka(n, 'z', anet=an, threshold=1), 2. / 3.) self.assertEqual(cc.lcc_brodka(n, 'z', anet=an, threshold=2), 4. / 9.) self.assertEqual(cc.lcc_brodka(n, 'z', anet=an, threshold=3), 0.0)
def test_monoplex_density_degs_mnet(self): n=net.MultilayerNetwork(aspects=0,directed=False) dn=net.MultilayerNetwork(aspects=0,directed=True) self.test_monoplex_density_degs(n,dn)
def test_multilayer_degs_multilayernet(self): n=net.MultilayerNetwork(aspects=1,fullyInterconnected=False) n[1,2,3,4]=1 n[1,2,3,3]=1 self.assertEqual(diagnostics.degs(n,degstype="distribution"),{1:2,2:1}) self.assertEqual(diagnostics.degs(n,degstype="nodes"),{(1,3):2,(2,3):1,(2,4):1})
def setUp(self): n = net.MultiplexNetwork([('categorical', 1.0)]) n[1, 2, 1] = 1 n[1, 3, 1] = 1 n[2, 3, 1] = 1 n[1, 2, 2] = 1 n[1, 3, 2] = 1 n[1, 4, 2] = 1 n[3, 4, 2] = 1 n[1, 2, 3] = 1 n[1, 3, 3] = 1 n[1, 4, 3] = 1 n[2, 4, 3] = 1 self.mplex_simple = n n = net.MultiplexNetwork([('categorical', 1.0)], fullyInterconnected=False) n[1, 2, 1] = 1 n[1, 3, 1] = 1 n[2, 3, 1] = 1 n[1, 2, 2] = 1 n[1, 3, 2] = 1 n[1, 4, 2] = 1 n[3, 4, 2] = 1 n[1, 2, 3] = 1 n[1, 3, 3] = 1 n[1, 4, 3] = 1 n[2, 4, 3] = 1 self.mplex_nonaligned_simple = n #The 2-aspect example network for the review article n = net.MultilayerNetwork(aspects=2, fullyInterconnected=False) n[1, 2, 'A', 'A', 'X', 'X'] = 1 n[2, 3, 'A', 'A', 'Y', 'Y'] = 1 n[1, 3, 'B', 'B', 'X', 'X'] = 1 n[1, 4, 'B', 'B', 'X', 'X'] = 1 n[3, 4, 'B', 'B', 'X', 'X'] = 1 n[1, 1, 'A', 'B', 'X', 'X'] = 1 n[1, 4, 'A', 'B', 'X', 'X'] = 1 n[1, 1, 'B', 'B', 'X', 'Y'] = 1 n[3, 3, 'A', 'A', 'X', 'Y'] = 1 n[3, 4, 'A', 'B', 'X', 'Y'] = 1 self.mlayer_example_2d = n n = net.MultilayerNetwork(aspects=1, fullyInterconnected=False) n[1, 2, 'A', 'A'] = 1 n[2, 3, 'A', 'A'] = 1 n[1, 3, 'B', 'B'] = 1 n[1, 4, 'B', 'B'] = 1 n[3, 4, 'B', 'B'] = 1 n[1, 1, 'A', 'B'] = 1 n[1, 4, 'A', 'B'] = 1 n[3, 4, 'A', 'B'] = 1 self.mlayer_example_1d = n n = net.MultilayerNetwork(aspects=0, fullyInterconnected=True) n[1, 2] = 1 n[2, 3] = 1 n[1, 3] = 1 n[1, 4] = 2 n[3, 4] = 2 self.mlayer_example_monoplex = n
def setUp(self): #create directory for figs if it doesn't exist self.figdirpath=os.path.join(os.path.dirname(os.path.realpath(__file__)),self.figdirname) if not os.path.exists(self.figdirpath): os.mkdir(self.figdirpath) n=net.MultiplexNetwork([('categorical',1.0)]) n[1,2,1]=1 n[1,3,1]=1 n[2,3,1]=1 n[1,2,2]=1 n[1,3,2]=1 n[1,4,2]=1 n[3,4,2]=1 n[1,2,3]=1 n[1,3,3]=1 n[1,4,3]=1 n[2,4,3]=1 self.mplex_simple=n n=net.MultiplexNetwork([('categorical',1.0)],fullyInterconnected=False) n[1,2,1]=1 n[1,3,1]=1 n[2,3,1]=1 n[1,2,2]=1 n[1,3,2]=1 n[1,4,2]=1 n[3,4,2]=1 n[1,2,3]=1 n[1,3,3]=1 n[1,4,3]=1 n[2,4,3]=1 self.mplex_nonaligned_simple=n #The 2-aspect example network for the review article n=net.MultilayerNetwork(aspects=2,fullyInterconnected=False) n[1,2,'A','A','X','X']=1 n[2,3,'A','A','Y','Y']=1 n[1,3,'B','B','X','X']=1 n[1,4,'B','B','X','X']=1 n[3,4,'B','B','X','X']=1 n[1,1,'A','B','X','X']=1 n[1,4,'A','B','X','X']=1 n[1,1,'B','B','X','Y']=1 n[3,3,'A','A','X','Y']=1 n[3,4,'A','B','X','Y']=1 self.mlayer_example_2d=n n=net.MultilayerNetwork(aspects=1,fullyInterconnected=False) n[1,2,'A','A']=1 n[2,3,'A','A']=1 n[1,3,'B','B']=1 n[1,4,'B','B']=1 n[3,4,'B','B']=1 n[1,1,'A','B']=1 n[1,4,'A','B']=1 n[3,4,'A','B']=1 self.mlayer_example_1d=n #Non-aligned network for testing multilayer coordinates n=net.MultilayerNetwork(aspects=1,fullyInterconnected=False) n.add_node(0,'a') n.add_node(1,'b') n.add_node(2,'b') n.add_node(3,'b') n.add_node(4,'b') n.add_node(5,'b') n[1,2,'b','b']=1 n[2,3,'b','b']=1 n[3,4,'b','b']=1 n[4,1,'b','b']=1 n[0,5,'a','b']=1 n[1,5,'b','b']=1 n[2,5,'b','b']=1 n[3,5,'b','b']=1 n[4,5,'b','b']=1 self.mlayer_nonaligned_aligntest=n #Second non-aligned network for testing multilayer coordinates n=net.MultilayerNetwork(aspects=1,fullyInterconnected=False) n.add_node(0,'a') n.add_node(1,'b') n.add_node(2,'b') n.add_node(3,'b') n.add_node(4,'b') n[1,2,'b','b']=1 n[2,3,'b','b']=1 n[3,4,'b','b']=1 n[4,1,'b','b']=1 n[0,0,'a','b']=1 n[1,0,'b','b']=1 n[2,0,'b','b']=1 n[3,0,'b','b']=1 n[4,0,'b','b']=1 self.mlayer_nonaligned_aligntest2=n n=net.MultilayerNetwork(aspects=0,fullyInterconnected=True) n[1,2]=1 n[2,3]=1 n[1,3]=1 n[1,4]=2 n[3,4]=2 self.mlayer_example_monoplex=n