smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기HELIXA — Turning Genomics into Decisions. Biomedical AI platform for glioblastoma molecular subtyping. KBU-MedLab.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
HELIXA is a biomedical AI platform for glioblastoma molecular subtyping and biomarker
discovery. It takes raw TCGA/GDC RNA-seq data, removes the technical artefacts that would
otherwise corrupt the result, discovers molecular subtypes, classifies new patients against
those subtypes, validates every conclusion against independent published literature — and,
for each subtype, surfaces the genes that both mark it in real patients and that a
glioblastoma cell cannot survive without, checked one at a time against the published
literature and tiered by how actionable they actually are.README 전문 보기 ↗KBU-MedLab · TEKNOFEST Oncology 3T Competition
HELIXA is a biomedical AI platform for glioblastoma molecular subtyping and biomarker discovery. It takes raw TCGA/GDC RNA-seq data, removes the technical artefacts that would otherwise corrupt the result, discovers molecular subtypes, classifies new patients against those subtypes, validates every conclusion against independent published literature — and, for each subtype, surfaces the genes that both mark it in real patients and that a glioblastoma cell cannot survive without, checked one at a time against the published literature and tiered by how actionable they actually are.
It is a working system, not a mock-up. Every number the web interface displays is read from a file produced by the analysis pipeline in this repository, and the "Analyze Patient" workflow runs the actual frozen model. When a patient is classified, the site now also shows the biomarker/drug-target panel for the predicted subtype, and a one-click, self-contained Patient Molecular Report (logo, classification, biomarkers, technical appendix) that the browser turns into a PDF with no server involved.
Cohort: 328 glioblastoma patients · Subtypes discovered: 6 · Classifier: 97.9% leave-one-out agreement across all 328 patients, with calibrated subtype-stability probabilities · Biomarker candidates: 61 literature-checked genes across the 6 subtypes, 17 of them tier-1 actionable.
Raw GDC RNA-seq (60,660 gene loci)
↓ 01 Data ingestion
Expression matrix (log2 TPM+1)
↓ 02 QC / low-expression filter → 27,777 genes
↓ 03 Protocol detection + batch correction → 25,738 genes, batch signal 11.07 → 0.0000
↓ 04 Feature selection (MAD) → 1,000 signature genes
↓ 05 Dimensionality reduction (PCA) → 5 components
↓ 06 Consensus clustering (1,000 resamples) → k = 6, PAC = 0.2105
↓ 07 Classification (multinomial logistic regression)
↓ 08 Confidence & uncertainty → core / boundary
↓ 09 Biological validation → 4 independent published sources
Subtype · confidence · markers · pathway profile · therapeutic context
↓ 10 Biomarker discovery (independent second pipeline, see below)
Per-subtype drug-target panel · tiered by literature evidence · with sources
The strongest signal in the uncorrected cohort was not tumour biology — it was library preparation protocol. Two protocols were mixed: poly(A)-selected libraries contained 0.42% non-polyadenylated RNA, total-RNA libraries contained 55.45% — a 170× difference, and a single threshold separated them with 100% accuracy.
Left uncorrected, the pipeline would have "discovered" the sequencing protocol and presented it as a molecular subtype. A three-layer correction (gene-space filter → re-normalisation → within-batch standardisation) removes it to a residual ARI of -0.0044.
| # | Subtype | n | Verhaak identity | Independent verdict |
|---|---|---|---|---|
| 0 | MTC — Mitochondrial / OXPHOS | 40 | Mixed (Neural-leaning) | Confirmed (moderate) · 2.15× |
| 1 | PN — Proneural / Progenitor | 49 | Proneural-like | Confirmed (strong) · 2.69× |
| 2 | CL — Classical / EGFR | 65 | Classical-like | Partially supported · 1.96× |
| 3 | MES — Mesenchymal / Immune | 63 | Mesenchymal-like | Confirmed (strong) · 2.84× |
| 4 | INT — Intermediate / Mixed | 67 | Mixed | Partially supported · 1.36× |
| 5 | OLIGO — Oligodendrocytic / Myelin | 44 | Mixed (Proneural-leaning) | Confirmed (strong) · 2.32× |
cluster_0 (MTC) independently matches the mitochondrial subtype published in Nature Cancer 2021 at 72.5% (2.9× chance, p = 2.7 × 10⁻¹¹) — a subtype reported to carry the most favourable prognosis and selective vulnerability to OXPHOS inhibitors.
Classifying a patient answers "which subtype is this?" A second, independent pipeline — the HELIXA biomarker engine — answers the question a classifier cannot: for this subtype, what could actually be drugged, and how sure are we?
It is deliberately built to avoid the mistake an earlier attempt made: taking a subtype's marker genes and asking a dependency database "is this gene essential?" without checking essential compared to what. That approach returned ten genes — mostly RNA-polymerase subunits and ribosomal proteins that every human cell needs equally — and left one subtype (MTC) with nothing at all.
The three gates a gene has to pass, in order:
Final tiers, shown on the site and in every patient report:
| Tier | Meaning |
|---|---|
| Tier 1 · Actionable | passes both data gates, published support, a drug against it already exists (possibly for another cancer) |
| Tier 2 · Credible | passes both data gates, published support, nothing built against it yet |
| Tier 3 · Hypothesis | passes both data gates, but the literature is thin — a real finding, unproven |
| Excluded | the gene is a tumour suppressor, or its biology otherwise points the wrong way |
Result: 359 genes pass both statistical gates; 61 of the strongest were checked against the literature; 17 are tier-1 actionable, 18 tier-2 credible, 21 tier-3 hypotheses, and 5 were excluded. Two of the tier-1 targets already have drugs approved in other cancers (FGFR1 → pemigatinib, PTK2 → defactinib); two others already failed glioblastoma trials (ITGB5 → cilengitide, phase III CENTRIC; CDK6 → palbociclib, terminated for futility) — that failure is recorded on the same row rather than left out.
The full six-stage pipeline — patient-side differential expression, DepMap dependency
screening, intersection & scoring, literature evidence collection, evidence integration, and
the reporting figures — with every intermediate table and every literature source, lives in
BIOMARKER_ENGINE/ in this repository. EXPLANATION_STEP_BY_STEP.txt
there is the narrative walkthrough; 05_Tables/final_targets.csv is the exact file the
website's data/biomarkers.json (and every biomarker table on the site) is generated from.
On the site: after a patient is classified, a "Biomarkers & drug targets for <subtype>"
panel appears automatically underneath the result, and a Download / Print Patient Report
button generates a self-contained report (see below) for that patient and subtype.
Same caveat as the classifier, stated plainly: these are computational candidates from an unpublished research pipeline, not treatments. Nothing on this list has been tested in a laboratory by this project. The dependency evidence comes from cell lines, not patients — cell lines lack an immune system, a blood-brain barrier and a tumour microenvironment, which is a specific reason the MES (immune-infiltrated) panel may be understated.
Every classified patient can be turned into a one-click, fully self-contained report — the HELIXA logo, the patient/sample label, the predicted subtype and confidence, all six probabilities, the genes that drove the decision, and the full biomarker/drug-target table for that subtype, with a plain disclaimer that this is a research prototype and not a diagnosis.
There is no PDF library and no server involved: Download / Print Patient Report opens the
report as a normal page in a new browser tab (website/frontend/js/report.js), built from
the exact same result object the on-page card already rendered and the exact same
data/biomarkers.json dataset, so the report can never disagree with what the page showed.
The tab's own "Print / Save as PDF" button (or the browser's native Ctrl/Cmd + P) hands the
page to the browser's print engine, which is how the patient/clinician saves it as a PDF —
the same mechanism a normal web page uses to become a PDF, with no upload and no third-party
service anywhere in the path.
The classifier was rebuilt in September 2026. Version 2 is trained on all 328
patients against the consensus profile — the fraction of 1,000 resampled
clusterings in which a tumour co-clusters with each subtype — rather than on the
273 clean patients against hard labels. See
prediction_model/ for the full write-up.
| Metric | Value |
|---|---|
| Leave-one-out agreement, all 328 patients | 97.87% |
| on CORE (n = 273) | 99.63% |
| on BOUNDARY (n = 55) | 89.09% |
| Agreement with the consensus profile (out-of-sample, 328 × 6 cells) | r = 0.9656 |
| Profile RMSE | 0.0766 |
| Mean absolute error on the reported percentage | ± 0.113 |
| Median reported probability | 0.7370 |
| Permutation null test (300 shuffles) | real 99.63% vs 19.30% random, p = 0.005 |
| Protocol detector | 99.695% (327/328) |
Twelve model families were compared out-of-fold against the consensus profile — polynomial expansions, kNN at four neighbourhood sizes, RandomForest and ExtraTrees. The plain linear model beat all eleven alternatives, so the residual error is irreducible with five principal components rather than a failure to fit.
v1 reported a median confidence of 0.9993, with 178 of 328 patients at ≥ 99.9%. It was trained only on the 273 CORE patients — the subset the clustering had already separated cleanly — which are nearly linearly separable in 5-PC space, so the softmax saturated. The 55 intermediate tumours were excluded entirely and the model had never seen ambiguity.
| v1 | v2 | |
|---|---|---|
| trained on | 273 CORE | 328 (all) |
| median probability | 0.9993 | 0.7370 |
| patients at ≥ 99.9% | 178 / 328 | 1 / 328 |
| mean probability on BOUNDARY tumours | 0.774 | 0.474 |
The percentage now means subtype stability: "73% CL" means this expression profile co-clusters with Classical in about 73% of resampled clusterings. It is not a diagnostic probability.
HELIXA/
├── NEW_START_RESULTS/ the clustering/classification project (unmodified)
│ ├── 01_Data_Preparation_extra/
│ ├── 02_Batch_Diagnosis/ the library-prep artefact, diagnosed
│ ├── 03_Clustering_Sweep/ 726 configurations evaluated
│ ├── 04_Consensus_Clustering/ final assignments + embedding
│ ├── 05_Clusters/ one folder per subtype, with its patients
│ ├── 06_Biological_Validation/ marker genes, signature & pathway scores
│ ├── 07_Plots/ 23 original figures
│ ├── 08_Evaluation_Report/ global metrics + master workbook
│ ├── 09_Scripts/ every analysis script
│ ├── 10_Prediction_Model/ frozen model + predict_new_patient.py
│ └── 11_Evaluation_From_Internet/ independent literature validation
│
├── BIOMARKER_ENGINE/ the biomarker/drug-target discovery project
│ ├── EXPLANATION_STEP_BY_STEP.txt narrative walkthrough, start here
│ ├── 01_Engine/ the 5 scripts, run in order (01 → 05)
│ ├── 03_Evidence/ literature_evidence.{csv,json} — every source URL
│ ├── 04_Plots/ the 10 official reporting figures
│ └── 05_Tables/ candidates_all.csv, final_targets.csv (the
│ exact file website/frontend/data/biomarkers.json
│ is generated from), dependency_side_depmap.csv
│
├── website/
│ ├── backend/ Starlette API wrapping the real model
│ │ ├── app.py
│ │ ├── helixa_engine.py thin wrapper over the frozen artifacts
│ │ ├── export_static_data.py results (+ BIOMARKER_ENGINE) → JSON for the frontend
│ │ └── requirements.txt
│ └── frontend/ zero-dependency SPA (no build step)
│ ├── index.html
│ ├── css/helixa.css
│ ├── js/ router, data layer, SVG charts, views,
│ │ report.js — the Patient Molecular Report
│ ├── data/ 17 JSON datasets, incl. biomarkers.json
│ └── assets/ logos + 27 scientific figures
│
└── .github/workflows/deploy.yml GitHub Pages deployment
cd website/frontend
python3 -m http.server 5173
# open http://127.0.0.1:5173
No build step, no npm install — the frontend is native ES modules and hand-written CSS.
cd website/backend
pip install -r requirements.txt
uvicorn app:app --port 8000
Reload the site. It auto-detects the API at 127.0.0.1:8000 and the upload workflow
becomes active. Override the base URL with ?api=http://host:port or the field on the
Analyze page.
cd NEW_START_RESULTS/10_Prediction_Model
pip install scikit-learn joblib pandas numpy
python3 predict_new_patient.py /path/to/patient.rna_seq.augmented_star_gene_counts.tsv
cd website/backend
HELIXA_RESULTS=../../NEW_START_RESULTS \
HELIXA_BIOMARKER_ENGINE=../../BIOMARKER_ENGINE \
python3 export_static_data.py
This regenerates every JSON in website/frontend/data/, including biomarkers.json from
BIOMARKER_ENGINE/05_Tables/final_targets.csv. If HELIXA_BIOMARKER_ENGINE does not point
to a real final_targets.csv, the script skips that one file and says so — it never
fabricates biomarker data.
Browser ── HELIXA frontend (static, GitHub Pages)
│
├── /data/*.json ........ recorded results, always available
│ including biomarkers.json (from BIOMARKER_ENGINE/05_Tables/final_targets.csv)
│
├── /model/*.bin ........ frozen classifier weights, fetched once
│ └── js/engine.js — the classifier's forward pass, in the browser
│
├── js/report.js ........ builds the Patient Molecular Report
│ (new tab, browser print-to-PDF — no server, no PDF library)
│
└── HTTP ── Starlette API (local) ── helixa_engine.py
│
model_artifacts.joblib
(frozen PCA + classifier +
batch means + gene masks)
│
real prediction
The scientific pipeline is never embedded in the UI. The frontend renders; the backend
delegates to the frozen artifacts; the artifacts came from the scripts in
NEW_START_RESULTS/09_Scripts/.
GitHub Pages serves static files only, so the Python model cannot run there. The frontend detects this and says so plainly — it never fakes a prediction. All cohort data, evaluations and figures remain fully available; only the upload workflow requires the local API.
| Variable | Default | Purpose |
|---|---|---|
HELIXA_RESULTS | ../../NEW_START_RESULTS | Where the scientific outputs live |
HELIXA_CORS | localhost:5173,127.0.0.1:5173 | Allowed browser origins |
HELIXA_DATA | ../frontend/data | JSON dataset directory |
Copy website/backend/.env.example to .env and edit. Never commit .env.
These are stated on the platform itself, not buried here.
Next step that would matter most: link these subtypes to survival data from GDC and run a Kaplan-Meier analysis; and, for the biomarker panel, download DepMap's cell-line expression data to classify the 53 glioblastoma lines into the 6 subtypes directly, turning "selective to glioblastoma" into "selective to this exact subtype."
BIOMARKER_ENGINE/03_Evidence/literature_evidence.json and in every patient report.| Abdulla ASKAR — Team Leader | B.Sc. Biomedical Engineering — KBÜ · B.Sc. Electrical and Electronics Engineering — KBÜ · M.Sc. Computer Science — İTÜ |
| Mohammad Alsagher — Literature | Medical Engineering |
| Leyan Mamou — Algorithms & Technical Development | Computer Engineering |
| Alı ALTHAHER — Algorithms & Other Technical Development | B.Sc. Biomedical Engineering — KBÜ |
| Mariam Mariam — Media & Other Contributions | Medical Engineering |
Contact · [email protected] · 0 538 314 9253
HELIXA — Turning Genomics into Decisions KBU-MedLab