/usr/share/pyshared/igraph/test/atlas.py is in python-igraph 0.6.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | from __future__ import division
import warnings
import unittest
from igraph import *
class TestBase(unittest.TestCase):
def testPageRank(self):
for idx, g in enumerate(self.__class__.graphs):
try:
pr = g.pagerank()
except Exception, ex:
self.assertTrue(False, msg="PageRank calculation threw exception for graph #%d: %s" % (idx, ex))
raise
if g.vcount() == 0:
self.assertEqual([], pr)
continue
self.assertAlmostEqual(1.0, sum(pr), places=5, \
msg="PageRank sum is not 1.0 for graph #%d (%r)" % (idx, pr))
self.assertTrue(min(pr) >= 0, \
msg="Minimum PageRank is less than 0 for graph #%d (%r)" % (idx, pr))
def testEigenvectorCentrality(self):
# Temporarily turn off the warning handler because g.evcent() will print
# a warning for DAGs
warnings.simplefilter("ignore")
try:
for idx, g in enumerate(self.__class__.graphs):
try:
ec, eval = g.evcent(return_eigenvalue=True)
except Exception, ex:
self.assertTrue(False, msg="Eigenvector centrality threw exception for graph #%d: %s" % (idx, ex))
raise
if g.vcount() == 0:
self.assertEqual([], ec)
continue
if not g.is_connected():
# Skip disconnected graphs; this will be fixed in igraph 0.7
continue
n = g.vcount()
if abs(eval) < 1e-4:
self.assertTrue(min(ec) >= -1e-10,
msg="Minimum eigenvector centrality is smaller than 0 for graph #%d" % idx)
self.assertTrue(max(ec) <= 1,
msg="Maximum eigenvector centrality is greater than 1 for graph #%d" % idx)
continue
self.assertAlmostEqual(max(ec), 1, places=7, \
msg="Maximum eigenvector centrality is %r (not 1) for graph #%d (%r)" % \
(max(ec), idx, ec))
self.assertTrue(min(ec) >= 0, \
msg="Minimum eigenvector centrality is less than 0 for graph #%d" % idx)
ec2 = [sum(ec[u.index] for u in v.predecessors()) for v in g.vs]
for i in xrange(n):
self.assertAlmostEqual(ec[i] * eval, ec2[i], places=7, \
msg="Eigenvector centrality in graph #%d seems to be invalid "\
"for vertex %d" % (idx, i))
finally:
# Reset the warning handler
warnings.resetwarnings()
def testHubScore(self):
for idx, g in enumerate(self.__class__.graphs):
sc = g.hub_score()
if g.vcount() == 0:
self.assertEqual([], sc)
continue
self.assertAlmostEqual(max(sc), 1, places=7, \
msg="Maximum authority score is not 1 for graph #%d" % idx)
self.assertTrue(min(sc) >= 0, \
msg="Minimum hub score is less than 0 for graph #%d" % idx)
def testAuthorityScore(self):
for idx, g in enumerate(self.__class__.graphs):
sc = g.authority_score()
if g.vcount() == 0:
self.assertEqual([], sc)
continue
self.assertAlmostEqual(max(sc), 1, places=7, \
msg="Maximum authority score is not 1 for graph #%d" % idx)
self.assertTrue(min(sc) >= 0, \
msg="Minimum authority score is less than 0 for graph #%d" % idx)
class GraphAtlasTests(TestBase):
graphs = [Graph.Atlas(i) for i in xrange(1253)]
class IsoclassTests(TestBase):
graphs = [Graph.Isoclass(3, i, directed=True) for i in xrange(16)] + \
[Graph.Isoclass(4, i, directed=True) for i in xrange(218)]
def suite():
atlas_suite = unittest.makeSuite(GraphAtlasTests)
isoclass_suite = unittest.makeSuite(IsoclassTests)
return unittest.TestSuite([atlas_suite, isoclass_suite])
def test():
runner = unittest.TextTestRunner()
runner.run(suite())
if __name__ == "__main__":
test()
|