|
- #
- # Copyright (C) Stanislaw Adaszewski, 2020
- # License: GPLv3
- #
-
-
- from icosagon.data import Data, \
- _equal, \
- RelationFamily
- from icosagon.decode import DEDICOMDecoder
- import torch
- import pytest
-
-
- def test_equal_01():
- x = torch.rand((10, 10))
- y = torch.rand((10, 10)).round().to_sparse()
-
- assert torch.all(_equal(x, x))
- assert torch.all(_equal(y, y))
- with pytest.raises(ValueError):
- _equal(x, y)
-
- z = torch.rand((10, 10)).round().to_sparse()
- assert not torch.all(_equal(y, z))
-
-
- def test_relation_family_01():
- d = Data()
- d.add_node_type('Whatever', 10)
-
- fam = RelationFamily(d, 'Dummy-Dummy', 0, 0, True, DEDICOMDecoder)
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', None, None)
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', 'bad-value', None)
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', None, 'bad-value')
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', torch.rand((5, 5)), None)
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', None, torch.rand((5, 5)))
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', torch.rand((10, 10)), torch.rand((10, 10)))
-
- with pytest.raises(ValueError):
- fam.add_relation_type('Dummy-Dummy', torch.rand((10, 10)), None)
-
-
- def test_relation_family_02():
- d = Data()
- d.add_node_type('A', 10)
- d.add_node_type('B', 5)
-
- fam = RelationFamily(d, 'A-B', 0, 1, True, DEDICOMDecoder)
-
- with pytest.raises(ValueError):
- fam.add_relation_type('A-B', torch.rand((10, 5)).round(),
- torch.rand((5, 10)).round())
-
-
- def test_relation_family_03():
- d = Data()
- d.add_node_type('A', 10)
- d.add_node_type('B', 5)
-
- fam = RelationFamily(d, 'A-B', 0, 1, True, DEDICOMDecoder)
-
- fam.add_relation_type('A-B', torch.rand((10, 5)).round())
-
- assert torch.all(fam.relation_types[0].adjacency_matrix.transpose(0, 1) == \
- fam.relation_types[0].adjacency_matrix_backward)
-
-
- def test_data_01():
- d = Data()
- d.add_node_type('Gene', 1000)
- d.add_node_type('Drug', 100)
- dummy_0 = torch.zeros((100, 1000))
- dummy_1 = torch.zeros((1000, 100))
- dummy_2 = torch.zeros((100, 100))
- dummy_3 = torch.zeros((1000, 1000))
-
- fam = d.add_relation_family('Drug-Gene', 1, 0, True)
- fam.add_relation_type('Target', dummy_0)
-
- fam = d.add_relation_family('Gene-Gene', 0, 0, True)
- fam.add_relation_type('Interaction', dummy_3)
-
- fam = d.add_relation_family('Drug-Drug', 1, 1, True)
- fam.add_relation_type('Side Effect: Nausea', dummy_2)
- fam.add_relation_type('Side Effect: Infertility', dummy_2)
- fam.add_relation_type('Side Effect: Death', dummy_2)
-
- print(d)
-
-
- def test_data_02():
- d = Data()
- d.add_node_type('Gene', 1000)
- d.add_node_type('Drug', 100)
-
- dummy_0 = torch.zeros((100, 1000))
- dummy_1 = torch.zeros((1000, 100))
- dummy_2 = torch.zeros((100, 100))
- dummy_3 = torch.zeros((1000, 1000))
-
- fam = d.add_relation_family('Drug-Gene', 1, 0, True)
- with pytest.raises(ValueError):
- fam.add_relation_type('Target', dummy_1)
-
- fam = d.add_relation_family('Gene-Gene', 0, 0, True)
- with pytest.raises(ValueError):
- fam.add_relation_type('Interaction', dummy_2)
-
- fam = d.add_relation_family('Drug-Drug', 1, 1, True)
- with pytest.raises(ValueError):
- fam.add_relation_type('Side Effect: Nausea', dummy_3)
- with pytest.raises(ValueError):
- fam.add_relation_type('Side Effect: Infertility', dummy_3)
- with pytest.raises(ValueError):
- fam.add_relation_type('Side Effect: Death', dummy_3)
- print(d)
-
-
- def test_data_03():
- d = Data()
- d.add_node_type('Gene', 1000)
- d.add_node_type('Drug', 100)
- fam = d.add_relation_family('Drug-Gene', 1, 0, True)
- with pytest.raises(ValueError):
- fam.add_relation_type('Target', None)
- print(d)
|