import torch from triacontagon.model import Model, \ TrainingBatch, \ _per_layer_required_vertices from triacontagon.data import Data from triacontagon.decode import dedicom_decoder from triacontagon.util import common_one_hot_encoding def test_per_layer_required_vertices_01(): d = Data() d.add_vertex_type('Gene', 4) d.add_vertex_type('Drug', 5) d.add_edge_type('Gene-Gene', 0, 0, [ torch.tensor([ [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0] ]).to_sparse() ], dedicom_decoder) d.add_edge_type('Gene-Drug', 0, 1, [ torch.tensor([ [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [1, 0, 0, 0, 1], [0, 0, 1, 1, 0] ]).to_sparse() ], dedicom_decoder) d.add_edge_type('Drug-Drug', 1, 1, [ torch.tensor([ [0, 0, 1, 0, 1], [0, 0, 0, 1, 1], [1, 0, 0, 0, 0], [0, 1, 0, 0, 1], [1, 1, 0, 1, 0] ]).to_sparse() ], dedicom_decoder) batch = TrainingBatch(0, 1, 0, torch.tensor([ [0, 1] ])) res = _per_layer_required_vertices(d, batch, 5) print('res:', res) def test_model_convolve_01(): d = Data() d.add_vertex_type('Gene', 4) d.add_vertex_type('Drug', 5) d.add_edge_type('Gene-Gene', 0, 0, [ torch.tensor([ [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0] ], dtype=torch.float).to_sparse() ], dedicom_decoder) d.add_edge_type('Gene-Drug', 0, 1, [ torch.tensor([ [0, 1, 0, 0, 1], [0, 0, 1, 0, 0], [1, 0, 0, 0, 1], [0, 0, 1, 1, 0] ], dtype=torch.float).to_sparse() ], dedicom_decoder) d.add_edge_type('Drug-Drug', 1, 1, [ torch.tensor([ [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [0, 1, 0, 0, 0], [1, 0, 0, 0, 0], [0, 1, 0, 1, 0] ], dtype=torch.float).to_sparse() ], dedicom_decoder) model = Model(d, [9, 32, 64], keep_prob=1.0, conv_activation = torch.sigmoid, dec_activation = torch.sigmoid) repr_1 = torch.eye(9) repr_1[4:, 4:] = 0 repr_2 = torch.eye(9) repr_2[:4, :4] = 0 in_layer_repr = [ repr_1[:4, :].to_sparse(), repr_2[4:, :].to_sparse() ] _ = model.convolve(in_layer_repr) def test_model_decode_01(): d = Data() d.add_vertex_type('Gene', 100) gene_gene = torch.rand(100, 100).round() gene_gene = gene_gene - torch.diag(torch.diag(gene_gene)) d.add_edge_type('Gene-Gene', 0, 0, [ gene_gene.to_sparse() ], dedicom_decoder) b = TrainingBatch(0, 0, 0, torch.tensor([ [0, 1], [10, 51], [50, 60], [70, 90], [98, 99] ]), torch.ones(5)) in_repr = common_one_hot_encoding([100]) in_repr = [ in_repr[0].to_dense() ] m = Model(d, [100], 1.0, torch.sigmoid, torch.sigmoid) _ = m.decode(in_repr, b)