Files
2026-07-13 12:36:30 +08:00

78 lines
2.5 KiB
Python

import unittest
import easygraph as eg
import numpy as np
class Test_LINE(unittest.TestCase):
def setUp(self):
self.edges = [(0, 1), (1, 2), (2, 3), (3, 4)]
self.graph = eg.Graph()
self.graph.add_edges_from(self.edges)
def test_output_is_dict_with_correct_dim(self):
model = eg.functions.graph_embedding.LINE(
dimension=16, walk_length=10, walk_num=5, order=1
)
emb = model(self.graph, return_dict=True)
self.assertIsInstance(emb, dict)
for v in emb.values():
self.assertEqual(len(v), 16)
def test_output_as_matrix(self):
model = eg.functions.graph_embedding.LINE(
dimension=8, walk_length=5, walk_num=3, order=1
)
emb = model(self.graph, return_dict=False)
self.assertEqual(emb.shape, (len(self.graph.nodes), 8))
def test_output_with_order_2(self):
model = eg.functions.graph_embedding.LINE(
dimension=16, walk_length=10, walk_num=5, order=2
)
emb = model(self.graph)
for vec in emb.values():
self.assertEqual(len(vec), 16)
def test_output_with_order_3_combination(self):
model = eg.functions.graph_embedding.LINE(
dimension=16, walk_length=10, walk_num=5, order=3
)
emb = model(self.graph)
for vec in emb.values():
self.assertEqual(len(vec), 16)
def test_directed_graph(self):
g = eg.DiGraph()
g.add_edges_from(self.edges)
model = eg.functions.graph_embedding.LINE(
dimension=8, walk_length=5, walk_num=3, order=1
)
emb = model(g)
self.assertEqual(len(emb), len(g.nodes))
def test_empty_graph_raises(self):
g = eg.Graph()
model = eg.functions.graph_embedding.LINE(
dimension=8, walk_length=5, walk_num=3, order=1
)
with self.assertRaises(Exception):
_ = model(g)
def test_embeddings_are_normalized(self):
model = eg.functions.graph_embedding.LINE(
dimension=16, walk_length=10, walk_num=5, order=1
)
emb = model(self.graph)
for vec in emb.values():
norm = np.linalg.norm(vec)
self.assertTrue(np.isclose(norm, 1.0, atol=1e-5))
def test_embedding_value_finiteness(self):
model = eg.functions.graph_embedding.LINE(
dimension=16, walk_length=10, walk_num=5, order=1
)
emb = model(self.graph)
for vec in emb.values():
self.assertTrue(np.all(np.isfinite(vec)))