« Previous -
Version 15/22
(diff) -
Next » -
Current version
Student HSE, 30.09.2017 15:14
Хемоинформатика¶
lecture: http://kodomo.fbb.msu.ru/~golovin/l2.pdf
Цель занятия — используя пакет модулей RDkit предложить аналог ибупрофена:- на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации
- Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции реагента Click Chemistry (заменить изопропил на этин он же ацителен)
- Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.
- Превратить новые SMILES в объекты-молекулы
- Отобрать те молекулы, которые удовлетворяют правилу пяти Lipinsky
Подсказки:¶
- shadbox — это виртуальная машина, на которой вы можете выполнять занятия. Модули из практикума также можно установить локально: см. файл conda.install
- shadbox также известен как vsb.fbb.msu.ru:22025. Логин и пароль к нему не следует доверять публичной вики: спросите знакомых.
- Всю работу выполняем в Jupiter Notebook, можно запускать как локально, так и на shadbox
- Добавим путь к conda и активируем профиль, if you use windows do it in putty on shadbox:
1source activate hse
1jupyter-notebook --no-browser --port XXXX
- Run plink on windows
1plink -ssh -L 8888:localhost:XXXXX ivanov@shadbox
- open browser http://localhost:8888 , you may want to use token from Jupiter Notebook run.
- Загрузим модули RDkit (мануал: http://www.rdkit.org/docs/GettingStartedInPython.html )
1from rdkit import Chem
2from rdkit.Chem import AllChem
3from rdkit import RDConfig
4from rdkit.Chem.Draw import IPythonConsole
5from rdkit.Chem import Draw
6import numpy as np
7from IPython.display import display,Image
- Нарисуем ибупрофен
1ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O')
2AllChem.Compute2DCoords(ibu)
3display(ibu)
- Посчитаем параметры для правила Лепински
1import rdkit.Chem.Lipinski as Lipinksy
2print Lipinksy.NumHDonors(ibu)
3print Lipinksy.NumHAcceptors(ibu)
4print Lipinksy.rdMolDescriptors.CalcExactMolWt(ibu)
5print Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]
- Загрузим скаченные данные и отфильтруем
1strings=np.genfromtxt('2515324818764782706.txt',dtype=np.str) 2 3for line in strings: 4 if len(line[1]) < 30 and not '.' in line[1]: 5 smiles.append(line[1])
- Пстроим новые молекулы и отфильтруем
1for smi in smiles[:1500]:
2
3 if азид in smi:
4 newsmi=smi.replace('N=[N+]=[N-]',template)
5 else:
6 continue
- Новую молекулу лучше создавать в try из-за битых smiles
1 try:
2 newmol=Chem.MolFromSmiles
3
4 if новая молекулу удолтворяет правилу 5
5 сохраним в массив
6 и покажем
7 except:
8 pass
- Наводим красоту за бонусные баллы, постройте 3D структуру и покрутите её
можно сделать большую картинку с Draw.MolsToGridImage
как сделать конформацию лиганда:
1m3d=Chem.AddHs(m2d)
2Chem.AllChem.EmbedMolecule(m3d)
3AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
загрузим NGL viewer
1import nglview as nv
и покажем первую конформацию
1nv.show_rdkit(m3d)