File size: 1,472 Bytes
d686612
5d4afe2
 
 
 
 
 
 
 
d686612
 
 
 
 
 
 
 
e00f001
d686612
 
 
 
012754b
d686612
 
4bb4db8
d686612
 
 
 
 
 
 
 
 
 
 
5d4afe2
 
d686612
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import torch

from data_loader import GTEX_TISSUE_PROFILES, ORGAN_NAMES, EpiADRDataset
from utils import (
    bemis_murcko_scaffold_split,
    get_bemis_murcko_scaffold,
    smiles_to_graph,
)


def test_smiles_to_graph():
    smiles = "CC(=O)NC1=CC=C(O)C=C1"  # Acetaminophen
    node_feats, edge_index, atom_symbols = smiles_to_graph(smiles)

    assert isinstance(node_feats, torch.Tensor)
    assert isinstance(edge_index, torch.Tensor)
    assert node_feats.ndim == 2
    assert node_feats.shape[1] == 24  # 24 features per atom node
    assert edge_index.shape[0] == 2  # Source -> Target edges
    assert len(atom_symbols) == node_feats.shape[0]

def test_gtex_tissue_profiles():
    assert len(GTEX_TISSUE_PROFILES) == 10
    for organ in ORGAN_NAMES:
        vec = GTEX_TISSUE_PROFILES[organ]
        assert vec.shape[0] == 1024
        assert torch.is_tensor(vec)

def test_bemis_murcko_scaffold_split():
    dataset = EpiADRDataset()
    smiles_list = [sample["smiles"] for sample in dataset.samples]

    train_idx, val_idx, test_idx = bemis_murcko_scaffold_split(dataset, smiles_list)

    assert len(train_idx) + len(val_idx) + len(test_idx) == len(dataset)
    assert len(set(train_idx).intersection(set(test_idx))) == 0

    train_scaffolds = {get_bemis_murcko_scaffold(smiles_list[i]) for i in train_idx}
    test_scaffolds = {get_bemis_murcko_scaffold(smiles_list[i]) for i in test_idx}
    assert len(train_scaffolds.intersection(test_scaffolds)) == 0