chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
import math
|
||||
import unittest
|
||||
|
||||
from itertools import combinations
|
||||
|
||||
import easygraph as eg
|
||||
import numpy as np
|
||||
|
||||
from easygraph.utils.exception import EasyGraphError
|
||||
|
||||
|
||||
class test_assortativity(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.g = eg.get_graph_karateclub()
|
||||
self.edges = [(8, 9), (1, 2), (8, 4), (3, 6), (1, 3), (6, 4)]
|
||||
self.hg = [
|
||||
eg.Hypergraph(num_v=10, e_list=self.edges, e_property=None),
|
||||
eg.Hypergraph(num_v=2, e_list=[(0, 1)]),
|
||||
]
|
||||
# Valid uniform hypergraph
|
||||
self.hg_uniform = eg.Hypergraph(
|
||||
num_v=5,
|
||||
e_list=[
|
||||
(0, 1, 2),
|
||||
(1, 2, 3),
|
||||
(2, 3, 4),
|
||||
],
|
||||
)
|
||||
|
||||
# Non-uniform hypergraph
|
||||
self.hg_non_uniform = eg.Hypergraph(
|
||||
num_v=4,
|
||||
e_list=[
|
||||
(0, 1),
|
||||
(2, 3, 0),
|
||||
],
|
||||
)
|
||||
|
||||
# Singleton edge hypergraph (still needs num_v > 0)
|
||||
self.hg_singleton = eg.Hypergraph(
|
||||
num_v=3,
|
||||
e_list=[
|
||||
(0,),
|
||||
(1, 2),
|
||||
],
|
||||
)
|
||||
|
||||
# "Empty" hypergraph (has 1 node but no edges)
|
||||
self.hg_empty = eg.Hypergraph(
|
||||
num_v=1,
|
||||
e_list=[],
|
||||
)
|
||||
|
||||
def test_dynamical_assortativity(self):
|
||||
for i in self.hg:
|
||||
degs = i.deg_v
|
||||
print(degs)
|
||||
k1 = sum(degs) / len(degs)
|
||||
print(k1)
|
||||
k2 = np.mean(np.array(degs) ** 2)
|
||||
print(k2)
|
||||
kk1 = np.mean(
|
||||
[degs[n1] * degs[n2] for e in i.e[0] for n1, n2 in combinations(e, 2)]
|
||||
)
|
||||
print(kk1)
|
||||
print(eg.dynamical_assortativity(i))
|
||||
print()
|
||||
|
||||
def test_degree_assortativity(self):
|
||||
for i in self.hg:
|
||||
print(eg.degree_assortativity(i))
|
||||
|
||||
def test_dynamical_assortativity_valid(self):
|
||||
result = eg.dynamical_assortativity(self.hg_uniform)
|
||||
self.assertIsInstance(result, float)
|
||||
|
||||
def test_dynamical_assortativity_raises_on_empty(self):
|
||||
with self.assertRaises(EasyGraphError):
|
||||
eg.dynamical_assortativity(self.hg_empty)
|
||||
|
||||
def test_dynamical_assortativity_raises_on_singleton(self):
|
||||
with self.assertRaises(EasyGraphError):
|
||||
eg.dynamical_assortativity(self.hg_singleton)
|
||||
|
||||
def test_dynamical_assortativity_raises_on_nonuniform(self):
|
||||
with self.assertRaises(EasyGraphError):
|
||||
eg.dynamical_assortativity(self.hg_non_uniform)
|
||||
|
||||
def test_degree_assortativity_raises_on_invalid_kind(self):
|
||||
with self.assertRaises(EasyGraphError):
|
||||
eg.degree_assortativity(self.hg_uniform, kind="invalid")
|
||||
|
||||
def test_degree_assortativity_raises_on_singleton(self):
|
||||
with self.assertRaises(EasyGraphError):
|
||||
eg.degree_assortativity(self.hg_singleton)
|
||||
|
||||
def test_degree_assortativity_raises_on_empty(self):
|
||||
with self.assertRaises(EasyGraphError):
|
||||
eg.degree_assortativity(self.hg_empty)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user