Exemplo n.º 1
0
    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']))
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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])]))
Exemplo n.º 6
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
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)
Exemplo n.º 12
0
        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
Exemplo n.º 13
0
    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)
Exemplo n.º 20
0
    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))
Exemplo n.º 21
0
    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)
Exemplo n.º 22
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)
Exemplo n.º 23
0
 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
Exemplo n.º 25
0
    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