Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OncoTarget LUAD

Evidence-Grounded Target Prioritization

Scientific MVP for lung adenocarcinoma target prioritization.

OncoTarget combines public disease-target evidence, a lightweight biomedical knowledge graph, TCGA-LUAD-derived NGS features, GraphSAGE ranking, a non-graph MLP baseline, deterministic GraphRAG evidence retrieval, and grounded LLM synthesis. It is intended to organize research evidence and generate hypotheses, not to make autonomous biological, clinical, regulatory, or investment decisions.

Scope

  • Disease: lung adenocarcinoma
  • Disease ID: MONDO_0005061
  • Candidate universe: top 100 Open Targets associations
  • Graph: 1 disease node, 100 target nodes, 100 disease-target edges, 758 directed STRING target-target edges in the validated run
  • Model task: regress the Open Targets association score
  • Main interface: cleaned end-to-end notebook

Workflow

  1. Retrieve Open Targets associations for MONDO_0005061.
  2. Build a heterogeneous graph with disease and target nodes.
  3. Add STRING functional target-target relationships in both directions.
  4. Compute four TCGA-LUAD NGS features for each target.
  5. Split targets into 70 train, 15 validation, and 15 test nodes using seed 42.
  6. Fit the final scaler only on training targets.
  7. Train GraphSAGE and an NGS-only MLP baseline.
  8. Evaluate on the held-out test labels.
  9. Rank targets by GraphSAGE predicted association score.
  10. Retrieve traceable evidence for GraphRAG explanations.
  11. Expose scoring, neighbour retrieval, and explanation through FastAPI and MCP.

Data Sources

Source Contribution
Open Targets Candidate targets, disease-target edges, association-score label
STRING High-confidence human functional associations among selected targets
cBioPortal TCGA-LUAD Processed somatic mutation and discrete GISTIC CNA evidence
UCSC Xena TCGA-LUAD Primary-tumour and normal-tissue RNA expression matrix

Raw mutation and CNA downloads are not included in this repository.

Knowledge Graph Schema

Node types:

  • disease: lung adenocarcinoma
  • target: 100 genes/proteins from Open Targets

Edge types:

  • (disease, associated_with, target) from Open Targets
  • (target, functionally_interacts_with, target) from STRING

STRING relationships are functional associations, not proof of direct physical binding or causality. They are stored bidirectionally because PyTorch Geometric message passing follows stored edge directions.

NGS Features

Each target has four model input features:

  1. mutation_frequency: unique mutation-profiled samples with at least one mutation in the gene divided by all mutation-profiled samples.
  2. amplification_frequency: unique CNA-profiled samples with GISTIC +2 divided by all CNA-profiled samples.
  3. deep_deletion_frequency: unique CNA-profiled samples with GISTIC -2 divided by all CNA-profiled samples.
  4. expression_change: mean primary-tumour log2 expression minus mean normal-tissue log2 expression.

Expression alias resolution keeps canonical graph symbols while reading historical expression labels:

Canonical symbol Expression matrix label
STN1 OBFC1
KMT2C MLL3
TUBB4A TUBB4
TUBB4B TUBB2C

Models

GraphSAGE:

4 input features -> 16 hidden values -> 8-dimensional embedding -> 1 score

NGS-only MLP baseline:

4 input features -> 16 hidden values -> 8-dimensional embedding -> 1 score

The baseline uses the same NGS features but ignores STRING edges. This isolates the value of graph neighbourhood context.

Leakage Prevention

  • Open Targets score is the label, not an input feature.
  • Test labels are not used for training or early stopping.
  • Validation labels select the best epoch.
  • The final scaler is fitted only on training targets.
  • The test is transductive: test-node features and graph topology are available during message passing, but test labels are held out.

Evaluation Results

Validated fixed-split test results:

Model MAE RMSE Spearman Precision@5
NGS-only MLP 0.0811 0.1095 0.2071 0.40
GraphSAGE 0.0660 0.0931 0.6679 0.60

GraphSAGE improved all reported metrics on this 15-target test split. Treat this as prototype evidence, not a definitive model comparison.

Target Ranking and GraphRAG

The target-ranking table combines canonical identifiers, raw NGS values, actual Open Targets score, GraphSAGE prediction, split label, and absolute error.

For a selected target, GraphRAG retrieval returns:

  • disease and target identifiers
  • GraphSAGE prediction and data split
  • Open Targets association score
  • mutation, amplification, deletion, and expression evidence
  • strongest STRING functional neighbours
  • evidence sources
  • scientific limitations

The LLM uses this evidence package only for synthesis. Deterministic guardrails preserve mandatory limitations and future validation steps.

Interfaces

Service functions:

  • score_target(target_symbol)
  • find_neighbors(target_symbol, maximum_neighbors=5)
  • explain_target(target_symbol)

FastAPI routes:

  • GET /health
  • GET /targets/{target_symbol}/score
  • GET /targets/{target_symbol}/neighbors
  • POST /targets/{target_symbol}/explain

MCP tools:

  • score_target
  • find_neighbors
  • explain_target

Setup

pip install -r requirements.txt

For LLM explanations, provide the key outside the repository:

export GROQ_API_KEY=...

On Windows PowerShell:

$env:GROQ_API_KEY = "..."

Open and run:

notebooks/oncotarget_luad_end_to_end.ipynb

Demonstration

Recommended demo flow:

  1. Open the notebook and review the scope.
  2. Show the graph schema and four NGS feature definitions.
  3. Show the fixed split and training-only scaler.
  4. Show the model comparison table.
  5. Show the EGFR example in examples/validated_egfr_graphrag_example.json.
  6. Show service functions and FastAPI/MCP wrappers.

Limitations

  • Candidate universe starts from the top 100 Open Targets associations.
  • The label is an association score, not experimental truth.
  • Only one disease and one fixed split are reported.
  • The test is small and transductive.
  • STRING edges are functional associations and may be indirect.
  • Druggability, safety, dependency, tractability, modality, and clinical evidence are not included.
  • LLM output requires grounding controls and scientific review.

Upgrade Roadmap

Immediate improvements include repeat-seed evaluation, exact dependency pinning, artifact versioning, cleaner standalone service packaging, and automated smoke tests. Scientific upgrades include broader candidate universes, link prediction, DepMap dependency evidence, synthetic-lethality hypotheses, tractability, safety, and experimental validation.

Releases

Packages

Contributors

Languages