#pragma css /css/2019.css <<BI>> = Хемоинформатика = lecture : http://kodomo.fbb.msu.ru/~golovin/l2.pdf Цель занятия используя пакет моудлей RDkit предложить аналог ибупрофена : * на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации или используйте pubchempy * Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции продукта Click Chemistry * Заменить в найденых радикалах азидную группу на модифцированный ибупрофен. * Превратить новые SMILES в объекты-молекулы * Отобрать те молекулы, которые удовлетворяют правилу пяти Lipinski == Подсказки: == * Всю работу выполняем в Jupiter Notebook на https://kodomo.fbb.msu.ru/jupyter * Добавим путь к anaconda и активируем профиль,if you use windows do it in putty on kodomo: {{{#!highlight bash source /mnt/scratch/mm-course/miniconda3/etc/profile.d/conda.sh conda activate molsim python3 -m ipykernel install --user --name molsim --display-name "Python 3 molsim" }}} * Загрузим модули RDkit (мануал: http://www.rdkit.org/docs/GettingStartedInPython.html ) {{{#!highlight 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 }}} * Нарисуем ибупрофен {{{#!highlight python ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O') AllChem.Compute2DCoords(ibu) display(ibu) }}} * Посчитаем параметры для правила Липински {{{#!highlight python import rdkit.Chem.Lipinski as Lipinksi print Lipinksi.NumHDonors(ibu) print Lipinksi.NumHAcceptors(ibu) print Lipinksi.rdMolDescriptors.CalcExactMolWt(ibu) print Lipinksi.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0] }}} * Прикинуть правильную строку поиска можно здесь https://pubchem.ncbi.nlm.nih.gov/search/search.cgi * Список азидов можно скачать вручную или с помощью https://pubchempy.readthedocs.io/en/latest/ {{{#!highlight python import pubchempy }}} * Загрузим скаченные данные и отфильтруем {{{ compounds = [] per_page = 10**5 for smiles in ["N=N=N", "NN#N",]: for i in range(200): try: a = pcp.get_properties( properties="CanonicalSMILES", identifier=smi...., namespace="...les", searchtype="substructure", RingsNotEmbedded=...., listkey_count=per_page, listkey_start=i*per_page ) except: .......... print("Retrieved page {} of {} search".format(i+1, smiles)) compounds.extend(a) }}} {{{#!highlight python #Если качали с pubchempy то это не надо 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] }}} * Пстроим новые молекулы и отфильтруем {{{#!highlight python for smi in smiles[:1500]: if азид in smi: newsmi=smi.replace('N=[N+]=[N-]',template) else: continue # Новую молекулу лучше создавать в try из-за битых Smiles try: newmol=Chem.MolFromSmiles if новая молекулу удолтворяет правилу 5 сохраним в массив и покажем except: pass }}} Надо сделать большую картинку с Draw.MolsToGridImage {{{#!highlight python from IPython.display import SVG SVG(Draw.MolsToGridImage([m1,m2],useSVG=True, molsPerRow=3, subImgSize=(200, 200))) }}} * Постройте Similiraty Map ибупрофена с пятым веществом из вашего массива. {{{#!highlight python from rdkit.Chem.Draw import SimilarityMaps fp = SimilarityMaps.GetMorganFingerprint(somemol, fpType='bv') fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(refmol, somemol, SimilarityMaps.GetMorganFingerprint) }}} * Постройте 3D структуру и покрутите её. Как сделать конформацию лиганда: {{{#!highlight python m3d=Chem.AddHs(m2d) Chem.AllChem.EmbedMolecule(m3d) AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 ) }}} загрузим NGL viewer ( для установки {{{conda install -c omnia nglview }}} ) {{{#!highlight python import nglview as nv }}} и покажем первую конформацию {{{#!highlight python nv.show_rdkit(m3d) }}}