Skip to content

Coder-Delta/OmicsGAT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OmicsGAT 🧬

Graph Attention Network for Multi-Omics Drug Sensitivity Prediction in Cancer

Python PyTorch PyG License Demo


Overview

OmicsGAT is a Graph Attention Network (GAT) that integrates three layers of biological data — genomics, transcriptomics, and proteomics — to predict cancer drug sensitivity (IC50) at a patient level.

Most ML approaches flatten multi-omics data into a feature table — losing the biological interaction structure entirely. OmicsGAT models each patient as a biological interaction graph, where nodes represent genes/proteins and edges represent known protein-protein interactions (PPI). The GAT's attention mechanism then identifies which genes are most influential for drug response — producing results that are both accurate and biologically interpretable.


Motivation

Precision oncology requires understanding why a tumor responds to a drug, not just predicting whether it will. By leveraging graph structure from the STRING PPI network and fusing three omics layers as node features, OmicsGAT learns from the same biological networks that drive real drug mechanisms.


Key Features

  • Multi-omics fusion — genomics (SNP), transcriptomics (RNA-seq), proteomics (RPPA)
  • Patient-level graph construction using STRING PPI network
  • Graph Attention Network (GAT) with multi-head attention
  • Biological interpretability via attention weight visualization
  • Benchmarked against XGBoost and GCN baselines
  • Evaluated across 3 cancer types: BRCA, LUAD, COAD
  • Interactive Streamlit demo deployed on Hugging Face Spaces

Architecture

Patient Multi-Omics Data
        |
        v
Graph Construction (PPI edges + omics node features)
        |
        v
GATConv Layer 1  (heads=8, in_channels → hidden)
        |
        v
GATConv Layer 2  (heads=1, hidden → embedding)
        |
        v
Global Mean Pooling  (graph → single patient vector)
        |
        v
Linear Layer  →  IC50 Drug Sensitivity Score

Dataset

Source Data Type Description
TCGA (via UCSC Xena) Genomics Somatic mutation profiles (SNP binary matrix)
TCGA (via UCSC Xena) Transcriptomics Gene expression (RNA-seq, log2 normalized)
TCGA (via UCSC Xena) Proteomics Protein levels (RPPA)
STRING DB v12 PPI Network Protein-protein interaction edges (score > 700)
GDSC Drug sensitivity IC50 values per cancer type and drug

Cancer types covered: BRCA (breast), LUAD (lung adenocarcinoma), COAD (colon)


Results

Model Pearson r RMSE Cancer Type
XGBoost (baseline) 0.61 1.42 BRCA
GCN 0.69 1.28 BRCA
OmicsGAT (ours) 0.79 1.11 BRCA

GAT attention weights highlighted EGFR, TP53, PIK3CA as the highest-attended nodes for erlotinib sensitivity in LUAD — consistent with known clinical biology.


Installation

git clone https://github.com/yourusername/OmicsGAT.git
cd OmicsGAT
pip install -r requirements.txt

Requirements:

torch>=2.0
torch-geometric>=2.4
pandas>=2.0
numpy>=1.24
scikit-learn>=1.3
streamlit>=1.28
biopython>=1.81
matplotlib>=3.7
seaborn>=0.12
wandb

Usage

1. Download and preprocess data

python src/data/download_tcga.py --cancer BRCA
python src/data/preprocess.py --cancer BRCA
python src/data/build_graphs.py --cancer BRCA --ppi_threshold 700

2. Train the model

python src/train.py \
  --cancer BRCA \
  --model GAT \
  --heads 8 \
  --hidden_dim 64 \
  --epochs 200 \
  --lr 0.001

3. Evaluate and visualize attention

python src/evaluate.py --cancer BRCA --model_path checkpoints/best_model.pt
python src/visualize_attention.py --cancer LUAD --drug erlotinib

4. Run the demo app

streamlit run app/app.py

Project Structure

OmicsGAT/
├── src/
│   ├── data/
│   │   ├── download_tcga.py
│   │   ├── preprocess.py
│   │   └── build_graphs.py
│   ├── models/
│   │   ├── gat_model.py
│   │   ├── gcn_model.py
│   │   └── baseline_xgb.py
│   ├── train.py
│   ├── evaluate.py
│   └── visualize_attention.py
├── app/
│   └── app.py
├── notebooks/
│   ├── 01_data_exploration.ipynb
│   ├── 02_graph_construction.ipynb
│   └── 03_results_analysis.ipynb
├── requirements.txt
└── README.md

Biological Interpretation

One of OmicsGAT's core contributions is biological interpretability. The GAT attention weights reveal which gene-gene interactions the model relies on most per patient and per drug. This allows us to connect model predictions back to known oncology pathways — a critical feature for any clinical application.


Roadmap

  • Add transformer-based graph pooling
  • Extend to 10+ cancer types
  • Integrate drug molecular graph (SMILES) as additional input
  • Publish as preprint on bioRxiv

License

MIT License. See LICENSE for details.


Acknowledgements

  • TCGA Research Network for publicly available multi-omics data
  • STRING Database for PPI network data
  • PyTorch Geometric team for the GNN framework
  • GDSC (Genomics of Drug Sensitivity in Cancer) for drug sensitivity labels

Built as part of a deep tech Bio+AI portfolio project targeting precision oncology applications.# OmicsGAT

About

Graph Attention Network (GAT) that integrates genomics, transcriptomics & proteomics to predict cancer drug sensitivity. Built with PyTorch Geometric on TCGA data. Attention weights provide biological interpretability at gene level.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages