Spaces:
Sleeping
Sleeping
| # app.py | |
| import os | |
| import gradio as gr | |
| from genesis.pipeline import ( | |
| run_literature_mode, | |
| run_molecule_mode, | |
| run_pathway_mode, | |
| run_funding_mode, | |
| run_image_mode | |
| ) | |
| from genesis.utils.pdf_export import export_pdf_report | |
| # Load CSS | |
| with open(os.path.join("genesis", "static", "style.css"), "r") as f: | |
| custom_css = f.read() | |
| HF_SPACE = os.environ.get("HF_SPACE", "false").lower() == "true" | |
| # --------------------------------------------------------- | |
| # Wrappers to ensure click-to-run functionality | |
| # --------------------------------------------------------- | |
| def literature_tab(query, narration, export_pdf): | |
| result = run_literature_mode(query, narration=narration) | |
| pdf_path = None | |
| if export_pdf: | |
| pdf_path = export_pdf_report(result) | |
| return ( | |
| result.get("summary", ""), | |
| result.get("citations", []), | |
| result.get("visuals", None), | |
| result.get("audio_url", None), | |
| pdf_path | |
| ) | |
| def molecule_tab(identifier, narration, export_pdf): | |
| result = run_molecule_mode(identifier, narration=narration) | |
| pdf_path = None | |
| if export_pdf: | |
| pdf_path = export_pdf_report(result) | |
| return ( | |
| result.get("summary", ""), | |
| result.get("structure_3d", None), | |
| result.get("properties", ""), | |
| result.get("audio_url", None), | |
| pdf_path | |
| ) | |
| def pathway_tab(pathway_name, narration, export_pdf): | |
| result = run_pathway_mode(pathway_name, narration=narration) | |
| pdf_path = None | |
| if export_pdf: | |
| pdf_path = export_pdf_report(result) | |
| return ( | |
| result.get("summary", ""), | |
| result.get("graph_svg", None), | |
| result.get("analysis", ""), | |
| result.get("audio_url", None), | |
| pdf_path | |
| ) | |
| def funding_tab(query, narration, export_pdf): | |
| result = run_funding_mode(query, narration=narration) | |
| pdf_path = None | |
| if export_pdf: | |
| pdf_path = export_pdf_report(result) | |
| return ( | |
| result.get("summary", ""), | |
| result.get("funding_graph", None), | |
| result.get("top_investors", ""), | |
| result.get("audio_url", None), | |
| pdf_path | |
| ) | |
| def image_tab(image, narration, export_pdf): | |
| result = run_image_mode(image, narration=narration) | |
| pdf_path = None | |
| if export_pdf: | |
| pdf_path = export_pdf_report(result) | |
| return ( | |
| result.get("summary", ""), | |
| result.get("annotations", None), | |
| result.get("enhanced_image", None), | |
| result.get("audio_url", None), | |
| pdf_path | |
| ) | |
| # --------------------------------------------------------- | |
| # Build Gradio Interface | |
| # --------------------------------------------------------- | |
| with gr.Blocks(css=custom_css, theme=gr.themes.Monochrome()) as demo: | |
| gr.Markdown("# 𧬠GENESIS-AI β The Synthetic Biology OS") | |
| gr.Markdown("Multi-modal AI for Literature, Molecules, Pathways, Funding, and Images.") | |
| with gr.Tab("π Literature Review"): | |
| with gr.Row(): | |
| query = gr.Textbox(label="Research Query") | |
| narration = gr.Checkbox(label="Enable Narration", value=False) | |
| export_pdf = gr.Checkbox(label="Export PDF", value=False) | |
| run_btn = gr.Button("Run Literature Review π") | |
| summary = gr.Textbox(label="Summary", lines=10) | |
| citations = gr.JSON(label="Citations") | |
| visuals = gr.Image(label="Visuals") | |
| audio_url = gr.Audio(label="Narration Audio") | |
| pdf_out = gr.File(label="Download PDF") | |
| run_btn.click( | |
| literature_tab, | |
| inputs=[query, narration, export_pdf], | |
| outputs=[summary, citations, visuals, audio_url, pdf_out] | |
| ) | |
| with gr.Tab("π§ͺ Molecule Explorer"): | |
| identifier = gr.Textbox(label="Molecule Name / Gene ID") | |
| narration2 = gr.Checkbox(label="Enable Narration", value=False) | |
| export_pdf2 = gr.Checkbox(label="Export PDF", value=False) | |
| run_btn2 = gr.Button("Run Molecule Analysis π") | |
| summary2 = gr.Textbox(label="Summary", lines=10) | |
| structure_3d = gr.HTML(label="3D Structure Viewer") | |
| properties = gr.Textbox(label="Properties") | |
| audio_url2 = gr.Audio(label="Narration Audio") | |
| pdf_out2 = gr.File(label="Download PDF") | |
| run_btn2.click( | |
| molecule_tab, | |
| inputs=[identifier, narration2, export_pdf2], | |
| outputs=[summary2, structure_3d, properties, audio_url2, pdf_out2] | |
| ) | |
| with gr.Tab("𧬠Pathway Mapper"): | |
| pathway_name = gr.Textbox(label="Pathway Name") | |
| narration3 = gr.Checkbox(label="Enable Narration", value=False) | |
| export_pdf3 = gr.Checkbox(label="Export PDF", value=False) | |
| run_btn3 = gr.Button("Run Pathway Mapping π§©") | |
| summary3 = gr.Textbox(label="Summary", lines=10) | |
| graph_svg = gr.HTML(label="Pathway Graph") | |
| analysis = gr.Textbox(label="Analysis") | |
| audio_url3 = gr.Audio(label="Narration Audio") | |
| pdf_out3 = gr.File(label="Download PDF") | |
| run_btn3.click( | |
| pathway_tab, | |
| inputs=[pathway_name, narration3, export_pdf3], | |
| outputs=[summary3, graph_svg, analysis, audio_url3, pdf_out3] | |
| ) | |
| with gr.Tab("π° Funding Network"): | |
| funding_query = gr.Textbox(label="Funding Query (global)") | |
| narration4 = gr.Checkbox(label="Enable Narration", value=False) | |
| export_pdf4 = gr.Checkbox(label="Export PDF", value=False) | |
| run_btn4 = gr.Button("Run Funding Analysis π") | |
| summary4 = gr.Textbox(label="Summary", lines=10) | |
| funding_graph = gr.HTML(label="Funding Network Graph") | |
| top_investors = gr.Textbox(label="Top Investors") | |
| audio_url4 = gr.Audio(label="Narration Audio") | |
| pdf_out4 = gr.File(label="Download PDF") | |
| run_btn4.click( | |
| funding_tab, | |
| inputs=[funding_query, narration4, export_pdf4], | |
| outputs=[summary4, funding_graph, top_investors, audio_url4, pdf_out4] | |
| ) | |
| with gr.Tab("πΌοΈ Image Analysis"): | |
| img_input = gr.Image(type="filepath", label="Upload Microscopy or Diagram") | |
| narration5 = gr.Checkbox(label="Enable Narration", value=False) | |
| export_pdf5 = gr.Checkbox(label="Export PDF", value=False) | |
| run_btn5 = gr.Button("Run Image Analysis πΌοΈ") | |
| summary5 = gr.Textbox(label="Summary", lines=10) | |
| annotations = gr.Image(label="Annotated Image") | |
| enhanced_image = gr.Image(label="Enhanced Image") | |
| audio_url5 = gr.Audio(label="Narration Audio") | |
| pdf_out5 = gr.File(label="Download PDF") | |
| run_btn5.click( | |
| image_tab, | |
| inputs=[img_input, narration5, export_pdf5], | |
| outputs=[summary5, annotations, enhanced_image, audio_url5, pdf_out5] | |
| ) | |
| # --------------------------------------------------------- | |
| # Launch | |
| # --------------------------------------------------------- | |
| if __name__ == "__main__": | |
| demo.launch(server_name="0.0.0.0", server_port=7860, share=HF_SPACE) | |