Repository URL to install this package:
|
Version:
2.1 ▾
|
#!/usr/bin/env python
from nose.tools import *
from nose import SkipTest
import networkx as nx
def test_valid_degree_sequence1():
n = 100
p = .3
for i in range(10):
G = nx.erdos_renyi_graph(n, p)
deg = (d for n, d in G.degree())
assert_true(nx.is_graphical(deg, method='eg'))
assert_true(nx.is_graphical(deg, method='hh'))
def test_valid_degree_sequence2():
n = 100
for i in range(10):
G = nx.barabasi_albert_graph(n, 1)
deg = (d for n, d in G.degree())
assert_true(nx.is_graphical(deg, method='eg'))
assert_true(nx.is_graphical(deg, method='hh'))
@raises(nx.NetworkXException)
def test_string_input():
a = nx.is_graphical([], 'foo')
def test_negative_input():
assert_false(nx.is_graphical([-1], 'hh'))
assert_false(nx.is_graphical([-1], 'eg'))
assert_false(nx.is_graphical([72.5], 'eg'))
class TestAtlas(object):
@classmethod
def setupClass(cls):
global atlas
import platform
if platform.python_implementation() == 'Jython':
raise SkipTest('graph atlas not available under Jython.')
import networkx.generators.atlas as atlas
def setUp(self):
self.GAG = atlas.graph_atlas_g()
def test_atlas(self):
for graph in self.GAG:
deg = (d for n, d in graph.degree())
assert_true(nx.is_graphical(deg, method='eg'))
assert_true(nx.is_graphical(deg, method='hh'))
def test_small_graph_true():
z = [5, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
assert_true(nx.is_graphical(z, method='hh'))
assert_true(nx.is_graphical(z, method='eg'))
z = [10, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2]
assert_true(nx.is_graphical(z, method='hh'))
assert_true(nx.is_graphical(z, method='eg'))
z = [1, 1, 1, 1, 1, 2, 2, 2, 3, 4]
assert_true(nx.is_graphical(z, method='hh'))
assert_true(nx.is_graphical(z, method='eg'))
def test_small_graph_false():
z = [1000, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
assert_false(nx.is_graphical(z, method='hh'))
assert_false(nx.is_graphical(z, method='eg'))
z = [6, 5, 4, 4, 2, 1, 1, 1]
assert_false(nx.is_graphical(z, method='hh'))
assert_false(nx.is_graphical(z, method='eg'))
z = [1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4]
assert_false(nx.is_graphical(z, method='hh'))
assert_false(nx.is_graphical(z, method='eg'))
def test_directed_degree_sequence():
# Test a range of valid directed degree sequences
n, r = 100, 10
p = 1.0 / r
for i in range(r):
G = nx.erdos_renyi_graph(n, p * (i + 1), None, True)
din = (d for n, d in G.in_degree())
dout = (d for n, d in G.out_degree())
assert_true(nx.is_digraphical(din, dout))
def test_small_directed_sequences():
dout = [5, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
din = [3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1]
assert_true(nx.is_digraphical(din, dout))
# Test nongraphical directed sequence
dout = [1000, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
din = [103, 102, 102, 102, 102, 102, 102, 102, 102, 102]
assert_false(nx.is_digraphical(din, dout))
# Test digraphical small sequence
dout = [1, 1, 1, 1, 1, 2, 2, 2, 3, 4]
din = [2, 2, 2, 2, 2, 2, 2, 2, 1, 1]
assert_true(nx.is_digraphical(din, dout))
# Test nonmatching sum
din = [2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1]
assert_false(nx.is_digraphical(din, dout))
# Test for negative integer in sequence
din = [2, 2, 2, -2, 2, 2, 2, 2, 1, 1, 4]
assert_false(nx.is_digraphical(din, dout))
def test_multi_sequence():
# Test nongraphical multi sequence
seq = [1000, 3, 3, 3, 3, 2, 2, 2, 1, 1]
assert_false(nx.is_multigraphical(seq))
# Test small graphical multi sequence
seq = [6, 5, 4, 4, 2, 1, 1, 1]
assert_true(nx.is_multigraphical(seq))
# Test for negative integer in sequence
seq = [6, 5, 4, -4, 2, 1, 1, 1]
assert_false(nx.is_multigraphical(seq))
# Test for sequence with odd sum
seq = [1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4]
assert_false(nx.is_multigraphical(seq))
def test_pseudo_sequence():
# Test small valid pseudo sequence
seq = [1000, 3, 3, 3, 3, 2, 2, 2, 1, 1]
assert_true(nx.is_pseudographical(seq))
# Test for sequence with odd sum
seq = [1000, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1]
assert_false(nx.is_pseudographical(seq))
# Test for negative integer in sequence
seq = [1000, 3, 3, 3, 3, 2, 2, -2, 1, 1]
assert_false(nx.is_pseudographical(seq))