comparison env/lib/python3.9/site-packages/networkx/algorithms/link_analysis/tests/test_hits.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 import pytest
2
3
4 import networkx
5 from networkx.testing import almost_equal
6
7 # Example from
8 # A. Langville and C. Meyer, "A survey of eigenvector methods of web
9 # information retrieval." http://citeseer.ist.psu.edu/713792.html
10
11
12 class TestHITS:
13 @classmethod
14 def setup_class(cls):
15
16 G = networkx.DiGraph()
17
18 edges = [(1, 3), (1, 5), (2, 1), (3, 5), (5, 4), (5, 3), (6, 5)]
19
20 G.add_edges_from(edges, weight=1)
21 cls.G = G
22 cls.G.a = dict(
23 zip(sorted(G), [0.000000, 0.000000, 0.366025, 0.133975, 0.500000, 0.000000])
24 )
25 cls.G.h = dict(
26 zip(sorted(G), [0.366025, 0.000000, 0.211325, 0.000000, 0.211325, 0.211325])
27 )
28
29 def test_hits(self):
30 G = self.G
31 h, a = networkx.hits(G, tol=1.0e-08)
32 for n in G:
33 assert almost_equal(h[n], G.h[n], places=4)
34 for n in G:
35 assert almost_equal(a[n], G.a[n], places=4)
36
37 def test_hits_nstart(self):
38 G = self.G
39 nstart = {i: 1.0 / 2 for i in G}
40 h, a = networkx.hits(G, nstart=nstart)
41
42 def test_hits_numpy(self):
43 numpy = pytest.importorskip("numpy")
44 G = self.G
45 h, a = networkx.hits_numpy(G)
46 for n in G:
47 assert almost_equal(h[n], G.h[n], places=4)
48 for n in G:
49 assert almost_equal(a[n], G.a[n], places=4)
50
51 def test_hits_scipy(self):
52 sp = pytest.importorskip("scipy")
53 G = self.G
54 h, a = networkx.hits_scipy(G, tol=1.0e-08)
55 for n in G:
56 assert almost_equal(h[n], G.h[n], places=4)
57 for n in G:
58 assert almost_equal(a[n], G.a[n], places=4)
59
60 def test_empty(self):
61 numpy = pytest.importorskip("numpy")
62 G = networkx.Graph()
63 assert networkx.hits(G) == ({}, {})
64 assert networkx.hits_numpy(G) == ({}, {})
65 assert networkx.authority_matrix(G).shape == (0, 0)
66 assert networkx.hub_matrix(G).shape == (0, 0)
67
68 def test_empty_scipy(self):
69 scipy = pytest.importorskip("scipy")
70 G = networkx.Graph()
71 assert networkx.hits_scipy(G) == ({}, {})
72
73 def test_hits_not_convergent(self):
74 with pytest.raises(networkx.PowerIterationFailedConvergence):
75 G = self.G
76 networkx.hits(G, max_iter=0)