EpiADR-Net / tests /test_model.py
ADjayantan
Fix GitHub Actions CI: Resolved ruff linter check and updated CI workflow flags
5d4afe2
Raw
History Blame Contribute Delete
2.17 kB
import torch
from data_loader import GTEX_TISSUE_PROFILES
from model import (
DMPNNLayer,
EpiADRNet,
GenePathwayCrossAttention100M,
GraphTransformerBlock,
)
from utils import smiles_to_graph
def test_graph_transformer_block_forward():
x = torch.randn(10, 1536)
edge_index = torch.tensor([[0, 1, 2, 3], [1, 2, 3, 0]], dtype=torch.long)
block = GraphTransformerBlock(in_features=1536, out_features=1536, num_heads=16)
h_out, alpha = block(x, edge_index)
assert h_out.shape == (10, 1536)
assert alpha.shape[0] == edge_index.shape[1]
def test_dmpnn_layer_forward():
x = torch.randn(10, 1536)
edge_index = torch.tensor([[0, 1, 2, 3], [1, 2, 3, 0]], dtype=torch.long)
dmpnn = DMPNNLayer(node_dim=1536)
x_out = dmpnn(x, edge_index)
assert x_out.shape == (10, 1536)
def test_gene_pathway_cross_attention_forward():
h = torch.randn(10, 1536)
v_tissue = torch.randn(2, 1024)
batch_idx = torch.tensor([0, 0, 0, 0, 0, 1, 1, 1, 1, 1], dtype=torch.long)
attn_mod = GenePathwayCrossAttention100M(node_dim=1536, tissue_dim=1024, num_heads=16)
h_out = attn_mod(h, v_tissue, batch_idx)
assert h_out.shape == (10, 1536)
def test_epiadrnet_v5_foundation_forward_and_mc_dropout():
smiles = "CC(=O)NC1=CC=C(O)C=C1"
node_feats, edge_index, _ = smiles_to_graph(smiles)
batch = torch.zeros(node_feats.size(0), dtype=torch.long)
tissue_vec = GTEX_TISSUE_PROFILES["Liver"].unsqueeze(0)
model = EpiADRNet(
in_features=24, hidden_dim=1536, tissue_dim=1024,
num_classes=10, num_gat_layers=12, num_heads=16, dropout=0.1
)
n_params = model.count_parameters()
print(f"EpiADRNet v5 Parameters: {n_params:,}")
assert n_params > 100_000_000, f"v5 model should have >100M parameters, got {n_params}"
logits, attn = model(node_feats, edge_index, batch, tissue_vec, return_attention=True)
assert logits.shape == (1, 10)
assert attn is not None
mc_res = model.predict_mc_dropout(node_feats, edge_index, batch, tissue_vec, num_samples=5)
assert mc_res["mean_probabilities"].shape == (1, 10)
assert mc_res["uncertainty_sigma"].shape == (1, 10)