Update app.py
Browse files
app.py
CHANGED
|
@@ -800,6 +800,123 @@ with gr.Blocks(css=css, title="K R&D Lab · S1 Biomedical") as demo:
|
|
| 800 |
gr.Markdown("> Coming next — validates S1-R9 results against GEO plasma proteomics datasets.")
|
| 801 |
|
| 802 |
# ── 📓 JOURNAL ──────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 803 |
with gr.TabItem("📓 Journal"):
|
| 804 |
gr.Markdown("### Lab Journal\nEvery tool call auto-logged with project code.")
|
| 805 |
with gr.Row():
|
|
@@ -882,4 +999,4 @@ with gr.Blocks(css=css, title="K R&D Lab · S1 Biomedical") as demo:
|
|
| 882 |
"[KOSATIKS GROUP 🦈](https://kosatiks-group.pp.ua) · MIT License"
|
| 883 |
)
|
| 884 |
|
| 885 |
-
demo.launch()
|
|
|
|
| 800 |
gr.Markdown("> Coming next — validates S1-R9 results against GEO plasma proteomics datasets.")
|
| 801 |
|
| 802 |
# ── 📓 JOURNAL ──────────────────────────────────────
|
| 803 |
+
# ── 🧠 S1-F · PHYLO-RARE ───────────────────────────
|
| 804 |
+
with gr.TabItem("🧠 PHYLO-RARE"):
|
| 805 |
+
gr.HTML(section_header(
|
| 806 |
+
"S1-F", "PHYLO-RARE", "— Where almost nobody has looked yet",
|
| 807 |
+
"<b style='color:#ef4444'>⚠️ <300 cases/yr · <5% survival · 0–1 prior studies per gap</b><br>"
|
| 808 |
+
"S1-R12b DIPG (H3K27M) 🔶 · "
|
| 809 |
+
"S1-R12c UVM (GNAQ/GNA11) 🔶 · "
|
| 810 |
+
"S1-R12d pAML (FLT3-ITD) 🔶"
|
| 811 |
+
))
|
| 812 |
+
with gr.Tabs(elem_classes="inner-tabs"):
|
| 813 |
+
|
| 814 |
+
with gr.TabItem("S1-R12b · DIPG"):
|
| 815 |
+
gr.HTML(proj_badge(
|
| 816 |
+
"S1-F · PHYLO-RARE · S1-R12b",
|
| 817 |
+
"DIPG Toolkit — H3K27M · CSF LNP · Circadian Biology",
|
| 818 |
+
"PBTA · GSE126319"
|
| 819 |
+
))
|
| 820 |
+
gr.Markdown(
|
| 821 |
+
"> **Why DIPG?** Diffuse Intrinsic Pontine Glioma — median survival 9–11 months. "
|
| 822 |
+
"H3K27M oncohistone in **78%** cases. "
|
| 823 |
+
"CSF delivery is the only viable route past the brainstem BBB. "
|
| 824 |
+
"Circadian disruption (BMAL1 suppression) newly linked — **0 prior LNP studies**."
|
| 825 |
+
)
|
| 826 |
+
with gr.Tabs(elem_classes="inner-tabs"):
|
| 827 |
+
with gr.TabItem("Variants"):
|
| 828 |
+
sort_d = gr.Radio(["Frequency", "Drug status"], value="Frequency", label="Sort by")
|
| 829 |
+
b_dv = gr.Button("Load DIPG Variants", variant="primary")
|
| 830 |
+
o_dv = gr.Dataframe(label="H3K27M co-mutations · PBTA/GSE126319")
|
| 831 |
+
b_dv.click(dipg_variants, sort_d, o_dv)
|
| 832 |
+
with gr.TabItem("CSF LNP Formulations"):
|
| 833 |
+
with gr.Row():
|
| 834 |
+
d_peg = gr.Slider(0.5, 3.0, value=1.5, step=0.1, label="PEG mol%")
|
| 835 |
+
d_size = gr.Slider(60, 150, value=90, step=5, label="Target size (nm)")
|
| 836 |
+
b_dc = gr.Button("Rank CSF Formulations", variant="primary")
|
| 837 |
+
o_dct = gr.Dataframe(label="CSF LNP ranking")
|
| 838 |
+
o_dcp = gr.Image(label="ApoE% in CSF corona")
|
| 839 |
+
b_dc.click(dipg_csf, [d_peg, d_size], [o_dct, o_dcp])
|
| 840 |
+
with gr.TabItem("Research Gap"):
|
| 841 |
+
gr.Markdown(
|
| 842 |
+
"**Data:** PBTA (n=240) · GSE126319 (n=28) · GTEx circadian genes\n\n"
|
| 843 |
+
"| Layer | Known | This study gap |\n"
|
| 844 |
+
"|-------|-------|----------------|\n"
|
| 845 |
+
"| Genomics | H3K27M freq=78% | H3K27M × BMAL1/CLOCK |\n"
|
| 846 |
+
"| Delivery | CED convection | LNP corona **in CSF** |\n"
|
| 847 |
+
"| Biology | PRC2 inhibition | Ferroptosis in H3K27M+ DIPG |"
|
| 848 |
+
)
|
| 849 |
+
|
| 850 |
+
with gr.TabItem("S1-R12c · UVM"):
|
| 851 |
+
gr.HTML(proj_badge(
|
| 852 |
+
"S1-F · PHYLO-RARE · S1-R12c",
|
| 853 |
+
"UVM Toolkit — GNAQ/GNA11 · Vitreous Corona · m6A",
|
| 854 |
+
"TCGA-UVM n=80"
|
| 855 |
+
))
|
| 856 |
+
gr.Markdown(
|
| 857 |
+
"> **Why UVM?** Uveal Melanoma — metastatic 5-yr survival **15%**. "
|
| 858 |
+
"GNAQ/GNA11 mutations in 78% cases. "
|
| 859 |
+
"Vitreous humor protein corona has **never been profiled**. "
|
| 860 |
+
"METTL3/WTAP upregulated in GNAQ+ tumors — 0 therapeutic studies."
|
| 861 |
+
)
|
| 862 |
+
with gr.Tabs(elem_classes="inner-tabs"):
|
| 863 |
+
with gr.TabItem("Variants + m6A"):
|
| 864 |
+
b_uv = gr.Button("Load UVM Variants", variant="primary")
|
| 865 |
+
o_uv = gr.Dataframe(label="GNAQ/GNA11 map · TCGA-UVM")
|
| 866 |
+
b_uv.click(uvm_variants, [], o_uv)
|
| 867 |
+
with gr.TabItem("Vitreous LNP"):
|
| 868 |
+
b_uw = gr.Button("Rank Vitreous Formulations", variant="primary")
|
| 869 |
+
o_uwt = gr.Dataframe(label="Vitreous LNP retention ranking")
|
| 870 |
+
o_uwp = gr.Image(label="Retention (hours)")
|
| 871 |
+
b_uw.click(uvm_vitreous, [], [o_uwt, o_uwp])
|
| 872 |
+
with gr.TabItem("Research Gap"):
|
| 873 |
+
gr.Markdown(
|
| 874 |
+
"**Data:** TCGA-UVM (n=80) · GEO m6A atlases · Vitreous proteomics\n\n"
|
| 875 |
+
"| Layer | Known | This study gap |\n"
|
| 876 |
+
"|-------|-------|----------------|\n"
|
| 877 |
+
"| Genomics | GNAQ/GNA11 mutations | m6A landscape GNAQ+ vs GNA11+ |\n"
|
| 878 |
+
"| Delivery | Intravitreal injection | LNP corona **in vitreous humor** |\n"
|
| 879 |
+
"| Biology | PLCβ→PKC→MAPK | GNAQ × METTL3 × YTHDF2 axis |"
|
| 880 |
+
)
|
| 881 |
+
|
| 882 |
+
with gr.TabItem("S1-R12d · pAML"):
|
| 883 |
+
gr.HTML(proj_badge(
|
| 884 |
+
"S1-F · PHYLO-RARE · S1-R12d",
|
| 885 |
+
"pAML Toolkit — FLT3-ITD · Bone Marrow Corona · Ferroptosis",
|
| 886 |
+
"TARGET-AML n≈197"
|
| 887 |
+
))
|
| 888 |
+
gr.Markdown(
|
| 889 |
+
"> **Why pAML?** Pediatric AML — relapse OS **<30%**. "
|
| 890 |
+
"FLT3-ITD in 25% cases. "
|
| 891 |
+
"Bone marrow niche LNP corona: **never studied**. "
|
| 892 |
+
"Ferroptosis–FLT3 intersection: 0 prior studies (FerrDb v2 confirmed)."
|
| 893 |
+
)
|
| 894 |
+
with gr.Tabs(elem_classes="inner-tabs"):
|
| 895 |
+
with gr.TabItem("Ferroptosis Explorer"):
|
| 896 |
+
var_sel = gr.Dropdown(
|
| 897 |
+
["FLT3-ITD", "NPM1 c.860_863dupTCAG", "DNMT3A p.R882H",
|
| 898 |
+
"CEBPA biallelic", "IDH1/2 mutation"],
|
| 899 |
+
value="FLT3-ITD", label="Select variant"
|
| 900 |
+
)
|
| 901 |
+
b_pf = gr.Button("Analyze Ferroptosis Profile", variant="primary")
|
| 902 |
+
o_pft = gr.HTML()
|
| 903 |
+
o_pfp = gr.Image(label="Target radar")
|
| 904 |
+
b_pf.click(paml_ferroptosis, var_sel, [o_pft, o_pfp])
|
| 905 |
+
with gr.TabItem("BM Niche LNP"):
|
| 906 |
+
gr.Dataframe(
|
| 907 |
+
value=pd.DataFrame(PAML_BM_LNP),
|
| 908 |
+
label="Bone marrow niche LNP candidates · TARGET-AML context"
|
| 909 |
+
)
|
| 910 |
+
with gr.TabItem("Research Gap"):
|
| 911 |
+
gr.Markdown(
|
| 912 |
+
"**Data:** TARGET-AML (n=197) · BeatAML · FerrDb v2\n\n"
|
| 913 |
+
"| Layer | Known | This study gap |\n"
|
| 914 |
+
"|-------|-------|----------------|\n"
|
| 915 |
+
"| Genomics | FLT3-ITD → Midostaurin | FLT3-ITD × GPX4/SLC7A11 |\n"
|
| 916 |
+
"| Delivery | Liposomal daunorubicin | LNP corona **in bone marrow** |\n"
|
| 917 |
+
"| Biology | Midostaurin inhibits FLT3 | Ferroptosis SL + FLT3i |"
|
| 918 |
+
)
|
| 919 |
+
|
| 920 |
with gr.TabItem("📓 Journal"):
|
| 921 |
gr.Markdown("### Lab Journal\nEvery tool call auto-logged with project code.")
|
| 922 |
with gr.Row():
|
|
|
|
| 999 |
"[KOSATIKS GROUP 🦈](https://kosatiks-group.pp.ua) · MIT License"
|
| 1000 |
)
|
| 1001 |
|
| 1002 |
+
demo.launch(server_name="0.0.0.0", server_port=7860)
|