File size: 1,676 Bytes
7782ac2
 
 
 
 
711f689
 
1ac1b9b
711f689
1ac1b9b
5570919
4bec175
 
 
5570919
1ac1b9b
 
711f689
1ac1b9b
711f689
 
 
 
1ac1b9b
711f689
 
 
4cfe680
 
 
1ac1b9b
 
 
 
 
 
 
 
 
4cfe680
 
 
711f689
7782ac2
 
 
 
711f689
7782ac2
1ac1b9b
4cfe680
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
import gradio as gr
import os
import sys


HTML_TEMPLATE = '''<!DOCTYPE html>
<html>

<head>
<style>
.mol-container {{
width: 60%;
height: 400px;
position: relative;
}}
</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>
'''


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
    return HTML_TEMPLATE.format(content=content)


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()