Task3

Version 13 (Student HSE, 29.09.2017 15:33)

1 1 Andrey Golovin
h1.  Хемоинформатика 
2 1 Andrey Golovin
3 1 Andrey Golovin
lecture : http://kodomo.fbb.msu.ru/~golovin/l2.pdf
4 1 Andrey Golovin
5 1 Andrey Golovin
Цель занятия используя пакет моудлей RDkit предложить аналог ибупрофена :
6 1 Andrey Golovin
* на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации
7 13 Student HSE
* Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции реагента "Click Chemistry":https://en.wikipedia.org/wiki/Click_chemistry#Copper.28I.29-catalyzed_azide-alkyne_cycloaddition_.28CuAAC.29  (заменить изопропил на этин он же  ацителен)
8 1 Andrey Golovin
* Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.
9 1 Andrey Golovin
* Превратить новые SMILES  в объекты-молекулы
10 1 Andrey Golovin
* Отобрать те молекулы, которые удовлетворяют правилу пяти Lepinsky
11 1 Andrey Golovin
12 3 Andrey Golovin
h2. Подсказки: 
13 12 Andrey Golovin
14 11 Andrey Golovin
* shadbox это виртуальная машина на которой вы можете выполнять занятия. Модули из практикума так же можно установить локально см. файл conda.install
15 1 Andrey Golovin
* Всю работу выполняем в Jupiter Notebook, можно запускать как локально так и на shadbox
16 1 Andrey Golovin
* Добавим путь к conda и активируем профиль,if you use windows do it in putty on shadbox:
17 1 Andrey Golovin
18 1 Andrey Golovin
19 3 Andrey Golovin
<pre><code class="bash">
20 1 Andrey Golovin
source activate hse
21 4 Andrey Golovin
</code></pre>
22 1 Andrey Golovin
23 3 Andrey Golovin
<pre><code class="bash">
24 3 Andrey Golovin
jupyter-notebook --no-browser -port XXXX
25 4 Andrey Golovin
</code></pre>
26 1 Andrey Golovin
27 3 Andrey Golovin
* Run plink on windows
28 3 Andrey Golovin
<pre><code class="bash">
29 3 Andrey Golovin
plink -ssh -L  8888:localhost:XXXXX ivanov@shadbox
30 4 Andrey Golovin
</code></pre>
31 1 Andrey Golovin
32 1 Andrey Golovin
* open browser http://localhost:8888 , you may want use tokien from Jupiter Notebook run.
33 1 Andrey Golovin
* Загрузим модули RDkit (мануал: http://www.rdkit.org/docs/GettingStartedInPython.html )
34 1 Andrey Golovin
35 3 Andrey Golovin
<pre><code class="python">
36 1 Andrey Golovin
from rdkit import Chem
37 1 Andrey Golovin
from rdkit.Chem import AllChem
38 1 Andrey Golovin
from rdkit import RDConfig
39 1 Andrey Golovin
from rdkit.Chem.Draw import IPythonConsole 
40 1 Andrey Golovin
from rdkit.Chem import Draw
41 1 Andrey Golovin
import numpy as np
42 1 Andrey Golovin
from IPython.display import display,Image
43 4 Andrey Golovin
</code></pre>
44 1 Andrey Golovin
45 2 Andrey Golovin
* Нарисуем ибупрофен
46 1 Andrey Golovin
47 3 Andrey Golovin
<pre><code class="python">
48 1 Andrey Golovin
ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O')
49 1 Andrey Golovin
AllChem.Compute2DCoords(ibu)
50 1 Andrey Golovin
display(ibu)
51 4 Andrey Golovin
</code></pre>
52 1 Andrey Golovin
53 1 Andrey Golovin
* Посчитаем параметры для правила Лепински
54 1 Andrey Golovin
55 3 Andrey Golovin
<pre><code class="python">
56 1 Andrey Golovin
import rdkit.Chem.Lipinski as Lipinksy
57 1 Andrey Golovin
print Lipinksy.NumHDonors(ibu)
58 1 Andrey Golovin
print Lipinksy.NumHAcceptors(ibu)
59 1 Andrey Golovin
print Lipinksy.rdMolDescriptors.CalcExactMolWt(ibu)
60 1 Andrey Golovin
print Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]
61 4 Andrey Golovin
</code></pre>
62 1 Andrey Golovin
63 1 Andrey Golovin
* Загрузим скаченные данные и отфильтруем
64 3 Andrey Golovin
<pre><code class="python">
65 1 Andrey Golovin
strings=np.genfromtxt('2515324818764782706.txt',dtype=np.str)
66 1 Andrey Golovin
67 1 Andrey Golovin
for line in strings:
68 1 Andrey Golovin
    if len(line[1]) < 30 and not '.' in line[1]:
69 1 Andrey Golovin
        smiles  append line[1]
70 4 Andrey Golovin
</code></pre>
71 1 Andrey Golovin
72 1 Andrey Golovin
73 1 Andrey Golovin
* Пстроим новые молекулы и отфильтруем
74 1 Andrey Golovin
75 3 Andrey Golovin
<pre><code class="python">
76 1 Andrey Golovin
for smi in smiles[:1500]:
77 1 Andrey Golovin
    
78 1 Andrey Golovin
    if азид  in smi:
79 1 Andrey Golovin
        newsmi=smi.replace('N=[N+]=[N-]',template)
80 1 Andrey Golovin
    else:
81 1 Andrey Golovin
        continue
82 4 Andrey Golovin
</code></pre>
83 1 Andrey Golovin
   
84 1 Andrey Golovin
* Новую молекулу лучше создавать в try из-за битых  smiles
85 1 Andrey Golovin
86 3 Andrey Golovin
<pre><code class="python">
87 1 Andrey Golovin
    try:
88 1 Andrey Golovin
        newmol=Chem.MolFromSmiles
89 1 Andrey Golovin
90 1 Andrey Golovin
        
91 1 Andrey Golovin
        if новая молекулу удолтворяет правилу 5
92 1 Andrey Golovin
            сохраним в массив
93 1 Andrey Golovin
            и покажем
94 1 Andrey Golovin
    except:
95 1 Andrey Golovin
        pass
96 4 Andrey Golovin
</code></pre>
97 1 Andrey Golovin
98 1 Andrey Golovin
* Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её
99 1 Andrey Golovin
100 1 Andrey Golovin
можно сделать большую картинку с Draw.MolsToGridImage
101 1 Andrey Golovin
102 1 Andrey Golovin
как сделать конформацию лиганда:
103 1 Andrey Golovin
 
104 1 Andrey Golovin
105 3 Andrey Golovin
<pre><code class="python">
106 1 Andrey Golovin
m3d=Chem.AddHs(m2d)
107 1 Andrey Golovin
Chem.AllChem.EmbedMolecule(m3d)
108 1 Andrey Golovin
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
109 4 Andrey Golovin
</code></pre>
110 1 Andrey Golovin
111 1 Andrey Golovin
загрузим NGL viewer
112 1 Andrey Golovin
113 3 Andrey Golovin
<pre><code class="python">
114 1 Andrey Golovin
import nglview as nv
115 4 Andrey Golovin
</code></pre>
116 1 Andrey Golovin
117 1 Andrey Golovin
и покажем первую конформацию
118 1 Andrey Golovin
119 3 Andrey Golovin
<pre><code class="python">
120 1 Andrey Golovin
nv.show_rdkit(m3d)
121 4 Andrey Golovin
</code></pre>