File size: 2,168 Bytes
7782ac2
 
 
 
 
711f689
 
1ac1b9b
711f689
0738cf6
1ac1b9b
5570919
0738cf6
 
4bec175
0738cf6
5570919
1ac1b9b
 
711f689
1ac1b9b
711f689
 
 
 
1ac1b9b
711f689
 
 
4cfe680
 
 
1ac1b9b
 
 
 
 
 
 
 
 
4cfe680
 
 
0738cf6
 
711f689
7782ac2
 
 
 
711f689
7782ac2
1ac1b9b
0738cf6
 
7782ac2
 
 
 
 
 
 
711f689
 
4cfe680
 
7782ac2
 
 
711f689
7782ac2
 
 
 
 
 
 
 
 
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
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;
mx-auto:0
}}
</style>
<script src="http://3Dmol.csb.pitt.edu/build/3Dmol-min.js""></script>
</head>

<body>
<h1>Result:</h1>
{content}
</body>

</html>
'''

VIS_TEMPLATE = '''
<div id="container" class="mol-container"></div>
<script>
$(function() {
  let element = $('#container');
  let config = { backgroundColor: 'orange' };
  let viewer = $3Dmol.createViewer( element, config );
  viewer.addSphere({ center: {x:0, y:0, z:0}, radius: 10.0, color: 'green' });
  viewer.zoomTo();
  viewer.render();
  viewer.zoom(0.8, 2000);
});
</script>
'''

PARAMS = '''<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 generate(input_file):
    try:
        path = input_file.name
    except:
        return HTML_TEMPLATE.format(content='Error: could not open the provided file')
    
    content = VIS_TEMPLATE
    html = HTML_TEMPLATE.format(content=content)
    return PARAMS.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()