File size: 1,674 Bytes
7782ac2
 
 
 
 
711f689
 
1ac1b9b
711f689
1ac1b9b
 
4bec175
 
 
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()