Task3

Version 15 (Student HSE, 30.09.2017 15:14)

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