pmuvval1 commited on
Commit
93d7240
1 Parent(s): 0e246d3

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +175 -0
app.py ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import ipywidgets
3
+ import py3Dmol
4
+
5
+
6
+ from rdkit import Chem
7
+ from rdkit.Chem import Draw
8
+ from PIL import Image
9
+ from rdkit import Chem
10
+ from rdkit.Chem import AllChem
11
+ from ipywidgets import interact,fixed,IntSlider
12
+ import streamlit as st
13
+ import streamlit.components.v1 as components
14
+ import py3Dmol
15
+ from rdkit import Chem
16
+ from rdkit.Chem import Draw
17
+ from rdkit.Chem import AllChem
18
+
19
+
20
+ def smi2conf(smiles):
21
+ '''Convert SMILES to rdkit.Mol with 3D coordinates'''
22
+ mol = Chem.MolFromSmiles(smiles)
23
+ if mol is not None:
24
+ mol = Chem.AddHs(mol)
25
+ AllChem.EmbedMolecule(mol)
26
+ AllChem.MMFFOptimizeMolecule(mol, maxIters=200)
27
+ return mol
28
+ else:
29
+ return None
30
+
31
+ def MolTo3DView(mol, size=(300, 300), style="stick", surface=False, opacity=0.5):
32
+ """Draw molecule in 3D
33
+
34
+ Args:
35
+ ----
36
+ mol: rdMol, molecule to show
37
+ size: tuple(int, int), canvas size
38
+ style: str, type of drawing molecule
39
+ style can be 'line', 'stick', 'sphere', 'carton'
40
+ surface, bool, display SAS
41
+ opacity, float, opacity of surface, range 0.0-1.0
42
+ Return:
43
+ ----
44
+ viewer: py3Dmol.view, a class for constructing embedded 3Dmol.js views in ipython notebooks.
45
+ """
46
+ assert style in ('line', 'stick', 'sphere', 'carton')
47
+ mblock = Chem.MolToMolBlock(mol)
48
+ viewer = py3Dmol.view(width=size[0], height=size[1])
49
+ viewer.addModel(mblock, 'mol')
50
+ viewer.setStyle({style:{}})
51
+ if surface:
52
+ viewer.addSurface(py3Dmol.SAS, {'opacity': opacity})
53
+ viewer.zoomTo()
54
+ return viewer
55
+
56
+ def MakeMolecule(name, ingredients):
57
+ st.write(name, ": ", ingredients)
58
+ m = Chem.MolFromSmiles(ingredients)
59
+ im=Draw.MolToImage(m)
60
+ st.image(im)
61
+
62
+ def conf_viewer(idx):
63
+ mol = confs[idx]
64
+ return MolTo3DView(mol).show()
65
+
66
+ def style_selector(idx, s):
67
+ conf = confs[idx]
68
+ return MolTo3DView(conf, style=s).show()
69
+
70
+ @interact
71
+ def smi2viewer(smi='CC=O'):
72
+ try:
73
+ conf = smi2conf(smi)
74
+ return MolTo3DView(conf).show()
75
+ except:
76
+ return None
77
+
78
+ smi = 'COc3nc(OCc2ccc(C#N)c(c1ccc(C(=O)O)cc1)c2P(=O)(O)O)ccc3C[NH2+]CC(I)NC(=O)C(F)(Cl)Br'
79
+ conf = smi2conf(smi)
80
+ viewer = MolTo3DView(conf, size=(600, 300), style='sphere')
81
+ viewer.show()
82
+
83
+ #compound_smiles = 'c1cc(C(=O)O)c(OC(=O)C)cc1'
84
+ #m = Chem.MolFromSmiles(compound_smiles)
85
+ #im=Draw.MolToImage(m)
86
+ #st.image(im)
87
+
88
+ viewer = MolTo3DView(conf, size=(600, 300), style='sphere')
89
+ viewer.show()
90
+
91
+ smis = [ 'COc3nc(OCc2ccc(C#N)c(c1ccc(C(=O)O)cc1)c2P(=O)(O)O)ccc3C[NH2+]CC(I)NC(=O)C(F)(Cl)Br',
92
+ 'CC(NCCNCC1=CC=C(OCC2=C(C)C(C3=CC=CC=C3)=CC=C2)N=C1OC)=O',
93
+ 'Cc1c(COc2cc(OCc3cccc(c3)C#N)c(CN3C[C@H](O)C[C@H]3C(O)=O)cc2Cl)cccc1-c1ccc2OCCOc2c1',
94
+ 'CCCCC(=O)NCCCCC(=O)NCCCCCC(=O)[O-]',
95
+ "CC(NCCNCC1=CC=C(OCC2=C(C)C(C3=CC=CC=C3)=CC=C2)N=C1OC)=O"]
96
+
97
+ confs = [smi2conf(s) for s in smis]
98
+
99
+
100
+ st.title('⚛️🧬Chemical Graph 3D Molecule Modeler🧬⚛️')
101
+ def show(smi, style='stick'):
102
+ mol = Chem.MolFromSmiles(smi)
103
+ mol = Chem.AddHs(mol)
104
+ AllChem.EmbedMolecule(mol)
105
+ AllChem.MMFFOptimizeMolecule(mol, maxIters=200)
106
+ mblock = Chem.MolToMolBlock(mol)
107
+
108
+ view = py3Dmol.view(width=400, height=400)
109
+ view.addModel(mblock, 'mol')
110
+ view.setStyle({style:{}})
111
+ view.zoomTo()
112
+ view.show()
113
+ view.render()
114
+ t =view.js()
115
+ f = open('viz.html', 'w')
116
+ f.write(t.startjs)
117
+ f.write(t.endjs)
118
+ f.close()
119
+
120
+ compound_smiles=st.text_input('SMILES please','CCCCC(=O)NCCCCC(=O)NCCCCCC(=O)[O-]')
121
+ m = Chem.MolFromSmiles(compound_smiles)
122
+
123
+ #Draw.MolToFile(m,'mol.png')
124
+
125
+ show(compound_smiles)
126
+ HtmlFile = open("viz.html", 'r', encoding='utf-8')
127
+ source_code = HtmlFile.read()
128
+ c1,c2=st.columns(2)
129
+ with c1:
130
+ st.write('⚛️🧬Chemical Graph 3D Molecule🧬⚛️:')
131
+ with c2:
132
+ components.html(source_code, height = 400,width=400)
133
+
134
+ st.write('Info about SMILES: https://archive.epa.gov/med/med_archive_03/web/html/smiles.html')
135
+ st.write('Learn about it at Wikipedia: https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system')
136
+ st.write('Search for any compound on PubChem at National Library of Medicine: https://pubchem.ncbi.nlm.nih.gov/#query=vitamin%20e')
137
+
138
+
139
+ MakeMolecule("COVID-19 Antiviral Remdesivir GS5734", "CCC(CC)COC(=O)[C@H](C)N[P@](=O)(OC[C@@H]1[C@H]([C@H]([C@](O1)(C#N)C2=CC=C3N2N=CN=C3N)O)O)OC4=CC=CC=C4")
140
+ MakeMolecule("Ritonavir", "CC(C)C1=NC(=CS1)CN(C)C(=O)N[C@@H](C(C)C)C(=O)N[C@@H](CC2=CC=CC=C2)C[C@@H]([C@H](CC3=CC=CC=C3)NC(=O)OCC4=CN=CS4)O")
141
+ MakeMolecule("Chloroquine", "CCN(CC)CCCC(C)NC1=C2C=CC(=CC2=NC=C1)Cl")
142
+ MakeMolecule("Fingolimod", "CCCCCCCCC1=CC=C(C=C1)CCC(CO)(CO)N")
143
+ MakeMolecule("N4-Hydroxycytidine", "C1=CN(C(=O)N=C1NO)[C@H]2[C@@H]([C@@H]([C@H](O2)CO)O)O")
144
+ MakeMolecule("Favipiravir", "C1=C(N=C(C(=O)N1)C(=O)N)F")
145
+
146
+ MakeMolecule("DNA", "C1C(C(OC1N)COP(=O)(O)OC2CC(OC2COP(=O)(O)OC3CC(OC3CO)N)N)O")
147
+ MakeMolecule("Trecovirsen DNA", "CC1=CN(C(=O)NC1=O)C2CC(C(O2)COP(=S)(O)OC3CC(OC3COP(=S)(O)OC4CC(OC4COP(=S)(O)OC5CC(OC5COP(=S)(O)OC6CC(OC6COP(=S)(O)OC7CC(OC7COP(=S)(O)OC8CC(OC8COP(=S)(O)OC9CC(OC9COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1COP(=S)(O)OC1CC(OC1CO)N1C=CC(=NC1=O)N)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)N1C=NC2=C1N=C(NC2=O)N)N1C=CC(=NC1=O)N)N1C=NC2=C(N=CN=C21)N)N1C=CC(=NC1=O)N)N1C=CC(=NC1=O)N)N1C=CC(=NC1=O)N)N1C=NC2=C(N=CN=C21)N)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)N1C=CC(=NC1=O)N)N1C=C(C(=O)NC1=O)C)N1C=C(C(=O)NC1=O)C)N1C=CC(=NC1=O)N)O")
148
+
149
+
150
+
151
+ MakeMolecule("Ibuprofen", "CC(C)CC1=CC=C(C=C1)C(C)C(=O)O")
152
+ MakeMolecule("LSD", "CCN(CC)C(=O)[C@H]1CN([C@@H]2CC3=CNC4=CC=CC(=C34)C2=C1)C")
153
+
154
+ MakeMolecule("Ethanol", "CCO")
155
+ MakeMolecule("Acetic acid", "CC(=O)O")
156
+ MakeMolecule("Cyclohexane", "C1CCCCC1")
157
+ MakeMolecule("Pyridine", "c1cnccc1")
158
+ MakeMolecule("Nicotine", "CN1CCC[C@H]1c2cccnc2")
159
+
160
+
161
+ MakeMolecule("Helium", "[3He]")
162
+ MakeMolecule("Hydrogen", "[H]")
163
+ MakeMolecule("Caffeine", "CN1C=NC2=C1C(=O)N(C(=O)N2C)C")
164
+ MakeMolecule("Sugar", "C([C@@H]1[C@H]([C@@H]([C@H]([C@H](O1)O[C@]2([C@H]([C@@H]([C@H](O2)CO)O)O)CO)O)O)O)O")
165
+ MakeMolecule("Dinitrogen", "N#N")
166
+ MakeMolecule("Methyl isocyanate (MIC)", "CN=C=O")
167
+ MakeMolecule("Copper(II) sulfate", "[Cu+2].[O-]S(=O)(=O)[O-]")
168
+ MakeMolecule("Flavopereirin (C17H15N2)", "CCc(c1)ccc2[n+]1ccc3c2[nH]c4c3cccc4 CCc1c[n+]2ccc3c4ccccc4[nH]c3c2cc1")
169
+ MakeMolecule("Glucose (β-D-glucopyranose) (C6H12O6)", "OC[C@@H](O1)[C@@H](O)[C@H](O)[C@@H](O)[C@H](O)1")
170
+ MakeMolecule("Thiamine (vitamin B1, C12H17N4OS+)", "OCCc1c(C)[n+](cs1)Cc2cnc(C)nc2N")
171
+ MakeMolecule("cephalostatin-1", "CC(C)(O1)C[C@@H](O)[C@@]1(O2)[C@@H](C)[C@@H]3CC=C4[C@]3(C2)C(=O)C[C@H]5[C@H]4CC[C@@H](C6)[C@]5(C)Cc(n7)c6nc(C[C@@]89(C))c7C[C@@H]8CC[C@@H]%10[C@@H]9C[C@@H](O)[C@@]%11(C)C%10=C[C@H](O%12)[C@]%11(O)[C@H](C)[C@]%12(O%13)[C@H](O)C[C@@]%13(C)CO")
172
+ MakeMolecule("Vitamin E", "CC(C)CCC[C@@H](C)CCC[C@@H](C)CCC [C@]1(C)CCc2c(C)c(O)c(C)c(C)c2O1")
173
+ MakeMolecule("Vitamin K2", "CC1=C(C(=O)C2=CC=CC=C2C1=O)CC=C(C)CCC=C(C)CCC=C(C)CCC=C(C)C")
174
+ MakeMolecule("Vitamin K1", "CC(C)CCCC(C)CCCC(C)CCCC(=CCC12C(=O)C3=CC=CC=C3C(=O)C1(O2)C)C")
175
+ MakeMolecule("Vitamin D3", "C[C@@H]([C@@H]1C2([C@H](/C(=C/C=C/3\C(=C)CCC(C3)O)/CCC2)CC1)C)CCCC(C)C.C[C@@H]([C@@H]1C2([C@H](/C(=C/C=C/3\C(=C)CCC(C3)O)/CCC2)CC1)C)CCCC(C)C")