Task3
Version 14 (Student HSE, 29.09.2017 22:29) → Version 15/22 (Student HSE, 30.09.2017 15:14)
h1. Хемоинформатика
lecture: http://kodomo.fbb.msu.ru/~golovin/l2.pdf
Цель занятия — используя пакет модулей RDkit предложить аналог ибупрофена:
* на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации
* Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции реагента "Click Chemistry":https://en.wikipedia.org/wiki/Click_chemistry#Copper.28I.29-catalyzed_azide-alkyne_cycloaddition_.28CuAAC.29 (заменить изопропил на этин он же ацителен)
* Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.
* Превратить новые SMILES в объекты-молекулы
* Отобрать те молекулы, которые удовлетворяют "правилу пяти Lipinsky":https://en.wikipedia.org/wiki/Lipinski%27s_rule_of_five
h2. Подсказки:
* shadbox — это виртуальная машина, на которой вы можете выполнять занятия. Модули из практикума также можно установить локально: см. файл conda.install
* shadbox также известен как vsb.fbb.msu.ru:22025. Логин и пароль к нему не следует доверять публичной вики: спросите знакомых.
* Всю работу выполняем в Jupiter Notebook, можно запускать как локально, так и на shadbox
* Добавим путь к conda и активируем профиль, if you use windows do it in putty on shadbox:
<pre><code class="bash">
source activate hse
</code></pre>
<pre><code class="bash">
jupyter-notebook --no-browser --port -port XXXX
</code></pre>
* Run plink on windows
<pre><code class="bash">
plink -ssh -L 8888:localhost:XXXXX ivanov@shadbox
</code></pre>
* open browser http://localhost:8888 , you may want to use token 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
</code></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)
</code></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]
</code></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]) smiles append line[1]
</code></pre>
* Пстроим новые молекулы и отфильтруем
<pre><code class="python">
for smi in smiles[:1500]:
if азид in smi:
newsmi=smi.replace('N=[N+]=[N-]',template)
else:
continue
</code></pre>
* Новую молекулу лучше создавать в try из-за битых smiles
<pre><code class="python">
try:
newmol=Chem.MolFromSmiles
if новая молекулу удолтворяет правилу 5
сохраним в массив
и покажем
except:
pass
</code></pre>
* Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её
можно сделать большую картинку с Draw.MolsToGridImage
как сделать конформацию лиганда:
<pre><code class="python">
m3d=Chem.AddHs(m2d)
Chem.AllChem.EmbedMolecule(m3d)
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
</code></pre>
загрузим NGL viewer
<pre><code class="python">
import nglview as nv
</code></pre>
и покажем первую конформацию
<pre><code class="python">
nv.show_rdkit(m3d)
</code></pre>
lecture: http://kodomo.fbb.msu.ru/~golovin/l2.pdf
Цель занятия — используя пакет модулей RDkit предложить аналог ибупрофена:
* на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации
* Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции реагента "Click Chemistry":https://en.wikipedia.org/wiki/Click_chemistry#Copper.28I.29-catalyzed_azide-alkyne_cycloaddition_.28CuAAC.29 (заменить изопропил на этин он же ацителен)
* Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.
* Превратить новые SMILES в объекты-молекулы
* Отобрать те молекулы, которые удовлетворяют "правилу пяти Lipinsky":https://en.wikipedia.org/wiki/Lipinski%27s_rule_of_five
h2. Подсказки:
* shadbox — это виртуальная машина, на которой вы можете выполнять занятия. Модули из практикума также можно установить локально: см. файл conda.install
* shadbox также известен как vsb.fbb.msu.ru:22025. Логин и пароль к нему не следует доверять публичной вики: спросите знакомых.
* Всю работу выполняем в Jupiter Notebook, можно запускать как локально, так и на shadbox
* Добавим путь к conda и активируем профиль, if you use windows do it in putty on shadbox:
<pre><code class="bash">
source activate hse
</code></pre>
<pre><code class="bash">
jupyter-notebook --no-browser --port -port XXXX
</code></pre>
* Run plink on windows
<pre><code class="bash">
plink -ssh -L 8888:localhost:XXXXX ivanov@shadbox
</code></pre>
* open browser http://localhost:8888 , you may want to use token 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
</code></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)
</code></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]
</code></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]) smiles append line[1]
</code></pre>
* Пстроим новые молекулы и отфильтруем
<pre><code class="python">
for smi in smiles[:1500]:
if азид in smi:
newsmi=smi.replace('N=[N+]=[N-]',template)
else:
continue
</code></pre>
* Новую молекулу лучше создавать в try из-за битых smiles
<pre><code class="python">
try:
newmol=Chem.MolFromSmiles
if новая молекулу удолтворяет правилу 5
сохраним в массив
и покажем
except:
pass
</code></pre>
* Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её
можно сделать большую картинку с Draw.MolsToGridImage
как сделать конформацию лиганда:
<pre><code class="python">
m3d=Chem.AddHs(m2d)
Chem.AllChem.EmbedMolecule(m3d)
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
</code></pre>
загрузим NGL viewer
<pre><code class="python">
import nglview as nv
</code></pre>
и покажем первую конформацию
<pre><code class="python">
nv.show_rdkit(m3d)
</code></pre>