コード例 #1
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
    def test_embeddedness(self):
        assert_equal(cb.cmty_embeddedness(gb), {
            0: (3 * 4 / float(3 * 4 + 1)),
            1: 2 * 3 / float(2 * 3 + 1)
        })

        g = networkx.complete_graph(5)
        c = cmty.Communities({0: set(range(5))})
        assert_equal(c.cmty_embeddedness(g)[0], 1.0)

        g = networkx.path_graph(5)
        c = cmty.Communities({0: set(range(5))})
        assert_equal(c.cmty_embeddedness(g)[0], 1.0)

        # Singleton comm
        g = networkx.complete_graph(1)
        c = cmty.Communities({0: set(range(1))})
        assert_equal(c.cmty_embeddedness(g)[0], 0.0)

        # Empty comm
        g = networkx.complete_graph(0)
        c = cmty.Communities({0: set(range(0))})
        assert_equal(c.cmty_embeddedness(g)[0], 0.0)

        # Total embeddednesses
        ce = (4 * 3 / (4 * 3 + 1.) * 4 + 3 * 2 / (3 * 2 + 1.) * 3) / (4 + 3)
        assert_equal(cb.tot_embeddedness(gb), ce)
コード例 #2
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
def test_cmty_graph():
    # Test cmty_graph:
    g = networkx.complete_graph(7)
    g.remove_edge(3, 5)
    g.remove_edge(1, 2)
    cmtys = cmty.Communities({
        0: set((0, 1, 2)),
        1: set((3, 4)),
        'a': set((5, 6))
    })
    cmty_graph = cmtys.cmty_graph(g)
    assert cmty_graph.node[0]['size'] == 3  # number of nodes
    assert cmty_graph.node[0]['weight'] == 2  # edges within cmty
    assert cmty_graph.node['a']['size'] == 2
    assert cmty_graph.node['a']['weight'] == 1
    assert cmty_graph[0][1]['weight'] == 6  # edges between
    assert cmty_graph[1]['a']['weight'] == 3
    assert cmty_graph['a'][0]['weight'] == 6

    # Test cmty_graph on directed graph:
    g = networkx.complete_graph(7, create_using=networkx.DiGraph())
    g.remove_edge(3, 5)
    g.remove_edge(1, 2)
    cmtys = cmty.Communities({
        0: set((0, 1, 2)),
        1: set((3, 4)),
        'a': set((5, 6))
    })
    cmty_graph = cmtys.cmty_graph(g)
    assert cmty_graph.node[0]['size'] == 3  # number of nodes
    assert cmty_graph.node[0]['weight'] == 5  # edges within cmty
    assert cmty_graph.node['a']['size'] == 2
    assert cmty_graph.node['a']['weight'] == 2
    assert cmty_graph[0][1]['weight'] == 6  # edges between
    assert cmty_graph[1][0]['weight'] == 6
    assert cmty_graph[1]['a']['weight'] == 3
    assert cmty_graph['a'][1]['weight'] == 4
    assert cmty_graph['a'][0]['weight'] == 6
    assert cmty_graph[0]['a']['weight'] == 6
コード例 #3
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
def test_union():
    # Test unions
    cn1 = dict(A=set((0, 1, 3)), B=set((1, 2, 3, 4)))
    cn2 = dict(A=set((0, 1, 3)), B=set((5, 6, 7, 8, 9)))
    c1 = cmty.Communities(cn1)
    c2 = cmty.Communities(cn2)
    cU = cmty.CommunityUnion((c1, c2))
    assert len(cU) == 3
    assert cU.nodes == set(range(10))
    assert set(frozenset(x) for x in cU.itervalues()) \
           == set((frozenset((0,1,3)),frozenset((1,2,3,4)),frozenset((5,6,7,8,9))))
    #print list(cU.iteritems())
    assert len(set(cU.iterkeys())) == 3
    assert len(list(cU.itervalues())) == 3
    cmty._test_interface(cU)

    # Same test, but without dup_ok.
    cU = cmty.CommunityUnion((cn1, cn2), dup_ok=True)
    assert len(cU) == 4
    assert len(set(cU.iterkeys())) == 4
    assert cU.nodes == set(range(10))
    #print list(cU.iteritems())
    cmty._test_interface(cU)
コード例 #4
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
def test_filter():
    # Test some filters
    cmtys = cmty.Communities(cmtynodes)

    def filter(c, ns):
        yield str(c) + '.1', ns
        yield str(c) + '.2', ns

    cmtys_filter = cmty.CommunityFilter(cmtys, filter)
    cmtys_filter_full = cmtys_filter.to_full()
    cmtys_filter_full.q == cmtys_filter.q
    cmty._test_interface(cmtys_filter)
    assert cmtys_filter_full.nodes_spanned() == set(range(10))
    assert cmtys_filter_full.cmtysizes_sum() == 22
    assert cmtys_filter_full.overlap() == 2.2

    cmtys = cmty.Communities(cmtynodes)

    def filter(c, ns):
        if len(ns) == 4:
            yield c, ns

    cmtys_filter = cmty.CommunityFilter(cmtys, filter)
    assert len(cmtys_filter) == 2
コード例 #5
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
    def test_sld(self):
        assert_equal(cb.cmty_scaledlinkdensities(gb), {0: 4, 1: 3})

        g = networkx.complete_graph(5)
        c = cmty.Communities({0: set(range(5))})
        assert_equal(c.cmty_scaledlinkdensities(g)[0], 5)

        g = networkx.path_graph(5)
        c = cmty.Communities({0: set(range(5))})
        assert_equal(c.cmty_scaledlinkdensities(g)[0], 2)

        # Singleton comm
        g = networkx.complete_graph(1)
        c = cmty.Communities({0: set(range(1))})
        assert_equal(c.cmty_scaledlinkdensities(g)[0], 0.0)

        # Empty comm
        g = networkx.complete_graph(0)
        c = cmty.Communities({0: set(range(0))})
        assert_equal(c.cmty_scaledlinkdensities(g)[0], 0.0)

        # Total SLD
        ce = (4 * 4 + 3 * 3) / float(4 + 3)
        assert_equal(cb.tot_scaledlinkdensity(gb), ce)
コード例 #6
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
def test_full():
    # Test full object
    cmtys = cmty.Communities(cmtynodes)
    assert cmtys.is_cover() == True
    assert cmtys.is_non_overlapping() == False
    assert cmtys.is_partition() == False
    cmtys.load_networkx(networkx.complete_graph(10))

    # Test object with missing some nodes (non-consecutive).  This is
    # mainly a test of the cmtyintmap and nodeintmap.
    cn2 = {
        0: set((0, 1, 2, 3)),
        1: set((
            3,
            4,
            5,
        )),
        5: set((
            7,
            8,
        )),  #missing 6 and 9
    }
    cm2 = cmty.Communities(cn2)
    cmty._test_interface(cm2)
コード例 #7
0
ファイル: test_cmty.py プロジェクト: zjminglove/pcd
    assert cmty_graph['a'][1]['weight'] == 4
    assert cmty_graph['a'][0]['weight'] == 6
    assert cmty_graph[0]['a']['weight'] == 6


g = networkx.Graph([
    (0, 1),
    (1, 2),
    (2, 3),
    (3, 4),
    (4, 5),
    (5, 6),
])
cmtys = cmty.Communities({
    0: set((0, 1, 2)),
    1: set((2, 3, 4)),
    2: set((5, 6)),
})

g2 = networkx.Graph([
    (0, 1),
    (0, 2),
    (1, 2),
    (3, 4),
    (4, 5),
    (5, 6),
    (6, 3),
    (2, 3),
])
cmtys2 = cmty.Communities({
    'a': set((0, 1, 2)),