import unittest
from igraph import *
class DecompositionTests(unittest.TestCase):
def testKCores(self):
g = Graph(11, [(0,1), (0,2), (0,3), (1,2), (1,3), (2,3),
(2,4), (2,5), (3,6), (3,7), (1,7), (7,8),
(1,9), (1,10), (9,10)])
self.failUnless(g.coreness() == [3,3,3,3,1,1,1,2,1,2,2])
self.failUnless(g.shell_index() == g.coreness())
l=g.k_core(3).get_edgelist()
l.sort()
self.failUnless(l == [(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)])
class ClusteringTests(unittest.TestCase):
def setUp(self):
self.cl = Clustering([0,0,0,1,1,2,1,1,4,4])
def testClusteringIndex(self):
self.failUnless(self.cl[0] == [0, 1, 2])
self.failUnless(self.cl[1] == [3, 4, 6, 7])
self.failUnless(self.cl[2] == [5])
self.failUnless(self.cl[3] == [])
self.failUnless(self.cl[4] == [8, 9])
def testClusteringLength(self):
self.failUnless(len(self.cl) == 5)
def testClusteringMembership(self):
self.failUnless(membership == [0,0,0,1,1,2,1,1,4,4])
def testClusteringSizes(self):
self.failUnless(self.cl.sizes() == [3, 4, 1, 0, 2])
self.failUnless(self.cl.sizes(2, 4, 1) == [1, 2, 4])
self.failUnless(self.cl.size(2) == 1)
def testClusteringHistogram(self):
self.failUnless(isinstance(self.cl.size_histogram(), Histogram))
class CommunityTests(unittest.TestCase):
def testClauset(self):
g = Graph.Full(5) + Graph.Full(5)
g.add_edges([(0, 5)])
cl = g.community_fastgreedy()
self.failUnless(cl.membership == [0,0,0,0,0,1,1,1,1,1])
self.assertAlmostEqual(cl.q, 0.4523, places=3)
def testEigenvector(self):
g = Graph.Full(5) + Graph.Full(5)
g.add_edges([(0, 5)])
cl = g.community_leading_eigenvector_naive()
self.failUnless(cl.membership == [0,0,0,0,0,1,1,1,1,1])
self.assertAlmostEqual(cl.q, 0.4523, places=3)
cl = g.community_leading_eigenvector(2)
self.failUnless(cl.membership == [0,0,0,0,0,1,1,1,1,1])
self.assertAlmostEqual(cl.q, 0.4523, places=3)
def suite():
decomposition_suite = unittest.makeSuite(DecompositionTests)
clustering_suite = unittest.makeSuite(ClusteringTests)
community_suite = unittest.makeSuite(CommunityTests)
return unittest.TestSuite([decomposition_suite, community_suite])
def test():
runner = unittest.TextTestRunner()
runner.run(suite())
if __name__ == "__main__":
test()
syntax highlighted by Code2HTML, v. 0.9.1