File size: 4,842 Bytes
e589553
81d9b6a
2f85a76
81d9b6a
 
 
 
 
 
e589553
81d9b6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# app.py
import os
import gradio as gr
from genesis.pipeline import (
    run_literature_review,
    run_molecule_lookup,
    run_pathway_analysis,
    run_funding_analysis,
    run_image_analysis
)
from genesis.visualization import generate_pathway_graph, generate_funding_network
from genesis.utils.pdf_export import export_to_pdf

# Load custom CSS
with open("genesis/static/style.css", "r") as f:
    custom_css = f.read()

# App Title
APP_TITLE = "🧬 GENESIS-AI β€” The Synthetic Biology OS"
APP_DESCRIPTION = """
Your **multi-modal synthetic biology intelligence suite**.
Explore molecules, pathways, funding, literature, and images β€” with real-time AI insights.
"""

# =========================
# TAB FUNCTIONS
# =========================

def literature_tab(query):
    """Run literature review (PubMed, ChEMBL, BioPortal, UMLS)"""
    summary, citations = run_literature_review(query)
    pdf_path = export_to_pdf(summary, citations, filename="literature_report.pdf")
    return summary, citations, pdf_path

def molecule_tab(molecule_name):
    """Fetch molecule data from ChEMBL/NCBI & visualize"""
    mol_data, mol_img = run_molecule_lookup(molecule_name)
    pdf_path = export_to_pdf(mol_data, None, filename="molecule_report.pdf")
    return mol_data, mol_img, pdf_path

def pathway_tab(pathway_name):
    """Run pathway analysis & generate graph"""
    analysis = run_pathway_analysis(pathway_name)
    graph_fig = generate_pathway_graph(pathway_name)
    pdf_path = export_to_pdf(analysis, None, filename="pathway_report.pdf")
    return analysis, graph_fig, pdf_path

def funding_tab(keyword):
    """Run funding analysis & generate investor graph"""
    funding_info = run_funding_analysis(keyword)
    funding_graph = generate_funding_network(keyword)
    pdf_path = export_to_pdf(funding_info, None, filename="funding_report.pdf")
    return funding_info, funding_graph, pdf_path

def image_tab(image_file):
    """Run microscopy/image analysis"""
    analysis_text = run_image_analysis(image_file)
    pdf_path = export_to_pdf(analysis_text, None, filename="image_report.pdf")
    return analysis_text, pdf_path

# =========================
# GRADIO UI
# =========================

with gr.Blocks(css=custom_css, theme="default") as demo:
    gr.HTML(f"<h1>{APP_TITLE}</h1><p>{APP_DESCRIPTION}</p>")

    with gr.Tabs():
        # Literature Tab
        with gr.Tab("πŸ“š Literature Review"):
            lit_query = gr.Textbox(label="Enter research question")
            lit_summary = gr.Textbox(label="Summary", lines=8)
            lit_citations = gr.Textbox(label="Citations", lines=5)
            lit_pdf = gr.File(label="Download PDF")
            lit_btn = gr.Button("Run Literature Review", variant="primary")
            lit_btn.click(literature_tab, inputs=lit_query, outputs=[lit_summary, lit_citations, lit_pdf])

        # Molecule Lookup
        with gr.Tab("πŸ§ͺ Molecule Viewer"):
            mol_name = gr.Textbox(label="Enter molecule name / ChEMBL ID")
            mol_info = gr.Textbox(label="Molecule Information", lines=8)
            mol_img = gr.Image(label="Structure")
            mol_pdf = gr.File(label="Download PDF")
            mol_btn = gr.Button("Lookup Molecule", variant="primary")
            mol_btn.click(molecule_tab, inputs=mol_name, outputs=[mol_info, mol_img, mol_pdf])

        # Pathway Analysis
        with gr.Tab("πŸ”¬ Pathway Analysis"):
            path_name = gr.Textbox(label="Enter pathway name")
            path_analysis = gr.Textbox(label="Pathway Analysis", lines=8)
            path_graph = gr.Plot(label="Pathway Graph")
            path_pdf = gr.File(label="Download PDF")
            path_btn = gr.Button("Analyze Pathway", variant="primary")
            path_btn.click(pathway_tab, inputs=path_name, outputs=[path_analysis, path_graph, path_pdf])

        # Funding Network
        with gr.Tab("πŸ’° Funding Explorer"):
            fund_keyword = gr.Textbox(label="Enter biotech keyword")
            fund_info = gr.Textbox(label="Funding Information", lines=8)
            fund_graph = gr.Plot(label="Funding Network")
            fund_pdf = gr.File(label="Download PDF")
            fund_btn = gr.Button("Analyze Funding", variant="primary")
            fund_btn.click(funding_tab, inputs=fund_keyword, outputs=[fund_info, fund_graph, fund_pdf])

        # Image Analysis
        with gr.Tab("πŸ–ΌοΈ Image Analysis"):
            img_upload = gr.Image(type="filepath", label="Upload microscopy or bio-image")
            img_analysis = gr.Textbox(label="Image Analysis", lines=8)
            img_pdf = gr.File(label="Download PDF")
            img_btn = gr.Button("Analyze Image", variant="primary")
            img_btn.click(image_tab, inputs=img_upload, outputs=[img_analysis, img_pdf])

demo.queue().launch(server_name="0.0.0.0", server_port=7860)