Spaces:
Runtime error
Runtime error
File size: 3,626 Bytes
4414a85 13d9c1a 4414a85 13d9c1a 1049d12 13d9c1a cfb3fe2 13d9c1a cfb3fe2 13d9c1a cfb3fe2 13d9c1a cfb3fe2 13d9c1a |
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 |
import streamlit as st
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 ipywidgets
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)
m = Chem.MolFromSmiles(ingredients)
im=Draw.MolToImage(m)
st.image(im)
def conf_viewer(idx):
mol = confs[idx]
return MolTo3DView(mol).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)
MakeMolecule("Ethanol", "CCO")
MakeMolecule("Acetic acid", "CC(=O)O")
MakeMolecule("Cyclohexane", "C1CCCCC1")
MakeMolecule("Pyridine", "c1cnccc1")
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]
interact(conf_viewer, idx=ipywidgets.IntSlider(min=0,max=len(class_0_list)-1, step=1))
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]
def style_selector(idx, s):
conf = confs[idx]
return MolTo3DView(conf, style=s).show()
interact(style_selector,
idx=ipywidgets.IntSlider(min=0,max=len(class_0_list)-1, step=1),
s=ipywidgets.Dropdown(
options=['line', 'stick', 'sphere'],
value='line',
description='Style:'))
|