blob: d03be65e62fdc76725107fa83412765ba0a82cc6 [file] [log] [blame]
from collections import defaultdict
from nose.tools import *
from nose import SkipTest
import networkx as nx
from networkx.algorithms.centrality.communicability_alg import *
class TestCommunicability:
@classmethod
def setupClass(cls):
global numpy
global scipy
try:
import numpy
except ImportError:
raise SkipTest('NumPy not available.')
try:
import scipy
except ImportError:
raise SkipTest('SciPy not available.')
def test_communicability_centrality(self):
answer={0: 1.5430806348152433, 1: 1.5430806348152433}
result=communicability_centrality(nx.path_graph(2))
for k,v in result.items():
assert_almost_equal(answer[k],result[k],places=7)
answer1={'1': 1.6445956054135658,
'Albert': 2.4368257358712189,
'Aric': 2.4368257358712193,
'Dan':3.1306328496328168,
'Franck': 2.3876142275231915}
G1=nx.Graph([('Franck','Aric'),('Aric','Dan'),('Dan','Albert'),
('Albert','Franck'),('Dan','1'),('Franck','Albert')])
result1=communicability_centrality(G1)
for k,v in result1.items():
assert_almost_equal(answer1[k],result1[k],places=7)
result1=communicability_centrality_exp(G1)
for k,v in result1.items():
assert_almost_equal(answer1[k],result1[k],places=7)
def test_communicability_betweenness_centrality(self):
answer={0: 0.07017447951484615, 1: 0.71565598701107991,
2: 0.71565598701107991, 3: 0.07017447951484615}
result=communicability_betweenness_centrality(nx.path_graph(4))
for k,v in result.items():
assert_almost_equal(answer[k],result[k],places=7)
answer1={'1': 0.060039074193949521,
'Albert': 0.315470761661372,
'Aric': 0.31547076166137211,
'Dan': 0.68297778678316201,
'Franck': 0.21977926617449497}
G1=nx.Graph([('Franck','Aric'),
('Aric','Dan'),('Dan','Albert'),('Albert','Franck'),
('Dan','1'),('Franck','Albert')])
result1=communicability_betweenness_centrality(G1)
for k,v in result1.items():
assert_almost_equal(answer1[k],result1[k],places=7)
def test_communicability_betweenness_centrality_small(self):
G = nx.Graph([(1,2)])
result=communicability_betweenness_centrality(G)
assert_equal(result, {1:0,2:0})
def test_communicability(self):
answer={0 :{0: 1.5430806348152435,
1: 1.1752011936438012
},
1 :{0: 1.1752011936438012,
1: 1.5430806348152435
}
}
# answer={(0, 0): 1.5430806348152435,
# (0, 1): 1.1752011936438012,
# (1, 0): 1.1752011936438012,
# (1, 1): 1.5430806348152435}
result=communicability(nx.path_graph(2))
for k1,val in result.items():
for k2 in val:
assert_almost_equal(answer[k1][k2],result[k1][k2],places=7)
def test_communicability2(self):
answer_orig ={('1', '1'): 1.6445956054135658,
('1', 'Albert'): 0.7430186221096251,
('1', 'Aric'): 0.7430186221096251,
('1', 'Dan'): 1.6208126320442937,
('1', 'Franck'): 0.42639707170035257,
('Albert', '1'): 0.7430186221096251,
('Albert', 'Albert'): 2.4368257358712189,
('Albert', 'Aric'): 1.4368257358712191,
('Albert', 'Dan'): 2.0472097037446453,
('Albert', 'Franck'): 1.8340111678944691,
('Aric', '1'): 0.7430186221096251,
('Aric', 'Albert'): 1.4368257358712191,
('Aric', 'Aric'): 2.4368257358712193,
('Aric', 'Dan'): 2.0472097037446457,
('Aric', 'Franck'): 1.8340111678944691,
('Dan', '1'): 1.6208126320442937,
('Dan', 'Albert'): 2.0472097037446453,
('Dan', 'Aric'): 2.0472097037446457,
('Dan', 'Dan'): 3.1306328496328168,
('Dan', 'Franck'): 1.4860372442192515,
('Franck', '1'): 0.42639707170035257,
('Franck', 'Albert'): 1.8340111678944691,
('Franck', 'Aric'): 1.8340111678944691,
('Franck', 'Dan'): 1.4860372442192515,
('Franck', 'Franck'): 2.3876142275231915}
answer=defaultdict(dict)
for (k1,k2),v in answer_orig.items():
answer[k1][k2]=v
G1=nx.Graph([('Franck','Aric'),('Aric','Dan'),('Dan','Albert'),
('Albert','Franck'),('Dan','1'),('Franck','Albert')])
result=communicability(G1)
for k1,val in result.items():
for k2 in val:
assert_almost_equal(answer[k1][k2],result[k1][k2],places=7)
result=communicability_exp(G1)
for k1,val in result.items():
for k2 in val:
assert_almost_equal(answer[k1][k2],result[k1][k2],places=7)
def test_estrada_index(self):
answer=1041.2470334195475
result=estrada_index(nx.karate_club_graph())
assert_almost_equal(answer,result,places=7)