| # -*- coding: utf-8 -*- |
| from nose import SkipTest |
| from nose.tools import * |
| import networkx as nx |
| from networkx.algorithms.bipartite import spectral_bipartivity as sb |
| |
| # Examples from Figure 1 |
| # E. Estrada and J. A. Rodríguez-Velázquez, "Spectral measures of |
| # bipartivity in complex networks", PhysRev E 72, 046105 (2005) |
| |
| class TestSpectralBipartivity(object): |
| @classmethod |
| def setupClass(cls): |
| global scipy |
| global assert_equal |
| global assert_almost_equal |
| try: |
| import scipy.linalg |
| except ImportError: |
| raise SkipTest('SciPy not available.') |
| |
| |
| def test_star_like(self): |
| # star-like |
| |
| G=nx.star_graph(2) |
| G.add_edge(1,2) |
| assert_almost_equal(sb(G),0.843,places=3) |
| |
| G=nx.star_graph(3) |
| G.add_edge(1,2) |
| assert_almost_equal(sb(G),0.871,places=3) |
| |
| G=nx.star_graph(4) |
| G.add_edge(1,2) |
| assert_almost_equal(sb(G),0.890,places=3) |
| |
| |
| def k23_like(self): |
| # K2,3-like |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(0,1) |
| assert_almost_equal(sb(G),0.769,places=3) |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(2,4) |
| assert_almost_equal(sb(G),0.829,places=3) |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(2,4) |
| G.add_edge(3,4) |
| assert_almost_equal(sb(G),0.731,places=3) |
| |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(0,1) |
| G.add_edge(2,4) |
| assert_almost_equal(sb(G),0.692,places=3) |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(2,4) |
| G.add_edge(3,4) |
| G.add_edge(0,1) |
| assert_almost_equal(sb(G),0.645,places=3) |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(2,4) |
| G.add_edge(3,4) |
| G.add_edge(2,3) |
| assert_almost_equal(sb(G),0.645,places=3) |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(2,4) |
| G.add_edge(3,4) |
| G.add_edge(2,3) |
| G.add_edge(0,1) |
| assert_almost_equal(sb(G),0.597,places=3) |
| |
| def test_single_nodes(self): |
| |
| # single nodes |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(2,4) |
| sbn=sb(G,nodes=[1,2]) |
| assert_almost_equal(sbn[1],0.85,places=2) |
| assert_almost_equal(sbn[2],0.77,places=2) |
| |
| G=nx.complete_bipartite_graph(2,3) |
| G.add_edge(0,1) |
| sbn=sb(G,nodes=[1,2]) |
| assert_almost_equal(sbn[1],0.73,places=2) |
| assert_almost_equal(sbn[2],0.82,places=2) |
| |