Task3

Version 22 (Andrey Golovin, 26.09.2022 19:18)

1 1 Andrey Golovin
h1.  Хемоинформатика 
2 1 Andrey Golovin
3 21 Andrey Golovin
lecture: https://vsb.fbb.msu.ru/share/golovin/hse/lectures/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 16 Student HSE
* Отобрать те молекулы, которые удовлетворяют "правилу пяти Lipinski":https://en.wikipedia.org/wiki/Lipinski%27s_rule_of_five
11 1 Andrey Golovin
12 1 Andrey Golovin
h2. Подсказки: 
13 3 Andrey Golovin
14 20 Andrey Golovin
15 20 Andrey Golovin
* Всю работу выполняем в Jupiter Notebook, можно запускать как локально, так и на "Colab":https://colab.research.google.com/drive/1gBkrpxFAH-Fmn8QtThRUYKlCU52DiUXn?usp=sharing 
16 17 Andrey Golovin
* Добавим путь к conda и активируем профиль с помощью терминала Jupyter :
17 1 Andrey Golovin
<pre><code class="bash">
18 17 Andrey Golovin
19 17 Andrey Golovin
export PATH="/home/shad/miniconda2/bin:$PATH" 
20 17 Andrey Golovin
21 1 Andrey Golovin
source activate hse
22 3 Andrey Golovin
23 19 Andrey Golovin
python -m ipykernel install --user --display-name "Python 2.7 HSE" 
24 19 Andrey Golovin
25 19 Andrey Golovin
или
26 19 Andrey Golovin
27 19 Andrey Golovin
export PATH="/home/shad/miniconda3/bin:$PATH"
28 19 Andrey Golovin
source activate py37-hse
29 19 Andrey Golovin
python -m ipykernel install --user  --display-name "Python 3.7 HSE" 
30 17 Andrey Golovin
31 4 Andrey Golovin
</code></pre>
32 1 Andrey Golovin
33 17 Andrey Golovin
34 18 Andrey Golovin
* Создадим новый notebook Python 2.7 HSE и  загрузим модули RDkit (мануал: http://www.rdkit.org/docs/GettingStartedInPython.html )
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
<pre><code class="python">
47 3 Andrey Golovin
ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O')
48 1 Andrey Golovin
AllChem.Compute2DCoords(ibu)
49 1 Andrey Golovin
display(ibu)
50 1 Andrey Golovin
</code></pre>
51 1 Andrey Golovin
52 16 Student HSE
* Посчитаем параметры для правила Липински
53 1 Andrey Golovin
<pre><code class="python">
54 3 Andrey Golovin
import rdkit.Chem.Lipinski as Lipinksy
55 1 Andrey Golovin
print Lipinksy.NumHDonors(ibu)
56 1 Andrey Golovin
print Lipinksy.NumHAcceptors(ibu)
57 1 Andrey Golovin
print Lipinksy.rdMolDescriptors.CalcExactMolWt(ibu)
58 1 Andrey Golovin
print Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]
59 4 Andrey Golovin
</code></pre>
60 1 Andrey Golovin
61 22 Andrey Golovin
62 22 Andrey Golovin
63 22 Andrey Golovin
64 16 Student HSE
* Загрузим скачанные данные и отфильтруем
65 1 Andrey Golovin
<pre><code class="python">
66 3 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 1 Andrey Golovin
        smiles.append(line[1])
71 1 Andrey Golovin
</code></pre>
72 1 Andrey Golovin
73 1 Andrey Golovin
74 16 Student HSE
* Построим новые молекулы и отфильтруем
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 4 Andrey Golovin
        continue
82 1 Andrey Golovin
</code></pre>
83 14 Student HSE
   
84 1 Andrey Golovin
* Новую молекулу лучше создавать в try из-за битых smiles
85 1 Andrey Golovin
<pre><code class="python">
86 3 Andrey Golovin
    try:
87 1 Andrey Golovin
        newmol=Chem.MolFromSmiles
88 1 Andrey Golovin
89 1 Andrey Golovin
        
90 1 Andrey Golovin
        if новая молекулу удолтворяет правилу 5
91 1 Andrey Golovin
            сохраним в массив
92 1 Andrey Golovin
            и покажем
93 1 Andrey Golovin
    except:
94 1 Andrey Golovin
        pass
95 1 Andrey Golovin
</code></pre>
96 1 Andrey Golovin
97 1 Andrey Golovin
* Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её
98 1 Andrey Golovin
99 16 Student HSE
  * можно сделать большую картинку с Draw.MolsToGridImage
100 1 Andrey Golovin
101 16 Student HSE
  * как сделать конформацию лиганда:
102 3 Andrey Golovin
<pre><code class="python">
103 1 Andrey Golovin
m3d=Chem.AddHs(m2d)
104 1 Andrey Golovin
Chem.AllChem.EmbedMolecule(m3d)
105 1 Andrey Golovin
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
106 1 Andrey Golovin
</code></pre>
107 1 Andrey Golovin
108 16 Student HSE
  * загрузим NGL viewer
109 1 Andrey Golovin
<pre><code class="python">
110 4 Andrey Golovin
import nglview as nv
111 1 Andrey Golovin
</code></pre>
112 1 Andrey Golovin
113 16 Student HSE
  * и покажем первую конформацию
114 3 Andrey Golovin
<pre><code class="python">
115 1 Andrey Golovin
nv.show_rdkit(m3d)
116 4 Andrey Golovin
</code></pre>