« Previous -
Version 3/22
(diff) -
Next » -
Current version
Andrey Golovin, 26.09.2017 11:42
Хемоинформатика¶
lecture : http://kodomo.fbb.msu.ru/~golovin/l2.pdf
Цель занятия используя пакет моудлей RDkit предложить аналог ибупрофена :- на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации
- Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции продукта Click Chemistry
- Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.
- Превратить новые SMILES в объекты-молекулы
- Отобрать те молекулы, которые удовлетворяют правилу пяти Lepinsky
Подсказки:
- Всю работу выполняем в Jupiter Notebook, можно запускать как локально так и на shadbox
- Добавим путь к conda и активируем профиль,if you use windows do it in putty on shadbox:
1source activate hse
<code class="bash"> jupyter-notebook --no-browser -port XXXX </pre> * Run plink on windows <pre><code class="bash"> plink -ssh -L 8888:localhost:XXXXX ivanov@shadbox </pre> * open browser http://localhost:8888 , you may want use tokien from Jupiter Notebook run. * Загрузим модули RDkit (мануал: http://www.rdkit.org/docs/GettingStartedInPython.html ) <pre><code class="python"> from rdkit import Chem from rdkit.Chem import AllChem from rdkit import RDConfig from rdkit.Chem.Draw import IPythonConsole from rdkit.Chem import Draw import numpy as np from IPython.display import display,Image </pre> * Нарисуем ибупрофен <pre><code class="python"> ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O') AllChem.Compute2DCoords(ibu) display(ibu) </pre> * Посчитаем параметры для правила Лепински <pre><code class="python"> import rdkit.Chem.Lipinski as Lipinksy print Lipinksy.NumHDonors(ibu) print Lipinksy.NumHAcceptors(ibu) print Lipinksy.rdMolDescriptors.CalcExactMolWt(ibu) print Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0] </pre> * Загрузим скаченные данные и отфильтруем <pre><code class="python"> strings=np.genfromtxt('2515324818764782706.txt',dtype=np.str) for line in strings: if len(line[1]) < 30 and not '.' in line[1]: smiles append line[1] </pre> * Пстроим новые молекулы и отфильтруем <pre><code class="python"> for smi in smiles[:1500]: if азид in smi: newsmi=smi.replace('N=[N+]=[N-]',template) else: continue </pre> * Новую молекулу лучше создавать в try из-за битых smiles <pre><code class="python"> try: newmol=Chem.MolFromSmiles if новая молекулу удолтворяет правилу 5 сохраним в массив и покажем except: pass </pre> * Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её можно сделать большую картинку с Draw.MolsToGridImage как сделать конформацию лиганда: <pre><code class="python"> m3d=Chem.AddHs(m2d) Chem.AllChem.EmbedMolecule(m3d) AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 ) </pre> загрузим NGL viewer <pre><code class="python"> import nglview as nv </pre> и покажем первую конформацию <pre><code class="python"> nv.show_rdkit(m3d) </pre> {{fnlist}}