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

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

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

Введение

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

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

Объект

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

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

Установка

1!pip install -q condacolab
2import condacolab
3condacolab.install()
4! mamba install -c conda-forge oddt

Установите и проверьте наличие AutoDock Vina

1! apt install autodock-vina
2! whereis vina

Модули

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

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

Удалите из белка остатки лиганда и воды

1# пример итерации
2for r in prot.residues :
3  print(r.name)
4  for a in r.atoms:
5    print(a.coords)
6
1for a in lig.atoms:
2   # найдите геометрический центр лиганда
1newpdb.writePDB(.....)

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

1prot = oddt.toolkit.readfile('pdb','myprot.pdb').next()
2
3prot.OBMol.AddPolarHydrogens()
4prot.OBMol.AutomaticPartialCharge()
5
6print 'is it the first mol in 1lmp is protein?',prot.protein,':) and MW of this mol is:', prot.molwt 

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

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

Докинг

1#create docking object
2dock_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=20)
5
6print dock_obj.tmp_dir
7print " ".join(dock_obj.params) # Опишите выдачу
1# do it
2res = dock_obj.dock(mols,prot)

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

1for i,r in enumerate(res):
2    print "%4d%10s%8s%8s%8s" %(i,r.formula, r.data['vina_affinity'],  r.data['vina_rmsd_ub'], r.residues[0].name)

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

1for 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)

Визуализация
1for i,r in enumerate(res):
2    r.write(filename='r%s.pdb' % i, format='pdb')

1pymol myprot.pdb r*pdb

Задание

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

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

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