File size: 10,713 Bytes
4414a85
d7d776e
13d9c1a
d7d776e
6dd1f10
4414a85
 
 
13d9c1a
 
1049d12
74f7072
 
 
 
 
 
 
1049d12
13d9c1a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cfb3fe2
 
7d1b551
cfb3fe2
 
 
 
 
 
 
d7d776e
 
 
 
 
cfb3fe2
 
 
 
 
 
 
d7d776e
cfb3fe2
 
 
 
 
af88cb1
 
 
 
cfb3fe2
2e1731a
cfb3fe2
13d9c1a
 
 
 
 
 
 
 
 
74f7072
13d9c1a
7c5db63
b259c01
 
 
736c721
 
 
 
 
 
13d9c1a
736c721
 
 
 
 
 
 
 
 
 
 
 
b8cbfe3
736c721
13d9c1a
bf77c6c
736c721
 
 
 
3761126
736c721
2e1731a
736c721
 
 
05c0429
 
d28b333
 
 
bbf5660
 
d28b333
05c0429
 
 
 
 
d28b333
 
 
 
 
 
 
 
7290388
8a73ec8
 
 
 
c3303b0
2e1731a
 
 
 
 
 
c3303b0
b259c01
 
 
 
8a73ec8
 
c3303b0
 
 
 
 
904d04b
 
 
 
03e689c
dd9b023
a961900
 
 
5fb6534
 
 
 
389b5be
 
 
 
a961900
 
5fb6534
 
 
 
 
a961900
 
5fb6534
 
 
 
 
a961900
 
389b5be
a961900
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
import streamlit as st
import ipywidgets
import py3Dmol


from rdkit import Chem
from rdkit.Chem import Draw
from PIL import Image
from rdkit import Chem
from rdkit.Chem import AllChem
from ipywidgets import interact,fixed,IntSlider
import streamlit as st
import streamlit.components.v1 as components
import py3Dmol
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import AllChem


def smi2conf(smiles):
    '''Convert SMILES to rdkit.Mol with 3D coordinates'''
    mol = Chem.MolFromSmiles(smiles)
    if mol is not None:
        mol = Chem.AddHs(mol)
        AllChem.EmbedMolecule(mol)
        AllChem.MMFFOptimizeMolecule(mol, maxIters=200)
        return mol
    else:
        return None

def MolTo3DView(mol, size=(300, 300), style="stick", surface=False, opacity=0.5):
    """Draw molecule in 3D
    
    Args:
    ----
        mol: rdMol, molecule to show
        size: tuple(int, int), canvas size
        style: str, type of drawing molecule
               style can be 'line', 'stick', 'sphere', 'carton'
        surface, bool, display SAS
        opacity, float, opacity of surface, range 0.0-1.0
    Return:
    ----
        viewer: py3Dmol.view, a class for constructing embedded 3Dmol.js views in ipython notebooks.
    """
    assert style in ('line', 'stick', 'sphere', 'carton')
    mblock = Chem.MolToMolBlock(mol)
    viewer = py3Dmol.view(width=size[0], height=size[1])
    viewer.addModel(mblock, 'mol')
    viewer.setStyle({style:{}})
    if surface:
        viewer.addSurface(py3Dmol.SAS, {'opacity': opacity})
    viewer.zoomTo()
    return viewer

def MakeMolecule(name, ingredients):
  st.write(name, ":    ", ingredients)
  m = Chem.MolFromSmiles(ingredients)
  im=Draw.MolToImage(m)
  st.image(im)    

def conf_viewer(idx):
    mol = confs[idx]
    return MolTo3DView(mol).show()

def style_selector(idx, s):
    conf = confs[idx]
    return MolTo3DView(conf, style=s).show()
              
@interact
def smi2viewer(smi='CC=O'):
    try:
        conf = smi2conf(smi)
        return MolTo3DView(conf).show()
    except:
        return None

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'
conf = smi2conf(smi)
viewer = MolTo3DView(conf, size=(600, 300), style='sphere')
viewer.show()

#compound_smiles = 'c1cc(C(=O)O)c(OC(=O)C)cc1'
#m = Chem.MolFromSmiles(compound_smiles)
#im=Draw.MolToImage(m)
#st.image(im)


viewer = MolTo3DView(conf, size=(600, 300), style='sphere')
viewer.show()

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',
    'CC(NCCNCC1=CC=C(OCC2=C(C)C(C3=CC=CC=C3)=CC=C2)N=C1OC)=O',
    'Cc1c(COc2cc(OCc3cccc(c3)C#N)c(CN3C[C@H](O)C[C@H]3C(O)=O)cc2Cl)cccc1-c1ccc2OCCOc2c1',
    'CCCCC(=O)NCCCCC(=O)NCCCCCC(=O)[O-]',
    "CC(NCCNCC1=CC=C(OCC2=C(C)C(C3=CC=CC=C3)=CC=C2)N=C1OC)=O"]
    
confs = [smi2conf(s) for s in smis]


st.title('⚛️🧬Molecule Modeler🧬⚛️')



def show(smi, style='stick'):
    mol = Chem.MolFromSmiles(smi)
    mol = Chem.AddHs(mol)
    AllChem.EmbedMolecule(mol)
    AllChem.MMFFOptimizeMolecule(mol, maxIters=200)
    mblock = Chem.MolToMolBlock(mol)

    view = py3Dmol.view(width=400, height=400)
    view.addModel(mblock, 'mol')
    view.setStyle({style:{}})
    view.zoomTo()
    view.show()
    view.render()
    t =view.js()
    f = open('viz.html', 'w')
    f.write(t.startjs)
    f.write(t.endjs)
    f.close()

compound_smiles=st.text_input('SMILES please','CCCCC(=O)NCCCCC(=O)NCCCCCC(=O)[O-]')
m = Chem.MolFromSmiles(compound_smiles)

#Draw.MolToFile(m,'mol.png')

show(compound_smiles)
HtmlFile = open("viz.html", 'r', encoding='utf-8')
source_code = HtmlFile.read() 
c1,c2=st.columns(2)
with c1:
  st.write('⚛️🧬Chemical Graph 3D SMILES🧬⚛️:')
with c2:
  components.html(source_code, height = 400,width=400)

# Sedatives, Amphetamines, Opiods?  Also COVID anti-virals, Drugs to Reduce Side Effect via Bond Selection Compound Analysis for Refactoring
    
MakeMolecule("Nicotine", "CN1CCC[C@H]1c2cccnc2")
MakeMolecule("Ethanol", "CCO")

MakeMolecule("Peptides - BPC-157", "CC(C)CC(C(=O)NC(C(C)C)C(=O)O)NC(=O)CNC(=O)C(C)NC(=O)C(CC(=O)O)NC(=O)C(CC(=O)O)NC(=O)C(C)NC(=O)C1CCCN1C(=O)C(CCCCN)NC(=O)CNC(=O)C2CCCN2C(=O)C3CCCN3C(=O)C4CCCN4C(=O)C(CCC(=O)O)NC(=O)CN")

MakeMolecule("Caffeine", "CN1C=NC2=C1C(=O)N(C(=O)N2C)C")

MakeMolecule("DNA", "C1C(C(OC1N)COP(=O)(O)OC2CC(OC2COP(=O)(O)OC3CC(OC3CO)N)N)O")
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")


MakeMolecule("Glucose (β-D-glucopyranose) (C6H12O6)", "OC[C@@H](O1)[C@@H](O)[C@H](O)[C@@H](O)[C@H](O)1")
MakeMolecule("Thiamine (vitamin B1, C12H17N4OS+)", "OCCc1c(C)[n+](cs1)Cc2cnc(C)nc2N")
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")
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")
MakeMolecule("Vitamin K1", "CC(C)CCCC(C)CCCC(C)CCCC(=CCC12C(=O)C3=CC=CC=C3C(=O)C1(O2)C)C")
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")

MakeMolecule("Favipiravir", "C1=C(N=C(C(=O)N1)C(=O)N)F")
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")
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")
MakeMolecule("Chloroquine", "CCN(CC)CCCC(C)NC1=C2C=CC(=CC2=NC=C1)Cl")
MakeMolecule("Fingolimod", "CCCCCCCCC1=CC=C(C=C1)CCC(CO)(CO)N")
MakeMolecule("N4-Hydroxycytidine", "C1=CN(C(=O)N=C1NO)[C@H]2[C@@H]([C@@H]([C@H](O2)CO)O)O")

st.write('Asthma Inhaler Medications:')
st.write('Option 1: Symbicort @ Budesonide 160 mcg with Formoterol Fumurate Dihydrate 4.5 mcg')
st.write('Option 2: Dulera @ Mometasone 200 mcg with Formoterol Fumurate Dihydrate 5 mcg')
st.write('Symbicort - https://pubchem.ncbi.nlm.nih.gov/#query=Symbicort - Isomeric SMILES: CCCC1O[C@@H]2C[C@H]3[C@@H]4CCC5=CC(=O)C=C[C@@]5([C@H]4[C@H](C[C@@]3([C@@]2(O1)C(=O)CO)C)O)C.C[C@@H](CC1=CC=C(C=C1)OC)NC[C@H](C2=CC(=C(C=C2)O)NC=O)O')
st.write('Dulera - https://pubchem.ncbi.nlm.nih.gov/#query=Dulera - Isomeric SMILES: C[C@@H]1C[C@H]2[C@@H]3CCC4=CC(=O)C=C[C@@]4([C@]3([C@H](C[C@@]2([C@]1(C(=O)CCl)OC(=O)C5=CC=CO5)C)O)Cl)C.C[C@H](CC1=CC=C(C=C1)OC)NC[C@@H](C2=CC(=C(C=C2)O)NC=O)O.C[C@H](CC1=CC=C(C=C1)OC)NC[C@@H](C2=CC(=C(C=C2)O)NC=O)O.C(=C/C(=O)O)\C(=O)O.O.O')


st.write('Info about SMILES: https://archive.epa.gov/med/med_archive_03/web/html/smiles.html')
st.write('Learn about it at Wikipedia: https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system')
st.write('Search for any compound on PubChem at National Library of Medicine: https://pubchem.ncbi.nlm.nih.gov/#query=vitamin%20e')

MakeMolecule("Ibuprofen", "CC(C)CC1=CC=C(C=C1)C(C)C(=O)O")
MakeMolecule("LSD", "CCN(CC)C(=O)[C@H]1CN([C@@H]2CC3=CNC4=CC=CC(=C34)C2=C1)C")

MakeMolecule("Acetic acid", "CC(=O)O")
MakeMolecule("Cyclohexane", "C1CCCCC1")
MakeMolecule("Pyridine", "c1cnccc1")

MakeMolecule("Dinitrogen", "N#N")
MakeMolecule("Methyl isocyanate (MIC)", "CN=C=O")
MakeMolecule("Copper(II) sulfate", "[Cu+2].[O-]S(=O)(=O)[O-]")
MakeMolecule("Flavopereirin (C17H15N2)", "CCc(c1)ccc2[n+]1ccc3c2[nH]c4c3cccc4 CCc1c[n+]2ccc3c4ccccc4[nH]c3c2cc1")
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")

# Request list:
markDown = '''
# Opioids:
1. Fentanyl (Duragesic).  https://pubchem.ncbi.nlm.nih.gov/#query=Fentanyl - CCC(=O)N(C1CCN(CC1)CCC2=CC=CC=C2)C3=CC=CC=C3
2. Hydrocodone (Vicodin).  https://pubchem.ncbi.nlm.nih.gov/#query=Hydrocodone - CN1CC[C@]23[C@@H]4[C@H]1CC5=C2C(=C(C=C5)OC)O[C@H]3C(=O)CC4
3. Oxycodone (OxyContin).  https://pubchem.ncbi.nlm.nih.gov/#query=Oxycodone - CN1CC[C@]23[C@@H]4C(=O)CC[C@]2([C@H]1CC5=C3C(=C(C=C5)OC)O4)O
4. Oxymorphone (Darvon).  https://pubchem.ncbi.nlm.nih.gov/#query=Oxymorphone - 
5. Hydromorphone (Dilaudid).  https://pubchem.ncbi.nlm.nih.gov/#query=Hydromorphone
6. Meperidine (Demerol).  https://pubchem.ncbi.nlm.nih.gov/#query=Meperidine
7. Diphenoxylate (Lomotil).  https://pubchem.ncbi.nlm.nih.gov/#query=Diphenoxylate
8. Morphine Sulfate.  https://pubchem.ncbi.nlm.nih.gov/#query=Morphine

# Central Nervous System (CNS) Depressants
1. Pentobarbital sodium (Nembutal).  https://pubchem.ncbi.nlm.nih.gov/#query=Pentobarbital - CCC(C)C1(C(=O)NC(=O)NC1=O)CC
2. Diazepam (Valium).  https://pubchem.ncbi.nlm.nih.gov/#query=Diazepam - CN1C(=O)CN=C(C2=C1C=CC(=C2)Cl)C3=CC=CC=C3  
3. Alprazolam (Xanax).  https://pubchem.ncbi.nlm.nih.gov/#query=Alprazolam - CC1=NN=C2N1C3=C(C=C(C=C3)Cl)C(=NC2)C4=CC=CC=C4
4. Zolpidem Tartrate (Ambien).  https://pubchem.ncbi.nlm.nih.gov/#query=Zolpidem - CC1=CC=C(C=C1)C2=C(N3C=C(C=CC3=N2)C)CC(=O)N(C)C
5. Sertraline (Zoloft).  https://pubchem.ncbi.nlm.nih.gov/#query=Sertraline - CN[C@H]1CC[C@H](C2=CC=CC=C12)C3=CC(=C(C=C3)Cl)Cl

# Stimulants
1. Dextroamphetamine (Dexedrine).  https://pubchem.ncbi.nlm.nih.gov/#query=Dextroamphetamine - C[C@@H](CC1=CC=CC=C1)N  
2. Methylphenidate (Ritalin and Concerta).  https://pubchem.ncbi.nlm.nih.gov/#query=Methylphenidate - COC(=O)C(C1CCCCN1)C2=CC=CC=C2
3. Amphetamines (Adderall).  https://pubchem.ncbi.nlm.nih.gov/#query=Amphetamines - C[C@@H](CC1=CC=CC=C1)N.C[C@@H](CC1=CC=CC=C1)N.C[C@@H](CC1=CC=CC=C1)N.C[C@@H](CC1=CC=CC=C1)N.CC(CC1=CC=CC=C1)N.CC(CC1=CC=CC=C1)N.C([C@@H](C(=O)O)N)C(=O)O.[C@H]([C@@H]([C@@H](C(=O)O)O)O)([C@H](C(=O)O)O)O.OS(=O)(=O)O.OS(=O)(=O)O    

# More at PubChem: https://pubchem.ncbi.nlm.nih.gov/substance/135324815#section=Identity
'''


st.write(markDown)