Task3

Version 2 (Andrey Golovin, 26.09.2017 11:39) → Version 3/22 (Andrey Golovin, 26.09.2017 11:42)

h1. Хемоинформатика

lecture : http://kodomo.fbb.msu.ru/~golovin/l2.pdf

Цель занятия используя пакет моудлей RDkit предложить аналог ибупрофена :
* на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации
* Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции продукта Click Chemistry
* Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.
* Превратить новые SMILES в объекты-молекулы
* Отобрать те молекулы, которые удовлетворяют правилу пяти Lepinsky

h2. Подсказки:
=
* Всю работу выполняем в Jupiter Notebook, можно запускать как локально так и на shadbox
* Добавим путь к conda и активируем профиль,if you use windows do it in putty on shadbox:

<pre><code class="bash"> &lt;pre&gt;
source activate hse
</pre>

<pre><code class="bash"> &lt;pre&gt;
jupyter-notebook /home/preps/golovin/miniconda2/bin/jupyter-notebook --no-browser -port XXXX
</pre>

* Run notice port (XXX) of notebook and run plink on windows
<pre><code class="bash"> &lt;pre&gt;
plink -ssh -L 8888:localhost:XXXXX 8888:localhost:XXXX 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"> &lt;pre&gt;
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"> &lt;pre&gt;
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"> &lt;pre&gt;
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"> &lt;pre&gt;
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"> &lt;pre&gt;
for smi in smiles[:1500]:

if азид in smi:
newsmi=smi.replace('N=[N+]=[N-]',template)
else:
continue
</pre>

* Новую молекулу лучше создавать в try из-за битых smiles

<pre><code class="python"> &lt;pre&gt;
try:
newmol=Chem.MolFromSmiles


if новая молекулу удолтворяет правилу 5
сохраним в массив
и покажем
except:
pass
</pre>

* Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её

можно сделать большую картинку с Draw.MolsToGridImage

как сделать конформацию лиганда:


<pre><code class="python"> &lt;pre&gt;
m3d=Chem.AddHs(m2d)
Chem.AllChem.EmbedMolecule(m3d)
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
</pre>

загрузим NGL viewer

<pre><code class="python"> &lt;pre&gt;
import nglview as nv
</pre>

и покажем первую конформацию

<pre><code class="python"> &lt;pre&gt;
nv.show_rdkit(m3d)
</pre>