███████╗████████╗██╗███╗ ██╗ ██████╗ ██████╗ ███████╗███████╗
██╔════╝╚══██╔══╝██║████╗ ██║██╔════╝ ██╔══██╗██╔════╝██╔════╝
███████╗ ██║ ██║██╔██╗ ██║██║ ███╗ ██║ ██║███████╗███████╗
╚════██║ ██║ ██║██║╚██╗██║██║ ██║ ██║ ██║╚════██║╚════██║
███████║ ██║ ██║██║ ╚████║╚██████╔╝ ██████╔╝███████║███████║
╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝
Digital Twin-Oriented Deep Learning · TÜBİTAK 1001 · Project No: 123E383
Live · Documentation · Publications & Data · PI's GitHub · Team
STING DSS is a full-stack clinical research platform that integrates five AI/ML methodologies into a single, sequential decision-support pipeline for pediatric ALL. Starting from raw drug–protein interaction data, the system guides a researcher step-by-step through repurposing candidate identification, patient-specific ODE simulation, genetic algorithm dose optimisation, graph neural network prediction, and population-level synthetic cohort analysis — all in a browser, with no local installation.
Research context: Two repositioned candidates — Copanlisib (PI3Kδ inhibitor, −207.11 kcal/mol against Lamin A/C) and Novobiocin (HSP90 inhibitor) — are pre-integrated throughout the pipeline and were selected from a prediction run over 314,531 ligand–protein pairs drawn from DrugBank, ChEMBL, PubChem, and KIBA.
┌─────────────────────────────────────────────────────────────────────────┐
│ STING DSS Pipeline │
└─────────────────────────────────────────────────────────────────────────┘
Tab 1 · Drug Repositioning Tab 2 · Patient & Treatment Setup
┌──────────────────────────┐ ┌──────────────────────────────────┐
│ Bi-LSTM (2-layer + L2) │ │ Protocol: COG AALL0331 │
│ 314,531 ligand–protein │─ top ──▶│ BFM ALL-2009 │
│ pairs (DrugBank et al.) │ hits │ Custom (6 phases) │
│ PandaDock validation │ │ Patient: weight, BSA, TPMT, │
│ XAI: IntGrad + LIME │ │ Vit-D, WBC₀, ANC₀, lifestyle │
└──────────────────────────┘ └─────────────────┬────────────────┘
│ parameters
▼
Tab 3 · ODE Simulation Tab 4 · GA Dose Optimisation
┌──────────────────────────┐ ┌──────────────────────────────────┐
│ TenDrugALLModel │ │ Genetic Algorithm │
│ 10 drugs · 4 phases │─ ±10% ─▶│ Pop: 80 · Generations: 200 │
│ 48-dim state vector │ sens. │ 4 objectives: │
│ RK45 solver · 250 days │ │ BRR d8 ≥ 80% │
│ Sensitivity Analysis │ │ EOI MRD < 0.01 │
└──────────────────────────┘ │ VIPN ≥ 0.78 │
│ Cum. DNR < 300 mg/m² │
└─────────────────┬────────────────┘
│ optimal plan
▼
Tab 5 · GNN Digital Twin Tab 6 · Synthetic Cohort (GAN)
┌──────────────────────────┐ ┌──────────────────────────────────┐
│ GCNConv×2 (h=256) │ │ CTGAN (clean-schema) │
│ 8 output targets │ │ 30 static features │
│ R² median: 0.991 │ │ Post-hoc: MRD, risk, PI, prog. │
│ XAI: │ │ 5-class risk stratification: │
│ SHAP KernelExplainer │ │ LR / SR / IR / HR / VHR │
│ Permutation │ │ COP+NOV repositioning scenario │
│ GEMEX v1.2.2 │ │ Lt final → 0.0000 (n=20) │
│ Counterfactual │ │ WBC min +17.5% │
└──────────────────────────┘ │ VIPN min +10.5% │
└──────────────────────────────────┘
| Module | Metric | Value |
|---|---|---|
| Bi-LSTM prediction | Top candidate binding energy | −207.11 kcal/mol (Copanlisib · P02545) |
| ODE simulation | Sensitivity — Vitamin D impact on WBC min | 48.1% |
| GA optimisation | BRR d8 (protoype patient) | 99.64% |
| GA optimisation | EOI MRD | 3.3 × 10⁻⁵ |
| GNN digital twin | Median R² (8 targets) | 0.991 |
| GNN digital twin | In-distribution rate | 87% (131/150) |
| CTGAN | MIA AUC (membership inference) | 0.530 (≈ random → privacy preserved) |
| CTGAN | Clinical violation rate | 0% |
| CTGAN | VHR–genetics concordance | 100% |
| COP+NOV scenario | Lt final (cohort, n=20) | 0.0000 (full elimination) |
| COP+NOV scenario | WBC min improvement | +17.5% |
| COP+NOV scenario | VIPN min improvement | +10.5% |
| COP+NOV scenario | GNN validation pass rate | 20/20 ✓ |
Backend Frontend Infrastructure
───────────────────────── ──────────────────────── ─────────────────────
FastAPI 0.110 React 18 + Vite Docker Compose
Python 3.10+ Recharts Nginx (reverse proxy)
PyTorch (GNN v2) D3.js Redis + Celery
SDV / CTGAN Tailwind CSS JWT authentication
SciPy (RK45 ODE) i18n (TR / EN) bcrypt + slowapi
SHAP + GEMEX v1.2.2 Light / Dark themes Rate limiting
scikit-learn Production: Ubuntu 24
STING_DSS/
├── backend/
│ ├── app/
│ │ ├── api/
│ │ │ ├── router.py
│ │ │ └── endpoints/
│ │ │ ├── auth.py # JWT authentication
│ │ │ ├── admin.py # User management, activity logs, surveys
│ │ │ ├── repurposing.py # Tab 1 — Bi-LSTM inference & docking
│ │ │ ├── training.py # Tab 1 — Model training
│ │ │ ├── ode.py # Tab 3 — ODE simulation
│ │ │ ├── ode_sensitivity.py # Tab 3 — Sensitivity analysis
│ │ │ ├── pipeline.py # Tab 3 — Pipeline orchestration
│ │ │ ├── ga_optimization.py # Tab 4 — GA dose optimisation
│ │ │ ├── gnn_v2_endpoint.py # Tab 5 — GNN v2 prediction
│ │ │ ├── gnn_xai.py # Tab 5 — SHAP / GEMEX / Counterfactual / Permutation
│ │ │ ├── gan_v2_endpoint.py # Tab 6 — Synthetic patient generation & COP+NOV scenario
│ │ │ └── gan_v2_train_endpoint.py # Tab 6 — GAN training pipeline
│ │ ├── core/
│ │ │ ├── config.py # App settings & environment variables
│ │ │ ├── database.py # SQLite user/session store
│ │ │ └── security.py # JWT auth, bcrypt, rate limiting
│ │ ├── modules/
│ │ │ ├── repurposing/
│ │ │ │ ├── bilstm_model.py # Bi-LSTM architecture (2-layer + L2)
│ │ │ │ ├── bilstm_trainer.py # Training loop & HPO
│ │ │ │ ├── data_loader.py # DrugBank / ChEMBL / PubChem / KIBA loader
│ │ │ │ └── xai_explainer.py # Integrated Gradients + LIME
│ │ │ ├── ode/
│ │ │ │ ├── all_drugs.py # Drug parameter definitions (10 drugs)
│ │ │ │ ├── equations_daily.py # Daily ODE equations
│ │ │ │ ├── full_drug_engine.py # TenDrugALLModel — 48-dim state vector, RK45
│ │ │ │ ├── full_drug_adapter.py # Protocol → ODE parameter adapter
│ │ │ │ ├── full_drug_ga.py # GA fitness function (ODE-coupled)
│ │ │ │ ├── genetic_algorithms.py # GA core (pop=80, gen=200)
│ │ │ │ ├── ode_simulator.py # ODE runner & sensitivity analysis
│ │ │ │ ├── peg_simulator.py # PEG-Asparaginase depletion model
│ │ │ │ ├── runner_triple.py # Multi-phase ODE orchestration
│ │ │ │ └── plot_functions.py # Trajectory chart data builders
│ │ │ ├── gnn/
│ │ │ │ ├── gnn_v2_model.py # GCNConv×2 (h=256, dropout=0.2), 8 targets
│ │ │ │ ├── gnn_dataset_v2.py # Heterogeneous patient graph, k=3 lag
│ │ │ │ └── training_pool.py # GA pool → GNN training dataset
│ │ │ └── gan_v2/
│ │ │ ├── ctgan_base.py # CTGAN clean-schema wrapper
│ │ │ ├── drug10_config.py # 10-drug GAN feature schema
│ │ │ ├── clinical_enrichment.py # Post-hoc MRD / PI / prognosis pipeline
│ │ │ ├── risk_stratification.py # 5-class unified risk ontology (LR→VHR)
│ │ │ ├── risk_covariate_augmentation.py # GA pool → GAN training pool
│ │ │ ├── posthoc_ode.py # COP+NOV ODE repositioning scenario
│ │ │ ├── consistency_rules.py # Clinical constraint enforcement
│ │ │ ├── reference_lookup.py # Post-hoc reference CSV lookups
│ │ │ └── gan_pool.py # GAN training pool management
│ │ ├── schemas/
│ │ │ └── user.py # Pydantic user schemas
│ │ ├── main.py # FastAPI app entry point
│ │ └── worker.py # Celery async task worker
│ ├── data/
│ │ ├── models/
│ │ │ ├── alldrugs_gnn_scaler.json # ✅ included — GNN normalisation params
│ │ │ ├── trained_alldrugs_gnn_model.pth # ⛔ not included — request access
│ │ │ ├── bilstm_l2_bilstm_l2_hpoo.h5 # ⛔ not included — request access
│ │ │ ├── ctgan_drug10.pkl # ⛔ not included — request access
│ │ │ └── synthetic_drug10.csv # ⛔ not included — request access
│ │ ├── ga_results/ # ⛔ runtime data — not included
│ │ ├── gnn_training_pool/ # ⛔ runtime data — not included
│ │ ├── gan_training_pool/ # ⛔ runtime data — not included
│ │ ├── gan_v2_results/ # ⛔ runtime data — not included
│ │ └── ode_results/ # ⛔ runtime data — not included
│ ├── requirements.txt
│ ├── Dockerfile
│ └── .env.example
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── tabs/
│ │ │ │ ├── Tab1Repurposing.jsx
│ │ │ │ ├── Tab2Parameters.jsx
│ │ │ │ ├── Tab3ODE.jsx
│ │ │ │ ├── Tab4GA.jsx
│ │ │ │ ├── Tab5GNN.jsx
│ │ │ │ ├── Tab6GAN.jsx
│ │ │ │ └── TabAdmin.jsx
│ │ │ └── ui/
│ │ │ ├── AboutModal.jsx
│ │ │ ├── DockingPanel.jsx
│ │ │ ├── HowToUse.jsx
│ │ │ ├── ModelStatusPanel.jsx
│ │ │ ├── SurveyModal.jsx
│ │ │ ├── TrainingPanel.jsx
│ │ │ └── WizardGuide.jsx
│ │ ├── i18n/
│ │ │ ├── translations.js # TR / EN bilingual strings
│ │ │ └── LangContext.jsx
│ │ ├── services/
│ │ │ └── api.js # Axios API client
│ │ ├── hooks/
│ │ │ └── useProject.js # Session management hook
│ │ ├── constants/
│ │ │ └── drugConfig.js # Drug parameter constants
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── public/
│ │ └── logo.jpg
│ ├── nginx.conf
│ ├── Dockerfile
│ ├── index.html
│ ├── package.json
│ ├── vite.config.js
│ └── tailwind.config.js
├── docker/
│ └── docker-compose.yml # Development
├── scripts/
│ └── save_tokenizers.py # Tokenizer export utility
├── docs/
│ ├── images/ # README screenshots
│ ├── user_guide_en.pdf
│ └── user_guide_tr.pdf
├── .gitignore
├── LICENSE # Apache 2.0
└── README.md
- Docker ≥ 24 and Docker Compose ≥ 2.20
- 16 GB RAM recommended (32 GB for GAN training)
- Pre-trained model files (see Model Files)
git clone https://github.com/tubitaksting/STING-DSS.git
cd STING_DSS
# Copy and edit the environment file
cp backend/.env.example backend/.env
# → Set SECRET_KEY (32-byte hex), ALLOWED_ORIGINS, and FIRST_ADMIN_PASSWORD# Required files in backend/data/models/
backend/data/models/
├── bilstm_model.h5 # Bi-LSTM drug repositioning model
├── trained_alldrugs_gnn_model.pth # GNN v2 digital twin
├── alldrugs_gnn_scaler.json # GNN feature scaler
├── ctgan_drug10.pkl # Pre-trained CTGAN model
└── synthetic_drug10.csv # Reference cohort CSVModel files are not included in this repository. Contact the PI if you want to use them.
# Development
cd docker
docker compose up --build
# Production (with rate limiting, closed API docs, nginx hardening)
docker compose -f docker-compose.prod.yml up --build -dThe frontend is available at http://localhost:8091 and the backend API at http://localhost:8092.
The system creates a default admin account on first startup using FIRST_ADMIN_PASSWORD from .env. Log in, then create additional users from the Admin Panel.
A two-layer Bi-LSTM network with L2 regularisation, selected after benchmarking five architectures on drug–target interaction data for ALL. Input: SMILES strings (ligands) + protein sequences. Output: ranked binding affinity scores. Top candidates are validated with PandaDock (MM-GBSA-inspired) molecular docking. XAI via Integrated Gradients and LIME highlights which SMILES sub-structures drive each prediction.
TenDrugALLModel encodes 10 drugs (6-MP, MTX, VCR, DNR, PEG-ASP, CS, Ara-C, CPM, 6-TG, COP/NOV) across 4 treatment phases in a 48-dimensional state vector. The RK45 adaptive solver integrates over 250 days. Patient-specific variables include BSA, TPMT genotype, Vitamin D, diet/exercise scores, initial WBC/ANC, and infection status. A built-in sensitivity analysis perturbs each parameter ±10% to rank clinical impact.
A GA (population 80, generations 200, tournament selection, uniform crossover) simultaneously optimises four clinical objectives: BRR d8 ≥ 80%, EOI MRD < 0.01, VIPN ≥ 0.78, and cumulative DNR < 300 mg/m². Each candidate solution is evaluated by running the full ODE simulation. A dose contribution analysis shows, per drug, where the optimal dose sits within the search range — a model-agnostic explanation of GA behaviour.
A two-layer GCNConv network (hidden = 256, dropout = 0.2) trained on GA pool records. The heterogeneous patient graph encodes time-lagged features (k=3 lag). The model predicts 8 ODE outputs in real time as an ODE surrogate (median R² = 0.991). Four XAI methods are integrated:
| Method | Approach | Computation |
|---|---|---|
| SHAP KernelExplainer | Shapley value attribution | ~30s |
| Permutation Importance | Feature shuffling | ~60s |
| GEMEX v1.2.2 | Geodesic Sensitivity Field on Riemannian manifold | ~20s |
| Counterfactual | Greedy coordinate search toward clinical targets | ~20s |
GEMEX is a library developed within this project (pip install gemex). It captures non-linear feature interactions via geodesic arc length and manifold curvature (κ) that SHAP's linear assumption misses.
A clean-schema CTGAN trains on 30 static patient features only — no derived risk labels, MRD, or prognosis. Post-hoc calculation chains (risk stratification, PI Advisory, MRD, prognosis) are applied after generation. This architecture eliminates label leakage (GAN-label concordance = 0.41%) and mode collapse, while preserving realistic distributional properties (MMD = 0.069, MIA AUC = 0.530, clinical violation rate = 0%).
The 5-class unified risk ontology (LR / SR / IR / HR / VHR) harmonises NCI, COG, BFM, and SJCRH criteria into a single consistent framework published in:
Köse, U., Ceylan, O., & Sürücü, E. B. (2026). A Unified Prognostic Data Architecture for Risk Stratification in Pediatric Acute Lymphoblastic Leukemia. 4th Cognitive Models and AI Conference (IEEE AICCONF), Prague.
The COP+NOV repositioning scenario re-runs the ODE for every generated patient with Copanlisib and Novobiocin added, providing cohort-level pharmacodynamic evidence for the two repositioned drugs entirely through the mechanistic ODE layer — not GAN interpolation.
The production deployment includes:
- JWT tokens with configurable expiry
- bcrypt password hashing (cost factor 12)
- slowapi rate limiting: 200 req/min global, 10 req/min on
/auth/token - API documentation endpoints (
/docs,/redoc,/openapi.json) disabled in production - Nginx upload limit and proxy timeout hardening
- Environment-variable-based secret management (no hardcoded credentials)
Key environment variables in backend/.env:
SECRET_KEY=<32-byte-hex> # JWT signing key
ALLOWED_ORIGINS=http://your-server:8091 # CORS whitelist
FIRST_ADMIN_PASSWORD=<strong-password> # Initial admin account
DATA_DIR=/app/data # Model and results directory| File | Description | Size (approx.) |
|---|---|---|
bilstm_model.h5 |
Bi-LSTM drug repositioning | ~45 MB |
trained_alldrugs_gnn_model.pth |
GNN v2 digital twin | ~12 MB |
alldrugs_gnn_scaler.json |
GNN feature normalisation | < 1 MB |
ctgan_drug10.pkl |
CTGAN generative model | ~8 MB |
synthetic_drug10.csv |
Reference cohort (500 patients) | ~2 MB |
| Document | Language | Description |
|---|---|---|
docs/user_guide_en.pdf |
English | Full user guide with step-by-step screenshots |
docs/user_guide_tr.pdf |
Turkish | Türkçe kullanım kılavuzu |
POST /api/v1/auth/token Login → JWT
GET /api/v1/ode/simulate Run ODE simulation
POST /api/v1/ga/run Start GA optimisation
GET /api/v1/ga/results List GA pool records
POST /api/v1/gnn/v2/predict GNN prediction
POST /api/v1/gnn/xai/shap SHAP analysis
POST /api/v1/gnn/xai/gemex GEMEX analysis
POST /api/v1/gnn/xai/counterfactual Counterfactual XAI
POST /api/v1/gan/v2/generate Generate synthetic patients
POST /api/v1/gan/v2/train/start Start GAN training
GET /api/v1/gan/v2/repo_scenario Run COP+NOV scenario
POST /api/v1/admin/users User management (admin only)
Full API documentation is available when running in development mode at http://localhost:8092/docs.
For an up-to-date list of publications, datasets, and other citable outputs associated with this project, please visit:
New outputs (publications, datasets) are regularly added. The project website is the authoritative source for citation information and data access requests.
| Name | Role | Affiliation | Links |
|---|---|---|---|
| Prof. Dr. Utku Köse | Principal Investigator / Developer | Süleyman Demirel University, Turkey / University of North Dakota, USA / VelTech, India / Universidad Panamericana, Mexico | GitHub · Web · ORCID |
| Prof. Dr. Gözde Özkan Tükel | Researcher / Developer | Süleyman Demirel University, Turkey | — |
| Assist. Prof. Dr. İlhan Uysal | Researcher / Developer | Burdur Mehmet Akif Ersoy University, Turkey | — |
| Lect. Osman Ceylan | Researcher / Developer | Isparta Applied Sciences University, Turkey | — |
| Lect. Emine Betül Sürücü | Researcher / Developer | Süleyman Demirel University, Turkey | — |
This work was supported by the Scientific and Technological Research Council of Turkey (TÜBİTAK) under the 1001 — Scientific and Technological Research Projects Funding Program, Project No: 123E383 (2023–2026).
STING DSS is a research prototype. Synthetic patients and simulation outputs have not been validated against real clinical outcome data. The system must not be used as a clinical decision-making tool. All clinical decisions must be made under the supervision of a qualified oncologist.
This project is licensed under the Apache License 2.0. See LICENSE for details.
STING DSS · TÜBİTAK 1001 · Project No: 123E383 · Süleyman Demirel University · 2026
github.com/tubitaksting · sting.sdu.edu.tr
Advancing pediatric leukemia research through digital twin-oriented deep learning.









