Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import os | |
| import sys | |
| HTML_TEMPLATE = """<!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> | |
| <style> | |
| .mol-container {{ | |
| width: 600px; | |
| height: 600px; | |
| position: relative; | |
| }} | |
| .mol-container select{{ | |
| background-image:None; | |
| }} | |
| </style> | |
| <script src="https://3Dmol.csb.pitt.edu/build/3Dmol-min.js"></script> | |
| </head> | |
| <body> | |
| <div id="container" class="mol-container"></div> | |
| <script> | |
| $(document).ready(function() {{ | |
| let element = $("#container"); | |
| let config = {{ backgroundColor: "white" }}; | |
| let viewer = $3Dmol.createViewer( element, config ); | |
| viewer.addModel(`{molecule}`, "{fmt}") | |
| viewer.getModel().setStyle({{ stick: {{ colorscheme:"greenCarbon" }} }}) | |
| viewer.zoomTo(); | |
| viewer.render(); | |
| }}); | |
| </script> | |
| </body> | |
| </html> | |
| """ | |
| IFRAME_TEMPLATE = """<iframe style="width: 100%; height: 700px" name="result" allow="midi; geolocation; microphone; camera; | |
| display-capture; encrypted-media;" sandbox="allow-modals allow-forms allow-scripts allow-same-origin allow-popups | |
| allow-top-navigation-by-user-activation allow-downloads" allowfullscreen="" | |
| allowpaymentrequest="" frameborder="0" srcdoc='{html}'></iframe>""" | |
| def read_molecule(path): | |
| with open(path, "r") as f: | |
| return "".join(f.readlines()) | |
| def generate(input_file): | |
| try: | |
| path = input_file.name | |
| molecule = read_molecule(path) | |
| fmt = path.split('.')[-1] | |
| except: | |
| return 'Error: could not open the provided file' | |
| html = HTML_TEMPLATE.format(molecule=molecule, fmt=fmt) | |
| return IFRAME_TEMPLATE.format(html=html) | |
| demo = gr.Blocks() | |
| with demo: | |
| gr.Markdown('# DiffLinker: Equivariant 3D-Conditional Diffusion Model for Molecular Linker Design') | |
| with gr.Box(): | |
| with gr.Row(): | |
| with gr.Column(): | |
| gr.Markdown('## Input Fragments') | |
| gr.Markdown('Upload the file with 3D-coordinates of the input fragments in .pdb, .mol or .sdf format') | |
| input_file = gr.File(file_count='single', label='Input fragments in .pdb, .mol2 or .sdf format') | |
| button = gr.Button('Generate Linker!') | |
| gr.Markdown('') | |
| visualization = gr.HTML() | |
| button.click( | |
| fn=generate, | |
| inputs=[input_file], | |
| outputs=[visualization], | |
| ) | |
| demo.launch() | |