|
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() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|
|
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) |
|
|
|
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") |
|
MakeMolecule("Favipiravir", "C1=C(N=C(C(=O)N1)C(=O)N)F") |
|
|
|
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') |
|
|
|
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") |
|
|
|
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("Ethanol", "CCO") |
|
MakeMolecule("Acetic acid", "CC(=O)O") |
|
MakeMolecule("Cyclohexane", "C1CCCCC1") |
|
MakeMolecule("Pyridine", "c1cnccc1") |
|
MakeMolecule("Nicotine", "CN1CCC[C@H]1c2cccnc2") |
|
|
|
|
|
MakeMolecule("Helium", "[3He]") |
|
MakeMolecule("Hydrogen", "[H]") |
|
MakeMolecule("Caffeine", "CN1C=NC2=C1C(=O)N(C(=O)N2C)C") |
|
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") |
|
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("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("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") |
|
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") |
|
|
|
|
|
|