import numpy as np
import copy
# Отображение структур
import IPython.display
import ipywidgets
from IPython.display import display,display_svg,SVG,Image
# Open Drug Discovery Toolkit
import oddt
import oddt.docking
import oddt.interactions
# Органика
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole
import pmx # Модуль для манипулирования pdb
import os
os.getcwd()
pdb=pmx.Model('plus_ligand.B99990001.pdb')
for r in pdb.residues[135:]:
print r #посмотрим остатки
## Белок:
newpdb = pdb.copy()
for r in newpdb.residues[-3:]:
newpdb.remove_residue(r)
## Лиганд:
lig = pdb.copy()
for r in lig.residues[:-3]:
lig.remove_residue(r)
coordinates = np.zeros((len(lig.atoms),3))
for c,a in enumerate(lig.atoms):
coordinates[c,:] = a.x
geom_center = np.mean(coordinates, axis = 0)
print geom_center
newpdb.writePDB('new.pdb')
lig.writePDB('ligand.pdb')
prot = oddt.toolkit.readfile('pdb','new.pdb').next()
prot.OBMol.AddPolarHydrogens()
prot.OBMol.AutomaticPartialCharge()
print 'is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt
Белок не был распознан как белок
smiles = ['c1cccc(O)c1', 'c1c(O)ccc(O)c1','c1(O)cc(c2ccccc2)cc(O)c1']
mols= []
images =[]
for s in smiles:
m = oddt.toolkit.readstring('smi', s)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
# create docking object
dock_obj = oddt.docking.AutodockVina.autodock_vina(
protein=prot, size=(20,20,20), center=geom_center, num_modes = 9,
executable='/usr/bin/vina',autocleanup=True)
print dock_obj.tmp_dir
print " ".join(dock_obj.params)
# do it
res = dock_obj.dock(mols,prot)
print " ".join(["№", "formula", "affin", "rmsd_ub", "name",'hbs','stack','phob'])
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r) #водородные связи
stack= oddt.interactions.pi_stacking(prot,r) #Стэкинг взаимодействия
phob = oddt.interactions.hydrophobic_contacts(prot,r) #Гидрофобные контакты
print "%4d%10s%8s%8s%8s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],
r.data['vina_rmsd_ub'], r.residues[0].name,
len(hbs[1]),len(stack[1]), len(phob[1]))
for i,r in enumerate(res):
r.write(filename='r%s.pdb' % i, format='pdb')
from IPython.display import Image
Афинность-характеристика, количественно описывающая силу взаимодействия веществ
Для визуализации я выбрала наилучшую структуру по афинности (номер 18). Бежевым цветом изображен белок,красным – начальные лиганды, желтым – 18 структура и синем, для контраста, плохая структура (номер 8):
Image(filename = "/Users/Nataliyadi/Desktop/18.png", width=500, height=500)
NAG содержит в себе СH3C(=O)NH группу. Создайте лиганды, где метильный радикал этой группы будет заменён на : OH NH3+ H Ph COO-
smiles = 'C1(C(C(C(C(O1)CO[H])O[H])O[H])O[H])[OH]'
mols= []
images=[]
m = oddt.toolkit.readstring('smi', smiles)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
res = dock_obj.dock(mols,prot)
for i,r in enumerate(res):
r.write(filename='OH%s.pdb' % i, format='pdb')
Выбор наилучшего объекта для визуализации: (наилучший оказался нулевой)
print " ".join(["№", "formula", "affin", "rmsd_ub", "name",'hbs','stack','phob'])
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r) #водородные связи
stack= oddt.interactions.pi_stacking(prot,r) #Стэкинг взаимодействия
phob = oddt.interactions.hydrophobic_contacts(prot,r) #Гидрофобные контакты
print "%4d%10s%8s%8s%8s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],
r.data['vina_rmsd_ub'], r.residues[0].name,
len(hbs[1]),len(stack[1]), len(phob[1]))
Image(filename = "/Users/Nataliyadi/Desktop/OH1.png", width=500, height=500)
smiles = 'C1(C(C(C(C(O1)CO[H])O[H])O[H])O[H])[NH3+]'
mols= []
images=[]
m = oddt.toolkit.readstring('smi', smiles)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
res = dock_obj.dock(mols,prot)
for i,r in enumerate(res):
r.write(filename='NH%s.pdb' % i, format='pdb')
Выбор наилучшего объекта для визуализации: (наилучший оказался нулевой)
print " ".join(["№", "formula", "affin", "rmsd_ub", "name",'hbs','stack','phob'])
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r) #водородные связи
stack= oddt.interactions.pi_stacking(prot,r) #Стэкинг взаимодействия
phob = oddt.interactions.hydrophobic_contacts(prot,r) #Гидрофобные контакты
print "%4d%10s%8s%8s%8s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],
r.data['vina_rmsd_ub'], r.residues[0].name,
len(hbs[1]),len(stack[1]), len(phob[1]))
Image(filename = "/Users/Nataliyadi/Desktop/NH31.png", width=500, height=500)
smiles = 'C1(C(C(C(C(O1)CO[H])O[H])O[H])[OH])[H]'
mols= []
images=[]
m = oddt.toolkit.readstring('smi', smiles)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
res = dock_obj.dock(mols,prot)
for i,r in enumerate(res):
r.write(filename='H%s.pdb' % i, format='pdb')
print " ".join(["№", "formula", "affin", "rmsd_ub", "name",'hbs','stack','phob'])
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r) #водородные связи
stack= oddt.interactions.pi_stacking(prot,r) #Стэкинг взаимодействия
phob = oddt.interactions.hydrophobic_contacts(prot,r) #Гидрофобные контакты
print "%4d%10s%8s%8s%8s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],
r.data['vina_rmsd_ub'], r.residues[0].name,
len(hbs[1]),len(stack[1]), len(phob[1]))
Image(filename = "/Users/Nataliyadi/Desktop/H1.png", width=500, height=500)
smiles = 'C1(C(C(C(C(O1)O[H])O[H])O[H])C2CCCCC2)O[H]'
mols= []
images=[]
m = oddt.toolkit.readstring('smi', smiles)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
res = dock_obj.dock(mols,prot)
for i,r in enumerate(res):
r.write(filename='Ph%s.pdb' % i, format='pdb')
print " ".join(["№", "formula", "affin", "rmsd_ub", "name",'hbs','stack','phob'])
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r) #водородные связи
stack= oddt.interactions.pi_stacking(prot,r) #Стэкинг взаимодействия
phob = oddt.interactions.hydrophobic_contacts(prot,r) #Гидрофобные контакты
print "%4d%10s%8s%8s%8s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],
r.data['vina_rmsd_ub'], r.residues[0].name,
len(hbs[1]),len(stack[1]), len(phob[1]))
Image(filename = "/Users/Nataliyadi/Desktop/Ph1.png", width=500, height=500)
smiles = 'C1(C(C(C(C(O1)O[H])O[H])O[H])C(=O)O)O[H]'
mols= []
images=[]
m = oddt.toolkit.readstring('smi', smiles)
if not m.OBMol.Has3D():
m.make3D(forcefield='mmff94', steps=150)
m.removeh()
m.OBMol.AddPolarHydrogens()
mols.append(m)
###with print m.OBMol.Has3D() was found that:
### deep copy needed to keep 3D , write svg make mols flat
images.append((SVG(copy.deepcopy(m).write('svg'))))
display_svg(*images)
res = dock_obj.dock(mols,prot)
for i,r in enumerate(res):
r.write(filename='COO%s.pdb' % i, format='pdb')
print " ".join(["№", "formula", "affin", "rmsd_ub", "name",'hbs','stack','phob'])
for i,r in enumerate(res):
hbs = oddt.interactions.hbonds(prot,r) #водородные связи
stack= oddt.interactions.pi_stacking(prot,r) #Стэкинг взаимодействия
phob = oddt.interactions.hydrophobic_contacts(prot,r) #Гидрофобные контакты
print "%4d%10s%8s%8s%8s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],
r.data['vina_rmsd_ub'], r.residues[0].name,
len(hbs[1]),len(stack[1]), len(phob[1]))
Image(filename = "/Users/Nataliyadi/Desktop/COO1.png", width=500, height=500)
# formula affin rmsd_ub name hbs stack phob
# C11H20O5 -5.9 0.000 UNL 7 0 7
# C6H10O7 -5.5 0.000 UNL 8 0 0
# C6H14NO5 -5.5 0.000 UNL 13 0 0
# C6H12O6 -5.4 0.000 UNL 13 0 0
# C6H12O5 -5.3 0.000 UNL 15 0 0