Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°Π½ΡΡΠΈΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π΄ΠΎΠΊΠΈΠ½Π³Π° Π½ΠΈΠ·ΠΊΠΎΠΌΠΎΠ»Π΅ΠΊΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π»ΠΈΠ³Π°Π½Π΄Π° Π² ΡΡΡΡΠΊΡΡΡΡ Π±Π΅Π»ΠΊΠ°. Π ΡΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Autodock Vina ΠΈ oddt.
Π Π·Π°Π½ΡΡΠΈΠΈ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π±Π΅Π»ΠΎΠΊ Ρ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π·Π°Π½ΡΡΠΈΡ - Π»ΠΈΠ·ΠΎΡΠΈΠΌ ΠΈΠ· ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΊΠΎΠΏΡΡΠ΄Π°. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠΎΡΡΠΎΡΠ»Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΠΎΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎ Π΄ΠΎΠΊΠΈΠ½Π³Π°, ΡΠ΄Π°Π»ΠΈΡΡ Π»ΠΈΠ³Π½Π°Π΄, Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄ΠΎΠΊΠΈΠ½Π³ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·.
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
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ»Π΅ΠΊΡΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈΠ³Π°Π½Π΄Π°ΠΌΠΈ - ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΠΈ
pdb=pmx.Model('new.B99990001.pdb')
for r in pdb.residues[135:]:
print r #ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΡΠ°ΡΠΊΠΈ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π±Π΅Π»ΠΎΠΊ Π±Π΅Π· Π»ΠΈΠ³Π°Π½Π΄Π° ΠΈ Π»ΠΈΠ³Π°Π½Π΄ Π΄Π»Ρ Π΄ΠΎΠΊΠΈΠ½Π³Π°
# ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π΅Π»ΠΎΠΊ ΠΈ Π»ΠΈΠ³Π°Π½Π΄Π°
newpdb = pdb.copy()
del newpdb.residues[-3:]
lig = pdb.copy()
del lig.residues[:-3]
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° - Π½Π°ΠΉΡΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π»ΠΈΠ³Π°Π½Π΄Π° Π΅Π³ΠΎ ΠΏΠΈΡ Π°ΡΡ Π² Π±Π΅Π»ΠΎΠΊ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΉΠ΄ΡΠΌ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π½ΡΡ Π»ΠΈΠ³Π°Π½Π΄Π° - ΡΡΠ΅Π΄Π½Π΅Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅Π³ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π½Π°ΠΉΠ΄ΡΠΌ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ.
print lig
print lig.atoms[0]
print lig.atoms[0].x
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠ΅ΠΌ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π½ΡΡ
x_list = []
y_list = []
z_list = []
for i in lig.atoms:
x_list.append(i.x[0])
y_list.append(i.x[1])
z_list.append(i.x[2])
ave_x=sum(x_list)/float(len(x_list))
ave_y=sum(y_list)/float(len(y_list))
ave_z=sum(z_list)/float(len(z_list))
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΠΏΠ΅ΡΡ Π±Π΅Π»ΠΎΠΊ Π±Π΅Π· Π»ΠΈΠ³Π°Π½Π΄Π° Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ»
newpdb.writePDB("no_lig_lysbommo.pdb")
prot = oddt.toolkit.readfile('pdb','no_lig_lysbommo.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
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π»ΠΈΠ³Π°Π½Π΄Ρ Π΄Π»Ρ Π΄ΠΎΠΊΠΈΠ½Π³Π°. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π»ΠΈΠ³Π°Π½Π΄Ρ Π³Π΄Π΅ ΠΌΠ΅ΡΠΈΠ»ΡΠ½ΡΠΉ ΡΠ°Π΄ΠΈΠΊΠ°Π» Π‘H3C(=O)NH Π³ΡΡΠΏΠΏΡ NAG Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ½ Π½Π°: OH, NH3+, H, Ph, COO-
smiles = ['O=C(NC1C(O)C(O)C(OC1O)CO)C', 'O=C(NC1C(O)C(O)C(OC1O)CO)O','O=C(NC1C(O)C(O)C(OC1O)CO)[NH3+]','O=C(NC1C(O)C(O)C(OC1O)CO)','O=C(NC1C(O)C(O)C(OC1O)CO)C1=CC=CC=C1','O=C(NC1C(O)C(O)C(OC1O)CO)C(O)[O-]']
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=[ave_x,ave_y,ave_z],
executable='/usr/bin/vina',autocleanup=True, num_modes=20)
print dock_obj.tmp_dir
print " ".join(dock_obj.params) # ΠΠΏΠΈΡΠΈΡΠ΅ Π²ΡΠ΄Π°ΡΡ
ΠΠ°ΠΏΡΡΡΠΈΠΌ Π΄ΠΎΠΊΠΈΠ½Π³
# do it
res = dock_obj.dock(mols,prot)
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π»ΠΈΠ³Π°Π½Π΄Ρ, ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΏΠΎ Π°ΡΡΠΈΠ½Π½ΠΎΡΡΠΈ.
for i,r in enumerate(res):
print "%4d%10s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'], r.data['vina_rmsd_ub'], r.residues[0].name)
for i,r in enumerate(res):
r.write(filename='r%s.pdb' % i, format='pdb')
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΡΠΎΡΡΠΈΡΡΠ΅ΠΌ Π»ΠΈΠ³Π°Π½Π΄Ρ ΠΏΠΎ Π°ΡΡΠΈΠ½Π½ΠΎΡΡΠΈ
sort_res=[]
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)
sort_res.append([i,r.formula, float(r.data['vina_affinity']), float(r.data['vina_rmsd_ub']), r.residues[0].name, len(hbs[1]), len(stack[1]), len(phob[1])])
sort_res = sorted(sort_res, key=lambda resi: resi[2])
for j in sort_res:
print "%4d%10s%8s%8s%8s%4d%4d%4d" %(j[0],j[1],j[2],j[3],j[4],j[5],j[6],j[7])
ΠΠ°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΡΡΡΡΠΊΡΡΡΠ° 25 C7H13NO6 Ρ ΡΠ½Π΅ΡΠ³ΠΈΠ΅ΠΉ -3.6. ΠΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 9 Π²ΠΎΠ΄ΠΎΡΠΎΠ΄Π½ΡΡ ΡΠ²ΡΠ·Π΅ΠΉ, ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΊΠΈΠ½Π³ΠΎΠ² ΠΈ Π³ΠΈΠ΄ΡΠΎΡΠΎΠ±Π½ΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ².