Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2017

Докинг низкомолекулярных лигандов в структуру белка

Традиционные ссылки на полезные ресурсы:

Вся работа по расчётам будет проходить на kodomo через ipython notebook.

Введение

Цель данного занятия ознакомится с возможностями докинга низкомолекулярного лиганда в структуру белка.

В этом занятии мы будем пользоваться пакетом Autodock Vina и oddt. Это программное обеспечение распространяется бесплатно для академических пользователей.

Объект

Вы будете работать с белком лизоцимом структуру которого вы построили на основе гомологичного моделирования на прошлом практикуме.

Надо определить место докинга, удалить лигнад, запустить докинг и провести анализ

Модули

   1 import numpy as np
   2 import copy
   3 
   4 # Отображение структур
   5 import IPython.display
   6 import ipywidgets
   7 from IPython.display import display,display_svg,SVG,Image
   8 
   9 # Open Drug Discovery Toolkit
  10 import oddt
  11 import oddt.docking
  12 import oddt.interactions
  13 
  14 # Органика
  15 from rdkit.Chem import Draw
  16 drom rdkit import Chem
  17 from rdkit.Chem.Draw import IPythonConsole

Подготовка белка

   1 # Надо убрать старый лигнад из белка
   2 import mdtraj as md
   3 u = md.load('1lmp.pdb')
   4 pdb = u.topology
   5 for i,r in enumerate(pdb.atoms):
   6     print(i,r)
   7     #посмотрим на атомы

   1 # сохраним pdb без лиганда
   2 u2 = u.atom_slice(range(100500))
   3 u2.save_pdb('1lmp-clean.pdb', force_overwrite=True)

   1 lig = u.atom_slice(range(X,Y))
   2 for v in lig.xyz:
   3    # найдите геометрический центр лиганда
   4 
   5 #или слайсы
   6 lig.xyz...[:,0].mean()
   7 ### ! ВНИМАНИЕ это будут значения в НАНОметрах

Подготовка белка для докинга

   1 prot = next(oddt.toolkit.readfile('pdb','myprot-clean.pdb'))
   2 ### В новой версии oddt  всё сделает за вас
   3 #prot.OBMol.AddPolarHydrogens()
   4 #prot.OBMol.AutomaticPartialCharge()
   5 
   6 print('is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt )

Лиганды для докинга

   1 smiles = ['c1cccc(O)c1', 'c1c(O)ccc(O)c1','c1(O)cc(c2ccccc2)cc(O)c1']
   2 mols= []
   3 images =[]
   4 
   5 for s in smiles:
   6     m = oddt.toolkit.readstring('smi', s)
   7     if not m.OBMol.Has3D(): 
   8         m.make3D(forcefield='mmff94', steps=150)
   9         ### Опять всё сделают за Вас
  10         ###m.removeh()
  11         ###m.OBMol.AddPolarHydrogens()
  12 
  13     mols.append(m)
  14     ###with print m.OBMol.Has3D() was found that:
  15     ### deep copy needed to keep 3D , write svg make mols flat
  16     images.append((SVG(copy.deepcopy(m).write('svg'))))
  17     
  18 display_svg(*images)

Докинг

   1 #create docking object
   2 dock_obj= oddt.docking.AutodockVina.autodock_vina(
   3     protein=prot,size=(20,20,20),center=[xx,yy,zz],
   4     executable='/usr/bin/vina',autocleanup=True, num_modes=...)
   5 
   6 print dock_obj.tmp_dir
   7 print " ".join(dock_obj.params) # Опишите выдачу

   1 # do it
   2 res = dock_obj.dock(mols,prot)

Результаты докинга

   1 for i,r in enumerate(res):
   2     ### Узнаем дескриптор "формула"
   3     formula = Chem.rdMolDescriptors.CalcMolFormula(r.Mol)
   4     print "%4d%10s%8s%8s%8s" %(i, formula, r.data['vina_affinity'],  r.data['vina_rmsd_ub'], r.residues[0].name)

Анализ докинга

   1 for i,r in enumerate(res):
   2     hbs = oddt.interactions.hbonds(prot,r)
   3     stack= oddt.interactions.pi_stacking(prot,r)
   4     phob = oddt.interactions.hydrophobic_contacts(prot,r)

Визуализация

   1 for i,r in enumerate(res):
   2     r.write(filename='r%s.pdb' % i, format='pdb')

pymol myprot.pdb r*pdb

Задание

  1. NAG содержит в себе СH3C(=O)NH группу. Создайте лиганды где метильный радикал этой группы будет заменён на :
    • OH
    • NH3+
    • H
    • Ph
    • COO-

Для каждого из этих лигандов проведите докинг и представьте результаты в виде таблицы от лучшего заместителя к худшему.

  1. Предложите методы из статьи про ODDT (пакет Sklearn), которые можно было бы использовать в Вашем упражнении