Хемоинформатика

Импортировать необходимые модули

In [10]:
from rdkit import Chem, RDConfig
from rdkit.Chem import AllChem, Draw
import numpy as np
from IPython.display import display, Image, display_svg

Создать молекулу ибупрофена

In [17]:
ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O')
AllChem.Compute2DCoords(ibu)
display(ibu)

Посчитать параметры для правила Лепински

In [4]:
import rdkit.Chem.Lipinski as Lip
print (Lip.NumHDonors(ibu))
print (Lip.NumHAcceptors(ibu))
print (Lip.rdMolDescriptors.CalcExactMolWt(ibu))
print (Lip.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0])
1
1
206.130679816
3.073200000000001

Создать шаблон для замены азидного радикала

In [5]:
template='N1N=NC(=C1)CC2=CC=C(C=C2)C(C)C(=O)O'
display(Chem.MolFromSmiles(template))
print (Lip.NumHDonors(Chem.MolFromSmiles(template)))
print (Lip.NumHAcceptors(Chem.MolFromSmiles(template)))
print (Lip.rdMolDescriptors.CalcExactMolWt(Chem.MolFromSmiles(template)))
print (Lip.rdMolDescriptors.CalcCrippenDescriptors(Chem.MolFromSmiles(template))[0])
<rdkit.Chem.rdchem.Mol at 0x18c866c93f0>
2
3
231.100776656
1.5836000000000001

Скачать с PubChem список азидов в формате SMILES (вручную), прочитать из файла

In [6]:
strings=np.genfromtxt('azides.txt',dtype=np.str)
az=[]
for line in strings:
    if len(line[1]) < 30 and not '.' in line[1]:
        az.append( line[1])
print (len(az))
1032

Заменить азидную группу в каждом элементе списка на ибупрофен (как если бы произошла реакция Хьюсгена с аналогом ибупрофена, имеющим терминальную алкиновую группу), проверить на соответствие правилу 5

In [7]:
new=[]
for a in az:  
    if 'N=[N+]=[N-]' in a:
        b=a.replace('N=[N+]=[N-]',template)
    else:
        continue
    try:
        newmol=Chem.MolFromSmiles(b)
        AllChem.Compute2DCoords(newmol)
        if ((Lip.NumHDonors(newmol)<=5)and (Lip.NumHAcceptors(newmol)<=10) and 
            (Lip.rdMolDescriptors.CalcExactMolWt(newmol)<500) and 
            (Lip.rdMolDescriptors.CalcCrippenDescriptors(newmol)[0]<=5)):             
            new.append(newmol)  
    except:
        pass
print (len(new))
783

Вывести все полученные молекулы на экран

In [13]:
display_svg(Draw.MolsToGridImage(new,useSVG=True, molsPerRow=3, subImgSize=(300, 200),maxMols=1000))
N O N NH2 N HO N N N O OH N O N N HO N N N O OH N N OH N N N O HO N N O N HO N N N O OH N NH N N N N O OH Cl N NH N N N N O OH H2N O N N N O OH NH2 O N N N O OH O N N N O OH O O N N N O OH O N N N O OH O N N N O OH N OH N N N O OH NH N O N N N O OH B N Cl N N N O OH O N N N N N O OH O O O O N N N O OH O N N N O OH O N N N O OH N N N O OH I S NH O N N N O OH N NH S O N N N O OH O O O O O N N N O OH O N N N O OH O N N N O OH OH N OH N N N O OH S O N N N O OH S O N N N O OH F O N N N O OH O O N N N O OH Br O N N N O OH S O N N N O OH O NH N OH N N N O OH O N N N O OH O N N N N O HO N N N N O HO S I O N N N O OH O N N N O OH I O N N N O OH OH O O N N N O OH O N N N O OH O N N N O OH O N N N O HO O O O N N N O OH O N N N O OH OH O N N N O OH O N N N O OH HO O N N N O OH NH O O N N N O OH O O N N N O OH O O N N N O OH O N N N O OH O O N N N O OH O N N N O OH N O N O N N N O OH O N N N O OH O N N N O OH N O N N N O OH N O N N N O OH N S O N N N O OH O N N N O OH O N N N O OH N S O N N N O OH O N N N O OH OH O N N N O OH O N N N O OH HN Cl Cl Cl N N N O OH HN N N N O OH Cl Cl HN N N N O OH Cl S O O O N N N O OH S Cl O N N N O OH O N N N O OH O N N N O HO O N N N O OH F F O N N N O OH O N N N O OH O N N N O OH Cl Cl O N N N O OH O NH2 O O N N N O OH O N N N O OH O NH2 O N N N O OH N O N O N N N O OH N S O N N N O OH O NH N O N N N O HO N N N O N N N O OH O O O N N N O OH N NH O S N N N O OH O Br N N N O OH O N N N O OH O O N N N O OH O N N N O OH O N N N O OH O O N N N O OH S O N N N O OH N O N N N O OH N O O N N N O HO N S O N N N O OH N NH O N N N O OH N NH OH O N N N O OH N N S O N N N O OH P N N N O OH N N N N N N O OH B N N N O OH S N N N O OH Cl Cl N N N O OH N N N O HO O S O O N N N O OH Si N N N O OH HN N N N O OH OH O N N N O OH N NH S N N N O OH P O OH HO N N N O OH N+ O O- N N N O OH S N N N N O OH Cl Cl N OH N N N O OH N N N N O N N N O OH N OH O N N N O OH O Cl Cl Cl N N N O OH N NH N N N O OH N O N N N N O HO O NH S O O N N N O OH O N N N O OH Si O NH O N N N O OH N N N H2N N N N O OH N N N O OH O N N N O OH O N N N O OH Pb N N N O OH N NH O N N N O OH As N N N O HO O N N N O OH O P O OH OH Sb N N N O OH N N N O OH N S N O N N N O OH S N N N O OH F F F S O N N N O OH S N N N O OH O O O O O H2N N N N O OH F N N N O OH N N O N N N O HO 2H O O N N N O OH N N NH2 NH2 N N N O OH O N N N O OH N N N O HO N N N O OH HO S O O N N N O OH N N N N O OH O N N N O OH NH2 SH O N N N O OH NH O Cl O N N N O OH NH O Br NH O N N N O OH S N O N N N O OH N S O N N N O OH N N O N N N O HO NH O N N N O OH O N N N O OH O O N N N O OH O O N N N O OH S O N N N O OH Br O O N N N O OH Br O O N N N O OH Cl O O N N N O OH S N O N N N O OH O N N N O OH O O F F F N N N O OH N N N N O OH Se N N N O OH O O O NH2 N N N O OH B N N N O OH O O B S S N N N O OH N N N O OH O NH O N N N O OH N NH N N N N O OH N NH N N N N O OH Se N N N O OH O F F Cl N N N O OH N N N O OH I N N N O OH O N N N O OH N N N O OH I N N N O OH N N N O OH N N N O OH N N O N N N O OH N N N O OH N N N O HO Si N N N O OH S O N N N O OH N N N O OH O N N N O HO N N N N N O OH N N N O OH O O O SH N N N O OH N O N N N N O OH N N N O OH O O O F N N N O OH N N N O HO NH O N N N O OH B N N N O OH Cl Cl O F F F N N N O OH NH S O O N N N O OH O N N N O OH N N N O OH O N N N O OH O N N N O HO O N N N O OH O N N N O OH O S O N N N O OH O N N N O OH NH2 O N N N O OH Br Br O O N N N O OH N N N N O OH N N N O OH N O N N N O HO O O N N N O OH N N N O N N N O OH O O N N N O OH N N N O OH N N N O OH O O N N N O OH N N N O OH SH S F O N N N O OH S O N N N O OH S N N N O OH N O O N N N O OH NH N N N O OH O N N N O OH O N O N N N O OH Cl NH O N N N O OH O Br O N N N O OH N N N O OH N N N O HO O N N N O OH OH O N N N O OH OH S O N N N O OH N O Si N N N O OH O N N N O OH Br O N N N O OH Br O N N N O OH Br S Cl N N N O OH NH N N N O OH O N N N O OH Cl N N N O OH N N N O OH O N N N O OH N O N N N O OH N N N O OH F N N N O OH Br N N N O OH Cl O N N N O OH NH N N N O OH B N N N O OH I I NH O N N N O OH S N N N O OH N N N O HO O N N N O OH Br S N N N O OH O N N N O OH O N N N O OH O N N N O OH O N N N O OH O N N N O OH S O N N N O OH O N N N O OH O O N N N N O HO O O N N N O OH O N N N O OH HO O N N N O OH O S O N N N O OH S Cl O N N N O OH N NH N O N N N O OH S O N N N O OH S O N N N O OH S O N N N O OH I S O N N N O OH O O N N N O OH NH O N N N O OH O O O Br N N N O OH NH N N N N N O OH N N O N N N O HO O N N N O OH O N N N O OH O N N N O OH I N N O O N N N O OH Br N N N O OH N N N O OH N N O N N N O OH H2N P NH NH2 N N N O OH NH2 P+ O N N N O OH O N N N O OH F F O N N N O OH NH O N N N O OH O N N N O OH Br O O O O N N N O OH O N O N N N O OH N O O N N N O OH O N N N O OH Cl O NH F F F N N N O OH N N N N O HO O N N N O OH O N N N O OH NH2 PH N N N O OH O N N N O OH Cl F F S O O N N N O OH H2N P S NH2 N N N O OH O N N N O OH F NH P N N N O OH O O O O N N N O OH H2N O O O O HO N N N O OH O O N N N O OH N N N O OH I S N N O N N N O OH S N N O N N N O OH N NH O N N N O OH S Br O N N N O OH N NH O N N N O OH N N N O HO N N N O OH N N N O OH O O N N N O OH O S O O O N N N O OH O O N N N O OH O N N N O OH NH O O O N N N O OH F N N N O OH O O N N N O OH HN F F F N N N O OH F F N N N O OH Cl O N N N O OH N N N O OH N N N O HO O O O N N N O OH N N N O OH I F N N N O HO N N N O HO O N N N O OH OH O O O N N N O OH O O H2N N N N O OH S O O O O N N N O OH N N N O OH N S O N N N O OH O N N N O OH O N N N O OH O O O O N N N O OH O N O N N N O OH OH N N N N O OH O O O O H2N N N N O OH N N N O OH H2N NH P S NH NH2 N N N O OH H2N P O NH2 N N N O OH O N N N O OH S N N N O OH O N N N O OH O O Cl N N N O OH S OH O N N N O OH O N N N O OH O N N N O OH NH N N N O OH O N N N O OH NH2 OH S O N N N O OH S N N O N N N O OH O N N N O OH Br N N N O OH F O N N N O OH N NH N N N O OH N N O N N N O HO NH O N N N O OH S N N N O OH O O N N N O OH N N N N O HO O N N N O OH O O OH O N N N O OH N O N N N O OH N+ N- O N N N O OH N N N N N N N O OH NH N O N N N O OH O O O N N N O OH N S N N N O OH N N N O OH N N N O OH O O O O N N N O OH N N O N N N O OH O S O N N N O OH O O N N N O OH O N N N O OH N N N O OH N N O N N N O OH N N O N N N O OH N N N N O OH N N N N O OH O N O N N N O OH F N N N O OH Br F N N N O HO S O N N N O OH O O N N N O OH O O N N N O OH O O N N N O OH F N N N O OH N N N O OH Cl F I N N N O HO N N N O OH F F N N N O OH F F N N N O HO N N N O HO NH O N N N O OH O N N N O OH N N N N O HO S O O N N N O OH O N N N O OH O O N N N O OH N N N O OH O N N N O OH O N N N O OH N N N N O OH O N N N O OH O N N N O OH NH2 O O N N N O OH O S O N N N O OH N O O N N N O OH N N O N N N O OH N N N O OH O O N N N N O OH N N N N O OH O O N N N O OH N N N N O HO O O N N N N O OH O N N N N O OH I N N N O OH N N N N O OH S N N N O OH N N N N O OH Cl N N N O OH N N N N N O OH N N N O OH I S N N N O OH NH O N N N O OH N N N O OH O O N N N O OH NH2 N O N O N N N O OH N O N O N N N O OH N N O O N N N O OH N N N N O HO O N N N O OH Br O N N N O OH S O N N N O OH O S O O N N N O OH N N N O OH F N N N O OH F N N N O OH F O N N N O OH Br O N N N O OH Cl N N N N N O OH O N N N O OH N N N O OH NH N O N N N O OH O N N N O OH S NH2 N N N O OH N N N O OH O OH I N N N O HO N N O O N N N O OH N O NH O N N N O OH N N O O N N N O OH S O O N N N O OH O S O O N N N O OH O Si N N N O OH O O O NH N O N N N O OH Br O N N N O OH O N N N O OH O N N N O OH N N N O OH O N N N O OH N N N O HO O N N N O OH N N N O HO O N N N O OH N N N O OH S N O N N N O OH N N N N N O HO O N N N O OH F N N N O HO F N N N O OH F N S O N N N O OH Ga N N N O OH Ge N N N O OH O N N N O OH O N N N O OH O N N N O OH NH O N N N O OH N N N O OH NH S O N N N O OH NH S O N N N O OH S O N N N O OH NH2 S NH2 O N N N O OH O N N N O OH O N N N O OH Cl I N N N O OH O N N N O OH Cl Cl O N N N O OH O N N N O OH F F N N N O HO N N N O OH O N O N N N O OH N N N N O OH N N N O OH N I N N N O OH F N I N N N O OH F N N N O OH O O N N N O OH S N N N O OH N O O N N N O OH N N N N N O OH N N N N N O OH N N N O OH Br Cl N N N O OH Se N N N O OH N N N O OH N N N N O OH N N N O OH O N N N O OH O N N N O OH S N N N O OH N N N O OH I Cl O N N N O OH Si N N N O HO NH2 NH N N N O OH O N N N O OH OH O N N N O OH OH N N N O OH N NH N Br O N N N O OH O O N N N O OH N N N O OH N N N O OH N N N O OH N N N O OH N O N N N O OH N O N N N O OH I N N N O OH S N N N O OH F F I N N N O OH F F O N N N O OH Cl NH O N N N O OH N N N O OH N N N O OH N O O N N N O OH N N N O OH N N N O HO N N N O OH O P O N N N O OH O S N N N O OH N N N O OH N N N O OH N N N O OH N N N O OH S O N N N O OH S O O N N N O OH S O N N N O OH Cl S O O N N N O HO O N N N O OH O N N N O OH N N N O OH B N N N N N O OH N N N O OH O N N N O OH N N N O OH N NH O N N N O OH O S O N N N O OH N N N O OH N N N O OH I N N N O OH F F F N N N O OH O N N N O OH N N N O OH N N N N O OH N N N O OH S N N O N N N O OH N N O N N N O OH N N N O OH N N N O OH O N N N O OH N P O N N N O OH N O N N N O OH N N N O OH O S O N N N O OH O N N N O OH S N N N O OH S N N N O OH N N N O OH N N N O OH O N O N N N O HO N O N N N O OH S O N N N O OH S O N N N O OH O N N N O OH O N N N O OH N N N N N O OH N NH N O N N N O OH N N N O OH N N N O OH N N N O OH N N N O OH Cl N N N O OH F F F N N N O OH F F F F N N N O OH O N N N O OH N N N O HO N N N O HO OH N N N O OH N N N N N O OH O N N N O OH O O N N N O OH N N N O OH Cl N N N O OH O N N N O OH NH N N N O OH O N N N O OH N N N O OH I N N N O OH O O O N N N O OH Br N N N O OH N N N O OH NH2 N N N O HO S N N N O OH S N N N O OH I N N N O OH O N N N O OH N O N N N O HO O N N N O OH O N N N O OH O N N N O OH I N N N O OH F S O N N N O OH S O N N N O OH O O N N N O OH O N N N O OH O O N N N O OH Cl N N N O HO O N N N O OH Cl N N N O OH N N N O OH I O N N N O OH O N N N O OH N N N N N O OH N N N O OH N N N O OH Cl N N N O OH Br NH O N N N O OH S O O N N N O OH O N N N O OH OH N N N O HO S N N N O OH N N N O OH N N N O OH O N N N O OH S O O O N N N O OH N NH N N N O OH O N N N O OH N N N N N O OH O N N N O HO N N N O OH F O O N N N O OH N N N O OH Cl N N N O OH S O O N N N O OH NH2 NH2 S O O N N N O OH O N N N O OH O N N N O OH N N N O OH Cl N N N O HO N N N O HO N N N O OH N N N O OH O O Br N N N O OH N N N O OH O O N N N O OH OH OH N N N O OH Br N N N O OH O N N N O OH O O N N N O OH Cl OH N N N O OH O N N N O OH N N N N O OH O O N N N O OH NH O N N N O OH N N N O OH Cl O N N N O OH O N N N O OH N N N O OH I N N N O HO Si N N N O OH N N N O OH F NH2 N N N O OH O N N N O OH N N N O OH N N N O OH N O N N N O OH N N N O OH N N N O OH N N N O OH N O N N N O OH Cl N O N N N O OH N O N N N O OH N N N O OH 14C Cl O N N N O OH 11C O N N N O OH Se N N N O OH O O O N N N O OH N N N O OH O O N N N N N O OH Se N N N O OH N O O N N N O OH NH2 N N O N N N O OH O O N N N O OH O O N N N O OH N O N N N O OH Sn N N N O OH O O N N N O OH O O O OH N N N O OH N NH N N N O OH N N N O OH O N N N O OH O N N N O OH S O N N N O OH O NH O N N N O OH F N N N O HO N N N O OH O O N N N O OH HN NH2 N N N O OH N N S O N N N O OH N N N O OH NH2 NH N N N O OH N N N O OH N N N O OH I N N N N O OH N N N O OH O O O N N N O OH NH2 P S N N N O OH P S N N N O OH N NH N Cl O N N N O OH O N N N O OH O P O N N N O OH O N N N O HO N N N O OH Br Br N N N O HO S O O N N N O OH O N N N O OH O O N N N O OH P O N N N O OH N N N O OH HO N N N O HO O NH2 N N N O OH N N N O HO NH S O O N N N O OH N S O O N N N O OH NH S O O N N N O OH NH S O O N N N O OH NH S O O N N N O OH NH S O O N N N O OH Si N N N O OH N N N O OH NH2 NH2 N N N O OH N N N O OH N N N O OH N N N O OH N N N O OH N N N O OH N N N O OH N N N O HO N N N O OH OH N N N O OH N N N O HO N N N O OH N N N O OH N N N O OH Si N N N O OH N N N O OH Cl N N N O OH Br O N N N O OH N N N O OH N- N+ N Pb N N N O OH O O N N N O OH O N N N O OH NH N N O OH N N N O OH N O N N N O OH N N N O OH

Показать 6 элемент списка вместе с ибупрофеном

In [13]:
display_svg(Draw.MolsToGridImage([ibu,new[5]],useSVG=True, molsPerRow=2, subImgSize=(400, 200)))
O OH N NH N N N N O OH

Построить Similiraty Map ибупрофена и 6 элемента списка

In [37]:
from rdkit.Chem.Draw import SimilarityMaps
fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(ibu, new[5], 
                                                               SimilarityMaps.GetMorganFingerprint)
print(maxweight)
0.2085415720127215

Построить трехмерную структуру молекулы, показать

In [15]:
m3d=Chem.AddHs(new[5])
Chem.AllChem.EmbedMolecule(m3d)
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
display(m3d)
In [16]:
import nglview as nv
nv.show_rdkit(m3d)

Nglview не работает, поэтому использовался drawMol3D. Для его использования необходимо предварительно скачать py3Dmol (conda install -c conda-forge py3Dmol)

In [12]:
import py3Dmol
from rdkit.Chem.Draw import IPythonConsole
IPythonConsole.drawMol3D(m3d)

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

In [ ]: