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)
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
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)
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
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)
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)
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)),